Update
This commit is contained in:
64
vendor/tailscale.com/net/udprelay/endpoint/endpoint.go
generated
vendored
Normal file
64
vendor/tailscale.com/net/udprelay/endpoint/endpoint.go
generated
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Package endpoint contains types relating to UDP relay server endpoints. It
|
||||
// does not import tailscale.com/net/udprelay.
|
||||
package endpoint
|
||||
|
||||
import (
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"tailscale.com/tstime"
|
||||
"tailscale.com/types/key"
|
||||
)
|
||||
|
||||
// ServerRetryAfter is the default
|
||||
// [tailscale.com/net/udprelay.ErrServerNotReady.RetryAfter] value.
|
||||
const ServerRetryAfter = time.Second * 3
|
||||
|
||||
// ServerEndpoint contains details for an endpoint served by a
|
||||
// [tailscale.com/net/udprelay.Server].
|
||||
type ServerEndpoint struct {
|
||||
// ServerDisco is the Server's Disco public key used as part of the 3-way
|
||||
// bind handshake. Server will use the same ServerDisco for its lifetime.
|
||||
// ServerDisco value in combination with LamportID value represents a
|
||||
// unique ServerEndpoint allocation.
|
||||
ServerDisco key.DiscoPublic
|
||||
|
||||
// ClientDisco are the Disco public keys of the relay participants permitted
|
||||
// to handshake with this endpoint.
|
||||
ClientDisco [2]key.DiscoPublic
|
||||
|
||||
// LamportID is unique and monotonically non-decreasing across
|
||||
// ServerEndpoint allocations for the lifetime of Server. It enables clients
|
||||
// to dedup and resolve allocation event order. Clients may race to allocate
|
||||
// on the same Server, and signal ServerEndpoint details via alternative
|
||||
// channels, e.g. DERP. Additionally, Server.AllocateEndpoint() requests may
|
||||
// not result in a new allocation depending on existing server-side endpoint
|
||||
// state. Therefore, where clients have local, existing state that contains
|
||||
// ServerDisco and LamportID values matching a newly learned endpoint, these
|
||||
// can be considered one and the same. If ServerDisco is equal, but
|
||||
// LamportID is unequal, LamportID comparison determines which
|
||||
// ServerEndpoint was allocated most recently.
|
||||
LamportID uint64
|
||||
|
||||
// AddrPorts are the IP:Port candidate pairs the Server may be reachable
|
||||
// over.
|
||||
AddrPorts []netip.AddrPort
|
||||
|
||||
// VNI (Virtual Network Identifier) is the Geneve header VNI the Server
|
||||
// will use for transmitted packets, and expects for received packets
|
||||
// associated with this endpoint.
|
||||
VNI uint32
|
||||
|
||||
// BindLifetime is amount of time post-allocation the Server will consider
|
||||
// the endpoint active while it has yet to be bound via 3-way bind handshake
|
||||
// from both client parties.
|
||||
BindLifetime tstime.GoDuration
|
||||
|
||||
// SteadyStateLifetime is the amount of time post 3-way bind handshake from
|
||||
// both client parties the Server will consider the endpoint active lacking
|
||||
// bidirectional data flow.
|
||||
SteadyStateLifetime tstime.GoDuration
|
||||
}
|
||||
76
vendor/tailscale.com/net/udprelay/status/status.go
generated
vendored
Normal file
76
vendor/tailscale.com/net/udprelay/status/status.go
generated
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Package status contains types relating to the status of peer relay sessions
|
||||
// between peer relay client nodes via a peer relay server.
|
||||
package status
|
||||
|
||||
import (
|
||||
"net/netip"
|
||||
)
|
||||
|
||||
// ServerStatus contains the listening UDP port and active sessions (if any) for
|
||||
// this node's peer relay server at a point in time.
|
||||
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
|
||||
}
|
||||
|
||||
// ClientInfo contains status-related information about a single peer relay
|
||||
// client involved in a single peer relay session.
|
||||
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
|
||||
}
|
||||
|
||||
// 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 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
|
||||
}
|
||||
Reference in New Issue
Block a user