network

package
v0.13.5 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2022 License: MPL-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package network provides resources which describe networking subsystem state.

Index

Constants

View Source
const (
	LinkKindVLAN      = "vlan"
	LinkKindBond      = "bond"
	LinkKindWireguard = "wireguard"
)

Link kinds.

View Source
const (
	// Default node address (should be a single address in the spec).
	//
	// Used to set for example published etcd peer address.
	NodeAddressDefaultID = "default"
	// Current node addresses (as seen at the moment).
	//
	// Shows a list of addresses for the node for the UP interfaces.
	NodeAddressCurrentID = "current"
	// Accumulative list of the addresses node had over time.
	//
	// If some address is no longer present, it will be still kept in the accumulative list.
	NodeAddressAccumulativeID = "accumulative"
)

NodeAddress well-known IDs.

View Source
const (
	// ULAUnknown indicates an unknown ULA Purpose.
	ULAUnknown = 0x00

	// ULABootstrap is the Unique Local Addressing space key for the Talos Self-Bootstrapping protocol.
	ULABootstrap = 0x01

	// ULAKubeSpan is the Unique Local Addressing space key for the Talos KubeSpan feature.
	ULAKubeSpan = 0x02
)
View Source
const AddressSpecType = resource.Type("AddressSpecs.net.talos.dev")

AddressSpecType is type of AddressSpec resource.

View Source
const AddressStatusType = resource.Type("AddressStatuses.net.talos.dev")

AddressStatusType is type of AddressStatus resource.

View Source
const ConfigNamespaceName resource.Namespace = "network-config"

ConfigNamespaceName contains umerged resources related to networking generate from the configuration.

Resources in the ConfigNamespaceName namespace are merged to produce final versions in the NamespaceName namespace.

View Source
const FirstHardwareAddr = resource.ID("first")

FirstHardwareAddr is a resource ID for the first NIC HW addr.

View Source
const HardwareAddrType = resource.Type("HardwareAddresses.net.talos.dev")

HardwareAddrType is type of HardwareAddr resource.

View Source
const HostnameID resource.ID = "hostname"

HostnameID is the ID of the singleton instance.

View Source
const HostnameSpecType = resource.Type("HostnameSpecs.net.talos.dev")

HostnameSpecType is type of HostnameSpec resource.

View Source
const HostnameStatusType = resource.Type("HostnameStatuses.net.talos.dev")

HostnameStatusType is type of HostnameStatus resource.

View Source
const LinkRefreshType = resource.Type("LinkRefreshes.net.talos.dev")

LinkRefreshType is type of LinkRefresh resource.

View Source
const LinkSpecType = resource.Type("LinkSpecs.net.talos.dev")

LinkSpecType is type of LinkSpec resource.

View Source
const LinkStatusType = resource.Type("LinkStatuses.net.talos.dev")

LinkStatusType is type of LinkStatus resource.

View Source
const NamespaceName resource.Namespace = "network"

NamespaceName contains resources related to networking.

View Source
const NodeAddressFilterType = resource.Type("NodeAddressFilters.net.talos.dev")

NodeAddressFilterType is type of NodeAddressFilter resource.

View Source
const NodeAddressType = resource.Type("NodeAddresses.net.talos.dev")

NodeAddressType is type of NodeAddress resource.

View Source
const OperatorSpecType = resource.Type("OperatorSpecs.net.talos.dev")

OperatorSpecType is type of OperatorSpec resource.

View Source
const ResolverID resource.ID = "resolvers"

ResolverID is the ID of the singleton instance.

View Source
const ResolverSpecType = resource.Type("ResolverSpecs.net.talos.dev")

ResolverSpecType is type of ResolverSpec resource.

View Source
const ResolverStatusType = resource.Type("ResolverStatuses.net.talos.dev")

ResolverStatusType is type of ResolverStatus resource.

View Source
const RouteSpecType = resource.Type("RouteSpecs.net.talos.dev")

RouteSpecType is type of RouteSpec resource.

View Source
const RouteStatusType = resource.Type("RouteStatuses.net.talos.dev")

RouteStatusType is type of RouteStatus resource.

View Source
const StatusID resource.ID = "status"

StatusID is the resource ID of the singleton instance.

View Source
const StatusType = resource.Type("NetworkStatuses.net.talos.dev")

StatusType is type of Status resource.

View Source
const TimeServerID resource.ID = "timeservers"

TimeServerID is the ID of the singleton instance.

View Source
const TimeServerSpecType = resource.Type("TimeServerSpecs.net.talos.dev")

TimeServerSpecType is type of TimeServerSpec resource.

View Source
const TimeServerStatusType = resource.Type("TimeServerStatuses.net.talos.dev")

TimeServerStatusType is type of TimeServerStatus resource.

Variables

This section is empty.

Functions

func AddressID

func AddressID(linkName string, addr netaddr.IPPrefix) string

AddressID builds ID (primary key) for the address.

func AddressReady

func AddressReady(spec *StatusSpec) bool

AddressReady checks if address is ready.

func ConnectivityReady

func ConnectivityReady(spec *StatusSpec) bool

ConnectivityReady checks if connectivity is ready.

func EtcFilesReady

func EtcFilesReady(spec *StatusSpec) bool

EtcFilesReady checks if etc files are ready.

func FilteredNodeAddressID added in v0.13.3

func FilteredNodeAddressID(kind resource.ID, filterID string) resource.ID

FilteredNodeAddressID returns resource ID for node addresses with filter applied.

func HostnameReady

func HostnameReady(spec *StatusSpec) bool

HostnameReady checks if hostname is ready.

func LayeredID

func LayeredID(layer ConfigLayer, id string) string

LayeredID builds configuration for the entity at some layer.

func LinkID

func LinkID(linkName string) string

LinkID builds ID (primary key) for the link (interface).

func OperatorID

func OperatorID(operator Operator, linkName string) string

OperatorID builds ID (primary key) for the operators.

func RouteID

func RouteID(table nethelpers.RoutingTable, family nethelpers.Family, destination netaddr.IPPrefix, gateway netaddr.IP, priority uint32) string

RouteID builds ID (primary key) for the route.

func ULAPrefix added in v0.13.3

func ULAPrefix(clusterID string, purpose ULAPurpose) netaddr.IPPrefix

ULAPrefix calculates and returns a Talos-specific Unique Local Address prefix for the given purpose. This implements a Talos-specific implementation of RFC4193. The Talos implementation uses a combination of a 48-bit cluster-unique portion with an 8-bit purpose portion.

Types

type AddressSpec

type AddressSpec struct {
	// contains filtered or unexported fields
}

AddressSpec resource holds physical network link status.

func NewAddressSpec

func NewAddressSpec(namespace resource.Namespace, id resource.ID) *AddressSpec

NewAddressSpec initializes a AddressSpec resource.

func (*AddressSpec) DeepCopy

func (r *AddressSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*AddressSpec) Metadata

func (r *AddressSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*AddressSpec) ResourceDefinition

func (r *AddressSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*AddressSpec) Spec

func (r *AddressSpec) Spec() interface{}

Spec implements resource.Resource.

func (*AddressSpec) String

func (r *AddressSpec) String() string

func (*AddressSpec) TypedSpec

func (r *AddressSpec) TypedSpec() *AddressSpecSpec

TypedSpec allows to access the Spec with the proper type.

type AddressSpecSpec

type AddressSpecSpec struct {
	Address         netaddr.IPPrefix        `yaml:"address"`
	LinkName        string                  `yaml:"linkName"`
	Family          nethelpers.Family       `yaml:"family"`
	Scope           nethelpers.Scope        `yaml:"scope"`
	Flags           nethelpers.AddressFlags `yaml:"flags"`
	AnnounceWithARP bool                    `yaml:"announceWithARP,omitempty"`
	ConfigLayer     ConfigLayer             `yaml:"layer"`
}

AddressSpecSpec describes status of rendered secrets.

type AddressStatus

type AddressStatus struct {
	// contains filtered or unexported fields
}

AddressStatus resource holds physical network link status.

func NewAddressStatus

func NewAddressStatus(namespace resource.Namespace, id resource.ID) *AddressStatus

NewAddressStatus initializes a AddressStatus resource.

func (*AddressStatus) DeepCopy

func (r *AddressStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*AddressStatus) Metadata

func (r *AddressStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*AddressStatus) ResourceDefinition

func (r *AddressStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*AddressStatus) Spec

func (r *AddressStatus) Spec() interface{}

Spec implements resource.Resource.

func (*AddressStatus) String

func (r *AddressStatus) String() string

func (*AddressStatus) TypedSpec

func (r *AddressStatus) TypedSpec() *AddressStatusSpec

TypedSpec allows to access the Spec with the proper type.

type AddressStatusSpec

type AddressStatusSpec struct {
	Address   netaddr.IPPrefix        `yaml:"address"`
	Local     netaddr.IP              `yaml:"local,omitempty"`
	Broadcast netaddr.IP              `yaml:"broadcast,omitempty"`
	Anycast   netaddr.IP              `yaml:"anycast,omitempty"`
	Multicast netaddr.IP              `yaml:"multicast,omitempty"`
	LinkIndex uint32                  `yaml:"linkIndex"`
	LinkName  string                  `yaml:"linkName"`
	Family    nethelpers.Family       `yaml:"family"`
	Scope     nethelpers.Scope        `yaml:"scope"`
	Flags     nethelpers.AddressFlags `yaml:"flags"`
}

AddressStatusSpec describes status of rendered secrets.

type BondMasterSpec

type BondMasterSpec struct {
	Mode            nethelpers.BondMode           `yaml:"mode"`
	HashPolicy      nethelpers.BondXmitHashPolicy `yaml:"xmitHashPolicy"`
	LACPRate        nethelpers.LACPRate           `yaml:"lacpRate"`
	ARPValidate     nethelpers.ARPValidate        `yaml:"arpValidate"`
	ARPAllTargets   nethelpers.ARPAllTargets      `yaml:"arpAllTargets"`
	PrimaryIndex    uint32                        `yaml:"primary,omitempty"`
	PrimaryReselect nethelpers.PrimaryReselect    `yaml:"primaryReselect"`
	FailOverMac     nethelpers.FailOverMAC        `yaml:"failOverMac"`
	ADSelect        nethelpers.ADSelect           `yaml:"adSelect,omitempty"`
	MIIMon          uint32                        `yaml:"miimon,omitempty"`
	UpDelay         uint32                        `yaml:"updelay,omitempty"`
	DownDelay       uint32                        `yaml:"downdelay,omitempty"`
	ARPInterval     uint32                        `yaml:"arpInterval,omitempty"`
	ResendIGMP      uint32                        `yaml:"resendIgmp,omitempty"`
	MinLinks        uint32                        `yaml:"minLinks,omitempty"`
	LPInterval      uint32                        `yaml:"lpInterval,omitempty"`
	PacketsPerSlave uint32                        `yaml:"packetsPerSlave,omitempty"`
	NumPeerNotif    uint8                         `yaml:"numPeerNotif,omitempty"`
	TLBDynamicLB    uint8                         `yaml:"tlbLogicalLb,omitempty"`
	AllSlavesActive uint8                         `yaml:"allSlavesActive,omitempty"`
	UseCarrier      bool                          `yaml:"useCarrier,omitempty"`
	ADActorSysPrio  uint16                        `yaml:"adActorSysPrio,omitempty"`
	ADUserPortKey   uint16                        `yaml:"adUserPortKey,omitempty"`
	PeerNotifyDelay uint32                        `yaml:"peerNotifyDelay,omitempty"`
}

BondMasterSpec describes bond settings if Kind == "bond".

func (*BondMasterSpec) Decode

func (bond *BondMasterSpec) Decode(data []byte) error

Decode the BondMasterSpec from netlink attributes.

func (*BondMasterSpec) Encode

func (bond *BondMasterSpec) Encode() ([]byte, error)

Encode the BondMasterSpec into netlink attributes.

func (*BondMasterSpec) FillDefaults

func (bond *BondMasterSpec) FillDefaults()

FillDefaults fills zero values with proper default values.

type ConfigLayer

type ConfigLayer int

ConfigLayer describes network configuration layers, with lowest priority first.

const (
	ConfigDefault              ConfigLayer = iota // default
	ConfigCmdline                                 // cmdline
	ConfigPlatform                                // platform
	ConfigOperator                                // operator
	ConfigMachineConfiguration                    // configuration
)

Configuration layers.

func (ConfigLayer) MarshalYAML

func (layer ConfigLayer) MarshalYAML() (interface{}, error)

MarshalYAML implements yaml.Marshaler.

func (ConfigLayer) String

func (i ConfigLayer) String() string

type DHCP4OperatorSpec

type DHCP4OperatorSpec struct {
	RouteMetric uint32 `yaml:"routeMetric"`
}

DHCP4OperatorSpec describes DHCP4 operator options.

type DHCP6OperatorSpec

type DHCP6OperatorSpec struct {
	RouteMetric uint32 `yaml:"routeMetric"`
}

DHCP6OperatorSpec describes DHCP6 operator options.

type HardwareAddr added in v0.13.3

type HardwareAddr struct {
	// contains filtered or unexported fields
}

HardwareAddr resource describes hardware address of the physical links.

func NewHardwareAddr added in v0.13.3

func NewHardwareAddr(namespace resource.Namespace, id resource.ID) *HardwareAddr

NewHardwareAddr initializes a HardwareAddr resource.

func (*HardwareAddr) DeepCopy added in v0.13.3

func (r *HardwareAddr) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*HardwareAddr) Metadata added in v0.13.3

func (r *HardwareAddr) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*HardwareAddr) ResourceDefinition added in v0.13.3

func (r *HardwareAddr) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*HardwareAddr) Spec added in v0.13.3

func (r *HardwareAddr) Spec() interface{}

Spec implements resource.Resource.

func (*HardwareAddr) String added in v0.13.3

func (r *HardwareAddr) String() string

func (*HardwareAddr) TypedSpec added in v0.13.3

func (r *HardwareAddr) TypedSpec() *HardwareAddrSpec

TypedSpec allows to access the Spec with the proper type.

type HardwareAddrSpec added in v0.13.3

type HardwareAddrSpec struct {
	// Name defines link name
	Name string `yaml:"name"`

	// Hardware address
	HardwareAddr nethelpers.HardwareAddr `yaml:"hardwareAddr"`
}

HardwareAddrSpec describes spec for the link.

type HostnameSpec

type HostnameSpec struct {
	// contains filtered or unexported fields
}

HostnameSpec resource holds node hostname.

func NewHostnameSpec

func NewHostnameSpec(namespace resource.Namespace, id resource.ID) *HostnameSpec

NewHostnameSpec initializes a HostnameSpec resource.

func (*HostnameSpec) DeepCopy

func (r *HostnameSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*HostnameSpec) Metadata

func (r *HostnameSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*HostnameSpec) ResourceDefinition

func (r *HostnameSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*HostnameSpec) Spec

func (r *HostnameSpec) Spec() interface{}

Spec implements resource.Resource.

func (*HostnameSpec) String

func (r *HostnameSpec) String() string

func (*HostnameSpec) TypedSpec

func (r *HostnameSpec) TypedSpec() *HostnameSpecSpec

TypedSpec allows to access the Spec with the proper type.

type HostnameSpecSpec

type HostnameSpecSpec struct {
	Hostname    string      `yaml:"hostname"`
	Domainname  string      `yaml:"domainname"`
	ConfigLayer ConfigLayer `yaml:"layer"`
}

HostnameSpecSpec describes node nostname.

func (*HostnameSpecSpec) FQDN

func (spec *HostnameSpecSpec) FQDN() string

FQDN returns the fully-qualified domain name.

func (*HostnameSpecSpec) ParseFQDN

func (spec *HostnameSpecSpec) ParseFQDN(fqdn string) error

ParseFQDN into parts and validate it.

func (*HostnameSpecSpec) Validate

func (spec *HostnameSpecSpec) Validate() error

Validate the hostname.

type HostnameStatus

type HostnameStatus struct {
	// contains filtered or unexported fields
}

HostnameStatus resource holds node hostname.

func NewHostnameStatus

func NewHostnameStatus(namespace resource.Namespace, id resource.ID) *HostnameStatus

NewHostnameStatus initializes a HostnameStatus resource.

func (*HostnameStatus) DeepCopy

func (r *HostnameStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*HostnameStatus) Metadata

func (r *HostnameStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*HostnameStatus) ResourceDefinition

func (r *HostnameStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*HostnameStatus) Spec

func (r *HostnameStatus) Spec() interface{}

Spec implements resource.Resource.

func (*HostnameStatus) String

func (r *HostnameStatus) String() string

func (*HostnameStatus) TypedSpec

func (r *HostnameStatus) TypedSpec() *HostnameStatusSpec

TypedSpec allows to access the Spec with the proper type.

type HostnameStatusSpec

type HostnameStatusSpec struct {
	Hostname   string `yaml:"hostname"`
	Domainname string `yaml:"domainname"`
}

HostnameStatusSpec describes node nostname.

func (*HostnameStatusSpec) DNSNames

func (spec *HostnameStatusSpec) DNSNames() []string

DNSNames returns DNS names to be added to the certificate based on the hostname and fqdn.

func (*HostnameStatusSpec) FQDN

func (spec *HostnameStatusSpec) FQDN() string

FQDN returns the fully-qualified domain name.

type LinkRefresh

type LinkRefresh struct {
	// contains filtered or unexported fields
}

LinkRefresh resource is used to communicate link changes which can't be subscribed to via netlink.

The only usecase for now is the Wireguards, as there's no way subscribe to wireguard updates via the netlink API.

Whenever Wireguard interface is updated, LinkRefresh resource is modified to trigger a reconcile loop in the LinkStatusController.

func NewLinkRefresh

func NewLinkRefresh(namespace resource.Namespace, id resource.ID) *LinkRefresh

NewLinkRefresh initializes a LinkRefresh resource.

func (*LinkRefresh) Bump

func (r *LinkRefresh) Bump()

Bump performs an update.

func (*LinkRefresh) DeepCopy

func (r *LinkRefresh) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*LinkRefresh) Metadata

func (r *LinkRefresh) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*LinkRefresh) ResourceDefinition

func (r *LinkRefresh) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*LinkRefresh) Spec

func (r *LinkRefresh) Spec() interface{}

Spec implements resource.Resource.

func (*LinkRefresh) String

func (r *LinkRefresh) String() string

type LinkRefreshSpec

type LinkRefreshSpec struct {
	Generation int `yaml:"generation"`
}

LinkRefreshSpec describes status of rendered secrets.

type LinkSpec

type LinkSpec struct {
	// contains filtered or unexported fields
}

LinkSpec resource describes desired state of the link (network interface).

func NewLinkSpec

func NewLinkSpec(namespace resource.Namespace, id resource.ID) *LinkSpec

NewLinkSpec initializes a LinkSpec resource.

func (*LinkSpec) DeepCopy

func (r *LinkSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*LinkSpec) Metadata

func (r *LinkSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*LinkSpec) ResourceDefinition

func (r *LinkSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*LinkSpec) Spec

func (r *LinkSpec) Spec() interface{}

Spec implements resource.Resource.

func (*LinkSpec) String

func (r *LinkSpec) String() string

func (*LinkSpec) TypedSpec

func (r *LinkSpec) TypedSpec() *LinkSpecSpec

TypedSpec allows to access the Spec with the proper type.

type LinkSpecSpec

type LinkSpecSpec struct {
	// Name defines link name
	Name string `yaml:"name"`

	// Logical describes if the interface should be created on the fly if it doesn't exist.
	Logical bool `yaml:"logical"`

	// If Up is true, bring interface up, otherwise bring interface down.
	//
	// TODO: make *bool ?
	Up bool `yaml:"up"`

	// Interface MTU (always applies).
	MTU uint32 `yaml:"mtu"`

	// Kind and Type are only required for Logical interfaces.
	Kind string              `yaml:"kind"`
	Type nethelpers.LinkType `yaml:"type"`

	// ParentName indicates link parent for VLAN interfaces.
	ParentName string `yaml:"parentName,omitempty"`

	// MasterName indicates master link for enslaved bonded interfaces.
	MasterName string `yaml:"masterName,omitempty"`

	// These structures are present depending on "Kind" for Logical intefaces.
	VLAN       VLANSpec       `yaml:"vlan,omitempty"`
	BondMaster BondMasterSpec `yaml:"bondMaster,omitempty"`
	Wireguard  WireguardSpec  `yaml:"wireguard,omitempty"`

	// Configuration layer.
	ConfigLayer ConfigLayer `yaml:"layer"`
}

LinkSpecSpec describes spec for the link.

func (*LinkSpecSpec) Merge

func (spec *LinkSpecSpec) Merge(other *LinkSpecSpec) error

Merge with other, overwriting fields from other if set.

type LinkStatus

type LinkStatus struct {
	// contains filtered or unexported fields
}

LinkStatus resource holds physical network link status.

func NewLinkStatus

func NewLinkStatus(namespace resource.Namespace, id resource.ID) *LinkStatus

NewLinkStatus initializes a LinkStatus resource.

func (*LinkStatus) DeepCopy

func (r *LinkStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*LinkStatus) Metadata

func (r *LinkStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*LinkStatus) Physical

func (r *LinkStatus) Physical() bool

Physical checks if the link is physical ethernet.

func (*LinkStatus) ResourceDefinition

func (r *LinkStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*LinkStatus) Spec

func (r *LinkStatus) Spec() interface{}

Spec implements resource.Resource.

func (*LinkStatus) String

func (r *LinkStatus) String() string

func (*LinkStatus) TypedSpec

func (r *LinkStatus) TypedSpec() *LinkStatusSpec

TypedSpec allows to access the Spec with the proper type.

type LinkStatusSpec

type LinkStatusSpec struct {
	// Fields coming from rtnetlink API.
	Index            uint32                      `yaml:"index"`
	Type             nethelpers.LinkType         `yaml:"type"`
	LinkIndex        uint32                      `yaml:"linkIndex"`
	Flags            nethelpers.LinkFlags        `yaml:"flags"`
	HardwareAddr     nethelpers.HardwareAddr     `yaml:"hardwareAddr"`
	BroadcastAddr    nethelpers.HardwareAddr     `yaml:"broadcastAddr"`
	MTU              uint32                      `yaml:"mtu"`
	QueueDisc        string                      `yaml:"queueDisc"`
	MasterIndex      uint32                      `yaml:"masterIndex,omitempty"`
	OperationalState nethelpers.OperationalState `yaml:"operationalState"`
	Kind             string                      `yaml:"kind"`
	SlaveKind        string                      `yaml:"slaveKind"`
	// Fields coming from ethtool API.
	LinkState     bool              `yaml:"linkState"`
	SpeedMegabits int               `yaml:"speedMbit,omitempty"`
	Port          nethelpers.Port   `yaml:"port"`
	Duplex        nethelpers.Duplex `yaml:"duplex"`
	// Following fields are only populated with respective Kind.
	VLAN       VLANSpec       `yaml:"vlan,omitempty"`
	BondMaster BondMasterSpec `yaml:"bondMaster,omitempty"`
	Wireguard  WireguardSpec  `yaml:"wireguard,omitempty"`
}

LinkStatusSpec describes status of rendered secrets.

type NodeAddress

type NodeAddress struct {
	// contains filtered or unexported fields
}

NodeAddress resource holds physical network link status.

func NewNodeAddress

func NewNodeAddress(namespace resource.Namespace, id resource.ID) *NodeAddress

NewNodeAddress initializes a NodeAddress resource.

func (*NodeAddress) DeepCopy

func (r *NodeAddress) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*NodeAddress) Metadata

func (r *NodeAddress) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*NodeAddress) ResourceDefinition

func (r *NodeAddress) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*NodeAddress) Spec

func (r *NodeAddress) Spec() interface{}

Spec implements resource.Resource.

func (*NodeAddress) String

func (r *NodeAddress) String() string

func (*NodeAddress) TypedSpec

func (r *NodeAddress) TypedSpec() *NodeAddressSpec

TypedSpec allows to access the Spec with the proper type.

type NodeAddressFilter added in v0.13.3

type NodeAddressFilter struct {
	// contains filtered or unexported fields
}

NodeAddressFilter resource holds filter for NodeAddress resources.

func NewNodeAddressFilter added in v0.13.3

func NewNodeAddressFilter(namespace resource.Namespace, id resource.ID) *NodeAddressFilter

NewNodeAddressFilter initializes a NodeAddressFilter resource.

func (*NodeAddressFilter) DeepCopy added in v0.13.3

func (r *NodeAddressFilter) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*NodeAddressFilter) Metadata added in v0.13.3

func (r *NodeAddressFilter) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*NodeAddressFilter) ResourceDefinition added in v0.13.3

func (r *NodeAddressFilter) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*NodeAddressFilter) Spec added in v0.13.3

func (r *NodeAddressFilter) Spec() interface{}

Spec implements resource.Resource.

func (*NodeAddressFilter) String added in v0.13.3

func (r *NodeAddressFilter) String() string

func (*NodeAddressFilter) TypedSpec added in v0.13.3

func (r *NodeAddressFilter) TypedSpec() *NodeAddressFilterSpec

TypedSpec allows to access the Spec with the proper type.

type NodeAddressFilterSpec added in v0.13.3

type NodeAddressFilterSpec struct {
	// Address is skipped if it doesn't match any of the includeSubnets (if includeSubnets is not empty).
	IncludeSubnets []netaddr.IPPrefix `yaml:"includeSubnets"`
	// Address is skipped if it matches any of the includeSubnets.
	ExcludeSubnets []netaddr.IPPrefix `yaml:"excludeSubnets"`
}

NodeAddressFilterSpec describes a filter for NodeAddresses.

type NodeAddressSpec

type NodeAddressSpec struct {
	Addresses []netaddr.IPPrefix `yaml:"addresses"`
}

NodeAddressSpec describes a set of node addresses.

func (*NodeAddressSpec) IPs added in v0.13.3

func (spec *NodeAddressSpec) IPs() []netaddr.IP

IPs returns IP without prefix.

type Operator

type Operator int

Operator enumerates Talos network operators.

const (
	OperatorDHCP4 Operator = iota // dhcp4
	OperatorDHCP6                 // dhcp6
	OperatorVIP                   // vip
)

Operator list.

func (Operator) MarshalYAML

func (operator Operator) MarshalYAML() (interface{}, error)

MarshalYAML implements yaml.Marshaler.

func (Operator) String

func (i Operator) String() string

type OperatorSpec

type OperatorSpec struct {
	// contains filtered or unexported fields
}

OperatorSpec resource holds DNS resolver info.

func NewOperatorSpec

func NewOperatorSpec(namespace resource.Namespace, id resource.ID) *OperatorSpec

NewOperatorSpec initializes a OperatorSpec resource.

func (*OperatorSpec) DeepCopy

func (r *OperatorSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*OperatorSpec) Metadata

func (r *OperatorSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*OperatorSpec) ResourceDefinition

func (r *OperatorSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*OperatorSpec) Spec

func (r *OperatorSpec) Spec() interface{}

Spec implements resource.Resource.

func (*OperatorSpec) String

func (r *OperatorSpec) String() string

func (*OperatorSpec) TypedSpec

func (r *OperatorSpec) TypedSpec() *OperatorSpecSpec

TypedSpec allows to access the Spec with the proper type.

type OperatorSpecSpec

type OperatorSpecSpec struct {
	Operator  Operator `yaml:"operator"`
	LinkName  string   `yaml:"linkName"`
	RequireUp bool     `yaml:"requireUp"`

	DHCP4 DHCP4OperatorSpec `yaml:"dhcp4,omitempty"`
	DHCP6 DHCP6OperatorSpec `yaml:"dhcp6,omitempty"`
	VIP   VIPOperatorSpec   `yaml:"vip,omitempty"`
}

OperatorSpecSpec describes DNS resolvers.

type ReadyCondition

type ReadyCondition struct {
	// contains filtered or unexported fields
}

ReadyCondition implements condition which waits for the network to be ready.

func NewReadyCondition

func NewReadyCondition(state state.State, checks ...StatusCheck) *ReadyCondition

NewReadyCondition builds a coondition which waits for the network to be ready.

func (*ReadyCondition) String

func (condition *ReadyCondition) String() string

func (*ReadyCondition) Wait

func (condition *ReadyCondition) Wait(ctx context.Context) error

Wait implements condition interface.

type ResolverSpec

type ResolverSpec struct {
	// contains filtered or unexported fields
}

ResolverSpec resource holds DNS resolver info.

func NewResolverSpec

func NewResolverSpec(namespace resource.Namespace, id resource.ID) *ResolverSpec

NewResolverSpec initializes a ResolverSpec resource.

func (*ResolverSpec) DeepCopy

func (r *ResolverSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*ResolverSpec) Metadata

func (r *ResolverSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*ResolverSpec) ResourceDefinition

func (r *ResolverSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*ResolverSpec) Spec

func (r *ResolverSpec) Spec() interface{}

Spec implements resource.Resource.

func (*ResolverSpec) String

func (r *ResolverSpec) String() string

func (*ResolverSpec) TypedSpec

func (r *ResolverSpec) TypedSpec() *ResolverSpecSpec

TypedSpec allows to access the Spec with the proper type.

type ResolverSpecSpec

type ResolverSpecSpec struct {
	DNSServers  []netaddr.IP `yaml:"dnsServers"`
	ConfigLayer ConfigLayer  `yaml:"layer"`
}

ResolverSpecSpec describes DNS resolvers.

type ResolverStatus

type ResolverStatus struct {
	// contains filtered or unexported fields
}

ResolverStatus resource holds DNS resolver info.

func NewResolverStatus

func NewResolverStatus(namespace resource.Namespace, id resource.ID) *ResolverStatus

NewResolverStatus initializes a ResolverStatus resource.

func (*ResolverStatus) DeepCopy

func (r *ResolverStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*ResolverStatus) Metadata

func (r *ResolverStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*ResolverStatus) ResourceDefinition

func (r *ResolverStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*ResolverStatus) Spec

func (r *ResolverStatus) Spec() interface{}

Spec implements resource.Resource.

func (*ResolverStatus) String

func (r *ResolverStatus) String() string

func (*ResolverStatus) TypedSpec

func (r *ResolverStatus) TypedSpec() *ResolverStatusSpec

TypedSpec allows to access the Spec with the proper type.

type ResolverStatusSpec

type ResolverStatusSpec struct {
	DNSServers []netaddr.IP `yaml:"dnsServers"`
}

ResolverStatusSpec describes DNS resolvers.

type RouteSpec

type RouteSpec struct {
	// contains filtered or unexported fields
}

RouteSpec resource holds route specification to be applied to the kernel.

func NewRouteSpec

func NewRouteSpec(namespace resource.Namespace, id resource.ID) *RouteSpec

NewRouteSpec initializes a RouteSpec resource.

func (*RouteSpec) DeepCopy

func (r *RouteSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*RouteSpec) Metadata

func (r *RouteSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*RouteSpec) ResourceDefinition

func (r *RouteSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*RouteSpec) Spec

func (r *RouteSpec) Spec() interface{}

Spec implements resource.Resource.

func (*RouteSpec) String

func (r *RouteSpec) String() string

func (*RouteSpec) TypedSpec

func (r *RouteSpec) TypedSpec() *RouteSpecSpec

TypedSpec allows to access the Spec with the proper type.

type RouteSpecSpec

type RouteSpecSpec struct {
	Family      nethelpers.Family        `yaml:"family"`
	Destination netaddr.IPPrefix         `yaml:"dst"`
	Source      netaddr.IP               `yaml:"src"`
	Gateway     netaddr.IP               `yaml:"gateway"`
	OutLinkName string                   `yaml:"outLinkName,omitempty"`
	Table       nethelpers.RoutingTable  `yaml:"table"`
	Priority    uint32                   `yaml:"priority,omitempty"`
	Scope       nethelpers.Scope         `yaml:"scope"`
	Type        nethelpers.RouteType     `yaml:"type"`
	Flags       nethelpers.RouteFlags    `yaml:"flags"`
	Protocol    nethelpers.RouteProtocol `yaml:"protocol"`
	ConfigLayer ConfigLayer              `yaml:"layer"`
}

RouteSpecSpec describes the route.

func (*RouteSpecSpec) Normalize

func (route *RouteSpecSpec) Normalize()

Normalize converts 0.0.0.0 to zero value.

type RouteStatus

type RouteStatus struct {
	// contains filtered or unexported fields
}

RouteStatus resource holds physical network link status.

func NewRouteStatus

func NewRouteStatus(namespace resource.Namespace, id resource.ID) *RouteStatus

NewRouteStatus initializes a RouteStatus resource.

func (*RouteStatus) DeepCopy

func (r *RouteStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*RouteStatus) Metadata

func (r *RouteStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*RouteStatus) ResourceDefinition

func (r *RouteStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*RouteStatus) Spec

func (r *RouteStatus) Spec() interface{}

Spec implements resource.Resource.

func (*RouteStatus) String

func (r *RouteStatus) String() string

func (*RouteStatus) TypedSpec

func (r *RouteStatus) TypedSpec() *RouteStatusSpec

TypedSpec allows to access the Spec with the proper type.

type RouteStatusSpec

type RouteStatusSpec struct {
	Family       nethelpers.Family        `yaml:"family"`
	Destination  netaddr.IPPrefix         `yaml:"dst"`
	Source       netaddr.IP               `yaml:"src"`
	Gateway      netaddr.IP               `yaml:"gateway"`
	OutLinkIndex uint32                   `yaml:"outLinkIndex,omitempty"`
	OutLinkName  string                   `yaml:"outLinkName,omitempty"`
	Table        nethelpers.RoutingTable  `yaml:"table"`
	Priority     uint32                   `yaml:"priority"`
	Scope        nethelpers.Scope         `yaml:"scope"`
	Type         nethelpers.RouteType     `yaml:"type"`
	Flags        nethelpers.RouteFlags    `yaml:"flags"`
	Protocol     nethelpers.RouteProtocol `yaml:"protocol"`
}

RouteStatusSpec describes status of rendered secrets.

type Status

type Status struct {
	// contains filtered or unexported fields
}

Status resource holds status of networking setup.

func NewStatus

func NewStatus(namespace resource.Namespace, id resource.ID) *Status

NewStatus initializes a Status resource.

func (*Status) DeepCopy

func (r *Status) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*Status) Metadata

func (r *Status) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*Status) ResourceDefinition

func (r *Status) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*Status) Spec

func (r *Status) Spec() interface{}

Spec implements resource.Resource.

func (*Status) String

func (r *Status) String() string

func (*Status) TypedSpec

func (r *Status) TypedSpec() *StatusSpec

TypedSpec allows to access the Spec with the proper type.

type StatusCheck

type StatusCheck func(*StatusSpec) bool

StatusCheck asserts specific part of Status to be true.

type StatusSpec

type StatusSpec struct {
	AddressReady      bool `yaml:"addressReady"`
	ConnectivityReady bool `yaml:"connectivityReady"`
	HostnameReady     bool `yaml:"hostnameReady"`
	EtcFilesReady     bool `yaml:"etcFilesReady"`
}

StatusSpec describes network state.

type TimeServerSpec

type TimeServerSpec struct {
	// contains filtered or unexported fields
}

TimeServerSpec resource holds NTP server info.

func NewTimeServerSpec

func NewTimeServerSpec(namespace resource.Namespace, id resource.ID) *TimeServerSpec

NewTimeServerSpec initializes a TimeServerSpec resource.

func (*TimeServerSpec) DeepCopy

func (r *TimeServerSpec) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*TimeServerSpec) Metadata

func (r *TimeServerSpec) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*TimeServerSpec) ResourceDefinition

func (r *TimeServerSpec) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*TimeServerSpec) Spec

func (r *TimeServerSpec) Spec() interface{}

Spec implements resource.Resource.

func (*TimeServerSpec) String

func (r *TimeServerSpec) String() string

func (*TimeServerSpec) TypedSpec

func (r *TimeServerSpec) TypedSpec() *TimeServerSpecSpec

TypedSpec allows to access the Spec with the proper type.

type TimeServerSpecSpec

type TimeServerSpecSpec struct {
	NTPServers  []string    `yaml:"timeServers"`
	ConfigLayer ConfigLayer `yaml:"layer"`
}

TimeServerSpecSpec describes NTP servers.

type TimeServerStatus

type TimeServerStatus struct {
	// contains filtered or unexported fields
}

TimeServerStatus resource holds NTP server info.

func NewTimeServerStatus

func NewTimeServerStatus(namespace resource.Namespace, id resource.ID) *TimeServerStatus

NewTimeServerStatus initializes a TimeServerStatus resource.

func (*TimeServerStatus) DeepCopy

func (r *TimeServerStatus) DeepCopy() resource.Resource

DeepCopy implements resource.Resource.

func (*TimeServerStatus) Metadata

func (r *TimeServerStatus) Metadata() *resource.Metadata

Metadata implements resource.Resource.

func (*TimeServerStatus) ResourceDefinition

func (r *TimeServerStatus) ResourceDefinition() meta.ResourceDefinitionSpec

ResourceDefinition implements meta.ResourceDefinitionProvider interface.

func (*TimeServerStatus) Spec

func (r *TimeServerStatus) Spec() interface{}

Spec implements resource.Resource.

func (*TimeServerStatus) String

func (r *TimeServerStatus) String() string

func (*TimeServerStatus) TypedSpec

func (r *TimeServerStatus) TypedSpec() *TimeServerStatusSpec

TypedSpec allows to access the Spec with the proper type.

type TimeServerStatusSpec

type TimeServerStatusSpec struct {
	NTPServers []string `yaml:"timeServers"`
}

TimeServerStatusSpec describes NTP servers.

type ULAPurpose added in v0.13.3

type ULAPurpose byte

ULAPurpose is the Unique Local Addressing key for the Talos-specific purpose of the prefix.

type VIPEquinixMetalSpec added in v0.12.0

type VIPEquinixMetalSpec struct {
	ProjectID string `yaml:"projectID"`
	DeviceID  string `yaml:"deviceID"`
	APIToken  string `yaml:"apiToken"`
}

VIPEquinixMetalSpec describes virtual (elastic) IP settings for Equinix Metal.

type VIPHCloudSpec added in v0.13.3

type VIPHCloudSpec struct {
	DeviceID  int    `yaml:"deviceID"`
	NetworkID int    `yaml:"networkID"`
	APIToken  string `yaml:"apiToken"`
}

VIPHCloudSpec describes virtual (elastic) IP settings for Hetzner Cloud.

type VIPOperatorSpec

type VIPOperatorSpec struct {
	IP            netaddr.IP `yaml:"ip"`
	GratuitousARP bool       `yaml:"gratuitousARP"`

	EquinixMetal VIPEquinixMetalSpec `yaml:"equinixMetal,omitempty"`
	HCloud       VIPHCloudSpec       `yaml:"hcloud,omitempty"`
}

VIPOperatorSpec describes virtual IP operator options.

type VLANSpec

type VLANSpec struct {
	// VID is the vlan ID.
	VID uint16 `yaml:"vlanID"`

	// Protocol is the vlan protocol.
	Protocol nethelpers.VLANProtocol `yaml:"vlanProtocol"`
}

VLANSpec describes VLAN settings if Kind == "vlan".

func (*VLANSpec) Decode

func (vlan *VLANSpec) Decode(data []byte) error

Decode the VLANSpec from netlink attributes.

func (*VLANSpec) Encode

func (vlan *VLANSpec) Encode() ([]byte, error)

Encode the VLANSpec into netlink attributes.

type WireguardPeer

type WireguardPeer struct {
	PublicKey                   string             `yaml:"publicKey"`
	PresharedKey                string             `yaml:"presharedKey"`
	Endpoint                    string             `yaml:"endpoint"`
	PersistentKeepaliveInterval time.Duration      `yaml:"persistentKeepaliveInterval"`
	AllowedIPs                  []netaddr.IPPrefix `yaml:"allowedIPs"`
}

WireguardPeer describes a single peer.

func (*WireguardPeer) Equal

func (peer *WireguardPeer) Equal(other *WireguardPeer) bool

Equal checks two WireguardPeer structs for equality.

`spec` is considered to be the result of getting current Wireguard configuration, while `other` is the new (updated configuration).

type WireguardSpec

type WireguardSpec struct {
	// PrivateKey is used to configure the link, present only in the LinkSpec.
	PrivateKey string `yaml:"privateKey,omitempty"`
	// PublicKey is only used in LinkStatus to show the link status.
	PublicKey    string          `yaml:"publicKey,omitempty"`
	ListenPort   int             `yaml:"listenPort"`
	FirewallMark int             `yaml:"firewallMark"`
	Peers        []WireguardPeer `yaml:"peers"`
}

WireguardSpec describes Wireguard settings if Kind == "wireguard".

func (*WireguardSpec) Decode

func (spec *WireguardSpec) Decode(dev *wgtypes.Device, isStatus bool)

Decode spec from the device state.

func (*WireguardSpec) Encode

func (spec *WireguardSpec) Encode(existing *WireguardSpec) (*wgtypes.Config, error)

Encode converts WireguardSpec to wgctrl.Config "patch" to adjust the config to match the spec.

Both specs should be sorted.

Encode produces a "diff" as *wgtypes.Config which when applied transitions `existing` configuration into configuration `spec`.

func (*WireguardSpec) Equal

func (spec *WireguardSpec) Equal(other *WireguardSpec) bool

Equal checks two WireguardSpecs for equality.

Both specs should be sorted before calling this method.

`spec` is considered to be the result of getting current Wireguard configuration, while `other` is the new (updated configuration).

func (*WireguardSpec) IsZero

func (spec *WireguardSpec) IsZero() bool

IsZero checks if the WireguardSpec is zero value.

func (*WireguardSpec) Merge added in v0.12.0

func (spec *WireguardSpec) Merge(other WireguardSpec)

Merge with other Wireguard spec overwriting non-zero values.

func (*WireguardSpec) Sort

func (spec *WireguardSpec) Sort()

Sort the spec so that comparison is possible.

Jump to

Keyboard shortcuts

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