git: b53a787d23e5 - main - pf: fold the UDP, SCTP and other case into one
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 12 Feb 2025 19:39:08 UTC
The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=b53a787d23e5fbb9e6133ccaef33c917fbb7f83b commit b53a787d23e5fbb9e6133ccaef33c917fbb7f83b Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2025-02-06 15:26:53 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2025-02-12 19:38:38 +0000 pf: fold the UDP, SCTP and other case into one After the pf_test_state folding we can collapse the UDP, SCTP and other cases in pf_test() as well. Inspired by: OpenBSD, henning <henning@openbsd.org>, 644c98137c Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/netpfil/pf/pf.c | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 3f9e5473deea..3a56e6855d6f 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -10271,23 +10271,13 @@ pf_test(sa_family_t af, int dir, int pflags, struct ifnet *ifp, struct mbuf **m0 break; } - case IPPROTO_UDP: { - action = pf_test_state(&s, &pd, &reason); - if (action == PF_PASS || action == PF_AFRT) { - if (V_pfsync_update_state_ptr != NULL) - V_pfsync_update_state_ptr(s); - r = s->rule; - a = s->anchor; - } else if (s == NULL) - action = pf_test_rule(&r, &s, &pd, - &a, &ruleset, inp); - break; - } - - case IPPROTO_SCTP: { + case IPPROTO_SCTP: action = pf_normalize_sctp(&pd); if (action == PF_DROP) goto done; + /* fallthrough */ + case IPPROTO_UDP: + default: action = pf_test_state(&s, &pd, &reason); if (action == PF_PASS || action == PF_AFRT) { if (V_pfsync_update_state_ptr != NULL) @@ -10299,7 +10289,6 @@ pf_test(sa_family_t af, int dir, int pflags, struct ifnet *ifp, struct mbuf **m0 &pd, &a, &ruleset, inp); } break; - } case IPPROTO_ICMP: case IPPROTO_ICMPV6: { @@ -10329,17 +10318,6 @@ pf_test(sa_family_t af, int dir, int pflags, struct ifnet *ifp, struct mbuf **m0 break; } - default: - action = pf_test_state(&s, &pd, &reason); - if (action == PF_PASS || action == PF_AFRT) { - if (V_pfsync_update_state_ptr != NULL) - V_pfsync_update_state_ptr(s); - r = s->rule; - a = s->anchor; - } else if (s == NULL) - action = pf_test_rule(&r, &s, &pd, - &a, &ruleset, inp); - break; } done: