|
|
|
@ -339,28 +339,32 @@ func (b *LocalBackend) populatePeerStatusLocked(sb *ipnstate.StatusBuilder) {
|
|
|
|
|
if p.LastSeen != nil {
|
|
|
|
|
lastSeen = *p.LastSeen
|
|
|
|
|
}
|
|
|
|
|
var tailAddr string
|
|
|
|
|
var tailAddr4 string
|
|
|
|
|
var tailscaleIPs = make([]netaddr.IP, 0, len(p.Addresses))
|
|
|
|
|
for _, addr := range p.Addresses {
|
|
|
|
|
// The peer struct currently only allows a single
|
|
|
|
|
// Tailscale IP address. For compatibility with the
|
|
|
|
|
// old display, make sure it's the IPv4 address.
|
|
|
|
|
if addr.IP.Is4() && addr.IsSingleIP() && tsaddr.IsTailscaleIP(addr.IP) {
|
|
|
|
|
tailAddr = addr.IP.String()
|
|
|
|
|
break
|
|
|
|
|
if addr.IsSingleIP() && tsaddr.IsTailscaleIP(addr.IP) {
|
|
|
|
|
if addr.IP.Is4() && tailAddr4 == "" {
|
|
|
|
|
// The peer struct previously only allowed a single
|
|
|
|
|
// Tailscale IP address. For compatibility for a few releases starting
|
|
|
|
|
// with 1.8, keep it pulled out as IPv4-only for a bit.
|
|
|
|
|
tailAddr4 = addr.IP.String()
|
|
|
|
|
}
|
|
|
|
|
tailscaleIPs = append(tailscaleIPs, addr.IP)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sb.AddPeer(key.Public(p.Key), &ipnstate.PeerStatus{
|
|
|
|
|
InNetworkMap: true,
|
|
|
|
|
UserID: p.User,
|
|
|
|
|
TailAddr: tailAddr,
|
|
|
|
|
HostName: p.Hostinfo.Hostname,
|
|
|
|
|
DNSName: p.Name,
|
|
|
|
|
OS: p.Hostinfo.OS,
|
|
|
|
|
KeepAlive: p.KeepAlive,
|
|
|
|
|
Created: p.Created,
|
|
|
|
|
LastSeen: lastSeen,
|
|
|
|
|
ShareeNode: p.Hostinfo.ShareeNode,
|
|
|
|
|
ExitNode: p.StableID != "" && p.StableID == b.prefs.ExitNodeID,
|
|
|
|
|
InNetworkMap: true,
|
|
|
|
|
UserID: p.User,
|
|
|
|
|
TailAddrDeprecated: tailAddr4,
|
|
|
|
|
TailscaleIPs: tailscaleIPs,
|
|
|
|
|
HostName: p.Hostinfo.Hostname,
|
|
|
|
|
DNSName: p.Name,
|
|
|
|
|
OS: p.Hostinfo.OS,
|
|
|
|
|
KeepAlive: p.KeepAlive,
|
|
|
|
|
Created: p.Created,
|
|
|
|
|
LastSeen: lastSeen,
|
|
|
|
|
ShareeNode: p.Hostinfo.ShareeNode,
|
|
|
|
|
ExitNode: p.StableID != "" && p.StableID == b.prefs.ExitNodeID,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|