wgengine/magicsock: add envknob to toggle UDP relay feature (#16396)

Updates tailscale/corp#27502

Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
Jordan Whited 2025-06-26 18:39:47 -07:00 committed by GitHub
parent 6feb3c35cb
commit b2bf7e988e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 3 deletions

View File

@ -62,6 +62,12 @@ var (
//
//lint:ignore U1000 used on Linux/Darwin only
debugPMTUD = envknob.RegisterBool("TS_DEBUG_PMTUD")
// debugAssumeUDPRelayCapable forces magicsock to assume that all peers are
// UDP relay capable clients and servers. This will eventually be replaced
// by a [tailcfg.CapabilityVersion] comparison. It enables early testing of
// the UDP relay feature before we have established related
// [tailcfg.CapabilityVersion]'s.
debugAssumeUDPRelayCapable = envknob.RegisterBool("TS_DEBUG_ASSUME_UDP_RELAY_CAPABLE")
// Hey you! Adding a new debugknob? Make sure to stub it out in the
// debugknobs_stubs.go file too.
)

View File

@ -31,3 +31,4 @@ func debugRingBufferMaxSizeBytes() int { return 0 }
func inTest() bool { return false }
func debugPeerMap() bool { return false }
func pretendpoints() []netip.AddrPort { return []netip.AddrPort{} }
func debugAssumeUDPRelayCapable() bool { return false }

View File

@ -2592,12 +2592,12 @@ func (c *Conn) SetProbeUDPLifetime(v bool) {
func capVerIsRelayCapable(version tailcfg.CapabilityVersion) bool {
// TODO(jwhited): implement once capVer is bumped
return version == math.MinInt32
return version == math.MinInt32 || debugAssumeUDPRelayCapable()
}
func capVerIsRelayServerCapable(version tailcfg.CapabilityVersion) bool {
// TODO(jwhited): implement once capVer is bumped
return version == math.MinInt32
// TODO(jwhited): implement once capVer is bumped & update Test_peerAPIIfCandidateRelayServer
return version == math.MinInt32 || debugAssumeUDPRelayCapable()
}
// onFilterUpdate is called when a [FilterUpdate] is received over the