pf_fragment
TAILQ_HEAD(pf_fragqueue, pf_fragment) pf_fragqueue;
TAILQ_HEAD(pf_cachequeue, pf_fragment) pf_cachequeue;
static __inline int pf_frag_compare(struct pf_fragment *,
struct pf_fragment *);
RB_HEAD(pf_frag_tree, pf_fragment) pf_frag_tree, pf_cache_tree;
RB_PROTOTYPE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare);
RB_GENERATE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare);
void pf_ip2key(struct pf_fragment *, struct ip *);
void pf_remove_fragment(struct pf_fragment *);
void pf_free_fragment(struct pf_fragment *);
struct pf_fragment *pf_find_fragment(struct ip *, struct pf_frag_tree *);
struct mbuf *pf_reassemble(struct mbuf **, struct pf_fragment **,
struct pf_fragment **, int, int, int *);
pool_init(&pf_frag_pl, sizeof(struct pf_fragment), 0, 0, 0, "pffrag",
pool_init(&pf_cache_pl, sizeof(struct pf_fragment), 0, 0, 0,
pool_init(&pf_frag_pl, sizeof(struct pf_fragment), 0, 0, 0, "pffrag",
pool_init(&pf_cache_pl, sizeof(struct pf_fragment), 0, 0, 0,
pf_frag_compare(struct pf_fragment *a, struct pf_fragment *b)
struct pf_fragment *frag;
struct pf_fragment *frag;
pf_free_fragment(struct pf_fragment *frag)
pf_ip2key(struct pf_fragment *key, struct ip *ip)
struct pf_fragment *
struct pf_fragment key;
struct pf_fragment *frag;
pf_remove_fragment(struct pf_fragment *frag)
pf_reassemble(struct mbuf **m0, struct pf_fragment **frag,
pf_fragcache(struct mbuf **m0, struct ip *h, struct pf_fragment **frag, int mff,
struct pf_fragment *frag = NULL;
RB_ENTRY(pf_fragment) fr_entry;
TAILQ_ENTRY(pf_fragment) frag_next;