# 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 - length-prefixed JSON control frames for reliable QUIC streams ### `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 ```bash cargo check --workspace ```