feat(gateway): open AF_PACKET sockets

The gateway now has a small Linux PacketSocket wrapper for raw Ethernet frame
I/O. It resolves the configured interface with if_nametoindex, opens an
AF_PACKET/SOCK_RAW socket for ETH_P_ALL, binds it to the interface, and exposes
thin send_frame and recv_frame helpers around the owned file descriptor.

The gateway binary opens this socket after completing the relay control
handshake. The frame bridge loop is still intentionally left for a later slice,
but the process now proves the two required resources are available: relay
admission and raw L2 access on the LAN interface.

Tests cover interface-name validation and missing-interface lookup without
requiring root or CAP_NET_RAW.

Test Plan:
- cargo fmt --check
- cargo test --workspace
- cargo clippy --workspace --all-targets -- -D warnings

Refs: PLAN.md Linux AF_PACKET gateway socket
This commit is contained in:
2026-05-21 18:09:03 +02:00
parent 763a55bfba
commit 1b00deb419
7 changed files with 186 additions and 2 deletions
Generated
+1
View File
@@ -455,6 +455,7 @@ dependencies = [
"anyhow",
"clap",
"lanparty-ctrl",
"libc",
"quinn",
"rcgen",
"rustls",