Files
R. Christian McDonald f1726686cb iflib: Do not pull up trailing IPv4 fragments to the L4 header
iflib_parse_header() pulls every IPv4 packet up to the end of the TCP or
UDP header, including fragments at a non-zero offset, which carry no L4
header at all.  A trailing fragment shorter than that header (1-7 bytes
of UDP, 1-19 bytes of TCP) makes m_pullup() fail and the frame is freed
without a trace in the interface counters.

Only parse the L4 header on the first fragment.  TSO never produces
fragments, so assert that.

With a 1500-byte MTU every UDP datagram of 1473-1479 bytes is lost
behind a forwarding host whose ingress NIC sets receive checksum flags,
or on any VLAN with hardware tagging.  SIP over UDP is a common victim.

Reported by:	Alex Roberts
Reviewed by:	gallatin
Fixes:		c224b2ce7d ("iflib: don't pullup UDP payloads to the TCP header size")
See also:	https://redmine.pfsense.org/issues/17196
MFC after:	3 days
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2026-10-23 14:28:29 -04:00
..
2025-12-18 08:46:20 -08:00
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-03-15 00:41:29 -03:00
2026-10-19 10:32:00 -07:00
2026-10-16 14:16:59 -07:00
2026-10-19 10:32:00 -07:00
…
…
…
…
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-04-12 10:26:08 -07:00
2026-10-19 10:32:00 -07:00
…
2025-12-08 09:20:56 -08:00
2025-12-08 09:20:56 -08:00
…
2026-10-16 14:08:36 -07:00
2026-10-19 10:32:00 -07:00
…
…
2026-10-16 14:16:59 -07:00
2025-07-28 16:36:54 +02:00
2026-10-19 10:32:00 -07:00
…
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-10-19 10:32:00 -07:00
2026-10-16 14:16:59 -07:00
2026-10-16 14:16:59 -07:00
…
…
…
…
…
…
…
…
…
…
2026-10-13 09:08:18 -04:00
…
2026-10-16 14:16:59 -07:00
…
…
2026-10-16 14:16:59 -07:00
…
2026-10-16 14:16:59 -07:00
2026-07-29 00:24:24 +03:30
2026-10-19 10:32:00 -07:00