diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index 3603e2e0e..6df575621 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -326,6 +326,9 @@ func (b *LocalBackend) updateStatus(sb *ipnstate.StatusBuilder, extraLocked func } }) sb.MutateSelfStatus(func(ss *ipnstate.PeerStatus) { + if b.netMap != nil && b.netMap.SelfNode != nil { + ss.ID = b.netMap.SelfNode.StableID + } for _, pln := range b.peerAPIListeners { ss.PeerAPIURL = append(ss.PeerAPIURL, pln.urlStr) } @@ -365,6 +368,7 @@ func (b *LocalBackend) populatePeerStatusLocked(sb *ipnstate.StatusBuilder) { } sb.AddPeer(key.Public(p.Key), &ipnstate.PeerStatus{ InNetworkMap: true, + ID: p.StableID, UserID: p.User, TailAddrDeprecated: tailAddr4, TailscaleIPs: tailscaleIPs, diff --git a/ipn/ipnstate/ipnstate.go b/ipn/ipnstate/ipnstate.go index cbc3413ca..99663acf1 100644 --- a/ipn/ipnstate/ipnstate.go +++ b/ipn/ipnstate/ipnstate.go @@ -65,6 +65,7 @@ type PeerStatusLite struct { } type PeerStatus struct { + ID tailcfg.StableNodeID PublicKey key.Public HostName string // HostInfo's Hostname (not a DNS name or necessarily unique) DNSName string @@ -203,6 +204,9 @@ func (sb *StatusBuilder) AddPeer(peer key.Public, st *PeerStatus) { return } + if v := st.ID; v != "" { + e.ID = v + } if v := st.HostName; v != "" { e.HostName = v }