types/netmap: remove some useless denormalized fields from NetworkMap

Updates #12639

Change-Id: Iec51c280141e22a0e3501df2053f2435e16fc0c8
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz/nm_cache
Brad Fitzpatrick 3 weeks ago
parent 4e01e8a66e
commit 91d23babef

@ -424,7 +424,7 @@ func (mrs mapRoutineState) UpdateFullNetmap(nm *netmap.NetworkMap) {
c.mu.Lock() c.mu.Lock()
c.inMapPoll = true c.inMapPoll = true
c.expiry = nm.Expiry c.expiry = nm.SelfKeyExpiry()
stillAuthed := c.loggedIn stillAuthed := c.loggedIn
c.logf("[v1] mapRoutine: netmap received: loggedIn=%v inMapPoll=true", stillAuthed) c.logf("[v1] mapRoutine: netmap received: loggedIn=%v inMapPoll=true", stillAuthed)
c.mu.Unlock() c.mu.Unlock()

@ -1085,7 +1085,7 @@ func (c *Direct) sendMapRequest(ctx context.Context, isStreaming bool, nu Netmap
c.persist = newPersist.View() c.persist = newPersist.View()
persist = c.persist persist = c.persist
} }
c.expiry = nm.Expiry c.expiry = nm.SelfKeyExpiry()
} }
// gotNonKeepAliveMessage is whether we've yet received a MapResponse message without // gotNonKeepAliveMessage is whether we've yet received a MapResponse message without

@ -892,8 +892,6 @@ func (ms *mapSession) netmap() *netmap.NetworkMap {
if node := ms.lastNode; node.Valid() { if node := ms.lastNode; node.Valid() {
nm.SelfNode = node nm.SelfNode = node
nm.Expiry = node.KeyExpiry()
nm.Name = node.Name()
nm.AllCaps = ms.lastCapSet nm.AllCaps = ms.lastCapSet
} }

@ -1295,7 +1295,7 @@ func (b *LocalBackend) UpdateStatus(sb *ipnstate.StatusBuilder) {
if hi := nm.SelfNode.Hostinfo(); hi.Valid() { if hi := nm.SelfNode.Hostinfo(); hi.Valid() {
ss.HostName = hi.Hostname() ss.HostName = hi.Hostname()
} }
ss.DNSName = nm.Name ss.DNSName = nm.SelfName()
ss.UserID = nm.User() ss.UserID = nm.User()
if sn := nm.SelfNode; sn.Valid() { if sn := nm.SelfNode; sn.Valid() {
peerStatusFromNode(ss, sn) peerStatusFromNode(ss, sn)
@ -1611,7 +1611,7 @@ func (b *LocalBackend) SetControlClientStatus(c controlclient.Client, st control
keyExpiryExtended := false keyExpiryExtended := false
if st.NetMap != nil { if st.NetMap != nil {
wasExpired := b.keyExpired wasExpired := b.keyExpired
isExpired := !st.NetMap.Expiry.IsZero() && st.NetMap.Expiry.Before(b.clock.Now()) isExpired := !st.NetMap.SelfKeyExpiry().IsZero() && st.NetMap.SelfKeyExpiry().Before(b.clock.Now())
if wasExpired && !isExpired { if wasExpired && !isExpired {
keyExpiryExtended = true keyExpiryExtended = true
} }

@ -747,7 +747,7 @@ func dnsConfigForNetmap(nm *netmap.NetworkMap, peers map[tailcfg.NodeID]tailcfg.
} }
dcfg.Hosts[fqdn] = ips dcfg.Hosts[fqdn] = ips
} }
set(nm.Name, nm.GetAddresses()) set(nm.SelfName(), nm.GetAddresses())
for _, peer := range peers { for _, peer := range peers {
set(peer.Name(), peer.Addresses()) set(peer.Name(), peer.Addresses())
} }

@ -36,11 +36,11 @@ func dnsMapFromNetworkMap(nm *netmap.NetworkMap) dnsMap {
suffix := nm.MagicDNSSuffix() suffix := nm.MagicDNSSuffix()
have4 := false have4 := false
addrs := nm.GetAddresses() addrs := nm.GetAddresses()
if nm.Name != "" && addrs.Len() > 0 { if name := nm.SelfName(); name != "" && addrs.Len() > 0 {
ip := addrs.At(0).Addr() ip := addrs.At(0).Addr()
ret[canonMapKey(nm.Name)] = ip ret[canonMapKey(name)] = ip
if dnsname.HasSuffix(nm.Name, suffix) { if dnsname.HasSuffix(name, suffix) {
ret[canonMapKey(dnsname.TrimSuffix(nm.Name, suffix))] = ip ret[canonMapKey(dnsname.TrimSuffix(name, suffix))] = ip
} }
for _, p := range addrs.All() { for _, p := range addrs.All() {
if p.Addr().Is4() { if p.Addr().Is4() {

@ -30,10 +30,6 @@ type NetworkMap struct {
AllCaps set.Set[tailcfg.NodeCapability] // set version of SelfNode.Capabilities + SelfNode.CapMap AllCaps set.Set[tailcfg.NodeCapability] // set version of SelfNode.Capabilities + SelfNode.CapMap
NodeKey key.NodePublic NodeKey key.NodePublic
PrivateKey key.NodePrivate PrivateKey key.NodePrivate
Expiry time.Time
// Name is the DNS name assigned to this node.
// It is the MapResponse.Node.Name value and ends with a period.
Name string
MachineKey key.MachinePublic MachineKey key.MachinePublic
@ -236,10 +232,25 @@ func MagicDNSSuffixOfNodeName(nodeName string) string {
// //
// It will neither start nor end with a period. // It will neither start nor end with a period.
func (nm *NetworkMap) MagicDNSSuffix() string { func (nm *NetworkMap) MagicDNSSuffix() string {
if nm == nil { return MagicDNSSuffixOfNodeName(nm.SelfName())
}
// SelfName returns nm.SelfNode.Name, or the empty string
// if nm is nil or nm.SelfNode is invalid.
func (nm *NetworkMap) SelfName() string {
if nm == nil || !nm.SelfNode.Valid() {
return "" return ""
} }
return MagicDNSSuffixOfNodeName(nm.Name) return nm.SelfNode.Name()
}
// SelfKeyExpiry returns nm.SelfNode.KeyExpiry, or the zero
// value if nil or nm.SelfNode is invalid.
func (nm *NetworkMap) SelfKeyExpiry() time.Time {
if nm == nil || !nm.SelfNode.Valid() {
return time.Time{}
}
return nm.SelfNode.KeyExpiry()
} }
// DomainName returns the name of the NetworkMap's // DomainName returns the name of the NetworkMap's

Loading…
Cancel
Save