263950aefa
CRITICAL BUG #1: is_syn() IPv4-only conntrack.rs is_syn() hardcoded offset 33 (IPv4: 20+13). For IPv6, TCP flags are at offset 53 (40+13). IPv6 SYN packets were never detected as SYNs, so SYN flood rate limiting was completely broken for IPv6 traffic. Fix: pass l3num, compute tcp_offset correctly for both families. Added ipv6_syn_detection_works regression test with IPv6 SYN packet at offset 53 — verifies the fix. CRITICAL BUG #2: netfilter writes all broken open_path stored paths without leading '/' (e.g. 'rule/add') but commit() compared against '/rule/add' (with leading '/'). Result: ALL write operations silently failed with EINVAL: - rule/add - never added rules - nat/add - never added NAT - rule/del - never deleted - nat/del - never deleted - policy/X - never set policy - reset - never reset - counters/reset - never reset Fix: align commit() paths with the stored convention (no '/'). Removed dead /rule/del/<id> REST-style path (no open_path arm existed). Updated stored path convention comment. Tests: 21 total (added ipv6_syn_detection_works), all passing.