pf: do not block new Ethernet rules for in-progress transactions

Make Ethernet rule addition behave just like L3 rules, in that we now
allow ongoing transaction to be interrupted, rather than rejecting a new
one.

The result of that is that we can no longer end up in a state where a
transaction failed, but was not rolled back, blocking us from setting
new rules.

It's safe to assume there's no pending epoch callback for cleanup here,
because we've explicitly called it before hitting pf_begin_eth().

Sponsored by:	Rubicon Communications, LLC ("Netgate")
This commit is contained in:
Kristof Provost 2022-08-19 12:05:12 +02:00
parent 2c1ac3d4d4
commit 6ab80e7275

View File

@ -739,11 +739,6 @@ pf_begin_eth(uint32_t *ticket, const char *anchor)
if (rs == NULL)
return (EINVAL);
if (rs->inactive.open)
/* We may be waiting for NET_EPOCH_CALL(pf_rollback_eth_cb) to
* finish. */
return (EBUSY);
/* Purge old inactive rules. */
TAILQ_FOREACH_SAFE(rule, rs->inactive.rules, entries,
tmp) {