pkg/constants/constants.go (96 lines of code) (raw):
package constants
type EBPFMapType uint32
// Currently synced with 5.10.188 - https://elixir.bootlin.com/linux/v5.10.188/source/include/uapi/linux/bpf.h
const (
// BPF map type constants. Must match enum bpf_map_type from linux/bpf.h
BPF_MAP_TYPE_UNSPEC EBPFMapType = iota
BPF_MAP_TYPE_HASH
BPF_MAP_TYPE_ARRAY
BPF_MAP_TYPE_PROG_ARRAY
BPF_MAP_TYPE_PERF_EVENT_ARRAY
BPF_MAP_TYPE_PERCPU_HASH
BPF_MAP_TYPE_PERCPU_ARRAY
BPF_MAP_TYPE_STACK_TRACE
BPF_MAP_TYPE_CGROUP_ARRAY
BPF_MAP_TYPE_LRU_HASH
BPF_MAP_TYPE_LRU_PERCPU_HASH
BPF_MAP_TYPE_LPM_TRIE
BPF_MAP_TYPE_ARRAY_OF_MAPS
BPF_MAP_TYPE_HASH_OF_MAPS
BPF_MAP_TYPE_DEVMAP
BPF_MAP_TYPE_SOCKMAP
BPF_MAP_TYPE_CPUMAP
BPF_MAP_TYPE_XSKMAP
BPF_MAP_TYPE_SOCKHASH
BPF_MAP_TYPE_CGROUP_STORAGE
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
BPF_MAP_TYPE_QUEUE
BPF_MAP_TYPE_STACK
BPF_MAP_TYPE_SK_STORAGE
BPF_MAP_TYPE_DEVMAP_HASH
BPF_MAP_TYPE_STRUCT_OPS
BPF_MAP_TYPE_RINGBUF
BPF_MAP_TYPE_INODE_STORAGE
)
func (mapType EBPFMapType) Index() uint32 {
return uint32(mapType)
}
type EBPFCmdType uint32
const (
// BPF syscall command constants. Must match enum bpf_cmd from linux/bpf.h
BPF_MAP_CREATE EBPFCmdType = iota
BPF_MAP_LOOKUP_ELEM
BPF_MAP_UPDATE_ELEM
BPF_MAP_DELETE_ELEM
BPF_MAP_GET_NEXT_KEY
BPF_PROG_LOAD
BPF_OBJ_PIN
BPF_OBJ_GET
BPF_PROG_ATTACH
BPF_PROG_DETACH
BPF_PROG_TEST_RUN
BPF_PROG_GET_NEXT_ID
BPF_MAP_GET_NEXT_ID
BPF_PROG_GET_FD_BY_ID
BPF_MAP_GET_FD_BY_ID
BPF_OBJ_GET_INFO_BY_FD
)
type EBPFMapUpdateType uint32
const (
// Flags for BPF_MAP_UPDATE_ELEM. Must match values from linux/bpf.h
BPF_ANY EBPFMapUpdateType = iota
BPF_NOEXIST
BPF_EXIST
)
type EBPFPinType uint32
const (
// BPF MAP pinning
PIN_NONE EBPFPinType = iota
PIN_OBJECT_NS
PIN_GLOBAL_NS
PIN_CUSTOM_NS
)
func (pinType EBPFPinType) Index() uint32 {
return uint32(pinType)
}
const (
BPF_F_NO_PREALLOC = 1 << 0
BPF_F_NO_COMMON_LRU = 1 << 1
BPF_DIR_MNT = "/sys/fs/bpf/"
BPF_DIR_GLOBALS = "globals"
BPF_FS_MAGIC = 0xcafe4a11
BPFObjNameLen = 16
BPFProgInfoAlign = 8
BPFTagSize = 8
/*
* C struct of bpf_ins is 8 bytes because of this -
* struct bpf_insn {
* __u8 code;
* __u8 dst_reg:4;
* __u8 src_reg:4;
* __s16 off;
* __s32 imm;
* };
* while go struct will return 9 since we dont have bit fields hence we dec(1).
*/
PROG_BPF_FS = "/sys/fs/bpf/globals/aws/programs/"
MAP_BPF_FS = "/sys/fs/bpf/globals/aws/maps/"
TRACEPOINT_EVENTS = "/sys/kernel/debug/tracing/events"
KPROBE_SYS_EVENTS = "/sys/kernel/debug/tracing/kprobe_events"
KPROBE_SYS_DEBUG = "/sys/kernel/debug/tracing/events/kprobes"
KRETPROBE_SYS_DEBUG = "/sys/kernel/debug/tracing/events/kretprobes"
QDISC_HANDLE = 0xffff
DEFAULT_BPF_FILTER_HANDLE = 0x1
)
type XDPattachType int
const (
XDP_ATTACH_MODE_NONE = 1 << iota
XDP_ATTACH_MODE_SKB
XDP_ATTACH_MODE_DRV
XDP_ATTACH_MODE_HW
)