aa6bf0f2ea
CRITICAL BUG FIX: is_echo_request() and track_icmp() were reading ctx.packet[0] thinking it was the ICMP type byte. But ctx.packet is the IP packet, so offset 0 is the IP version/IHL byte (0x45 for IPv4). Result: ICMP echo detection NEVER matched Type 8 packets. - ICMP rate limiting (R32) was a no-op — wrong byte read - ICMP echo tracking in track_icmp() was checking IP version vs 8/128 Fixed: read ICMP type from offset for IPv4, or offset 40 for IPv6. ALSO: separate TCP SYN and ICMP echo rate limit maps. Previously both shared one BTreeMap, so a host doing 100 TCP SYNs + 1 ICMP echo would be over-limit. Now each has its own budget. NEW TESTS (4 conntrack + 5 filter table = 9 total, all passing): - syn_limit_triggers_after_threshold - icmp_limit_triggers_after_threshold - syn_and_icmp_have_independent_budgets - non_syn_tcp_does_not_count_against_syn_limit These tests caught the ICMP type bug — failed before fix, pass after.