Documentation ¶
Overview ¶
Package netmap contains the netmap.NetworkMap type.
Index ¶
- func MagicDNSSuffixOfNodeName(nodeName string) string
- type NetworkMap
- func (nm *NetworkMap) AnyPeersAdvertiseRoutes() bool
- func (nm *NetworkMap) Concise() string
- func (b *NetworkMap) ConciseDiffFrom(a *NetworkMap) string
- func (nm *NetworkMap) GetAddresses() views.Slice[netip.Prefix]
- func (nm *NetworkMap) GetMachineStatus() tailcfg.MachineStatus
- func (nm *NetworkMap) JSON() string
- func (nm *NetworkMap) MagicDNSSuffix() string
- func (nm *NetworkMap) PeerByTailscaleIP(ip netip.Addr) (peer tailcfg.NodeView, ok bool)
- func (nm *NetworkMap) PeerIndexByNodeID(nodeID tailcfg.NodeID) int
- func (nm *NetworkMap) PeerWithStableID(pid tailcfg.StableNodeID) (_ tailcfg.NodeView, ok bool)
- func (nm *NetworkMap) SelfCapabilities() views.Slice[tailcfg.NodeCapability]
- func (nm *NetworkMap) String() string
- func (nm *NetworkMap) User() tailcfg.UserID
- func (nm *NetworkMap) VeryConcise() string
- type NodeMutation
- type NodeMutationDERPHome
- type NodeMutationEndpoints
- type NodeMutationLastSeen
- type NodeMutationOnline
- type WGConfigFlags
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MagicDNSSuffixOfNodeName ¶ added in v1.50.0
MagicDNSSuffix returns the domain's MagicDNS suffix (even if MagicDNS isn't necessarily in use) of the provided Node.Name value.
It will neither start nor end with a period.
Types ¶
type NetworkMap ¶
type NetworkMap struct { SelfNode tailcfg.NodeView 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 Peers []tailcfg.NodeView // sorted by Node.ID DNS tailcfg.DNSConfig PacketFilter []filter.Match PacketFilterRules views.Slice[tailcfg.FilterRule] SSHPolicy *tailcfg.SSHPolicy // or nil, if not enabled/allowed // CollectServices reports whether this node's Tailnet has // requested that info about services be included in HostInfo. // If set, Hostinfo.ShieldsUp blocks services collection; that // takes precedence over this field. CollectServices bool // DERPMap is the last DERP server map received. It's reused // between updates and should not be modified. DERPMap *tailcfg.DERPMap // ControlHealth are the list of health check problems for this // node from the perspective of the control plane. // If empty, there are no known problems from the control plane's // point of view, but the node might know about its own health // check problems. ControlHealth []string // TKAEnabled indicates whether the tailnet key authority should be // enabled, from the perspective of the control plane. TKAEnabled bool // TKAHead indicates the control plane's understanding of 'head' (the // hash of the latest update message to tick through TKA). TKAHead tka.AUMHash // Domain is the current Tailnet name. Domain string // DomainAuditLogID is an audit log ID provided by control and // only populated if the domain opts into data-plane audit logging. // If this is empty, then data-plane audit logging is disabled. DomainAuditLogID string UserProfiles map[tailcfg.UserID]tailcfg.UserProfile }
NetworkMap is the current state of the world.
The fields should all be considered read-only. They might alias parts of previous NetworkMap values.
func (*NetworkMap) AnyPeersAdvertiseRoutes ¶ added in v1.34.0
func (nm *NetworkMap) AnyPeersAdvertiseRoutes() bool
AnyPeersAdvertiseRoutes reports whether any peer is advertising non-exit node routes.
func (*NetworkMap) Concise ¶
func (nm *NetworkMap) Concise() string
func (*NetworkMap) ConciseDiffFrom ¶
func (b *NetworkMap) ConciseDiffFrom(a *NetworkMap) string
func (*NetworkMap) GetAddresses ¶ added in v1.50.0
func (nm *NetworkMap) GetAddresses() views.Slice[netip.Prefix]
GetAddresses returns the self node's addresses, or the zero value if SelfNode is invalid.
func (*NetworkMap) GetMachineStatus ¶ added in v1.50.0
func (nm *NetworkMap) GetMachineStatus() tailcfg.MachineStatus
GetMachineStatus returns the MachineStatus of the local node.
func (*NetworkMap) JSON ¶
func (nm *NetworkMap) JSON() string
func (*NetworkMap) MagicDNSSuffix ¶
func (nm *NetworkMap) MagicDNSSuffix() string
MagicDNSSuffix returns the domain's MagicDNS suffix (even if MagicDNS isn't necessarily in use).
It will neither start nor end with a period.
func (*NetworkMap) PeerByTailscaleIP ¶ added in v1.26.0
PeerByTailscaleIP returns a peer's Node based on its Tailscale IP.
If nm is nil or no peer is found, ok is false.
func (*NetworkMap) PeerIndexByNodeID ¶ added in v1.50.0
func (nm *NetworkMap) PeerIndexByNodeID(nodeID tailcfg.NodeID) int
PeerIndexByNodeID returns the index of the peer with the given nodeID in nm.Peers, or -1 if nm is nil or not found.
It assumes nm.Peers is sorted by Node.ID.
func (*NetworkMap) PeerWithStableID ¶ added in v1.28.0
func (nm *NetworkMap) PeerWithStableID(pid tailcfg.StableNodeID) (_ tailcfg.NodeView, ok bool)
PeerWithStableID finds and returns the peer associated to the inputted StableNodeID.
func (*NetworkMap) SelfCapabilities ¶ added in v1.40.0
func (nm *NetworkMap) SelfCapabilities() views.Slice[tailcfg.NodeCapability]
SelfCapabilities returns SelfNode.Capabilities if nm and nm.SelfNode are non-nil. This is a method so we can use it in envknob/logknob without a circular dependency.
func (*NetworkMap) String ¶
func (nm *NetworkMap) String() string
func (*NetworkMap) User ¶
func (nm *NetworkMap) User() tailcfg.UserID
User returns nm.SelfNode.User if nm.SelfNode is non-nil, otherwise it returns 0.
func (*NetworkMap) VeryConcise ¶ added in v1.14.0
func (nm *NetworkMap) VeryConcise() string
type NodeMutation ¶ added in v1.50.0
NodeMutation is the common interface for types that describe the change of a node's state.
func MutationsFromMapResponse ¶ added in v1.50.0
func MutationsFromMapResponse(res *tailcfg.MapResponse, now time.Time) (ret []NodeMutation, ok bool)
MutationsFromMapResponse returns all the discrete node mutations described by res. It returns ok=false if res contains any non-patch field as defined by mapResponseContainsNonPatchFields.
func NodeMutationsFromPatch ¶ added in v1.50.0
func NodeMutationsFromPatch(p *tailcfg.PeerChange) (_ []NodeMutation, ok bool)
NodeMutationsFromPatch returns the NodeMutations that p describes. If p describes something not yet supported by a specific NodeMutation type, it returns (nil, false).
type NodeMutationDERPHome ¶ added in v1.50.0
type NodeMutationDERPHome struct { DERPRegion int // contains filtered or unexported fields }
NodeMutationDERPHome is a NodeMutation that says a node has changed its DERP home region.
func (NodeMutationDERPHome) Apply ¶ added in v1.50.0
func (m NodeMutationDERPHome) Apply(n *tailcfg.Node)
func (NodeMutationDERPHome) NodeIDBeingMutated ¶ added in v1.50.0
type NodeMutationEndpoints ¶ added in v1.50.0
type NodeMutationEndpoints struct { Endpoints []netip.AddrPort // contains filtered or unexported fields }
NodeMutation is a NodeMutation that says a node's endpoints have changed.
func (NodeMutationEndpoints) Apply ¶ added in v1.50.0
func (m NodeMutationEndpoints) Apply(n *tailcfg.Node)
func (NodeMutationEndpoints) NodeIDBeingMutated ¶ added in v1.50.0
type NodeMutationLastSeen ¶ added in v1.50.0
NodeMutationLastSeen is a NodeMutation that says a node's LastSeen value should be set to the current time.
func (NodeMutationLastSeen) Apply ¶ added in v1.50.0
func (m NodeMutationLastSeen) Apply(n *tailcfg.Node)
func (NodeMutationLastSeen) NodeIDBeingMutated ¶ added in v1.50.0
type NodeMutationOnline ¶ added in v1.50.0
type NodeMutationOnline struct { Online bool // contains filtered or unexported fields }
NodeMutationOnline is a NodeMutation that says a node is now online or offline.
func (NodeMutationOnline) Apply ¶ added in v1.50.0
func (m NodeMutationOnline) Apply(n *tailcfg.Node)
func (NodeMutationOnline) NodeIDBeingMutated ¶ added in v1.50.0
type WGConfigFlags ¶
type WGConfigFlags int
WGConfigFlags is a bitmask of flags to control the behavior of the wireguard configuration generation done by NetMap.WGCfg.
const ( AllowSingleHosts WGConfigFlags = 1 << iota AllowSubnetRoutes )