diff --git a/wgengine/magicsock/debugknobs.go b/wgengine/magicsock/debugknobs.go new file mode 100644 index 000000000..1476b28f4 --- /dev/null +++ b/wgengine/magicsock/debugknobs.go @@ -0,0 +1,53 @@ +// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !ios +// +build !ios + +package magicsock + +import ( + "os" + "strconv" +) + +// Various debugging and experimental tweakables, set by environment +// variable. +var ( + // logPacketDests prints the known addresses for a peer every time + // they change, in the legacy (non-discovery) endpoint code only. + logPacketDests, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_LOG_PACKET_DESTS")) + // debugDisco prints verbose logs of active discovery events as + // they happen. + debugDisco, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_DISCO")) + // debugOmitLocalAddresses removes all local interface addresses + // from magicsock's discovered local endpoints. Used in some tests. + debugOmitLocalAddresses, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_OMIT_LOCAL_ADDRS")) + // debugUseDerpRoute temporarily (2020-03-22) controls whether DERP + // reverse routing is enabled (Issue 150). It will become always true + // later. + debugUseDerpRouteEnv = os.Getenv("TS_DEBUG_ENABLE_DERP_ROUTE") + debugUseDerpRoute, _ = strconv.ParseBool(debugUseDerpRouteEnv) + // logDerpVerbose logs all received DERP packets, including their + // full payload. + logDerpVerbose, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_DERP")) + // debugReSTUNStopOnIdle unconditionally enables the "shut down + // STUN if magicsock is idle" behavior that normally only triggers + // on mobile devices, lowers the shutdown interval, and logs more + // verbosely about idle measurements. + debugReSTUNStopOnIdle, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_RESTUN_STOP_ON_IDLE")) + // debugAlwaysDERP disables the use of UDP, forcing all peer communication over DERP. + debugAlwaysDERP, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_ALWAYS_USE_DERP")) +) + +// inTest reports whether the running program is a test that set the +// IN_TS_TEST environment variable. +// +// Unlike the other debug tweakables above, this one needs to be +// checked every time at runtime, because tests set this after program +// startup. +func inTest() bool { + inTest, _ := strconv.ParseBool(os.Getenv("IN_TS_TEST")) + return inTest +} diff --git a/wgengine/magicsock/debugknobs_ios.go b/wgengine/magicsock/debugknobs_ios.go new file mode 100644 index 000000000..1ebad76b3 --- /dev/null +++ b/wgengine/magicsock/debugknobs_ios.go @@ -0,0 +1,20 @@ +// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package magicsock + +// All knobs are disabled on iOS. +// Further, they're const, so the toolchain can produce smaller binaries. +const ( + logPacketDests = false + debugDisco = false + debugOmitLocalAddresses = false + debugUseDerpRouteEnv = "" + debugUseDerpRoute = false + logDerpVerbose = false + debugReSTUNStopOnIdle = false + debugAlwaysDERP = false +) + +func inTest() bool { return false } diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 107df0388..2e753c06a 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -59,35 +59,6 @@ import ( "tailscale.com/wgengine/wgcfg" ) -// Various debugging and experimental tweakables, set by environment -// variable. -var ( - // logPacketDests prints the known addresses for a peer every time - // they change, in the legacy (non-discovery) endpoint code only. - logPacketDests, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_LOG_PACKET_DESTS")) - // debugDisco prints verbose logs of active discovery events as - // they happen. - debugDisco, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_DISCO")) - // debugOmitLocalAddresses removes all local interface addresses - // from magicsock's discovered local endpoints. Used in some tests. - debugOmitLocalAddresses, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_OMIT_LOCAL_ADDRS")) - // debugUseDerpRoute temporarily (2020-03-22) controls whether DERP - // reverse routing is enabled (Issue 150). It will become always true - // later. - debugUseDerpRouteEnv = os.Getenv("TS_DEBUG_ENABLE_DERP_ROUTE") - debugUseDerpRoute, _ = strconv.ParseBool(debugUseDerpRouteEnv) - // logDerpVerbose logs all received DERP packets, including their - // full payload. - logDerpVerbose, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_DERP")) - // debugReSTUNStopOnIdle unconditionally enables the "shut down - // STUN if magicsock is idle" behavior that normally only triggers - // on mobile devices, lowers the shutdown interval, and logs more - // verbosely about idle measurements. - debugReSTUNStopOnIdle, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_RESTUN_STOP_ON_IDLE")) - // debugAlwaysDERP disables the use of UDP, forcing all peer communication over DERP. - debugAlwaysDERP, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_ALWAYS_USE_DERP")) -) - // useDerpRoute reports whether magicsock should enable the DERP // return path optimization (Issue 150). func useDerpRoute() bool { @@ -101,17 +72,6 @@ func useDerpRoute() bool { return false } -// inTest reports whether the running program is a test that set the -// IN_TS_TEST environment variable. -// -// Unlike the other debug tweakables above, this one needs to be -// checked every time at runtime, because tests set this after program -// startup. -func inTest() bool { - inTest, _ := strconv.ParseBool(os.Getenv("IN_TS_TEST")) - return inTest -} - // A Conn routes UDP packets and actively manages a list of its endpoints. // It implements wireguard/conn.Bind. type Conn struct {