Help us shape the future of Go! Take the 2026 Go Developer Survey

lxcmap

package
v1.20.4 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2026 License: Apache-2.0 Imports: 12 Imported by: 56

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 (
	// EndpointFlagHost indicates that this endpoint represents the host
	EndpointFlagHost = 1

	// EndpointFlagAtHostNS indicates that this endpoint is located at the host networking
	// namespace
	EndpointFlagAtHostNS = 2

	// EndpointFlagSkipMasqueradeV4 indicates that this endpoint should skip IPv4 masquerade for remote traffic
	EndpointFlagSkipMasqueradeV4 = 4

	// EndpointFlagSkipMasqueradeV6 indicates that this endpoint should skip IPv6 masquerade for remote traffic
	EndpointFlagSkipMasqueradeV6 = 8
)
View Source
const (

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

Variables

View Source
var Cell = cell.Module(
	"lxc-map",
	"eBPF map which manages all local endpoints",

	cell.Provide(newLXCMap),
)

Cell provides the lxc.Map which contains the local endpoints.

Functions

This section is empty.

Types

type EndpointFrontend added in v0.10.0

type EndpointFrontend interface {
	LXCMac() mac.MAC
	GetNodeMAC() mac.MAC
	GetIfIndex() int
	GetParentIfIndex() int
	GetID() uint64
	GetRTInfo() (uint32, eptypes.RTInfoEncoding)
	IPv4Address() netip.Addr
	IPv6Address() netip.Addr
	GetIdentity() identity.NumericIdentity
	IsAtHostNS() bool
	// SkipMasqueradeV4 indicates whether this endpoint should skip IPv4 masquerade for remote traffic
	SkipMasqueradeV4() bool
	// SkipMasqueradeV6 indicates whether this endpoint should skip IPv6 masquerade for remote traffic
	SkipMasqueradeV6() bool
}

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"`
	RTInfo        uint32        `align:"rt_info"`
	MAC           mac.Uint64MAC `align:"mac"`
	NodeMAC       mac.Uint64MAC `align:"node_mac"`
	SecID         uint32        `align:"sec_id"`
	ParentIfIndex uint32        `align:"parent_ifindex"`
	Pad           pad2uint32    `align:"pad"`
}

EndpointInfo represents the value of the endpoints BPF map.

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

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 (*EndpointKey) New added in v0.15.7

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

type Map added in v1.19.0

type Map interface {
	// WriteEndpoint updates the BPF map with the endpoint information and links
	// the endpoint information to all keys provided.
	WriteEndpoint(f EndpointFrontend) 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.
	SyncHostEntry(addr netip.Addr) (bool, error)

	// DeleteEntry deletes a single map entry
	DeleteEntry(addr netip.Addr) error

	// DeleteElement deletes the endpoint using all keys which represent the
	// endpoint. It returns the number of errors encountered during deletion.
	DeleteElement(logger *slog.Logger, f EndpointFrontend) []error

	// Dump returns the map (type map[string][]string) which contains all
	// data stored in BPF map.
	Dump(hash map[string][]string) error

	// DumpToMap dumps the contents of the lxcmap into a map and returns it
	DumpToMap() (map[netip.Addr]EndpointInfo, error)
}

Map provides access to the endpoints (lxc) eBPF map.

func OpenMap

func OpenMap(logger *slog.Logger) (Map, error)

OpenMap opens the pre-initialized LXC map for access. This should only be used from components which aren't capable of using hive - mainly the cilium-dbg. It needs to initialized beforehand via the Cilium Agent.

Jump to

Keyboard shortcuts

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