pf: remove the flags argument from pf_unlink_state

All consumers call it with PF_ENTER_LOCKED.

Reviewed by:	kp
Sponsored by:	Rubicon Communications, LLC ("Netgate")
This commit is contained in:
Mateusz Guzik 2021-11-01 14:14:02 +01:00
parent edf6dd82e9
commit 8f3d786cb3
4 changed files with 13 additions and 18 deletions

View File

@ -1915,9 +1915,7 @@ extern void pf_unload_vnet_purge(void);
extern void pf_intr(void *);
extern void pf_purge_expired_src_nodes(void);
extern int pf_unlink_state(struct pf_kstate *, u_int);
#define PF_ENTER_LOCKED 0x00000001
#define PF_RETURN_LOCKED 0x00000002
extern int pf_unlink_state(struct pf_kstate *);
extern int pf_state_insert(struct pfi_kkif *,
struct pfi_kkif *,
struct pf_state_key *,

View File

@ -759,7 +759,7 @@ pfsync_in_clr(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count)
LIST_FOREACH(s, &ih->states, entry) {
if (s->creatorid == creatorid) {
s->state_flags |= PFSTATE_NOSYNC;
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
goto relock;
}
}
@ -1118,7 +1118,7 @@ pfsync_in_del(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count)
continue;
}
st->state_flags |= PFSTATE_NOSYNC;
pf_unlink_state(st, PF_ENTER_LOCKED);
pf_unlink_state(st);
}
return (len);
@ -1150,7 +1150,7 @@ pfsync_in_del_c(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count)
}
st->state_flags |= PFSTATE_NOSYNC;
pf_unlink_state(st, PF_ENTER_LOCKED);
pf_unlink_state(st);
}
return (len);

View File

@ -1995,14 +1995,11 @@ pf_src_tree_remove_state(struct pf_kstate *s)
* unlocked, since it needs to go through key hash locking.
*/
int
pf_unlink_state(struct pf_kstate *s, u_int flags)
pf_unlink_state(struct pf_kstate *s)
{
struct pf_idhash *ih = &V_pf_idhash[PF_IDHASH(s)];
if ((flags & PF_ENTER_LOCKED) == 0)
PF_HASHROW_LOCK(ih);
else
PF_HASHROW_ASSERT(ih);
PF_HASHROW_ASSERT(ih);
if (s->timeout == PFTM_UNLINKED) {
/*
@ -2091,7 +2088,7 @@ pf_purge_expired_states(u_int i, int maxcheck)
LIST_FOREACH(s, &ih->states, entry) {
if (pf_state_expires(s) <= time_uptime) {
V_pf_status.states -=
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
goto relock;
}
s->rule.ptr->rule_ref |= PFRULE_REFS;
@ -4992,7 +4989,7 @@ pf_test_state_tcp(struct pf_kstate **state, int direction, struct pfi_kkif *kif,
}
/* XXX make sure it's the same direction ?? */
pf_set_protostate(*state, PF_PEER_BOTH, TCPS_CLOSED);
pf_unlink_state(*state, PF_ENTER_LOCKED);
pf_unlink_state(*state);
*state = NULL;
return (PF_DROP);
}

View File

@ -2041,7 +2041,7 @@ pf_kill_matching_state(struct pf_state_key_cmp *key, int dir)
return (0);
}
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
return (1);
}
@ -2138,7 +2138,7 @@ pf_killstates_row(struct pf_kstate_kill *psk, struct pf_idhash *ih)
match_key.port[1] = s->key[idx]->port[0];
}
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
killed++;
if (psk->psk_kill_match)
@ -5040,7 +5040,7 @@ pf_clear_all_states(void)
s->timeout = PFTM_PURGE;
/* Don't send out individual delete messages. */
s->state_flags |= PFSTATE_NOSYNC;
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
goto relock;
}
PF_HASHROW_UNLOCK(ih);
@ -5227,7 +5227,7 @@ pf_clear_states(const struct pf_kstate_kill *kill)
* delete messages.
*/
s->state_flags |= PFSTATE_NOSYNC;
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
killed++;
if (kill->psk_kill_match)
@ -5255,7 +5255,7 @@ pf_killstates(struct pf_kstate_kill *kill, unsigned int *killed)
kill->psk_pfcmp.creatorid = V_pf_status.hostid;
if ((s = pf_find_state_byid(kill->psk_pfcmp.id,
kill->psk_pfcmp.creatorid))) {
pf_unlink_state(s, PF_ENTER_LOCKED);
pf_unlink_state(s);
*killed = 1;
}
return;