summaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2021-08-03 19:33:17 -0700
committerBrad Fitzpatrick <bradfitz@tailscale.com>2021-08-03 19:34:58 -0700
commit1db9032ff5dfd96e6bd2e1064226065d79d40561 (patch)
treeb449cab3aaae08cf3a67981e20470c0ae9430aaa /cmd
parent260b85458cae8000de5b2671db5361f867ec0aac (diff)
downloadtailscale-1db9032ff5dfd96e6bd2e1064226065d79d40561.tar.xz
tailscale-1db9032ff5dfd96e6bd2e1064226065d79d40561.zip
cmd/tailscaled: let portmap debug mode have an gateway/IP override knob
For testing pfSense clients "behind" pfSense on Digital Ocean where the main interface still exists. This is easier for debugging. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/tailscaled/debug.go22
1 files changed, 21 insertions, 1 deletions
diff --git a/cmd/tailscaled/debug.go b/cmd/tailscaled/debug.go
index 7a674a32a..bf9842eed 100644
--- a/cmd/tailscaled/debug.go
+++ b/cmd/tailscaled/debug.go
@@ -19,8 +19,10 @@ import (
"net/http/httptrace"
"net/url"
"os"
+ "strings"
"time"
+ "inet.af/netaddr"
"tailscale.com/derp/derphttp"
"tailscale.com/ipn"
"tailscale.com/net/interfaces"
@@ -226,7 +228,25 @@ func debugPortmap(ctx context.Context) error {
if err != nil {
return err
}
- c.SetGatewayLookupFunc(linkMon.GatewayAndSelfIP)
+
+ gatewayAndSelfIP := func() (gw, self netaddr.IP, ok bool) {
+ if v := os.Getenv("TS_DEBUG_GW_SELF"); strings.Contains(v, "/") {
+ i := strings.Index(v, "/")
+ gw = netaddr.MustParseIP(v[:i])
+ self = netaddr.MustParseIP(v[i+1:])
+ return gw, self, true
+ }
+ return linkMon.GatewayAndSelfIP()
+ }
+
+ c.SetGatewayLookupFunc(gatewayAndSelfIP)
+
+ gw, selfIP, ok := gatewayAndSelfIP()
+ if !ok {
+ logf("no gateway or self IP; %v", linkMon.InterfaceState())
+ return nil
+ }
+ logf("gw=%v; self=%v", gw, selfIP)
res, err := c.Probe(ctx)
if err != nil {