docs/vpnhotspotd/invariants.md
These are daemon-wide rules that should stay true across modules. When a change breaks one, document the new invariant in the owning doc and explain the compatibility or cleanup impact.
SessionConfig.downstream.30000 and must attribute queued Echo Requests from source
hardware-address metadata.NFQA_HWADDR; source-IP-to-MAC lookup is not a valid fallback.::1 TPROXY endpoints.SessionConfig through snapshots and must
not hold the config mutex while waiting on network I/O or resolver I/O.
Session replacement may hold the mutex while routing is reconciled because
that lock is the commit gate that keeps DNS/NAT66 readers on the previous
config until the new routing state has committed.SessionConfig.clients is keyed by MAC. A client entry may have no IPv4
addresses and still be a valid DNS/NAT66 authorization input.