appctype

package
v1.103.0-pre Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2026 License: BSD-3-Clause Imports: 5 Imported by: 2

Documentation

Overview

Package appcfg contains an experimental configuration structure for "tailscale.com/app-connectors" capmap extensions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AppConnectorAttr added in v1.54.0

type AppConnectorAttr struct {
	// Name is the name of this collection of domains.
	Name string `json:"name,omitempty"`
	// Domains enumerates the domains serviced by the specified app connectors.
	// Domains can be of the form: example.com, or *.example.com.
	Domains []string `json:"domains,omitempty"`
	// Routes enumerates the predetermined routes to be advertised by the specified app connectors.
	Routes []netip.Prefix `json:"routes,omitempty"`
	// Connectors enumerates the app connectors which service these domains.
	// These can either be "*" to match any advertising connector, or a
	// tag of the form tag:<tag-name>.
	Connectors []string `json:"connectors,omitempty"`
}

AppConnectorAttr describes a set of domains serviced by specified app connectors.

type AppConnectorConfig

type AppConnectorConfig struct {
	// DNAT is a map of destination NAT configurations.
	DNAT map[ConfigID]DNATConfig `json:",omitempty"`
	// SNIProxy is a map of SNI proxy configurations.
	SNIProxy map[ConfigID]SNIProxyConfig `json:",omitempty"`

	// AdvertiseRoutes indicates that the node should advertise routes for each
	// of the addresses in service configuration address lists. If false, the
	// routes have already been advertised.
	AdvertiseRoutes bool `json:",omitempty"`
}

AppConnectorConfig is the configuration structure for an application connection proxy service.

type ConfigID

type ConfigID string

ConfigID is an opaque identifier for a configuration.

type Conn25ActiveState added in v1.102.0

type Conn25ActiveState struct {
	Configured bool                 `json:"configured"`
	Client     Conn25ClientState    `json:"client,omitzero"`
	Connector  Conn25ConnectorState `json:"connector,omitzero"`
}

Conn25ActiveState holds the active client and connector state.

type Conn25Attr added in v1.96.0

type Conn25Attr struct {
	// Name is the name of this collection of domains.
	Name string `json:"name,omitempty"`
	// Domains enumerates the domains serviced by the specified app connectors.
	// Domains can be of the form: example.com, or *.example.com.
	Domains []string `json:"domains,omitempty"`
	// Connectors enumerates the app connectors which service these domains.
	// These can either be "*" to match any advertising connector, or a
	// tag of the form tag:<tag-name>.
	Connectors []string `json:"connectors,omitempty"`
}

type Conn25ClientAddressState added in v1.102.0

type Conn25ClientAddressState struct {
	ActiveFlowCount int       `json:"activeFlowCount"`
	DestinationIP   string    `json:"destinationIP,omitempty"`
	MagicIP         string    `json:"magicIP,omitempty"`
	TransitIP       string    `json:"transitIP,omitempty"`
	ExpiresAt       time.Time `json:"expiresAt,omitzero"`
}

Conn25ClientAddressState describes a single address mapping the client has allocated: the destination it resolves to, the magic and transit IPs handed out for it, its active flow count, and when the mapping expires.

type Conn25ClientAppState added in v1.102.0

type Conn25ClientAppState struct {
	App     string                    `json:"app,omitempty"`
	Domains []Conn25ClientDomainState `json:"domains,omitempty"`
}

Conn25ClientAppState holds the active client state for a single app, grouped by domain.

type Conn25ClientDomainState added in v1.102.0

type Conn25ClientDomainState struct {
	Domain    dnsname.FQDN               `json:"domain"`
	Addresses []Conn25ClientAddressState `json:"addresses,omitempty"`
}

Conn25ClientDomainState holds the address mappings the client has allocated for a single domain.

type Conn25ClientIPPoolStats added in v1.102.0

type Conn25ClientIPPoolStats struct {
	IPv4MagicIPsInUse      int64 `json:"ipv4MagicIPsInUse"`
	IPv4MagicIPsCapacity   int64 `json:"ipv4MagicIPsCapacity"`
	IPv6MagicIPsInUse      int64 `json:"ipv6MagicIPsInUse"`
	IPv6MagicIPsCapacity   int64 `json:"ipv6MagicIPsCapacity"`
	IPv4TransitIPsInUse    int64 `json:"ipv4TransitIPsInUse"`
	IPv4TransitIPsCapacity int64 `json:"ipv4TransitIPsCapacity"`
	IPv6TransitIPsInUse    int64 `json:"ipv6TransitIPsInUse"`
	IPv6TransitIPsCapacity int64 `json:"ipv6TransitIPsCapacity"`
}

Conn25ClientIPPoolStats holds the in-use and total capacity counts for the client's magic and transit IP pools, split by address family. If a count exceeds math.MaxInt64, that maximum is used instead.

type Conn25ClientState added in v1.102.0

type Conn25ClientState struct {
	Apps        []Conn25ClientAppState  `json:"apps,omitempty"`
	IPPoolStats Conn25ClientIPPoolStats `json:"ipPoolStats,omitzero"`
}

Conn25ClientState holds the active client state.

type Conn25ConnectorAddressState added in v1.102.0

type Conn25ConnectorAddressState struct {
	DestinationIP string `json:"destinationIP,omitempty"`
	TransitIP     string `json:"transitIP,omitempty"`
}

Conn25ConnectorAddressState describes a single transit-to-destination IP mapping the connector routes on behalf of a peer.

type Conn25ConnectorAppState added in v1.102.0

type Conn25ConnectorAppState struct {
	App       string                        `json:"app,omitempty"`
	Addresses []Conn25ConnectorAddressState `json:"addresses,omitempty"`
}

Conn25ConnectorAppState holds the address mappings a peer has registered with the connector for a single app.

type Conn25ConnectorPeerState added in v1.102.0

type Conn25ConnectorPeerState struct {
	ClientIP string                    `json:"clientIP,omitempty"`
	Apps     []Conn25ConnectorAppState `json:"apps,omitempty"`
}

Conn25ConnectorPeerState holds the active connector state for a single peer (client) that has registered addresses with the connector, grouped by app.

type Conn25ConnectorState added in v1.102.0

type Conn25ConnectorState struct {
	Peers []Conn25ConnectorPeerState `json:"peers,omitempty"`
}

Conn25ConnectorState holds the active connector state.

type Conn25PoolsAttr added in v1.100.0

type Conn25PoolsAttr struct {
	V4MagicIPPool   []netipx.IPRange `json:"v4MagicIPPool,omitempty"`
	V4TransitIPPool []netipx.IPRange `json:"v4TransitIPPool,omitempty"`
	V6MagicIPPool   []netipx.IPRange `json:"v6MagicIPPool,omitempty"`
	V6TransitIPPool []netipx.IPRange `json:"v6TransitIPPool,omitempty"`
}

type DNATConfig

type DNATConfig struct {
	// Addrs is a list of addresses to listen on.
	Addrs []netip.Addr `json:",omitempty"`

	// To is a list of destination addresses to forward traffic to. It should
	// only contain one domain, or a list of IP addresses.
	To []string `json:",omitempty"`

	// IP is a list of IP specifications to forward. If omitted, all protocols are
	// forwarded. IP specifications are of the form "tcp/80", "udp/53", etc.
	IP []tailcfg.ProtoPortRange `json:",omitempty"`
}

DNATConfig is the configuration structure for a destination NAT service, also known as a "port forward" or "port proxy".

type RouteInfo added in v1.90.0

type RouteInfo struct {
	// Control is the routes from the 'routes' section of an app connector acl.
	Control []netip.Prefix `json:",omitempty"`
	// Domains are the routes discovered by observing DNS lookups for configured domains.
	Domains map[string][]netip.Addr `json:",omitempty"`
	// Wildcards are the configured DNS lookup domains to observe. When a DNS query matches Wildcards,
	// its result is added to Domains.
	Wildcards []string `json:",omitempty"`
}

RouteInfo is a data structure used to persist the in memory state of an AppConnector so that we can know, even after a restart, which routes came from ACLs and which were learned from domains.

type RouteUpdate added in v1.90.0

type RouteUpdate struct {
	Advertise   []netip.Prefix
	Unadvertise []netip.Prefix
}

RouteUpdate records a set of routes that should be advertised and a set of routes that should be unadvertised in event bus updates.

type SNIProxyConfig

type SNIProxyConfig struct {
	// Addrs is a list of addresses to listen on.
	Addrs []netip.Addr `json:",omitempty"`

	// IP is a list of IP specifications to forward. If omitted, all protocols are
	// forwarded. IP specifications are of the form "tcp/80", "udp/53", etc.
	IP []tailcfg.ProtoPortRange `json:",omitempty"`

	// AllowedDomains is a list of domains that are allowed to be proxied. If
	// the domain starts with a `.` that means any subdomain of the suffix.
	AllowedDomains []string `json:",omitempty"`
}

SNIPRoxyConfig is the configuration structure for an SNI proxy service, forwarding TLS connections based on the hostname field in SNI.

Jump to

Keyboard shortcuts

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