Hello,

I've got just one nit, which is probably overcautious, so I don't insist:
</snip>
> @@ -231,8 +245,16 @@ void
>  pf_free_fragment(struct pf_fragment *frag)
>  {
>       struct pf_frent         *frent;
> +     struct pf_frnode        *frnode;
>  
> -     RB_REMOVE(pf_frag_tree, &pf_frag_tree, frag);
> +     frnode = frag->fr_node;
> +     RB_REMOVE(pf_frag_tree, &frnode->fn_tree, frag);
> +     KASSERT(frnode->fn_fragments >= 1);
> +     frnode->fn_fragments--;
> +     if (frnode->fn_fragments == 0) {

                KASSERT(RB_EMPTY(&frnode->fn_tree));

> +             RB_REMOVE(pf_frnode_tree, &pf_frnode_tree, frnode);
> +             pool_put(&pf_frnode_pl, frnode);
> +     }
>       TAILQ_REMOVE(&pf_fragqueue, frag, frag_next);
>  
>       /* Free all fragment entries */

I assume you are going to use fn_fragments as a 'timaout/aggression' factor,
right?

O.K. sashan@


Reply via email to