srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_quic.cpp
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2025-06-26 14:59:00 +0200
committersrdusr <[email protected]>2025-06-26 14:59:00 +0200
commit9046e6a10fd2d987cf6f6dc601ed3a75d286793f (patch)
tree2f28a977e4bf8143a4a8468bc474bbab725b950c /tests/test_quic.cpp
parentd9bedcec1bce8d15de6403377702d51d1bcb862f (diff)
downloadpacketeer-9046e6a10fd2d987cf6f6dc601ed3a75d286793f.tar.gz
packeteer-9046e6a10fd2d987cf6f6dc601ed3a75d286793f.zip
Unwrap VLAN (802.1Q/802.1ad) tags before protocol dispatch
The single highest-value coverage gap so far, and structural rather than a new dissector: a VLAN-tagged frame's ethertype reads as 0x8100, so every existing decoder - ARP, IPv4, IPv6, and everything built on top of them - was completely invisible on any tagged network. walk_vlan_tags() (ethernet.hpp) is composable and separate from parse_ethernet(), the same relationship walk_ipv6_extension_headers() has to parse_ipv6(): the base parse stays an unconditional fixed-header decode, and this is what a caller reaches for when it needs the real protocol underneath. Handles stacked (QinQ) tags, bounded at 4 levels against a corrupt/hostile frame claiming an unbounded chain. Live-verified with genuine kernel-tagged frames, not synthetic bytes: a dummy0 interface with an 802.1Q dummy0.42 sub-interface (VLAN 42), captured on the parent while pinging out the sub-interface. Both interfaces and the kernel modules they pulled in were torn down afterward.
Diffstat (limited to 'tests/test_quic.cpp')
0 files changed, 0 insertions, 0 deletions