status

package
v1.92.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 26, 2025 License: BSD-3-Clause Imports: 1 Imported by: 0

Documentation

Overview

Package status contains types relating to the status of peer relay sessions between peer relay client nodes via a peer relay server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientInfo

type ClientInfo struct {
	// Endpoint is the [netip.AddrPort] of this peer relay client's underlay
	// endpoint participating in the session, or a zero value if the client
	// has not completed a handshake.
	Endpoint netip.AddrPort
	// ShortDisco is a string representation of this peer relay client's disco
	// public key.
	//
	// TODO: disco keys are pretty meaningless to end users, and they are also
	//  ephemeral. We really need node keys (or translation to first ts addr),
	//  but those are not fully plumbed into the [udprelay.Server]. Disco keys
	//  can also be ambiguous to a node key, but we could add node key into a
	//  [disco.AllocateUDPRelayEndpointRequest] in similar fashion to
	//  [disco.Ping]. There's also the problem of netmap trimming, where we
	//  can't verify a node key maps to a disco key.
	ShortDisco string
	// PacketsTx is the number of packets this peer relay client has sent to
	// the other client via the relay server after completing a handshake. This
	// is identical to the number of packets that the peer relay server has
	// received from this client.
	PacketsTx uint64
	// BytesTx is the total overlay bytes this peer relay client has sent to
	// the other client via the relay server after completing a handshake. This
	// is identical to the total overlay bytes that the peer relay server has
	// received from this client.
	BytesTx uint64
}

ClientInfo contains status-related information about a single peer relay client involved in a single peer relay session.

type ServerSession

type ServerSession struct {
	// VNI is the Virtual Network Identifier for this peer relay session, which
	// comes from the Geneve header and is unique to this session.
	VNI uint32
	// Client1 contains status information about one of the two peer relay
	// clients involved in this session. Note that 'Client1' does NOT mean this
	// was/wasn't the allocating client, or the first client to bind, etc; this
	// is just one client of two.
	Client1 ClientInfo
	// Client2 contains status information about one of the two peer relay
	// clients involved in this session. Note that 'Client2' does NOT mean this
	// was/wasn't the allocating client, or the second client to bind, etc; this
	// is just one client of two.
	Client2 ClientInfo
}

ServerSession contains status information for a single session between two peer relay clients, which are relayed via one peer relay server. This is the status as seen by the peer relay server; each client node may have a different view of the session's current status based on connectivity and where the client is in the peer relay endpoint setup (allocation, binding, pinging, active).

type ServerStatus

type ServerStatus struct {
	// UDPPort is the UDP port number that the peer relay server forwards over,
	// as configured by the user with 'tailscale set --relay-server-port=<PORT>'.
	// If the port has not been configured, UDPPort will be nil. A non-nil zero
	// value signifies the user has opted for a random unused port.
	UDPPort *uint16
	// Sessions is a slice of detailed status information about each peer
	// relay session that this node's peer relay server is involved with. It
	// may be empty.
	Sessions []ServerSession
}

ServerStatus contains the listening UDP port and active sessions (if any) for this node's peer relay server at a point in time.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL