• Decision: Recover the original destination via connect4 recording by socket cookie, then a sockops (TCP_CONNECT_CB) re-key to (src_ip, src_port); the Go relay resolves via getpeername() + tuple-map lookup. Never use SO_COOKIE/SO_ORIGINAL_DST on the accepted socket.
  • Reason: The accepted socket is a different struct sock (different cookie); the tuple bridge is the only race-free correlation before SYN.
  • Trade-off: Needs a byte-order-normalised tuple codec and a sockops program in addition to connect4.
  • Scope: Feature 01.
  • Date: 2026-09-09
  • Status: active