summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2025-11-15 10:28:09 -0800
committerBrad Fitzpatrick <bradfitz@tailscale.com>2025-11-15 10:28:09 -0800
commit91d23babef688c3564d445cdacd91c7c55bd66da (patch)
treea3a9cee0a8d2b99fb4e4ce9786aabd5a508017fa
parent4e01e8a66ec6ae1d5ebecc60ad12b26ce300c860 (diff)
downloadtailscale-bradfitz/nm_cache.tar.xz
tailscale-bradfitz/nm_cache.zip
types/netmap: remove some useless denormalized fields from NetworkMapbradfitz/nm_cache
Updates #12639 Change-Id: Iec51c280141e22a0e3501df2053f2435e16fc0c8 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
-rw-r--r--control/controlclient/auto.go2
-rw-r--r--control/controlclient/direct.go2
-rw-r--r--control/controlclient/map.go2
-rw-r--r--ipn/ipnlocal/local.go4
-rw-r--r--ipn/ipnlocal/node_backend.go2
-rw-r--r--net/tsdial/dnsmap.go8
-rw-r--r--types/netmap/netmap.go23
7 files changed, 26 insertions, 17 deletions
diff --git a/control/controlclient/auto.go b/control/controlclient/auto.go
index 9d648409b..58d4864b2 100644
--- a/control/controlclient/auto.go
+++ b/control/controlclient/auto.go
@@ -424,7 +424,7 @@ func (mrs mapRoutineState) UpdateFullNetmap(nm *netmap.NetworkMap) {
c.mu.Lock()
c.inMapPoll = true
- c.expiry = nm.Expiry
+ c.expiry = nm.SelfKeyExpiry()
stillAuthed := c.loggedIn
c.logf("[v1] mapRoutine: netmap received: loggedIn=%v inMapPoll=true", stillAuthed)
c.mu.Unlock()
diff --git a/control/controlclient/direct.go b/control/controlclient/direct.go
index d30db6191..d64ed7bf3 100644
--- a/control/controlclient/direct.go
+++ b/control/controlclient/direct.go
@@ -1085,7 +1085,7 @@ func (c *Direct) sendMapRequest(ctx context.Context, isStreaming bool, nu Netmap
c.persist = newPersist.View()
persist = c.persist
}
- c.expiry = nm.Expiry
+ c.expiry = nm.SelfKeyExpiry()
}
// gotNonKeepAliveMessage is whether we've yet received a MapResponse message without
diff --git a/control/controlclient/map.go b/control/controlclient/map.go
index eafdb2d56..df85aed52 100644
--- a/control/controlclient/map.go
+++ b/control/controlclient/map.go
@@ -892,8 +892,6 @@ func (ms *mapSession) netmap() *netmap.NetworkMap {
if node := ms.lastNode; node.Valid() {
nm.SelfNode = node
- nm.Expiry = node.KeyExpiry()
- nm.Name = node.Name()
nm.AllCaps = ms.lastCapSet
}
diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go
index 41d110400..48d6995aa 100644
--- a/ipn/ipnlocal/local.go
+++ b/ipn/ipnlocal/local.go
@@ -1295,7 +1295,7 @@ func (b *LocalBackend) UpdateStatus(sb *ipnstate.StatusBuilder) {
if hi := nm.SelfNode.Hostinfo(); hi.Valid() {
ss.HostName = hi.Hostname()
}
- ss.DNSName = nm.Name
+ ss.DNSName = nm.SelfName()
ss.UserID = nm.User()
if sn := nm.SelfNode; sn.Valid() {
peerStatusFromNode(ss, sn)
@@ -1611,7 +1611,7 @@ func (b *LocalBackend) SetControlClientStatus(c controlclient.Client, st control
keyExpiryExtended := false
if st.NetMap != nil {
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 {
keyExpiryExtended = true
}
diff --git a/ipn/ipnlocal/node_backend.go b/ipn/ipnlocal/node_backend.go
index dbe23e4d5..3c2e88246 100644
--- a/ipn/ipnlocal/node_backend.go
+++ b/ipn/ipnlocal/node_backend.go
@@ -747,7 +747,7 @@ func dnsConfigForNetmap(nm *netmap.NetworkMap, peers map[tailcfg.NodeID]tailcfg.
}
dcfg.Hosts[fqdn] = ips
}
- set(nm.Name, nm.GetAddresses())
+ set(nm.SelfName(), nm.GetAddresses())
for _, peer := range peers {
set(peer.Name(), peer.Addresses())
}
diff --git a/net/tsdial/dnsmap.go b/net/tsdial/dnsmap.go
index 2ef1cb1f1..37fedd14c 100644
--- a/net/tsdial/dnsmap.go
+++ b/net/tsdial/dnsmap.go
@@ -36,11 +36,11 @@ func dnsMapFromNetworkMap(nm *netmap.NetworkMap) dnsMap {
suffix := nm.MagicDNSSuffix()
have4 := false
addrs := nm.GetAddresses()
- if nm.Name != "" && addrs.Len() > 0 {
+ if name := nm.SelfName(); name != "" && addrs.Len() > 0 {
ip := addrs.At(0).Addr()
- ret[canonMapKey(nm.Name)] = ip
- if dnsname.HasSuffix(nm.Name, suffix) {
- ret[canonMapKey(dnsname.TrimSuffix(nm.Name, suffix))] = ip
+ ret[canonMapKey(name)] = ip
+ if dnsname.HasSuffix(name, suffix) {
+ ret[canonMapKey(dnsname.TrimSuffix(name, suffix))] = ip
}
for _, p := range addrs.All() {
if p.Addr().Is4() {
diff --git a/types/netmap/netmap.go b/types/netmap/netmap.go
index cc6bec1db..d39eb64b5 100644
--- a/types/netmap/netmap.go
+++ b/types/netmap/netmap.go
@@ -30,10 +30,6 @@ type NetworkMap struct {
AllCaps set.Set[tailcfg.NodeCapability] // set version of SelfNode.Capabilities + SelfNode.CapMap
NodeKey key.NodePublic
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
@@ -236,10 +232,25 @@ func MagicDNSSuffixOfNodeName(nodeName string) string {
//
// It will neither start nor end with a period.
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 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