appneta / tcpreplay

Pcap editing and replay tools for *NIX and Windows - Users please download source from
http://tcpreplay.appneta.com/wiki/installation.html#downloads
1.15k stars 268 forks source link

Handle IPv6 fragment extension header #832

Closed ChuckCottrill closed 6 months ago

ChuckCottrill commented 7 months ago

Description: Handle IPv6 fragment extension header only return NULL when reached end of packet (no data)

Explanation: When issue #488 was fixed (pr #496) (version=4.3.0, and carried forward to version=4.4.0), the fix prevented IPv6 fragment extension header handling. The need was to prevent addressing headers beyond packet length (to avoid heap corruption). However, the fix prevents any further processing of the packet after fragment extension header found. When the extension header proto=TCPR_IPV6_NH_FRAGMENT, we can skip that header (fixed length=32 bits), process any further extension headers, and return a pointer to packet data.

When issue #611 was fixed (pr #613), the solution was to leave any IPv6 packets with fragment extension header untouched (and generate TCPEDIT_SOFT_ERROR). This change allowed tcprewrite to continue, and these packets could be skipped (use option --skip-soft-errors). This was to avoid abort/failure of the code to run on pcap having any fragment headers.

Both of these issues are handled by this PR.

Reference:

fklassen commented 6 months ago

Thanks for the PR. Opened issue #837 to track.

Merging into a working branch for testing and documentation.

Targetting 4.5 release.