ddidderr f06760d1ac feat(proto): add tunnel frame primitives
Build the shared protocol contract that the client, gateway, and relay will use
for Ethernet datagrams. The MVP needs these pieces agreed on before socket or
TAP work can be reasoned about safely.

This adds strict MAC parsing and client identity validation, Ethernet header
inspection, fixed overlay datagram encoding and decoding, and MTU helpers for
the no-fragmentation QUIC datagram design. The protocol crate stays
transport-agnostic so platform and network code can depend on it without
pulling in OS-specific behavior.

Remaining work is to put these primitives behind the control-plane handshake,
relay forwarding loop, Windows TAP client, and Linux AF_PACKET gateway.

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

Refs: PLAN.md Phase 1: prove the illusion
2026-05-21 17:09:01 +02:00
2026-05-21 16:54:26 +02:00
2026-05-21 16:55:51 +02:00
2026-05-21 17:00:58 +02:00

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

Build

cargo check --workspace
S
Description
A simple one-click Layer 2 tunnel software (Windows 11 client) to bridge people who cannot participate in person at a LAN party to the LAN party. And a simple server endpoint (Linux) software that runs physically at the LAN party and bridges the tunneled traffic and the real LAN network.
Readme 1.1 MiB
Languages
Rust 100%