| 6903 | } |
| 6904 | |
| 6905 | void |
| 6906 | sctp_toss_old_asconf(struct sctp_tcb *stcb) |
| 6907 | { |
| 6908 | struct sctp_association *asoc; |
| 6909 | struct sctp_tmit_chunk *chk, *nchk; |
| 6910 | struct sctp_asconf_chunk *acp; |
| 6911 | |
| 6912 | asoc = &stcb->asoc; |
| 6913 | TAILQ_FOREACH_SAFE(chk, &asoc->asconf_send_queue, sctp_next, nchk) { |
| 6914 | /* find SCTP_ASCONF chunk in queue */ |
| 6915 | if (chk->rec.chunk_id.id == SCTP_ASCONF) { |
| 6916 | if (chk->data) { |
| 6917 | acp = mtod(chk->data, struct sctp_asconf_chunk *); |
| 6918 | if (SCTP_TSN_GT(ntohl(acp->serial_number), asoc->asconf_seq_out_acked)) { |
| 6919 | /* Not Acked yet */ |
| 6920 | break; |
| 6921 | } |
| 6922 | } |
| 6923 | TAILQ_REMOVE(&asoc->asconf_send_queue, chk, sctp_next); |
| 6924 | asoc->ctrl_queue_cnt--; |
| 6925 | if (chk->data) { |
| 6926 | sctp_m_freem(chk->data); |
| 6927 | chk->data = NULL; |
| 6928 | } |
| 6929 | sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); |
| 6930 | } |
| 6931 | } |
| 6932 | } |
| 6933 | |
| 6934 | static void |
| 6935 | sctp_clean_up_datalist(struct sctp_tcb *stcb, |
no test coverage detected