Documentation
¶
Index ¶
- func IP() netip.Addr
- func Logger(logger slog.Logger) tslogger.Logf
- func NewDERPMap(ctx context.Context, region *tailcfg.DERPRegion, stunAddrs []string, ...) (*tailcfg.DERPMap, error)
- func ServeCoordinator(conn net.Conn, updateNodes func(node []*Node) error) (func(node *Node), <-chan error)
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) Closed() <-chan struct{}
- func (c *Conn) DialContextTCP(ctx context.Context, ipp netip.AddrPort) (*gonet.TCPConn, error)
- func (c *Conn) DialContextUDP(ctx context.Context, ipp netip.AddrPort) (*gonet.UDPConn, error)
- func (c *Conn) Listen(network, addr string) (net.Listener, error)
- func (c *Conn) Ping(ip netip.Addr, pingType tailcfg.PingType, cb func(*ipnstate.PingResult))
- func (c *Conn) SetDERPMap(derpMap *tailcfg.DERPMap)
- func (c *Conn) SetForwardTCPCallback(callback func(conn net.Conn, listenerExists bool) net.Conn)
- func (c *Conn) SetNodeCallback(callback func(node *Node))
- func (c *Conn) Status() *ipnstate.Status
- func (c *Conn) UpdateNodes(nodes []*Node) error
- type Coordinator
- type Node
- type Options
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewDERPMap ¶
func NewDERPMap(ctx context.Context, region *tailcfg.DERPRegion, stunAddrs []string, remoteURL, localPath string) (*tailcfg.DERPMap, error)
NewDERPMap constructs a DERPMap from a set of STUN addresses and optionally a remote URL to fetch a mapping from e.g. https://controlplane.tailscale.com/derpmap/default.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is an actively listening Wireguard connection.
func NewConn ¶
NewConn constructs a new Wireguard server that will accept connections from the addresses provided.
func (*Conn) Closed ¶
func (c *Conn) Closed() <-chan struct{}
Closed is a channel that ends when the connection has been closed.
func (*Conn) DialContextTCP ¶
func (*Conn) DialContextUDP ¶
func (*Conn) Listen ¶
Listen announces only on the Tailscale network. It will start the server if it has not been started yet.
func (*Conn) SetDERPMap ¶
SetDERPMap updates the DERPMap of a connection.
func (*Conn) SetForwardTCPCallback ¶ added in v0.8.12
SetForwardTCPCallback is called every time a TCP connection is initiated inbound. listenerExists is true if a listener is registered for the target port. If there isn't one, traffic is forwarded to the local listening port.
This allows wrapping a Conn to track reads and writes.
func (*Conn) SetNodeCallback ¶
SetNodeCallback is triggered when a network change occurs and peer renegotiation may be required. Clients should constantly be emitting node changes.
func (*Conn) UpdateNodes ¶
UpdateNodes connects with a set of peers. This can be constantly updated, and peers will continually be reconnected as necessary.
type Coordinator ¶
type Coordinator struct {
// contains filtered or unexported fields
}
Coordinator exchanges nodes with agents to establish connections. ┌──────────────────┐ ┌────────────────────┐ ┌───────────────────┐ ┌──────────────────┐ │tailnet.Coordinate├──►│tailnet.AcceptClient│◄─►│tailnet.AcceptAgent│◄──┤tailnet.Coordinate│ └──────────────────┘ └────────────────────┘ └───────────────────┘ └──────────────────┘ This coordinator is incompatible with multiple Coder replicas as all node data is in-memory.
func NewCoordinator ¶
func NewCoordinator() *Coordinator
NewCoordinator constructs a new in-memory connection coordinator.
func (*Coordinator) Node ¶
func (c *Coordinator) Node(id uuid.UUID) *Node
Node returns an in-memory node by ID.
func (*Coordinator) ServeAgent ¶
ServeAgent accepts a WebSocket connection to an agent that listens to incoming connections and publishes node updates.
func (*Coordinator) ServeClient ¶
ServeClient accepts a WebSocket connection that wants to connect to an agent with the specified ID.
type Node ¶
type Node struct { ID tailcfg.NodeID `json:"id"` Key key.NodePublic `json:"key"` DiscoKey key.DiscoPublic `json:"disco"` PreferredDERP int `json:"preferred_derp"` DERPLatency map[string]float64 `json:"derp_latency"` Addresses []netip.Prefix `json:"addresses"` AllowedIPs []netip.Prefix `json:"allowed_ips"` Endpoints []string `json:"endpoints"` }
Node represents a node in the network.