Hello, I don't object. diff improces things. Just few bike shedding nits further below. On Mon, Dec 19, 2022 at 04:48:57PM +1000, David Gwynne wrote: </snip> > > i hope i didn't mess up the (sk_)states list traversals.
could not spot anything wrong there. </snip> > > ok? > > Index: pf.c > =================================================================== > RCS file: /cvs/src/sys/net/pf.c,v > retrieving revision 1.1157 > diff -u -p -r1.1157 pf.c > --- pf.c 16 Dec 2022 02:05:44 -0000 1.1157 > +++ pf.c 19 Dec 2022 06:39:45 -0000 > @@ -315,7 +315,7 @@ struct pf_state_tree_id tree_id; > struct pf_state_list pf_state_list = > PF_STATE_LIST_INITIALIZER(pf_state_list); > > RB_GENERATE(pf_src_tree, pf_src_node, entry, pf_src_compare); > -RB_GENERATE(pf_state_tree, pf_state_key, entry, pf_state_compare_key); > +RB_GENERATE(pf_state_tree, pf_state_key, sk_entry, pf_state_compare_key); > RB_GENERATE(pf_state_tree_id, pf_state, > entry_id, pf_state_compare_id); I think pf_state_tree prototype should be moved to net/pfvar_priv.h perhaps others should be moved as well, because those trees are private to pf(4). can be done in follow up commit. > > @@ -736,24 +736,25 @@ pf_state_key_attach(struct pf_state_key > PF_ASSERT_LOCKED(); > > KASSERT(s->key[idx] == NULL); > - sk->removed = 0; > + sk->sk_removed = 0; > cur = RB_INSERT(pf_state_tree, &pf_statetbl, sk); > if (cur != NULL) { > - sk->removed = 1; > + sk->sk_removed = 1; > /* key exists. check for same kif, if none, add to key */ > - TAILQ_FOREACH(si, &cur->states, entry) { > - if (si->s->kif == s->kif && > - ((si->s->key[PF_SK_WIRE]->af == sk->af && > - si->s->direction == s->direction) || > - (si->s->key[PF_SK_WIRE]->af != > - si->s->key[PF_SK_STACK]->af && > - sk->af == si->s->key[PF_SK_STACK]->af && > - si->s->direction != s->direction))) { > + TAILQ_FOREACH(si, &cur->sk_states, si_entry) { > + struct pf_state *tst = si->si_st; appreciate consistency in your diff. it uses 'tst = si->si_st;' however going for 'sis' instead of 'tst' would remind us data here come from state item. This is just a nit. Don't feel strongly about it. diff reads OK to me. thanks and regards sashan