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) DomainName() 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) DomainName ¶ added in v1.56.0
func (nm *NetworkMap) DomainName() string
DomainName returns the name of the NetworkMap's current tailnet. If the map is nil, it returns an empty 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 )