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
- Variables
- func AddHostEntry(ip net.IP) error
- func DeleteElement(f EndpointFrontend) []error
- func DeleteEntry(ip net.IP) error
- func DumpToMap() (map[string]*EndpointInfo, error)
- func SyncHostEntry(ip net.IP) (bool, error)
- func WriteEndpoint(f EndpointFrontend) error
- type EndpointFrontend
- type EndpointInfo
- type EndpointKey
- type MAC
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 ¶
var ( // LXCMap represents the BPF map for endpoints LXCMap = bpf.NewMap(MapName, bpf.MapTypeHash, &EndpointKey{}, int(unsafe.Sizeof(EndpointKey{})), &EndpointInfo{}, int(unsafe.Sizeof(EndpointInfo{})), MaxEntries, 0, 0, bpf.ConvertKeyValue, ).WithCache() )
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 v1.5.0
DeleteEntry deletes a single map entry
func DumpToMap ¶ added in v1.5.0
func DumpToMap() (map[string]*EndpointInfo, error)
DumpToMap dumps the contents of the lxcmap into a map and returns it
func SyncHostEntry ¶ added in v1.5.0
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 { // GetBPFKeys must return a slice of EndpointKey which all represent the endpoint GetBPFKeys() []*EndpointKey // GetBPFValue must return an EndpointInfo structure representing the frontend GetBPFValue() (*EndpointInfo, error) }
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 `align:"mac"` NodeMAC MAC `align:"node_mac"` Pad pad4uint32 `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> +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue
func (*EndpointInfo) DeepCopy ¶ added in v1.5.1
func (in *EndpointInfo) DeepCopy() *EndpointInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointInfo.
func (*EndpointInfo) DeepCopyInto ¶ added in v1.5.1
func (in *EndpointInfo) DeepCopyInto(out *EndpointInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EndpointInfo) DeepCopyMapValue ¶ added in v1.5.1
func (in *EndpointInfo) DeepCopyMapValue() bpf.MapValue
DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.
func (*EndpointInfo) GetValuePtr ¶ added in v0.10.0
func (v *EndpointInfo) GetValuePtr() unsafe.Pointer
GetValuePtr returns the unsafe pointer to the BPF value
func (*EndpointInfo) IsHost ¶ added in v1.5.0
func (v *EndpointInfo) IsHost() bool
IsHost returns true if the EndpointInfo represents a host IP
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
}
+k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey
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) DeepCopy ¶ added in v1.5.1
func (in *EndpointKey) DeepCopy() *EndpointKey
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointKey.
func (*EndpointKey) DeepCopyInto ¶ added in v1.5.1
func (in *EndpointKey) DeepCopyInto(out *EndpointKey)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EndpointKey) DeepCopyMapKey ¶ added in v1.5.1
func (in *EndpointKey) DeepCopyMapKey() bpf.MapKey
DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.
func (EndpointKey) NewValue ¶ added in v0.10.0
func (k EndpointKey) NewValue() bpf.MapValue
NewValue returns a new empty instance of the structure representing the BPF map value