From 3471fbf8dc75e6bdedc7dd031e35a217062e48ba Mon Sep 17 00:00:00 2001 From: Tom DNetto Date: Wed, 8 Mar 2023 14:16:23 -0800 Subject: [PATCH] cmd/tailscale: surface node-key for locked out tailnet-lock peers Signed-off-by: Tom DNetto --- cmd/tailscale/cli/network-lock.go | 4 +++- ipn/ipnlocal/network-lock.go | 1 + ipn/ipnstate/ipnstate.go | 1 + ipn/ipnstate/ipnstate_clone.go | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/tailscale/cli/network-lock.go b/cmd/tailscale/cli/network-lock.go index 47ba6a005..ffa868d8a 100644 --- a/cmd/tailscale/cli/network-lock.go +++ b/cmd/tailscale/cli/network-lock.go @@ -247,11 +247,13 @@ func runNetworkLockStatus(ctx context.Context, args []string) error { for i, addr := range p.TailscaleIPs { line.WriteString(addr.String()) if i < len(p.TailscaleIPs)-1 { - line.WriteString(", ") + line.WriteString(",") } } line.WriteString("\t") line.WriteString(string(p.StableID)) + line.WriteString("\t") + line.WriteString(p.NodeKey.String()) fmt.Println(line.String()) } } diff --git a/ipn/ipnlocal/network-lock.go b/ipn/ipnlocal/network-lock.go index bdf8da286..932627c56 100644 --- a/ipn/ipnlocal/network-lock.go +++ b/ipn/ipnlocal/network-lock.go @@ -106,6 +106,7 @@ func (b *LocalBackend) tkaFilterNetmapLocked(nm *netmap.NetworkMap) { ID: p.ID, StableID: p.StableID, TailscaleIPs: make([]netip.Addr, len(p.Addresses)), + NodeKey: p.Key, } for i, addr := range p.Addresses { if addr.IsSingleIP() && tsaddr.IsTailscaleIP(addr.Addr()) { diff --git a/ipn/ipnstate/ipnstate.go b/ipn/ipnstate/ipnstate.go index 54fdea246..94d91b180 100644 --- a/ipn/ipnstate/ipnstate.go +++ b/ipn/ipnstate/ipnstate.go @@ -88,6 +88,7 @@ type TKAFilteredPeer struct { ID tailcfg.NodeID StableID tailcfg.StableNodeID TailscaleIPs []netip.Addr // Tailscale IP(s) assigned to this node + NodeKey key.NodePublic } // NetworkLockStatus represents whether network-lock is enabled, diff --git a/ipn/ipnstate/ipnstate_clone.go b/ipn/ipnstate/ipnstate_clone.go index c96b8e575..262daf3f2 100644 --- a/ipn/ipnstate/ipnstate_clone.go +++ b/ipn/ipnstate/ipnstate_clone.go @@ -9,6 +9,7 @@ import ( "net/netip" "tailscale.com/tailcfg" + "tailscale.com/types/key" ) // Clone makes a deep copy of TKAFilteredPeer. @@ -29,4 +30,5 @@ var _TKAFilteredPeerCloneNeedsRegeneration = TKAFilteredPeer(struct { ID tailcfg.NodeID StableID tailcfg.StableNodeID TailscaleIPs []netip.Addr + NodeKey key.NodePublic }{})