wgengine/magicsock: start removing endpointForDiscoKey

It's not valid to assume that a discokey is globally unique.

This removes the first two of the four callers.

Updates #3088

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
(cherry picked from commit 82fa15fa3b)
This commit is contained in:
Brad Fitzpatrick 2021-10-15 14:40:49 -07:00
parent b99caad1e9
commit 7b7ff1f2e4
2 changed files with 12 additions and 5 deletions

View File

@ -109,6 +109,13 @@ func (m *peerMap) nodeCount() int {
return len(m.byNodeKey) return len(m.byNodeKey)
} }
// anyEndpointForDiscoKey reports whether there exists any
// peers in the netmap with dk as their DiscoKey.
func (m *peerMap) anyEndpointForDiscoKey(dk tailcfg.DiscoKey) bool {
_, ok := m.byDiscoKey[dk]
return ok
}
// endpointForDiscoKey returns the endpoint for dk, or nil // endpointForDiscoKey returns the endpoint for dk, or nil
// if dk is not known to us. // if dk is not known to us.
func (m *peerMap) endpointForDiscoKey(dk tailcfg.DiscoKey) (ep *endpoint, ok bool) { func (m *peerMap) endpointForDiscoKey(dk tailcfg.DiscoKey) (ep *endpoint, ok bool) {
@ -831,12 +838,12 @@ func (c *Conn) SetNetInfoCallback(fn func(*tailcfg.NetInfo)) {
} }
} }
// LastRecvActivityOfDisco describes the time we last got traffic from // LastRecvActivityOfNodeKey describes the time we last got traffic from
// this endpoint (updated every ~10 seconds). // this endpoint (updated every ~10 seconds).
func (c *Conn) LastRecvActivityOfDisco(dk tailcfg.DiscoKey) string { func (c *Conn) LastRecvActivityOfNodeKey(nk tailcfg.NodeKey) string {
c.mu.Lock() c.mu.Lock()
defer c.mu.Unlock() defer c.mu.Unlock()
de, ok := c.peerMap.endpointForDiscoKey(dk) de, ok := c.peerMap.endpointForNodeKey(nk)
if !ok { if !ok {
return "never" return "never"
} }
@ -2171,7 +2178,7 @@ func (c *Conn) SetNetworkMap(nm *netmap.NetworkMap) {
// discokeys might have changed in the above. Discard unused cached keys. // discokeys might have changed in the above. Discard unused cached keys.
for discoKey := range c.sharedDiscoKey { for discoKey := range c.sharedDiscoKey {
if _, ok := c.peerMap.endpointForDiscoKey(discoKey); !ok { if !c.peerMap.anyEndpointForDiscoKey(discoKey) {
delete(c.sharedDiscoKey, discoKey) delete(c.sharedDiscoKey, discoKey)
} }
} }

View File

@ -231,7 +231,7 @@ func (e *userspaceEngine) onOpenTimeout(flow flowtrack.Tuple) {
e.logf("open-conn-track: timeout opening %v to node %v; online=%v, lastRecv=%v", e.logf("open-conn-track: timeout opening %v to node %v; online=%v, lastRecv=%v",
flow, n.Key.ShortString(), flow, n.Key.ShortString(),
online, online,
e.magicConn.LastRecvActivityOfDisco(n.DiscoKey)) e.magicConn.LastRecvActivityOfNodeKey(n.Key))
} }
func durFmt(t time.Time) string { func durFmt(t time.Time) string {