ipq
struct ip_queue *ipq;
while ((ipq = STAILQ_FIRST(&ipr->ip_queue)) != NULL) {
free(ipq->ipq_pkt);
free(ipq);
struct ip_queue *ipq, *p;
if ((ipq = calloc(1, sizeof(*ipq))) == NULL)
ipq->ipq_pkt = pkt;
ipq->ipq_hdr = ip;
free(ipq);
STAILQ_INSERT_AFTER(&ipr->ip_queue, p, ipq, ipq_next);
STAILQ_INSERT_AFTER(&ipr->ip_queue, p, ipq, ipq_next);
STAILQ_INSERT_HEAD(&ipr->ip_queue, ipq, ipq_next);
struct ip_queue *ipq, *last;
STAILQ_FOREACH(ipq, &ipr->ip_queue, ipq_next) {
fragoffset = (ntohs(ipq->ipq_hdr->ip_off) & IP_OFFMASK) * 8;
__func__, ntohs(ipq->ipq_hdr->ip_id),
inet_ntoa(ipq->ipq_hdr->ip_src)));
inet_ntoa(ipq->ipq_hdr->ip_dst),
(ntohs(ipq->ipq_hdr->ip_off) & IP_MF) != 0));
n += ntohs(ipq->ipq_hdr->ip_len) - (ipq->ipq_hdr->ip_hl << 2);
last = ipq;
ipq = STAILQ_FIRST(&ipr->ip_queue);
bcopy((void *)((uintptr_t)ipq->ipq_pkt + 2), eh, sizeof(*eh));
bcopy(ipq->ipq_hdr, ipr->ip_hdr, sizeof(*ipr->ip_hdr));
STAILQ_FOREACH(ipq, &ipr->ip_queue, ipq_next) {
hlen = ipq->ipq_hdr->ip_hl << 2;
len = ntohs(ipq->ipq_hdr->ip_len) - hlen;
data = (char *)((uintptr_t)ipq->ipq_hdr + hlen);
static void ipq_free(struct ipqbucket *, struct ipq *);
static struct ipq * ipq_reuse(int);
ipq_timeout(struct ipqbucket *bucket, struct ipq *fp)
ipq_drop(struct ipqbucket *bucket, struct ipq *fp)
struct ipq *fp;
struct ipq *fp;
struct ipq *fp;
struct ipq *fp = TAILQ_FIRST(&V_ipq[i].head);
V_ipq_zone = uma_zcreate("ipq", sizeof(struct ipq), NULL, NULL, NULL,
TAILQ_HEAD(ipqhead, ipq) head;
struct ipq *fp, *temp;
struct ipq *fp;
VNET_DEFINE_STATIC(struct ipqbucket *, ipq);
#define V_ipq VNET(ipq)
static struct ipq *
struct ipq *fp;
ipq_free(struct ipqbucket *bucket, struct ipq *fp)
TAILQ_ENTRY(ipq) ipq_list; /* to other reass headers */
void mac_ipq_create(struct mbuf *m, struct ipq *q);
void mac_ipq_destroy(struct ipq *q);
int mac_ipq_init(struct ipq *q, int);
int mac_ipq_match(struct mbuf *m, struct ipq *q);
void mac_ipq_reassemble(struct ipq *q, struct mbuf *m);
void mac_ipq_update(struct mbuf *m, struct ipq *q);
struct ipq;
mac_ipq_init(struct ipq *q, int flag)
mac_ipq_destroy(struct ipq *q)
mac_ipq_reassemble(struct ipq *q, struct mbuf *m)
mac_ipq_create(struct mbuf *m, struct ipq *q)
mac_ipq_match(struct mbuf *m, struct ipq *q)
mac_ipq_update(struct mbuf *m, struct ipq *q)
struct ipq *q, struct label *qlabel);
struct ipq *q, struct label *qlabel);
typedef void (*mpo_ipq_reassemble)(struct ipq *q, struct label *qlabel,
struct ipq *q, struct label *qlabel);
struct ipq;
biba_ipq_create(struct mbuf *m, struct label *mlabel, struct ipq *q,
biba_ipq_match(struct mbuf *m, struct label *mlabel, struct ipq *q,
biba_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m,
biba_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q,
lomac_ipq_create(struct mbuf *m, struct label *mlabel, struct ipq *q,
lomac_ipq_match(struct mbuf *m, struct label *mlabel, struct ipq *q,
lomac_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m,
lomac_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q,
mls_ipq_create(struct mbuf *m, struct label *mlabel, struct ipq *q,
mls_ipq_match(struct mbuf *m, struct label *mlabel, struct ipq *q,
mls_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m,
mls_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q,
stub_ipq_create(struct mbuf *m, struct label *mlabel, struct ipq *q,
stub_ipq_match(struct mbuf *m, struct label *mlabel, struct ipq *q,
stub_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m,
stub_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q,
struct ipq *q, struct label *qlabel)
struct ipq *q, struct label *qlabel)
test_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m,
test_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q,