mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-11 13:18:53 +00:00
ipn/ipnlocal, types/netmap: replace hasCapability with set lookup on NetworkMap
When node attributes were super rare, the O(n) slice scans looking for node attributes was more acceptable. But now more code and more users are using increasingly more node attributes. Time to make it a map. Noticed while working on tailscale/corp#17879 Updates #cleanup Change-Id: Ic17c80341f418421002fbceb47490729048756d2 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:

committed by
Brad Fitzpatrick

parent
8c88853db6
commit
b104688e04
@@ -17,6 +17,7 @@ import (
|
||||
"tailscale.com/tka"
|
||||
"tailscale.com/types/key"
|
||||
"tailscale.com/types/views"
|
||||
"tailscale.com/util/set"
|
||||
"tailscale.com/wgengine/filter"
|
||||
)
|
||||
|
||||
@@ -26,6 +27,7 @@ import (
|
||||
// alias parts of previous NetworkMap values.
|
||||
type NetworkMap struct {
|
||||
SelfNode tailcfg.NodeView
|
||||
AllCaps set.Set[tailcfg.NodeCapability] // set version of SelfNode.Capabilities + SelfNode.CapMap
|
||||
NodeKey key.NodePublic
|
||||
PrivateKey key.NodePrivate
|
||||
Expiry time.Time
|
||||
@@ -120,6 +122,11 @@ func (nm *NetworkMap) GetMachineStatus() tailcfg.MachineStatus {
|
||||
return tailcfg.MachineUnauthorized
|
||||
}
|
||||
|
||||
// HasCap reports whether nm is non-nil and nm.AllCaps contains c.
|
||||
func (nm *NetworkMap) HasCap(c tailcfg.NodeCapability) bool {
|
||||
return nm != nil && nm.AllCaps.Contains(c)
|
||||
}
|
||||
|
||||
// PeerByTailscaleIP returns a peer's Node based on its Tailscale IP.
|
||||
//
|
||||
// If nm is nil or no peer is found, ok is false.
|
||||
|
Reference in New Issue
Block a user