You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(ipv6-route): a truncated RPL address list is split by the octets read, not by Hdr Ext Len #1457
Bug. When an RPL routing header is cut short, its address list is split by the number of octets actually read rather than by Hdr Ext Len (pcapkit/protocols/schema/internet/ipv6_route.py:280-305). Depending on where the cut falls, the parse raises a non-library exception, or info rebuilds with the wrong Hdr Ext Len.
Repro on main (b14d676c5):
rt=bytes([59, 2, 3, 1, 0, 0, 0, 0]) +bytes(range(1, 17)) # uncompressed, one addressIPv6_Route(rt[:23], 23) # builtins.ValueError: ... does not appear to be an IPv4 or IPv6 addressIPv6_Route(rt[:12], 12) # ProtocolError: IPv6-Route: [TypeNo 3] invalid format
The worker also reports that with CmprI=CmprE=8 and a cut at 12 octets, the header rebuilds with Hdr Ext Len 1 instead of 2.
Correction to the second repro above: IPv6_Route(rt[:12], 12) parses. It is the rebuild, IPv6_Route.from_data(r.info), that raises ProtocolError: IPv6-Route: [TypeNo 3] invalid format. I re-checked this on main, and the first repro (rt[:23] raising a builtins ValueError at parse) stands.
Activity
test(protocols): edge-case round trips for every layer family (#1202)
JarryShaw commentedon Oct 9, 2026
A worker is on it now, on branch
fix/1456-1457-rpl-routing.JarryShaw commentedon Oct 9, 2026
Correction to the second repro above:
IPv6_Route(rt[:12], 12)parses. It is the rebuild,IPv6_Route.from_data(r.info), that raisesProtocolError: IPv6-Route: [TypeNo 3] invalid format. I re-checked this onmain, and the first repro (rt[:23]raising a builtinsValueErrorat parse) stands.test(protocols): edge-case round trips for every layer family (#1202)
test(protocols): edge-case round trips for every layer family (#1202) (…
fix(ipv6-route): rebuild RPL source routes byte for byte (#1456, #1457)…
test(roundtrip): drop the edge-case gaps that #1460, #1462 and #1463 …