From fd7fddd44f84c019a6bcea8f58e5a767b19a4192 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 28 Jun 2021 15:25:58 -0700 Subject: [PATCH] control/controlclient: add debug knob to force node to only IPv6 self addr Updates #2268 Signed-off-by: Brad Fitzpatrick --- control/controlclient/map.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/control/controlclient/map.go b/control/controlclient/map.go index 4733ad44c..051c82cac 100644 --- a/control/controlclient/map.go +++ b/control/controlclient/map.go @@ -6,8 +6,11 @@ package controlclient import ( "log" + "os" "sort" + "strconv" + "inet.af/netaddr" "tailscale.com/tailcfg" "tailscale.com/types/logger" "tailscale.com/types/netmap" @@ -124,7 +127,7 @@ func (ms *mapSession) netmapForResponse(resp *tailcfg.MapResponse) *netmap.Netwo nm.SelfNode = node nm.Expiry = node.KeyExpiry nm.Name = node.Name - nm.Addresses = node.Addresses + nm.Addresses = filterSelfAddresses(node.Addresses) nm.User = node.User nm.Hostinfo = node.Hostinfo if node.MachineAuthorized { @@ -280,3 +283,19 @@ func cloneNodes(v1 []*tailcfg.Node) []*tailcfg.Node { } return v2 } + +var debugSelfIPv6Only, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_SELF_V6_ONLY")) + +func filterSelfAddresses(in []netaddr.IPPrefix) (ret []netaddr.IPPrefix) { + switch { + default: + return in + case debugSelfIPv6Only: + for _, a := range in { + if a.IP().Is6() { + ret = append(ret, a) + } + } + return ret + } +}