lbmap

package
v0.0.0-...-c34bea4 Latest Latest
Warning

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

Go to latest
Published: May 20, 2022 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

+groupName=maps

Index

Constants

View Source
const (
	AffinityMatchMapName = "cilium_lb_affinity_match"
	Affinity4MapName     = "cilium_lb4_affinity"
	Affinity6MapName     = "cilium_lb6_affinity"
)
View Source
const (
	// HealthProbe4MapName is the health datapath map name
	HealthProbe4MapName = "cilium_lb4_health"

	// SockRevNat4MapName is the BPF map name.
	SockRevNat4MapName = "cilium_lb4_reverse_sk"

	// SockRevNat4MapSize is the maximum number of entries in the BPF map.
	SockRevNat4MapSize = 256 * 1024

	// Service4MapV2Name is the name of the IPv4 LB Services v2 BPF map.
	Service4MapV2Name = "cilium_lb4_services_v2"
	// Backend4MapName is the name of the IPv4 LB backends BPF map.
	Backend4MapName = "cilium_lb4_backends"
	// Backend4MapV2Name is the name of the IPv4 LB backends v2 BPF map.
	Backend4MapV2Name = "cilium_lb4_backends_v2"
	// RevNat4MapName is the name of the IPv4 LB reverse NAT BPF map.
	RevNat4MapName = "cilium_lb4_reverse_nat"
)
View Source
const (
	// HealthProbe6MapName is the health datapath map name
	HealthProbe6MapName = "cilium_lb6_health"

	// SockRevNat6MapName is the BPF map name.
	SockRevNat6MapName = "cilium_lb6_reverse_sk"

	// SockRevNat6MapSize is the maximum number of entries in the BPF map.
	SockRevNat6MapSize = 256 * 1024

	// Service6MapV2Name is the name of the IPv6 LB Services v2 BPF map.
	Service6MapV2Name = "cilium_lb6_services_v2"
	// Backend6MapName is the name of the IPv6 LB backends BPF map.
	Backend6MapName = "cilium_lb6_backends"
	// Backend6MapV2Name is the name of the IPv6 LB backends v2 BPF map.
	Backend6MapV2Name = "cilium_lb6_backends_v2"
	// RevNat6MapName is the name of the IPv6 LB reverse NAT BPF map.
	RevNat6MapName = "cilium_lb6_reverse_nat"
)
View Source
const (
	// Both outer maps are pinned though given we need to insert
	// inner maps into them.
	MaglevOuter4MapName = "cilium_lb4_maglev"
	MaglevOuter6MapName = "cilium_lb6_maglev"
)
View Source
const (
	SourceRange4MapName = "cilium_lb4_source_range"
	SourceRange6MapName = "cilium_lb6_source_range"
)
View Source
const DefaultMaxEntries = 65536
View Source
const SizeofSockRevNat6Key = int(unsafe.Sizeof(SockRevNat6Key{}))

SizeofSockRevNat6Key is the size of type SockRevNat6Key.

View Source
const SizeofSockRevNat6Value = int(unsafe.Sizeof(SockRevNat6Value{}))

SizeofSockRevNat6Value is the size of type SockRevNat6Value.

Variables

View Source
var (
	// AffinityMatchMap is the BPF map to implement session affinity.
	AffinityMatchMap *bpf.Map
	Affinity4Map     *bpf.Map
	Affinity6Map     *bpf.Map
)
View Source
var (
	// MaxSockRevNat4MapEntries is the maximum number of entries in the BPF
	// map. It is set by Init(), but unit tests use the initial value below.
	MaxSockRevNat4MapEntries = SockRevNat4MapSize

	// Service4MapV2 is the IPv4 LB Services v2 BPF map.
	Service4MapV2 *bpf.Map
	// Backend4Map is the IPv4 LB backends BPF map.
	Backend4Map *bpf.Map
	// Backend4MapV2 is the IPv4 LB backends v2 BPF map.
	Backend4MapV2 *bpf.Map
	// RevNat4Map is the IPv4 LB reverse NAT BPF map.
	RevNat4Map *bpf.Map
)
View Source
var (
	// MaxSockRevNat6MapEntries is the maximum number of entries in the BPF
	// map. It is set by Init(), but unit tests use the initial value below.
	MaxSockRevNat6MapEntries = SockRevNat6MapSize

	// Service6MapV2 is the IPv6 LB Services v2 BPF map.
	Service6MapV2 *bpf.Map
	// Backend6Map is the IPv6 LB backends BPF map.
	Backend6Map *bpf.Map
	// Backend6MapV2 is the IPv6 LB backends v2 BPF map.
	Backend6MapV2 *bpf.Map
	// RevNat6Map is the IPv6 LB reverse NAT BPF map.
	RevNat6Map *bpf.Map
)
View Source
var (
	// MaxEntries contains the maximum number of entries that are allowed
	// in Cilium LB service, backend and affinity maps.
	ServiceMapMaxEntries        = DefaultMaxEntries
	ServiceBackEndMapMaxEntries = DefaultMaxEntries
	RevNatMapMaxEntries         = DefaultMaxEntries
	AffinityMapMaxEntries       = DefaultMaxEntries
	SourceRangeMapMaxEntries    = DefaultMaxEntries
	MaglevMapMaxEntries         = DefaultMaxEntries
)
View Source
var (
	// SourceRange4Map is the BPF map for storing IPv4 service source ranges to
	// check if option.Config.EnableSVCSourceRangeCheck is enabled.
	SourceRange4Map *bpf.Map
	// SourceRange6Map is the BPF map for storing IPv6 service source ranges to
	// check if option.Config.EnableSVCSourceRangeCheck is enabled.
	SourceRange6Map *bpf.Map
)

Functions

func CreateSockRevNat4Map

func CreateSockRevNat4Map() error

CreateSockRevNat4Map creates the reverse NAT sock map.

func CreateSockRevNat6Map

func CreateSockRevNat6Map() error

CreateSockRevNat6Map creates the reverse NAT sock map.

func GetOrderedBackends

func GetOrderedBackends(p *UpsertServiceParams) []loadbalancer.BackendID

GetOrderedBackends returns an ordered list of backends with all the sorted active backend followed by non-active backends. Encapsulates logic to be also used in unit tests.

func Init

func Init(params InitParams)

Init updates the map info defaults for sock rev nat {4,6} and LB maps and then initializes all LB-related maps.

func InitMaglevMaps

func InitMaglevMaps(ipv4, ipv6 bool, tableSize uint32) error

InitMaglevMaps inits the ipv4 and/or ipv6 maglev outer and inner maps.

Types

type Affinity4Key

type Affinity4Key struct {
	ClientID    uint64 `align:"client_id"`
	RevNATID    uint16 `align:"rev_nat_id"`
	NetNSCookie uint8  `align:"netns_cookie"`
	Pad1        uint8  `align:"pad1"`
	Pad2        uint32 `align:"pad2"`
}

Affinity4Key is the Go representation of lb4_affinity_key +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*Affinity4Key) DeepCopy

func (in *Affinity4Key) DeepCopy() *Affinity4Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Affinity4Key.

func (*Affinity4Key) DeepCopyInto

func (in *Affinity4Key) DeepCopyInto(out *Affinity4Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Affinity4Key) DeepCopyMapKey

func (in *Affinity4Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Affinity4Key) GetKeyPtr

func (k *Affinity4Key) GetKeyPtr() unsafe.Pointer

GetKeyPtr returns the unsafe pointer to the BPF key

func (Affinity4Key) NewValue

func (k Affinity4Key) NewValue() bpf.MapValue

NewValue returns a new empty instance of the structure representing the BPF map value.

func (*Affinity4Key) String

func (k *Affinity4Key) String() string

String converts the key into a human readable string format.

type Affinity6Key

type Affinity6Key struct {
	ClientID    types.IPv6 `align:"client_id"`
	RevNATID    uint16     `align:"rev_nat_id"`
	NetNSCookie uint8      `align:"netns_cookie"`
	Pad1        uint8      `align:"pad1"`
	Pad2        uint32     `align:"pad2"`
}

Affinity6Key is the Go representation of lb6_affinity_key +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*Affinity6Key) DeepCopy

func (in *Affinity6Key) DeepCopy() *Affinity6Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Affinity6Key.

func (*Affinity6Key) DeepCopyInto

func (in *Affinity6Key) DeepCopyInto(out *Affinity6Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Affinity6Key) DeepCopyMapKey

func (in *Affinity6Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Affinity6Key) GetKeyPtr

func (k *Affinity6Key) GetKeyPtr() unsafe.Pointer

GetKeyPtr returns the unsafe pointer to the BPF key

func (Affinity6Key) NewValue

func (k Affinity6Key) NewValue() bpf.MapValue

NewValue returns a new empty instance of the structure representing the BPF map value.

func (*Affinity6Key) String

func (k *Affinity6Key) String() string

String converts the key into a human readable string format.

type AffinityMatchKey

type AffinityMatchKey struct {
	BackendID loadbalancer.BackendID `align:"backend_id"`
	RevNATID  uint16                 `align:"rev_nat_id"`
	Pad       uint16                 `align:"pad"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewAffinityMatchKey

func NewAffinityMatchKey(revNATID uint16, backendID loadbalancer.BackendID) *AffinityMatchKey

NewAffinityMatchKey creates the AffinityMatch key

func (*AffinityMatchKey) DeepCopy

func (in *AffinityMatchKey) DeepCopy() *AffinityMatchKey

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AffinityMatchKey.

func (*AffinityMatchKey) DeepCopyInto

func (in *AffinityMatchKey) DeepCopyInto(out *AffinityMatchKey)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AffinityMatchKey) DeepCopyMapKey

func (in *AffinityMatchKey) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*AffinityMatchKey) GetKeyPtr

func (k *AffinityMatchKey) GetKeyPtr() unsafe.Pointer

GetKeyPtr returns the unsafe pointer to the BPF key

func (*AffinityMatchKey) NewValue

func (k *AffinityMatchKey) NewValue() bpf.MapValue

NewValue returns a new empty instance of the structure representing the BPF map value

func (*AffinityMatchKey) String

func (k *AffinityMatchKey) String() string

String converts the key into a human readable string format

func (*AffinityMatchKey) ToHost

func (k *AffinityMatchKey) ToHost() *AffinityMatchKey

ToHost returns the key in the host byte order

func (*AffinityMatchKey) ToNetwork

func (k *AffinityMatchKey) ToNetwork() *AffinityMatchKey

ToNetwork returns the key in the network byte order

type AffinityMatchValue

type AffinityMatchValue struct {
	Pad uint8 `align:"pad"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*AffinityMatchValue) DeepCopy

func (in *AffinityMatchValue) DeepCopy() *AffinityMatchValue

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AffinityMatchValue.

func (*AffinityMatchValue) DeepCopyInto

func (in *AffinityMatchValue) DeepCopyInto(out *AffinityMatchValue)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AffinityMatchValue) DeepCopyMapValue

func (in *AffinityMatchValue) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*AffinityMatchValue) GetValuePtr

func (v *AffinityMatchValue) GetValuePtr() unsafe.Pointer

GetValuePtr returns the unsafe pointer to the BPF value

func (*AffinityMatchValue) String

func (v *AffinityMatchValue) String() string

String converts the value into a human readable string format

type AffinityValue

type AffinityValue struct {
	LastUsed  uint64 `align:"last_used"`
	BackendID uint32 `align:"backend_id"`
	Pad       uint32 `align:"pad"`
}

AffinityValue is the Go representing of lb_affinity_value +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*AffinityValue) DeepCopy

func (in *AffinityValue) DeepCopy() *AffinityValue

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AffinityValue.

func (*AffinityValue) DeepCopyInto

func (in *AffinityValue) DeepCopyInto(out *AffinityValue)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AffinityValue) DeepCopyMapValue

func (in *AffinityValue) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*AffinityValue) GetValuePtr

func (v *AffinityValue) GetValuePtr() unsafe.Pointer

GetValuePtr returns the unsafe pointer to the BPF value

func (*AffinityValue) String

func (v *AffinityValue) String() string

String converts the value into a human readable string format.

type Backend

type Backend interface {
	// Return the BPF map matching the type
	Map() *bpf.Map

	// Get key of the backend entry
	GetKey() BackendKey

	// Get value of the backend entry
	GetValue() BackendValue
}

Backend is the interface describing protocol independent backend used by services v2.

type Backend4

type Backend4 struct {
	Key   *Backend4Key
	Value *Backend4Value
}

func (*Backend4) GetKey

func (b *Backend4) GetKey() BackendKey

func (*Backend4) GetValue

func (b *Backend4) GetValue() BackendValue

func (*Backend4) Map

func (b *Backend4) Map() *bpf.Map

type Backend4Key

type Backend4Key struct {
	ID uint16
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*Backend4Key) DeepCopy

func (in *Backend4Key) DeepCopy() *Backend4Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend4Key.

func (*Backend4Key) DeepCopyInto

func (in *Backend4Key) DeepCopyInto(out *Backend4Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend4Key) DeepCopyMapKey

func (in *Backend4Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Backend4Key) GetID

func (k *Backend4Key) GetID() loadbalancer.BackendID

func (*Backend4Key) GetKeyPtr

func (k *Backend4Key) GetKeyPtr() unsafe.Pointer

func (*Backend4Key) Map

func (k *Backend4Key) Map() *bpf.Map

func (*Backend4Key) NewValue

func (k *Backend4Key) NewValue() bpf.MapValue

func (*Backend4Key) SetID

func (k *Backend4Key) SetID(id loadbalancer.BackendID)

func (*Backend4Key) String

func (k *Backend4Key) String() string

type Backend4KeyV2

type Backend4KeyV2 struct {
	ID loadbalancer.BackendID
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewBackend4KeyV2

func NewBackend4KeyV2(id loadbalancer.BackendID) *Backend4KeyV2

func (*Backend4KeyV2) DeepCopy

func (in *Backend4KeyV2) DeepCopy() *Backend4KeyV2

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend4KeyV2.

func (*Backend4KeyV2) DeepCopyInto

func (in *Backend4KeyV2) DeepCopyInto(out *Backend4KeyV2)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend4KeyV2) DeepCopyMapKey

func (in *Backend4KeyV2) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Backend4KeyV2) GetID

func (*Backend4KeyV2) GetKeyPtr

func (k *Backend4KeyV2) GetKeyPtr() unsafe.Pointer

func (*Backend4KeyV2) Map

func (k *Backend4KeyV2) Map() *bpf.Map

func (*Backend4KeyV2) NewValue

func (k *Backend4KeyV2) NewValue() bpf.MapValue

func (*Backend4KeyV2) SetID

func (k *Backend4KeyV2) SetID(id loadbalancer.BackendID)

func (*Backend4KeyV2) String

func (k *Backend4KeyV2) String() string

type Backend4V2

type Backend4V2 struct {
	Key   *Backend4KeyV2
	Value *Backend4Value
}

func NewBackend4V2

func NewBackend4V2(id loadbalancer.BackendID, ip net.IP, port uint16, proto u8proto.U8proto,
	state loadbalancer.BackendState) (*Backend4V2, error)

func (*Backend4V2) GetKey

func (b *Backend4V2) GetKey() BackendKey

func (*Backend4V2) GetValue

func (b *Backend4V2) GetValue() BackendValue

func (*Backend4V2) Map

func (b *Backend4V2) Map() *bpf.Map

type Backend4Value

type Backend4Value struct {
	Address types.IPv4      `align:"address"`
	Port    uint16          `align:"port"`
	Proto   u8proto.U8proto `align:"proto"`
	Flags   uint8           `align:"flags"`
}

Backend4Value must match 'struct lb4_backend' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func NewBackend4Value

func NewBackend4Value(ip net.IP, port uint16, proto u8proto.U8proto, state loadbalancer.BackendState) (*Backend4Value, error)

func (*Backend4Value) DeepCopy

func (in *Backend4Value) DeepCopy() *Backend4Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend4Value.

func (*Backend4Value) DeepCopyInto

func (in *Backend4Value) DeepCopyInto(out *Backend4Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend4Value) DeepCopyMapValue

func (in *Backend4Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*Backend4Value) GetAddress

func (b *Backend4Value) GetAddress() net.IP

func (*Backend4Value) GetFlags

func (b *Backend4Value) GetFlags() uint8

func (*Backend4Value) GetPort

func (b *Backend4Value) GetPort() uint16

func (*Backend4Value) GetValuePtr

func (v *Backend4Value) GetValuePtr() unsafe.Pointer

func (*Backend4Value) String

func (v *Backend4Value) String() string

func (*Backend4Value) ToHost

func (v *Backend4Value) ToHost() BackendValue

ToHost converts Backend4Value to host byte order.

func (*Backend4Value) ToNetwork

func (v *Backend4Value) ToNetwork() BackendValue

type Backend6

type Backend6 struct {
	Key   *Backend6Key
	Value *Backend6Value
}

func (*Backend6) GetKey

func (b *Backend6) GetKey() BackendKey

func (*Backend6) GetValue

func (b *Backend6) GetValue() BackendValue

func (*Backend6) Map

func (b *Backend6) Map() *bpf.Map

type Backend6Key

type Backend6Key struct {
	ID uint16
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*Backend6Key) DeepCopy

func (in *Backend6Key) DeepCopy() *Backend6Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend6Key.

func (*Backend6Key) DeepCopyInto

func (in *Backend6Key) DeepCopyInto(out *Backend6Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend6Key) DeepCopyMapKey

func (in *Backend6Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Backend6Key) GetID

func (k *Backend6Key) GetID() loadbalancer.BackendID

func (*Backend6Key) GetKeyPtr

func (k *Backend6Key) GetKeyPtr() unsafe.Pointer

func (*Backend6Key) Map

func (k *Backend6Key) Map() *bpf.Map

func (*Backend6Key) NewValue

func (k *Backend6Key) NewValue() bpf.MapValue

func (*Backend6Key) SetID

func (k *Backend6Key) SetID(id loadbalancer.BackendID)

func (*Backend6Key) String

func (k *Backend6Key) String() string

type Backend6KeyV2

type Backend6KeyV2 struct {
	ID loadbalancer.BackendID
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewBackend6KeyV2

func NewBackend6KeyV2(id loadbalancer.BackendID) *Backend6KeyV2

func (*Backend6KeyV2) DeepCopy

func (in *Backend6KeyV2) DeepCopy() *Backend6KeyV2

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend6KeyV2.

func (*Backend6KeyV2) DeepCopyInto

func (in *Backend6KeyV2) DeepCopyInto(out *Backend6KeyV2)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend6KeyV2) DeepCopyMapKey

func (in *Backend6KeyV2) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Backend6KeyV2) GetID

func (*Backend6KeyV2) GetKeyPtr

func (k *Backend6KeyV2) GetKeyPtr() unsafe.Pointer

func (*Backend6KeyV2) Map

func (k *Backend6KeyV2) Map() *bpf.Map

func (*Backend6KeyV2) NewValue

func (k *Backend6KeyV2) NewValue() bpf.MapValue

func (*Backend6KeyV2) SetID

func (k *Backend6KeyV2) SetID(id loadbalancer.BackendID)

func (*Backend6KeyV2) String

func (k *Backend6KeyV2) String() string

type Backend6V2

type Backend6V2 struct {
	Key   *Backend6KeyV2
	Value *Backend6Value
}

func NewBackend6V2

func NewBackend6V2(id loadbalancer.BackendID, ip net.IP, port uint16, proto u8proto.U8proto,
	state loadbalancer.BackendState) (*Backend6V2, error)

func (*Backend6V2) GetKey

func (b *Backend6V2) GetKey() BackendKey

func (*Backend6V2) GetValue

func (b *Backend6V2) GetValue() BackendValue

func (*Backend6V2) Map

func (b *Backend6V2) Map() *bpf.Map

type Backend6Value

type Backend6Value struct {
	Address types.IPv6      `align:"address"`
	Port    uint16          `align:"port"`
	Proto   u8proto.U8proto `align:"proto"`
	Flags   uint8           `align:"flags"`
}

Backend6Value must match 'struct lb6_backend' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func NewBackend6Value

func NewBackend6Value(ip net.IP, port uint16, proto u8proto.U8proto, state loadbalancer.BackendState) (*Backend6Value, error)

func (*Backend6Value) DeepCopy

func (in *Backend6Value) DeepCopy() *Backend6Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backend6Value.

func (*Backend6Value) DeepCopyInto

func (in *Backend6Value) DeepCopyInto(out *Backend6Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Backend6Value) DeepCopyMapValue

func (in *Backend6Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*Backend6Value) GetAddress

func (b *Backend6Value) GetAddress() net.IP

func (*Backend6Value) GetFlags

func (b *Backend6Value) GetFlags() uint8

func (*Backend6Value) GetPort

func (b *Backend6Value) GetPort() uint16

func (*Backend6Value) GetValuePtr

func (v *Backend6Value) GetValuePtr() unsafe.Pointer

func (*Backend6Value) String

func (v *Backend6Value) String() string

func (*Backend6Value) ToHost

func (v *Backend6Value) ToHost() BackendValue

ToHost converts Backend6Value to host byte order.

func (*Backend6Value) ToNetwork

func (v *Backend6Value) ToNetwork() BackendValue

type BackendIDByServiceIDSet

type BackendIDByServiceIDSet map[uint16]map[loadbalancer.BackendID]struct{} // svc ID => backend ID

BackendIDByServiceIDSet is the type of a set for checking whether a backend belongs to a given service

type BackendKey

type BackendKey interface {
	bpf.MapKey

	// Return the BPF map matching the type
	Map() *bpf.Map

	// Set backend identifier
	SetID(loadbalancer.BackendID)

	// Get backend identifier
	GetID() loadbalancer.BackendID
}

BackendKey is the interface describing protocol independent backend key.

type BackendValue

type BackendValue interface {
	bpf.MapValue

	// Get backend address
	GetAddress() net.IP

	// Get backend port
	GetPort() uint16

	// Get backend flags
	GetFlags() uint8

	// Convert fields to network byte order.
	ToNetwork() BackendValue

	// ToHost converts fields to host byte order.
	ToHost() BackendValue
}

BackendValue is the interface describing protocol independent backend value.

type InitParams

type InitParams struct {
	IPv4, IPv6 bool

	MaxSockRevNatMapEntries                                         int
	ServiceMapMaxEntries, BackEndMapMaxEntries, RevNatMapMaxEntries int
	AffinityMapMaxEntries                                           int
	SourceRangeMapMaxEntries                                        int
	MaglevMapMaxEntries                                             int
}

InitParams represents the parameters to be passed to Init().

type LBBPFMap

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

LBBPFMap is an implementation of the LBMap interface.

func New

func New(maglev bool, maglevTableSize int) *LBBPFMap

func (*LBBPFMap) AddAffinityMatch

func (*LBBPFMap) AddAffinityMatch(revNATID uint16, backendID loadbalancer.BackendID) error

AddAffinityMatch adds the given affinity match to the BPF map.

func (*LBBPFMap) AddBackend

func (*LBBPFMap) AddBackend(b loadbalancer.Backend, ipv6 bool) error

AddBackend adds a backend into a BPF map. ipv6 indicates if the backend needs to be added in the v4 or v6 backend map.

func (*LBBPFMap) DeleteAffinityMatch

func (*LBBPFMap) DeleteAffinityMatch(revNATID uint16, backendID loadbalancer.BackendID) error

DeleteAffinityMatch removes the affinity match for the given svc and backend ID tuple from the BPF map

func (*LBBPFMap) DeleteBackendByID

func (*LBBPFMap) DeleteBackendByID(id loadbalancer.BackendID) error

DeleteBackendByID removes a backend identified with the given ID from a BPF map.

func (*LBBPFMap) DeleteService

func (*LBBPFMap) DeleteService(svc loadbalancer.L3n4AddrID, backendCount int, useMaglev bool,
	natPolicy loadbalancer.SVCNatPolicy) error

DeleteService removes given service from a BPF map.

func (*LBBPFMap) DumpAffinityMatches

func (*LBBPFMap) DumpAffinityMatches() (BackendIDByServiceIDSet, error)

DumpAffinityMatches returns the affinity match map represented as a nested map which first key is svc ID and the second - backend ID.

func (*LBBPFMap) DumpBackendMaps

func (*LBBPFMap) DumpBackendMaps() ([]*loadbalancer.Backend, error)

DumpBackendMaps dumps the backend entries from the BPF maps.

func (*LBBPFMap) DumpServiceMaps

func (*LBBPFMap) DumpServiceMaps() ([]*loadbalancer.SVC, []error)

DumpServiceMaps dumps the services from the BPF maps.

func (*LBBPFMap) DumpSourceRanges

func (*LBBPFMap) DumpSourceRanges(ipv6 bool) (SourceRangeSetByServiceID, error)

func (*LBBPFMap) IsMaglevLookupTableRecreated

func (*LBBPFMap) IsMaglevLookupTableRecreated(ipv6 bool) bool

IsMaglevLookupTableRecreated returns true if the maglev lookup BPF map was recreated due to the changed M param.

func (*LBBPFMap) UpdateBackendWithState

func (*LBBPFMap) UpdateBackendWithState(b loadbalancer.Backend) error

UpdateBackendWithState updates the state for the given backend.

This function should only be called to update backend's state.

func (*LBBPFMap) UpdateSourceRanges

func (*LBBPFMap) UpdateSourceRanges(revNATID uint16, prevSourceRanges []*cidr.CIDR,
	sourceRanges []*cidr.CIDR, ipv6 bool) error

func (*LBBPFMap) UpsertMaglevLookupTable

func (lbmap *LBBPFMap) UpsertMaglevLookupTable(svcID uint16, backends map[string]loadbalancer.BackendID, ipv6 bool) error

UpsertMaglevLookupTable calculates Maglev lookup table for given backends, and inserts into the Maglev BPF map.

func (*LBBPFMap) UpsertService

func (lbmap *LBBPFMap) UpsertService(p *UpsertServiceParams) error

UpsertService inserts or updates the given service in a BPF map.

The corresponding backend entries (identified with the given backendIDs) have to exist before calling the function.

The service's prevActiveBackendCount denotes the count of previously active backend entries that were added to the BPF map so that the function can remove obsolete ones.

The service's non-active backends are appended to the active backends list, and skipped from the service backends count set in the master key so that the non-active backends will not be considered for load-balancing traffic. The backends count is used in the datapath to determine if a service has any backends. The non-active backends are, however, populated in the service map so that they can be restored upon agent restart along with their state.

type MaglevInnerKey

type MaglevInnerKey struct {
	Zero uint32
}

MaglevInnerKey is the key of a maglev inner map.

type MaglevInnerMap

type MaglevInnerMap ebpf.Map

MaglevInnerMap represents a maglev inner map.

func MaglevInnerMapFromID

func MaglevInnerMapFromID(id uint32) (*MaglevInnerMap, error)

MaglevInnerMapFromID returns a new object representing the maglev inner map identified by an ID.

func (*MaglevInnerMap) DumpBackends

func (m *MaglevInnerMap) DumpBackends() (string, error)

DumpBackends returns the first key of the map as stringified ints for dumping purposes.

func (*MaglevInnerMap) Lookup

func (m *MaglevInnerMap) Lookup(key *MaglevInnerKey) (*MaglevInnerVal, error)

Lookup returns the value associated with a given key for a maglev inner map.

func (*MaglevInnerMap) TableSize

func (m *MaglevInnerMap) TableSize() uint32

TableSize returns the amount of backends this map can hold as a value.

func (*MaglevInnerMap) UpdateBackends

func (m *MaglevInnerMap) UpdateBackends(backends []loadbalancer.BackendID) error

UpdateBackends updates the maglev inner map's list of backends.

type MaglevInnerVal

type MaglevInnerVal struct {
	BackendIDs []loadbalancer.BackendID
}

MaglevInnerVal is the value of a maglev inner map.

type MaglevOuterKey

type MaglevOuterKey struct {
	RevNatID uint16
}

MaglevOuterKey is the key of a maglev outer map.

type MaglevOuterMap

type MaglevOuterMap struct {
	*ebpf.Map
}

MaglevOuterMap represents a Maglev outer map.

func NewMaglevOuterMap

func NewMaglevOuterMap(name string, maxEntries int, tableSize uint32, innerMap *ebpf.MapSpec) (*MaglevOuterMap, error)

NewMaglevOuterMap returns a new object representing a maglev outer map.

func OpenMaglevOuterMap

func OpenMaglevOuterMap(name string) (*MaglevOuterMap, error)

OpenMaglevOuterMap opens an existing pinned maglev outer map and returns an object representing it.

func (*MaglevOuterMap) DumpBackends

func (m *MaglevOuterMap) DumpBackends(ipv6 bool) (map[string][]string, error)

DumpBackends iterates through all of the Maglev map's entries, opening each entry's inner map, and dumps their contents in a format expected by Cilium's table printer.

func (*MaglevOuterMap) GetService

func (m *MaglevOuterMap) GetService(id uint16) (*MaglevInnerMap, error)

GetService gets the maglev backend lookup table for the given service id.

func (*MaglevOuterMap) TableSize

func (m *MaglevOuterMap) TableSize() (uint32, error)

TableSize tries to determine the table size of the Maglev map. It does so by opening the first-available service's inner map and reading its size. For this to work, at least one service entry must be available.

func (*MaglevOuterMap) UpdateService

func (m *MaglevOuterMap) UpdateService(id uint16, inner *MaglevInnerMap) error

UpdateService sets the given inner map to be the Maglev lookup table for the service with the given id.

type MaglevOuterVal

type MaglevOuterVal struct {
	FD uint32
}

MaglevOuterVal is the value of a maglev outer map.

type RevNat4Key

type RevNat4Key struct {
	Key uint16
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewRevNat4Key

func NewRevNat4Key(value uint16) *RevNat4Key

func (*RevNat4Key) DeepCopy

func (in *RevNat4Key) DeepCopy() *RevNat4Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevNat4Key.

func (*RevNat4Key) DeepCopyInto

func (in *RevNat4Key) DeepCopyInto(out *RevNat4Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RevNat4Key) DeepCopyMapKey

func (in *RevNat4Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*RevNat4Key) GetKey

func (k *RevNat4Key) GetKey() uint16

func (*RevNat4Key) GetKeyPtr

func (k *RevNat4Key) GetKeyPtr() unsafe.Pointer

func (*RevNat4Key) Map

func (k *RevNat4Key) Map() *bpf.Map

func (*RevNat4Key) NewValue

func (k *RevNat4Key) NewValue() bpf.MapValue

func (*RevNat4Key) String

func (k *RevNat4Key) String() string

func (*RevNat4Key) ToHost

func (k *RevNat4Key) ToHost() RevNatKey

ToHost converts RevNat4Key to host byte order.

func (*RevNat4Key) ToNetwork

func (k *RevNat4Key) ToNetwork() RevNatKey

ToNetwork converts RevNat4Key to network byte order.

type RevNat4Value

type RevNat4Value struct {
	Address types.IPv4 `align:"address"`
	Port    uint16     `align:"port"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*RevNat4Value) DeepCopy

func (in *RevNat4Value) DeepCopy() *RevNat4Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevNat4Value.

func (*RevNat4Value) DeepCopyInto

func (in *RevNat4Value) DeepCopyInto(out *RevNat4Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RevNat4Value) DeepCopyMapValue

func (in *RevNat4Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*RevNat4Value) GetValuePtr

func (v *RevNat4Value) GetValuePtr() unsafe.Pointer

func (*RevNat4Value) String

func (v *RevNat4Value) String() string

func (*RevNat4Value) ToHost

func (k *RevNat4Value) ToHost() RevNatValue

ToHost converts RevNat4Value to host byte order.

func (*RevNat4Value) ToNetwork

func (v *RevNat4Value) ToNetwork() RevNatValue

ToNetwork converts RevNat4Value to network byte order.

type RevNat6Key

type RevNat6Key struct {
	Key uint16
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewRevNat6Key

func NewRevNat6Key(value uint16) *RevNat6Key

func (*RevNat6Key) DeepCopy

func (in *RevNat6Key) DeepCopy() *RevNat6Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevNat6Key.

func (*RevNat6Key) DeepCopyInto

func (in *RevNat6Key) DeepCopyInto(out *RevNat6Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RevNat6Key) DeepCopyMapKey

func (in *RevNat6Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*RevNat6Key) GetKey

func (v *RevNat6Key) GetKey() uint16

func (*RevNat6Key) GetKeyPtr

func (v *RevNat6Key) GetKeyPtr() unsafe.Pointer

func (*RevNat6Key) Map

func (v *RevNat6Key) Map() *bpf.Map

func (*RevNat6Key) NewValue

func (v *RevNat6Key) NewValue() bpf.MapValue

func (*RevNat6Key) String

func (v *RevNat6Key) String() string

func (*RevNat6Key) ToHost

func (v *RevNat6Key) ToHost() RevNatKey

ToNetwork converts RevNat6Key to host byte order.

func (*RevNat6Key) ToNetwork

func (v *RevNat6Key) ToNetwork() RevNatKey

ToNetwork converts RevNat6Key to network byte order.

type RevNat6Value

type RevNat6Value struct {
	Address types.IPv6 `align:"address"`
	Port    uint16     `align:"port"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*RevNat6Value) DeepCopy

func (in *RevNat6Value) DeepCopy() *RevNat6Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RevNat6Value.

func (*RevNat6Value) DeepCopyInto

func (in *RevNat6Value) DeepCopyInto(out *RevNat6Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RevNat6Value) DeepCopyMapValue

func (in *RevNat6Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*RevNat6Value) GetValuePtr

func (v *RevNat6Value) GetValuePtr() unsafe.Pointer

func (*RevNat6Value) String

func (v *RevNat6Value) String() string

func (*RevNat6Value) ToHost

func (v *RevNat6Value) ToHost() RevNatValue

ToNetwork converts RevNat6Value to Host byte order.

func (*RevNat6Value) ToNetwork

func (v *RevNat6Value) ToNetwork() RevNatValue

ToNetwork converts RevNat6Value to network byte order.

type RevNatKey

type RevNatKey interface {
	bpf.MapKey

	// Returns the BPF map matching the key type
	Map() *bpf.Map

	// ToNetwork converts fields to network byte order.
	ToNetwork() RevNatKey

	// Returns the key value
	GetKey() uint16

	// ToHost converts fields to host byte order.
	ToHost() RevNatKey
}

type RevNatValue

type RevNatValue interface {
	bpf.MapValue

	// ToNetwork converts fields to network byte order.
	ToNetwork() RevNatValue

	// ToHost converts fields to host byte order.
	ToHost() RevNatValue
}

type Service4Key

type Service4Key struct {
	Address     types.IPv4 `align:"address"`
	Port        uint16     `align:"dport"`
	BackendSlot uint16     `align:"backend_slot"`
	Proto       uint8      `align:"proto"`
	Scope       uint8      `align:"scope"`
	Pad         pad2uint8  `align:"pad"`
}

Service4Key must match 'struct lb4_key' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewService4Key

func NewService4Key(ip net.IP, port uint16, proto u8proto.U8proto, scope uint8, slot uint16) *Service4Key

func (*Service4Key) DeepCopy

func (in *Service4Key) DeepCopy() *Service4Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service4Key.

func (*Service4Key) DeepCopyInto

func (in *Service4Key) DeepCopyInto(out *Service4Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Service4Key) DeepCopyMapKey

func (in *Service4Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Service4Key) GetAddress

func (k *Service4Key) GetAddress() net.IP

func (*Service4Key) GetBackendSlot

func (k *Service4Key) GetBackendSlot() int

func (*Service4Key) GetKeyPtr

func (k *Service4Key) GetKeyPtr() unsafe.Pointer

func (*Service4Key) GetPort

func (k *Service4Key) GetPort() uint16

func (*Service4Key) GetScope

func (k *Service4Key) GetScope() uint8

func (*Service4Key) IsIPv6

func (k *Service4Key) IsIPv6() bool

func (*Service4Key) IsSurrogate

func (k *Service4Key) IsSurrogate() bool

func (*Service4Key) Map

func (k *Service4Key) Map() *bpf.Map

func (*Service4Key) MapDelete

func (k *Service4Key) MapDelete() error

func (*Service4Key) NewValue

func (k *Service4Key) NewValue() bpf.MapValue

func (*Service4Key) RevNatValue

func (k *Service4Key) RevNatValue() RevNatValue

func (*Service4Key) SetBackendSlot

func (k *Service4Key) SetBackendSlot(slot int)

func (*Service4Key) SetScope

func (k *Service4Key) SetScope(scope uint8)

func (*Service4Key) String

func (k *Service4Key) String() string

func (*Service4Key) ToHost

func (k *Service4Key) ToHost() ServiceKey

ToHost converts Service4Key to host byte order.

func (*Service4Key) ToNetwork

func (k *Service4Key) ToNetwork() ServiceKey

type Service4Value

type Service4Value struct {
	BackendID uint32    `align:"backend_id"`
	Count     uint16    `align:"count"`
	RevNat    uint16    `align:"rev_nat_index"`
	Flags     uint8     `align:"flags"`
	Flags2    uint8     `align:"flags2"`
	Pad       pad2uint8 `align:"pad"`
}

Service4Value must match 'struct lb4_service_v2' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*Service4Value) DeepCopy

func (in *Service4Value) DeepCopy() *Service4Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service4Value.

func (*Service4Value) DeepCopyInto

func (in *Service4Value) DeepCopyInto(out *Service4Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Service4Value) DeepCopyMapValue

func (in *Service4Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*Service4Value) GetBackendID

func (s *Service4Value) GetBackendID() loadbalancer.BackendID

func (*Service4Value) GetCount

func (s *Service4Value) GetCount() int

func (*Service4Value) GetFlags

func (s *Service4Value) GetFlags() uint16

func (*Service4Value) GetRevNat

func (s *Service4Value) GetRevNat() int

func (*Service4Value) GetValuePtr

func (s *Service4Value) GetValuePtr() unsafe.Pointer

func (*Service4Value) RevNatKey

func (s *Service4Value) RevNatKey() RevNatKey

func (*Service4Value) SetBackendID

func (s *Service4Value) SetBackendID(id loadbalancer.BackendID)

func (*Service4Value) SetCount

func (s *Service4Value) SetCount(count int)

func (*Service4Value) SetFlags

func (s *Service4Value) SetFlags(flags uint16)

func (*Service4Value) SetL7LBProxyPort

func (s *Service4Value) SetL7LBProxyPort(port uint16)

func (*Service4Value) SetRevNat

func (s *Service4Value) SetRevNat(id int)

func (*Service4Value) SetSessionAffinityTimeoutSec

func (s *Service4Value) SetSessionAffinityTimeoutSec(t uint32)

func (*Service4Value) String

func (s *Service4Value) String() string

func (*Service4Value) ToHost

func (s *Service4Value) ToHost() ServiceValue

ToHost converts Service4Value to host byte order.

func (*Service4Value) ToNetwork

func (s *Service4Value) ToNetwork() ServiceValue

type Service6Key

type Service6Key struct {
	Address     types.IPv6 `align:"address"`
	Port        uint16     `align:"dport"`
	BackendSlot uint16     `align:"backend_slot"`
	Proto       uint8      `align:"proto"`
	Scope       uint8      `align:"scope"`
	Pad         pad2uint8  `align:"pad"`
}

Service6Key must match 'struct lb6_key' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func NewService6Key

func NewService6Key(ip net.IP, port uint16, proto u8proto.U8proto, scope uint8, slot uint16) *Service6Key

func (*Service6Key) DeepCopy

func (in *Service6Key) DeepCopy() *Service6Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service6Key.

func (*Service6Key) DeepCopyInto

func (in *Service6Key) DeepCopyInto(out *Service6Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Service6Key) DeepCopyMapKey

func (in *Service6Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*Service6Key) GetAddress

func (k *Service6Key) GetAddress() net.IP

func (*Service6Key) GetBackendSlot

func (k *Service6Key) GetBackendSlot() int

func (*Service6Key) GetKeyPtr

func (k *Service6Key) GetKeyPtr() unsafe.Pointer

func (*Service6Key) GetPort

func (k *Service6Key) GetPort() uint16

func (*Service6Key) GetScope

func (k *Service6Key) GetScope() uint8

func (*Service6Key) IsIPv6

func (k *Service6Key) IsIPv6() bool

func (*Service6Key) IsSurrogate

func (k *Service6Key) IsSurrogate() bool

func (*Service6Key) Map

func (k *Service6Key) Map() *bpf.Map

func (*Service6Key) MapDelete

func (k *Service6Key) MapDelete() error

func (*Service6Key) NewValue

func (k *Service6Key) NewValue() bpf.MapValue

func (*Service6Key) RevNatValue

func (k *Service6Key) RevNatValue() RevNatValue

func (*Service6Key) SetBackendSlot

func (k *Service6Key) SetBackendSlot(slot int)

func (*Service6Key) SetScope

func (k *Service6Key) SetScope(scope uint8)

func (*Service6Key) String

func (k *Service6Key) String() string

func (*Service6Key) ToHost

func (k *Service6Key) ToHost() ServiceKey

ToHost converts Service6Key to host byte order.

func (*Service6Key) ToNetwork

func (k *Service6Key) ToNetwork() ServiceKey

type Service6Value

type Service6Value struct {
	BackendID uint32    `align:"backend_id"`
	Count     uint16    `align:"count"`
	RevNat    uint16    `align:"rev_nat_index"`
	Flags     uint8     `align:"flags"`
	Flags2    uint8     `align:"flags2"`
	Pad       pad2uint8 `align:"pad"`
}

Service6Value must match 'struct lb6_service_v2' in "bpf/lib/common.h". +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*Service6Value) DeepCopy

func (in *Service6Value) DeepCopy() *Service6Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service6Value.

func (*Service6Value) DeepCopyInto

func (in *Service6Value) DeepCopyInto(out *Service6Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Service6Value) DeepCopyMapValue

func (in *Service6Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*Service6Value) GetBackendID

func (s *Service6Value) GetBackendID() loadbalancer.BackendID

func (*Service6Value) GetCount

func (s *Service6Value) GetCount() int

func (*Service6Value) GetFlags

func (s *Service6Value) GetFlags() uint16

func (*Service6Value) GetRevNat

func (s *Service6Value) GetRevNat() int

func (*Service6Value) GetValuePtr

func (s *Service6Value) GetValuePtr() unsafe.Pointer

func (*Service6Value) RevNatKey

func (s *Service6Value) RevNatKey() RevNatKey

func (*Service6Value) SetBackendID

func (s *Service6Value) SetBackendID(id loadbalancer.BackendID)

func (*Service6Value) SetCount

func (s *Service6Value) SetCount(count int)

func (*Service6Value) SetFlags

func (s *Service6Value) SetFlags(flags uint16)

func (*Service6Value) SetL7LBProxyPort

func (s *Service6Value) SetL7LBProxyPort(port uint16)

func (*Service6Value) SetRevNat

func (s *Service6Value) SetRevNat(id int)

func (*Service6Value) SetSessionAffinityTimeoutSec

func (s *Service6Value) SetSessionAffinityTimeoutSec(t uint32)

func (*Service6Value) String

func (s *Service6Value) String() string

func (*Service6Value) ToHost

func (s *Service6Value) ToHost() ServiceValue

ToHost converts Service6Value to host byte order.

func (*Service6Value) ToNetwork

func (s *Service6Value) ToNetwork() ServiceValue

type ServiceKey

type ServiceKey interface {
	bpf.MapKey

	// Return true if the key is of type IPv6
	IsIPv6() bool

	// IsSurrogate returns true on zero-address
	IsSurrogate() bool

	// Return the BPF map matching the key type
	Map() *bpf.Map

	// Set backend slot for the key
	SetBackendSlot(slot int)

	// Get backend slot of the key
	GetBackendSlot() int

	// Set lookup scope for the key
	SetScope(scope uint8)

	// Get lookup scope for the key
	GetScope() uint8

	// Get frontend IP address
	GetAddress() net.IP

	// Get frontend port
	GetPort() uint16

	// Returns a RevNatValue matching a ServiceKey
	RevNatValue() RevNatValue

	// Delete entry identified with the key from the matching map
	MapDelete() error

	// ToNetwork converts fields to network byte order.
	ToNetwork() ServiceKey

	// ToHost converts fields to host byte order.
	ToHost() ServiceKey
}

ServiceKey is the interface describing protocol independent key for services map v2.

type ServiceValue

type ServiceValue interface {
	bpf.MapValue

	// Set the number of backends
	SetCount(int)

	// Get the number of backends
	GetCount() int

	// Set reverse NAT identifier
	SetRevNat(int)

	// Get reverse NAT identifier
	GetRevNat() int

	// Set flags
	SetFlags(uint16)

	// Get flags
	GetFlags() uint16

	// Set timeout for sessionAffinity=clientIP
	SetSessionAffinityTimeoutSec(t uint32)

	// Set proxy port for l7 loadbalancer services
	SetL7LBProxyPort(port uint16)

	// Set backend identifier
	SetBackendID(id loadbalancer.BackendID)

	// Get backend identifier
	GetBackendID() loadbalancer.BackendID

	// Returns a RevNatKey matching a ServiceValue
	RevNatKey() RevNatKey

	// Convert fields to network byte order.
	ToNetwork() ServiceValue

	// ToHost converts fields to host byte order.
	ToHost() ServiceValue
}

ServiceValue is the interface describing protocol independent value for services map v2.

type SockRevNat4Key

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

SockRevNat4Key is the tuple with address, port and cookie used as key in the reverse NAT sock map. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*SockRevNat4Key) DeepCopy

func (in *SockRevNat4Key) DeepCopy() *SockRevNat4Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SockRevNat4Key.

func (*SockRevNat4Key) DeepCopyInto

func (in *SockRevNat4Key) DeepCopyInto(out *SockRevNat4Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SockRevNat4Key) DeepCopyMapKey

func (in *SockRevNat4Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*SockRevNat4Key) GetKeyPtr

func (k *SockRevNat4Key) GetKeyPtr() unsafe.Pointer

GetKeyPtr returns the unsafe pointer to the BPF key

func (SockRevNat4Key) NewValue

func (k SockRevNat4Key) NewValue() bpf.MapValue

NewValue returns a new empty instance of the structure representing the BPF map value.

func (*SockRevNat4Key) String

func (k *SockRevNat4Key) String() string

String converts the key into a human readable string format.

type SockRevNat4Value

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

SockRevNat4Value is an entry in the reverse NAT sock map. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*SockRevNat4Value) DeepCopy

func (in *SockRevNat4Value) DeepCopy() *SockRevNat4Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SockRevNat4Value.

func (*SockRevNat4Value) DeepCopyInto

func (in *SockRevNat4Value) DeepCopyInto(out *SockRevNat4Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SockRevNat4Value) DeepCopyMapValue

func (in *SockRevNat4Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*SockRevNat4Value) GetValuePtr

func (v *SockRevNat4Value) GetValuePtr() unsafe.Pointer

GetValuePtr returns the unsafe pointer to the BPF value

func (*SockRevNat4Value) String

func (v *SockRevNat4Value) String() string

String converts the value into a human readable string format.

type SockRevNat6Key

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

SockRevNat6Key is the tuple with address, port and cookie used as key in the reverse NAT sock map. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*SockRevNat6Key) DeepCopy

func (in *SockRevNat6Key) DeepCopy() *SockRevNat6Key

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SockRevNat6Key.

func (*SockRevNat6Key) DeepCopyInto

func (in *SockRevNat6Key) DeepCopyInto(out *SockRevNat6Key)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SockRevNat6Key) DeepCopyMapKey

func (in *SockRevNat6Key) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*SockRevNat6Key) GetKeyPtr

func (k *SockRevNat6Key) GetKeyPtr() unsafe.Pointer

GetKeyPtr returns the unsafe pointer to the BPF key

func (SockRevNat6Key) NewValue

func (k SockRevNat6Key) NewValue() bpf.MapValue

NewValue returns a new empty instance of the structure representing the BPF map value.

func (*SockRevNat6Key) String

func (k *SockRevNat6Key) String() string

String converts the key into a human readable string format.

type SockRevNat6Value

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

SockRevNat6Value is an entry in the reverse NAT sock map. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*SockRevNat6Value) DeepCopy

func (in *SockRevNat6Value) DeepCopy() *SockRevNat6Value

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SockRevNat6Value.

func (*SockRevNat6Value) DeepCopyInto

func (in *SockRevNat6Value) DeepCopyInto(out *SockRevNat6Value)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SockRevNat6Value) DeepCopyMapValue

func (in *SockRevNat6Value) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*SockRevNat6Value) GetValuePtr

func (v *SockRevNat6Value) GetValuePtr() unsafe.Pointer

GetValuePtr returns the unsafe pointer to the BPF value

func (*SockRevNat6Value) String

func (v *SockRevNat6Value) String() string

String converts the value into a human readable string format.

type SourceRangeKey

type SourceRangeKey interface {
	GetCIDR() *cidr.CIDR
	GetRevNATID() uint16

	// Convert fields to network byte order.
	ToNetwork() SourceRangeKey

	// ToHost converts fields to host byte order.
	ToHost() SourceRangeKey
}

type SourceRangeKey4

type SourceRangeKey4 struct {
	PrefixLen uint32     `align:"lpm_key"`
	RevNATID  uint16     `align:"rev_nat_id"`
	Pad       uint16     `align:"pad"`
	Address   types.IPv4 `align:"addr"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*SourceRangeKey4) DeepCopy

func (in *SourceRangeKey4) DeepCopy() *SourceRangeKey4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SourceRangeKey4.

func (*SourceRangeKey4) DeepCopyInto

func (in *SourceRangeKey4) DeepCopyInto(out *SourceRangeKey4)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SourceRangeKey4) DeepCopyMapKey

func (in *SourceRangeKey4) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*SourceRangeKey4) GetCIDR

func (k *SourceRangeKey4) GetCIDR() *cidr.CIDR

func (*SourceRangeKey4) GetKeyPtr

func (k *SourceRangeKey4) GetKeyPtr() unsafe.Pointer

func (*SourceRangeKey4) GetRevNATID

func (k *SourceRangeKey4) GetRevNATID() uint16

func (*SourceRangeKey4) NewValue

func (k *SourceRangeKey4) NewValue() bpf.MapValue

func (*SourceRangeKey4) String

func (k *SourceRangeKey4) String() string

func (*SourceRangeKey4) ToHost

func (k *SourceRangeKey4) ToHost() SourceRangeKey

ToHost returns the key in the host byte order

func (*SourceRangeKey4) ToNetwork

func (k *SourceRangeKey4) ToNetwork() SourceRangeKey

type SourceRangeKey6

type SourceRangeKey6 struct {
	PrefixLen uint32     `align:"lpm_key"`
	RevNATID  uint16     `align:"rev_nat_id"`
	Pad       uint16     `align:"pad"`
	Address   types.IPv6 `align:"addr"`
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey

func (*SourceRangeKey6) DeepCopy

func (in *SourceRangeKey6) DeepCopy() *SourceRangeKey6

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SourceRangeKey6.

func (*SourceRangeKey6) DeepCopyInto

func (in *SourceRangeKey6) DeepCopyInto(out *SourceRangeKey6)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SourceRangeKey6) DeepCopyMapKey

func (in *SourceRangeKey6) DeepCopyMapKey() bpf.MapKey

DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.

func (*SourceRangeKey6) GetCIDR

func (k *SourceRangeKey6) GetCIDR() *cidr.CIDR

func (*SourceRangeKey6) GetKeyPtr

func (k *SourceRangeKey6) GetKeyPtr() unsafe.Pointer

func (*SourceRangeKey6) GetRevNATID

func (k *SourceRangeKey6) GetRevNATID() uint16

func (*SourceRangeKey6) NewValue

func (k *SourceRangeKey6) NewValue() bpf.MapValue

func (*SourceRangeKey6) String

func (k *SourceRangeKey6) String() string

func (*SourceRangeKey6) ToHost

func (k *SourceRangeKey6) ToHost() SourceRangeKey

ToHost returns the key in the host byte order

func (*SourceRangeKey6) ToNetwork

func (k *SourceRangeKey6) ToNetwork() SourceRangeKey

type SourceRangeSetByServiceID

type SourceRangeSetByServiceID map[uint16][]*cidr.CIDR // svc ID => src range CIDRs

type SourceRangeValue

type SourceRangeValue struct {
	Pad uint8 // not used
}

+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue

func (*SourceRangeValue) DeepCopy

func (in *SourceRangeValue) DeepCopy() *SourceRangeValue

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SourceRangeValue.

func (*SourceRangeValue) DeepCopyInto

func (in *SourceRangeValue) DeepCopyInto(out *SourceRangeValue)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SourceRangeValue) DeepCopyMapValue

func (in *SourceRangeValue) DeepCopyMapValue() bpf.MapValue

DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.

func (*SourceRangeValue) GetValuePtr

func (v *SourceRangeValue) GetValuePtr() unsafe.Pointer

func (*SourceRangeValue) String

func (v *SourceRangeValue) String() string

type UpsertServiceParams

type UpsertServiceParams struct {
	ID                        uint16
	IP                        net.IP
	Port                      uint16
	ActiveBackends            map[string]loadbalancer.BackendID
	NonActiveBackends         []loadbalancer.BackendID
	PrevBackendsCount         int
	IPv6                      bool
	Type                      loadbalancer.SVCType
	NatPolicy                 loadbalancer.SVCNatPolicy
	Local                     bool
	Scope                     uint8
	SessionAffinity           bool
	SessionAffinityTimeoutSec uint32
	CheckSourceRange          bool
	UseMaglev                 bool
	L7LBProxyPort             uint16 // Non-zero for L7 LB services
}

Jump to

Keyboard shortcuts

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