[PATCH 0/6] ip_frag: fix reassembly defects and add test
Stephen Hemminger
stephen at networkplumber.org
Tue Jun 16 23:05:32 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 (6):
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 unexpected headers
ip_frag: reject oversized reassembled datagrams
app/test: add test for IP reassembly
app/test/meson.build | 1 +
app/test/test_reassembly.c | 644 ++++++++++++++++++++++++++++++
lib/ip_frag/ip_frag_internal.c | 36 +-
lib/ip_frag/rte_ipv4_reassembly.c | 17 +-
lib/ip_frag/rte_ipv6_reassembly.c | 22 +-
5 files changed, 714 insertions(+), 6 deletions(-)
create mode 100644 app/test/test_reassembly.c
--
2.53.0
More information about the dev
mailing list