config

package
v0.13.7 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2022 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Protocols = []Proto{
	BGP, Layer2,
}

Functions

func CommunityToString added in v0.12.0

func CommunityToString(c uint32) string

func DiscardFRROnly added in v0.12.0

func DiscardFRROnly(c ClusterResources) error

DiscardFRROnly returns an error if the current configFile contains any options that are available only in the FRR implementation.

func DiscardNativeOnly added in v0.12.0

func DiscardNativeOnly(c ClusterResources) error

DiscardNativeOnly returns an error if the current configFile contains any options that are available only in the native implementation.

func DontValidate added in v0.12.0

func DontValidate(c ClusterResources) error

DontValidate is a Validate function that always returns success.

func NewValidator added in v0.13.0

func NewValidator(validate Validate) apivalidate.ClusterObjects

func ParseCIDR added in v0.11.0

func ParseCIDR(cidr string) ([]*net.IPNet, error)

func ParseCommunity added in v0.12.0

func ParseCommunity(c string) (uint32, error)

Types

type BFDProfile added in v0.12.0

type BFDProfile struct {
	Name             string
	ReceiveInterval  *uint32
	TransmitInterval *uint32
	DetectMultiplier *uint32
	EchoInterval     *uint32
	EchoMode         bool
	PassiveMode      bool
	MinimumTTL       *uint32
}

BFDProfile describes a BFD profile to be applied to a set of peers.

type BGPAdvertisement added in v0.3.0

type BGPAdvertisement struct {
	// Roll up the IP address into a CIDR prefix of this
	// length. Optional, defaults to 32 (i.e. no aggregation) if not
	// specified.
	AggregationLength int
	// Optional, defaults to 128 (i.e. no aggregation) if not
	// specified.
	AggregationLengthV6 int
	// Value of the LOCAL_PREF BGP path attribute. Used only when
	// advertising to IBGP peers (i.e. Peer.MyASN == Peer.ASN).
	LocalPref uint32
	// Value of the COMMUNITIES path attribute.
	Communities map[uint32]bool
	// The map of nodes allowed for this advertisement
	Nodes map[string]bool
	// Used to declare the intent of announcing IPs
	// only to the BGPPeers in this list.
	Peers []string
}

BGPAdvertisement describes one translation from an IP address to a BGP advertisement.

type ClusterResources added in v0.13.0

type ClusterResources struct {
	Pools              []metallbv1beta1.IPAddressPool    `json:"ipaddresspools"`
	Peers              []metallbv1beta2.BGPPeer          `json:"bgppeers"`
	BFDProfiles        []metallbv1beta1.BFDProfile       `json:"bfdprofiles"`
	BGPAdvs            []metallbv1beta1.BGPAdvertisement `json:"bgpadvertisements"`
	L2Advs             []metallbv1beta1.L2Advertisement  `json:"l2advertisements"`
	LegacyAddressPools []metallbv1beta1.AddressPool      `json:"legacyaddresspools"`
	Communities        []metallbv1beta1.Community        `json:"communities"`
	PasswordSecrets    map[string]corev1.Secret          `json:"passwordsecrets"`
	Nodes              []corev1.Node                     `json:"nodes"`
}

type Config

type Config struct {
	// Routers that MetalLB should peer with.
	Peers []*Peer
	// Address pools from which to allocate load balancer IPs.
	Pools map[string]*Pool
	// BFD profiles that can be used by peers.
	BFDProfiles map[string]*BFDProfile
}

Config is a parsed MetalLB configuration.

func For added in v0.13.0

func For(resources ClusterResources, validate Validate) (*Config, error)

Parse loads and validates a Config from bs.

type L2Advertisement added in v0.13.0

type L2Advertisement struct {
	// The map of nodes allowed for this advertisement
	Nodes map[string]bool
	// The interfaces in Nodes allowed for this advertisement
	Interfaces []string
	// AllInterfaces tells if all the interfaces are allowed for this advertisement
	AllInterfaces bool
}

type Peer

type Peer struct {
	// Peer name.
	Name string
	// AS number to use for the local end of the session.
	MyASN uint32
	// AS number to expect from the remote end of the session.
	ASN uint32
	// Address to dial when establishing the session.
	Addr net.IP
	// Source address to use when establishing the session.
	SrcAddr net.IP
	// Port to dial when establishing the session.
	Port uint16
	// Requested BGP hold time, per RFC4271.
	HoldTime time.Duration
	// Requested BGP keepalive time, per RFC4271.
	KeepaliveTime time.Duration
	// BGP router ID to advertise to the peer
	RouterID net.IP
	// Only connect to this peer on nodes that match one of these
	// selectors.
	NodeSelectors []labels.Selector
	// Authentication password for routers enforcing TCP MD5 authenticated sessions
	Password string
	// The optional BFD profile to be used for this BGP session
	BFDProfile string
	// Optional ebgp peer is multi-hops away.
	EBGPMultiHop bool
}

Peer is the configuration of a BGP peering session.

type Pool

type Pool struct {
	// The addresses that are part of this pool, expressed as CIDR
	// prefixes. config.Parse guarantees that these are
	// non-overlapping, both within and between pools.
	CIDR []*net.IPNet
	// Some buggy consumer devices mistakenly drop IPv4 traffic for IP
	// addresses ending in .0 or .255, due to poor implementations of
	// smurf protection. This setting marks such addresses as
	// unusable, for maximum compatibility with ancient parts of the
	// internet.
	AvoidBuggyIPs bool
	// If false, prevents IP addresses to be automatically assigned
	// from this pool.
	AutoAssign bool

	// The list of BGPAdvertisements associated with this address pool.
	BGPAdvertisements []*BGPAdvertisement

	// The list of L2Advertisements associated with this address pool.
	L2Advertisements []*L2Advertisement
	// contains filtered or unexported fields
}

Pool is the configuration of an IP address pool.

type Proto added in v0.3.0

type Proto string

Proto holds the protocol we are speaking.

const (
	BGP    Proto = "bgp"
	Layer2 Proto = "layer2"
)

MetalLB supported protocols.

type TransientError added in v0.13.0

type TransientError struct {
	Message string
}

TransientError is an error that happens due to interdependencies between crds, such as referencing non-existing bfd profile.

func (TransientError) Error added in v0.13.0

func (e TransientError) Error() string

type Validate added in v0.12.0

type Validate func(ClusterResources) error

func ValidationFor added in v0.13.0

func ValidationFor(bgpImpl string) Validate

Jump to

Keyboard shortcuts

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