4d100ce800
The relay already filters unsafe remote-client traffic, but the gateway is the last process before the physical LAN. Treating a relayed Ethernet frame as safe just because it came from the relay leaves the LAN boundary dependent on one upstream check. Add a gateway-local remote-to-LAN safety decision before AF_PACKET writes. The gateway now skips and logs relayed frames with invalid source MACs, L2 control traffic, remote VLAN tags, DHCP-server replies, IPv6 Router Advertisements, IPv6 fragments, or jumbo payloads. The public receive helper also loops past filtered frames so callers only receive frames that can be injected. Document the final gateway boundary check in the README and extend the gateway relay integration test so an unsafe relayed frame is filtered before the valid frame is delivered. Test Plan: - cargo test -p lanparty-gateway - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings - cargo fmt --check - git diff --check Refs: PLAN.md remote-to-LAN safety filters