Page MenuHomeFreeBSD

pf: remove the last hand-rolled IPv6 extension header loop
ClosedPublic

Authored by kp on Oct 4 2024, 12:44 PM.
Tags
None
Referenced Files
F134657482: D46931.diff
Mon, Nov 3, 9:46 PM
F134580099: D46931.id.diff
Mon, Nov 3, 9:24 AM
F134562125: D46931.id144233.diff
Mon, Nov 3, 5:26 AM
F134542095: D46931.id144233.diff
Mon, Nov 3, 1:29 AM
F134541582: D46931.id144581.diff
Mon, Nov 3, 1:23 AM
Unknown Object (File)
Sun, Nov 2, 9:10 PM
Unknown Object (File)
Tue, Oct 28, 12:35 PM
Unknown Object (File)
Mon, Oct 27, 5:33 PM

Details

Summary

Replace the IPv6 header walking loop in pf_test_state_icmp() with
the common function pf_walk_header6(). For that, pf_walk_header6()
can now extract both the information wether it is a fragment and
the final protocol if it is the first fragment. This allows to
match the icmp6 too big packet of a first fragment to the reassembled
packet's state. This is neccesary if a refragmented fragment is
to big for the Path-MTU.
Note that pd.proto contains the real protocol number for the first
fragment and IPPROTO_FRAGMENT for later fragments. pd.virtual_protocol
is set to PF_VPROTO_FRAGMENT for all fragments.
ok mcbride@

Obtained from: OpenBSD, bluhm <bluhm@openbsd.org>, 90b3c57e94
Sponsored by: Rubicon Communications, LLC ("Netgate")

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 59744
Build 56630: arc lint + arc unit