HomeFreeBSD

pf: fix double ruleset evaluation for fragments sent to dummynet

Description

pf: fix double ruleset evaluation for fragments sent to dummynet

The function pf_setup_pdesc() handles ruleset evaluation for non-reassembled
packets. Having it called before pf_mtag is checked for flags
PF_MTAG_FLAG_ROUTE_TO and PF_MTAG_FLAG_DUMMYNET will cause loops for
fragmented packets if reassembly is disabled.

Move pd zeroing and pf_mtag extraction from pf_setup_pdesc() to a separate
function pf_init_pdesc() and change the order of function calls: first
call pf_init_pdesc(), then check if the currently processed packet has been
reinjected from dummynet, finally call pf_setup_pdesc().

Add functionality of sending UDP packets to pft_ping.py with fragmentation
support and fix broken IPv6 reassembly.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D46880

Details

Provenance
vegeta_tuxpowered.netAuthored on Oct 3 2024, 8:28 AM
kpCommitted on Oct 3 2024, 11:49 AM
Reviewer
kp
Differential Revision
D46880: pf: Fix double ruleset evaluation for fragments sent to dummynet
Parents
rG94a294e59d17: stress2: Added test scenarios for bug report
Branches
Unknown
Tags
Unknown