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
- func AddHostEntry(ip net.IP) error
- func DeleteElement(f EndpointFrontend) []error
- func DeleteEntry(ip net.IP) error
- func DumpToMap() (map[string]EndpointInfo, error)
- func LXCMap() *bpf.Map
- func SyncHostEntry(ip net.IP) (bool, error)
- func WriteEndpoint(f EndpointFrontend) error
- type EndpointFrontend
- type EndpointInfo
- type EndpointKey
Constants ¶
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 )
const (
// EndpointFlagHost indicates that this endpoint represents the host
EndpointFlagHost = 1
)
Variables ¶
This section is empty.
Functions ¶
func AddHostEntry ¶ added in v0.10.0
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
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 SyncHostEntry ¶ added in v0.15.7
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