d1e6530829
Add a tested relay room layer before introducing QUIC socket handling. The relay now has a focused place to enforce room membership rules instead of mixing those rules into the future networking loop. RoomRegistry accepts validated endpoint hellos, assigns room and peer IDs, returns server welcome data, limits clients per room, permits only one gateway, rejects duplicate client MACs, and keeps the room TAP MTU stable once the first peer joins. A later peer must support the existing room MTU rather than silently shrinking it after an earlier client may already have configured its TAP adapter. The networking pieces still need to call this layer from the reliable control stream and use the resulting peer metadata for datagram forwarding. Test Plan: - cargo fmt --check - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings Refs: PLAN.md relay responsibilities and MAC identity
1.6 KiB
1.6 KiB
softlan-vpn
Monorepo for a Layer 2 over QUIC LAN party bridge.
Workspace crates
lanparty-proto: shared frame format, MAC validation, MTU helpers.lanparty-ctrl: control-plane messages (join/hello/role/version).lanparty-obs: shared diagnostics/logging event models.lanparty-client-core: platform-agnostic client session state.lanparty-client-win: Windows TAP + route/metric handling binary.lanparty-gateway: Linux AF_PACKET gateway binary.lanparty-relay: public QUIC relay binary.
lanparty-proto
Transport-agnostic tunnel contract shared by all binaries:
- overlay datagram header encoding and decoding
- Ethernet frame header parsing
- MAC address parsing and identity validation
- QUIC datagram to TAP MTU budget helpers
lanparty-ctrl
Reliable control-plane schema shared by the QUIC stream handlers:
- endpoint hello messages with role, room, MAC, and datagram budget
- server welcome, reject, peer lifecycle, stats, and disconnect messages
- room-code, role/MAC, peer-id, and effective-MTU validation
lanparty-obs
Shared diagnostics and structured logging vocabulary:
- gateway/relay frame logs with MACs, ethertype, length, peer, and action
- tunnel counters shared by control messages and runtime diagnostics
- client connectivity/TAP diagnostics and user-facing status messages
lanparty-relay
Public relay binary and relay-owned room state:
- room admission for clients and gateways
- one gateway per room, duplicate client MAC rejection, and room limits
- stable effective room MTU chosen before Ethernet datagrams flow
Build
cargo check --workspace