* Free a fragment reassembly header and all associated datagrams. */
| 821 | * Free a fragment reassembly header and all associated datagrams. |
| 822 | */ |
| 823 | static void |
| 824 | ipq_free(struct ipqbucket *bucket, struct ipq *fp) |
| 825 | { |
| 826 | struct mbuf *q; |
| 827 | |
| 828 | atomic_subtract_int(&nfrags, fp->ipq_nfrags); |
| 829 | while (fp->ipq_frags) { |
| 830 | q = fp->ipq_frags; |
| 831 | fp->ipq_frags = q->m_nextpkt; |
| 832 | m_freem(q); |
| 833 | } |
| 834 | TAILQ_REMOVE(&bucket->head, fp, ipq_list); |
| 835 | bucket->count--; |
| 836 | uma_zfree(V_ipq_zone, fp); |
| 837 | } |
| 838 | |
| 839 | /* |
| 840 | * Get or set the maximum number of reassembly queues per bucket. |
no test coverage detected