summaryrefslogtreecommitdiffhomepage
path: root/wgengine
diff options
context:
space:
mode:
Diffstat (limited to 'wgengine')
-rw-r--r--wgengine/magicsock/debugknobs.go4
-rw-r--r--wgengine/magicsock/endpoint.go2
-rw-r--r--wgengine/magicsock/magicsock.go19
3 files changed, 16 insertions, 9 deletions
diff --git a/wgengine/magicsock/debugknobs.go b/wgengine/magicsock/debugknobs.go
index 824c677f6..fc0f3ded4 100644
--- a/wgengine/magicsock/debugknobs.go
+++ b/wgengine/magicsock/debugknobs.go
@@ -12,9 +12,9 @@ import (
// Various debugging and experimental tweakables, set by environment
// variable.
var (
- // debugDisco prints verbose logs of active discovery events as
+ // debugDiscoEnv prints verbose logs of active discovery events as
// they happen.
- debugDisco = envknob.RegisterBool("TS_DEBUG_DISCO")
+ debugDiscoEnv = envknob.RegisterBool("TS_DEBUG_DISCO")
// debugPeerMap prints verbose logs of changes to the peermap.
debugPeerMap = envknob.RegisterBool("TS_DEBUG_MAGICSOCK_PEERMAP")
// debugOmitLocalAddresses removes all local interface addresses
diff --git a/wgengine/magicsock/endpoint.go b/wgengine/magicsock/endpoint.go
index 06298ad1f..96f30a7e9 100644
--- a/wgengine/magicsock/endpoint.go
+++ b/wgengine/magicsock/endpoint.go
@@ -613,7 +613,7 @@ func (de *endpoint) discoPingTimeout(txid stun.TxID) {
if !ok {
return
}
- if debugDisco() || !de.bestAddr.IsValid() || mono.Now().After(de.trustBestAddrUntil) {
+ if de.c.debugDisco() || !de.bestAddr.IsValid() || mono.Now().After(de.trustBestAddrUntil) {
de.c.dlogf("[v1] magicsock: disco: timeout waiting for pong %x from %v (%v, %v)", txid[:6], sp.to, de.publicKey.ShortString(), de.discoShort())
}
de.removeSentDiscoPingLocked(txid, sp)
diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go
index 1387f935d..d9750785d 100644
--- a/wgengine/magicsock/magicsock.go
+++ b/wgengine/magicsock/magicsock.go
@@ -310,6 +310,13 @@ func (c *Conn) dlogf(format string, a ...any) {
}
}
+// debugDisco reports whether we should log verbose things about disco packets.
+// It returns true if either the disco-specific environment variable or the
+// component debug logging is enabled.
+func (c *Conn) debugDisco() bool {
+ return debugDiscoEnv() || c.debugLogging.Load()
+}
+
// Options contains options for Listen.
type Options struct {
// Logf optionally provides a log function to use.
@@ -1273,7 +1280,7 @@ func (c *Conn) sendDiscoMessage(dst netip.AddrPort, dstKey key.NodePublic, dstDi
pkt = append(pkt, box...)
sent, err = c.sendAddr(dst, dstKey, pkt)
if sent {
- if logLevel == discoLog || (logLevel == discoVerboseLog && debugDisco()) {
+ if logLevel == discoLog || (logLevel == discoVerboseLog && c.debugDisco()) {
node := "?"
if !dstKey.IsZero() {
node = dstKey.ShortString()
@@ -1345,7 +1352,7 @@ func (c *Conn) handleDiscoMessage(msg []byte, src netip.AddrPort, derpNodeSrc ke
if c.closed {
return
}
- if debugDisco() {
+ if c.debugDisco() {
c.logf("magicsock: disco: got disco-looking frame from %v via %s len %v", sender.ShortString(), via, len(msg))
}
if c.privateKey.IsZero() {
@@ -1356,7 +1363,7 @@ func (c *Conn) handleDiscoMessage(msg []byte, src netip.AddrPort, derpNodeSrc ke
if !c.peerMap.anyEndpointForDiscoKey(sender) {
metricRecvDiscoBadPeer.Add(1)
- if debugDisco() {
+ if c.debugDisco() {
c.logf("magicsock: disco: ignoring disco-looking frame, don't know endpoint for %v", sender.ShortString())
}
return
@@ -1382,7 +1389,7 @@ func (c *Conn) handleDiscoMessage(msg []byte, src netip.AddrPort, derpNodeSrc ke
// group of messages. Don't log in normal case.
// Callers may choose to pass on to wireguard, in case
// it's actually a wireguard packet (super unlikely, but).
- if debugDisco() {
+ if c.debugDisco() {
c.logf("magicsock: disco: failed to open naclbox from %v (wrong rcpt?) via %s", sender, via)
}
metricRecvDiscoBadKey.Add(1)
@@ -1396,7 +1403,7 @@ func (c *Conn) handleDiscoMessage(msg []byte, src netip.AddrPort, derpNodeSrc ke
}
dm, err := disco.Parse(payload)
- if debugDisco() {
+ if c.debugDisco() {
c.logf("magicsock: disco: disco.Parse = %T, %v", dm, err)
}
if err != nil {
@@ -1566,7 +1573,7 @@ func (c *Conn) handlePingLocked(dm *disco.Ping, src netip.AddrPort, di *discoInf
return
}
- if !likelyHeartBeat || debugDisco() {
+ if !likelyHeartBeat || c.debugDisco() {
pingNodeSrcStr := dstKey.ShortString()
if numNodes > 1 {
pingNodeSrcStr = "[one-of-multi]"