From 1b426cc232c0b759200b91ba21e0428c458403eb Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 6 Jan 2022 16:07:50 -0800 Subject: [PATCH] wgengine/netstack: add env knob to turn on netstack debug logs Except for the super verbose packet-level dumps. Keep those disabled by default with a const. Updates #2642 Change-Id: Ia9eae1677e8b3fe6f457a59e44896a335d95d547 Signed-off-by: Brad Fitzpatrick --- wgengine/netstack/netstack.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/wgengine/netstack/netstack.go b/wgengine/netstack/netstack.go index 64db617af..2617501a3 100644 --- a/wgengine/netstack/netstack.go +++ b/wgengine/netstack/netstack.go @@ -12,6 +12,7 @@ "io" "log" "net" + "os" "os/exec" "runtime" "strconv" @@ -45,7 +46,9 @@ "tailscale.com/wgengine/magicsock" ) -const debugNetstack = false +const debugPackets = false + +var debugNetstack, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_NETSTACK")) // Impl contains the state for the netstack implementation, // and implements wgengine.FakeImpl to act as a userspace network @@ -356,7 +359,7 @@ func (ns *Impl) injectOutbound() { full = append(full, hdrNetwork.View()...) full = append(full, hdrTransport.View()...) full = append(full, pkt.Data().AsRange().AsView()...) - if debugNetstack { + if debugPackets { ns.logf("[v2] packet Write out: % x", full) } if err := ns.tundev.InjectOutbound(full); err != nil { @@ -461,7 +464,7 @@ func (ns *Impl) injectInbound(p *packet.Parsed, t *tstun.Wrapper) filter.Respons case 6: pn = header.IPv6ProtocolNumber } - if debugNetstack { + if debugPackets { ns.logf("[v2] packet in (from %v): % x", p.Src, p.Buffer()) } vv := buffer.View(append([]byte(nil), p.Buffer()...)).ToVectorisedView() @@ -560,6 +563,9 @@ func (ns *Impl) forwardTCP(client *gonet.TCPConn, clientRemoteIP netaddr.IP, wq go func() { select { case <-notifyCh: + if debugNetstack { + ns.logf("[v2] netstack: forwardTCP notifyCh fired; canceling context for %s", dialAddrStr) + } case <-done: } cancel()