[PATCH v2 0/8] ip_frag: fix reassembly defects and add test
Stephen Hemminger
stephen at networkplumber.org
Tue Jun 30 17:36:12 CEST 2026
The IP reassembly library tracks only a running byte total and reserved
slots for the first and last fragments, with no coverage map. As a result
it mishandles duplicate, overlapping, oversized, and misheadered
fragments, and the IPv4 key is missing a field RFC 791 requires. There
was also no functional test to catch any of it.
These came out of reviewing a duplicate-fragment report on the list.
Patches 1 and 2 are interdependent: the overlap discard relies on the
duplicate handling so an exact duplicate is dropped on its own rather
than discarding the whole datagram. The rest are independent.
Patch 6 adds a functional test modeled on the Linux selftest ip_defrag.c.
It passes on this series; with any single fix reverted the matching case
fails.
Stephen Hemminger (8):
ip_frag: tolerate duplicate fragments
ip_frag: discard datagrams with overlapping fragments
ip_frag: include protocol in IPv4 reassembly key
ip_frag: drop IPv6 fragments with per-fragment headers
ip_frag: reject oversized reassembled datagrams
app/test: add test for IP reassembly
ip_frag: remove use of rte_memcpy
doc: add release note about ip_frag changes
app/test/meson.build | 1 +
app/test/test_reassembly.c | 675 +++++++++++++++++++++++++
doc/guides/rel_notes/release_26_07.rst | 6 +
lib/ip_frag/ip_frag_internal.c | 40 +-
lib/ip_frag/rte_ipv4_reassembly.c | 17 +-
lib/ip_frag/rte_ipv6_fragmentation.c | 3 +-
lib/ip_frag/rte_ipv6_reassembly.c | 36 +-
7 files changed, 767 insertions(+), 11 deletions(-)
create mode 100644 app/test/test_reassembly.c
--
2.53.0
More information about the dev
mailing list