lxcmap

package
v1.15.0-pre.1 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2023 License: Apache-2.0 Imports: 9 Imported by: 49

Documentation

Overview

Package lxcmap represents the endpoints BPF map in the BPF programs. It is implemented as a hash table containing an entry for all local endpoints. The hashtable can be accessed through the key EndpointKey and points which points to the value EndpointInfo. +groupName=maps

Index

Constants

View Source
const (
	MapName = "cilium_lxc"

	// MaxEntries represents the maximum number of endpoints in the map
	MaxEntries = 65535

	// PortMapMax represents the maximum number of Ports Mapping per container.
	PortMapMax = 16
)
View Source
const (
	// EndpointFlagHost indicates that this endpoint represents the host
	EndpointFlagHost = 1
)

Variables

This section is empty.

Functions

func AddHostEntry added in v0.10.0

func AddHostEntry(ip net.IP) error

AddHostEntry adds a special endpoint which represents the local host

func DeleteElement added in v0.10.0

func DeleteElement(f EndpointFrontend) []error

DeleteElement deletes the endpoint using all keys which represent the endpoint. It returns the number of errors encountered during deletion.

func DeleteEntry added in v0.15.7

func DeleteEntry(ip net.IP) error

DeleteEntry deletes a single map entry

func DumpToMap added in v0.15.7

func DumpToMap() (map[string]EndpointInfo, error)

DumpToMap dumps the contents of the lxcmap into a map and returns it

func LXCMap

func LXCMap() *bpf.Map

func SyncHostEntry added in v0.15.7

func SyncHostEntry(ip net.IP) (bool, error)

SyncHostEntry checks if a host entry exists in the lxcmap and adds one if needed. Returns boolean indicating if a new entry was added and an error.

func WriteEndpoint added in v0.10.0

func WriteEndpoint(f EndpointFrontend) error

WriteEndpoint updates the BPF map with the endpoint information and links the endpoint information to all keys provided.

Types

type EndpointFrontend added in v0.10.0

type EndpointFrontend interface {
	LXCMac() mac.MAC
	GetNodeMAC() mac.MAC
	GetIfIndex() int
	GetID() uint64
	IPv4Address() netip.Addr
	IPv6Address() netip.Addr
	GetIdentity() identity.NumericIdentity
}

EndpointFrontend is the interface to implement for an object to synchronize with the endpoint BPF map.

type EndpointInfo added in v0.10.0

type EndpointInfo struct {
	IfIndex uint32 `align:"ifindex"`
	Unused  uint16 `align:"unused"`
	LxcID   uint16 `align:"lxc_id"`
	Flags   uint32 `align:"flags"`

	MAC     mac.Uint64MAC `align:"mac"`
	NodeMAC mac.Uint64MAC `align:"node_mac"`
	SecID   uint32        `align:"sec_id"`
	Pad     pad3uint32    `align:"pad"`
	// contains filtered or unexported fields
}

EndpointInfo represents the value of the endpoints BPF map.

Must be in sync with struct endpoint_info in <bpf/lib/common.h>

func GetBPFValue added in v0.15.7

func GetBPFValue(e EndpointFrontend) (*EndpointInfo, error)

GetBPFValue returns the value which should represent this endpoint in the BPF endpoints map Must only be called if init() succeeded.

func (*EndpointInfo) IsHost added in v0.15.7

func (v *EndpointInfo) IsHost() bool

IsHost returns true if the EndpointInfo represents a host IP

func (*EndpointInfo) New added in v0.15.7

func (v *EndpointInfo) New() bpf.MapValue

func (*EndpointInfo) String added in v0.10.0

func (v *EndpointInfo) String() string

String returns the human readable representation of an EndpointInfo

type EndpointKey added in v0.10.0

type EndpointKey struct {
	bpf.EndpointKey
}

func GetBPFKeys added in v0.15.7

func GetBPFKeys(e EndpointFrontend) []*EndpointKey

GetBPFKeys returns all keys which should represent this endpoint in the BPF endpoints map

func NewEndpointKey added in v0.10.0

func NewEndpointKey(ip net.IP) *EndpointKey

NewEndpointKey returns an EndpointKey based on the provided IP address. The address family is automatically detected

func (*EndpointKey) New added in v0.15.7

func (k *EndpointKey) New() bpf.MapKey

Jump to

Keyboard shortcuts

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