cosmopolitan/libc/calls/struct/bpf.internal.h
Justine Tunney 4a59210008
Introduce #include <cosmo.h> to toolchain users
This change improves the way internal APIs are being hidden behind the
`COSMO` define. The cosmo.h header will take care of defining that, so
that a separate define statement isn't needed. This change also does a
lot more to define which APIs are standard, and which belong to Cosmo.
2023-06-09 18:03:05 -07:00

1333 lines
39 KiB
C

#ifndef COSMOPOLITAN_LIBC_CALLS_STRUCT_BPF_H_
#define COSMOPOLITAN_LIBC_CALLS_STRUCT_BPF_H_
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
#define BPF_MAXINSNS 4096
#define BPF_CLASS(code) ((code)&0x07)
#define BPF_LD 0x00 /* load into accumulator */
#define BPF_LDX 0x01 /* load into index register */
#define BPF_ST 0x02 /* store from immediate */
#define BPF_STX 0x03 /* store from register */
#define BPF_ALU 0x04 /* 32-bit arithmetic */
#define BPF_JMP 0x05
#define BPF_RET 0x06
#define BPF_MISC 0x07
#define BPF_SIZE(code) ((code)&0x18)
#define BPF_W 0x00 /* 32-bit */
#define BPF_H 0x08 /* 16-bit */
#define BPF_B 0x10 /* 8-bit */
#define BPF_DW 0x18 /* 64-bit (eBPF only) */
#define BPF_MODE(code) ((code)&0xe0)
#define BPF_IMM 0x00 /* 64-bit immediate */
#define BPF_ABS 0x20
#define BPF_IND 0x40
#define BPF_MEM 0x60
#define BPF_LEN 0x80
#define BPF_MSH 0xa0
#define BPF_OP(code) ((code)&0xf0)
#define BPF_ADD 0x00
#define BPF_SUB 0x10
#define BPF_MUL 0x20
#define BPF_DIV 0x30
#define BPF_OR 0x40
#define BPF_AND 0x50
#define BPF_LSH 0x60
#define BPF_RSH 0x70
#define BPF_NEG 0x80
#define BPF_MOD 0x90
#define BPF_XOR 0xa0
#define BPF_SRC(code) ((code)&0x08)
#define BPF_JA 0x00
#define BPF_JEQ 0x10
#define BPF_JGT 0x20
#define BPF_JGE 0x30
#define BPF_JSET 0x40
#define BPF_K 0x00
#define BPF_X 0x08
#define BPF_JMP32 0x06
#define BPF_ALU64 0x07
#define BPF_ATOMIC 0xc0
#define BPF_XADD 0xc0
#define BPF_MOV 0xb0
#define BPF_ARSH 0xc0
#define BPF_END 0xd0
#define BPF_TO_LE 0x00
#define BPF_TO_BE 0x08
#define BPF_FROM_LE BPF_TO_LE
#define BPF_FROM_BE BPF_TO_BE
#define BPF_JNE 0x50 /* != */
#define BPF_JLT 0xa0 /* unsigned < */
#define BPF_JLE 0xb0 /* unsigned <= */
#define BPF_JSGT 0x60 /* signed > */
#define BPF_JSGE 0x70 /* signed >= */
#define BPF_JSLT 0xc0 /* signed < */
#define BPF_JSLE 0xd0 /* signed <= */
#define BPF_CALL 0x80 /* call */
#define BPF_EXIT 0x90 /* ret */
#define BPF_FETCH 0x01
#define BPF_XCHG (0xe0 | BPF_FETCH)
#define BPF_CMPXCHG (0xf0 | BPF_FETCH)
#define MAX_BPF_REG __MAX_BPF_REG
#define BPF_REG_0 0
#define BPF_REG_1 1
#define BPF_REG_2 2
#define BPF_REG_3 3
#define BPF_REG_4 4
#define BPF_REG_5 5
#define BPF_REG_6 6
#define BPF_REG_7 7
#define BPF_REG_8 8
#define BPF_REG_9 9
#define BPF_REG_10 10
#define __MAX_BPF_REG 11
#define BPF_MAP_CREATE 0
#define BPF_MAP_LOOKUP_ELEM 1
#define BPF_MAP_UPDATE_ELEM 2
#define BPF_MAP_DELETE_ELEM 3
#define BPF_MAP_GET_NEXT_KEY 4
#define BPF_PROG_LOAD 5
#define BPF_OBJ_PIN 6
#define BPF_OBJ_GET 7
#define BPF_PROG_ATTACH 8
#define BPF_PROG_DETACH 9
#define BPF_PROG_TEST_RUN 10
#define BPF_PROG_GET_NEXT_ID 11
#define BPF_MAP_GET_NEXT_ID 12
#define BPF_PROG_GET_FD_BY_ID 13
#define BPF_MAP_GET_FD_BY_ID 14
#define BPF_OBJ_GET_INFO_BY_FD 15
#define BPF_PROG_QUERY 16
#define BPF_RAW_TRACEPOINT_OPEN 17
#define BPF_BTF_LOAD 18
#define BPF_BTF_GET_FD_BY_ID 19
#define BPF_TASK_FD_QUERY 20
#define BPF_MAP_LOOKUP_AND_DELETE_ELEM 21
#define BPF_MAP_FREEZE 22
#define BPF_BTF_GET_NEXT_ID 23
#define BPF_MAP_LOOKUP_BATCH 24
#define BPF_MAP_LOOKUP_AND_DELETE_BATCH 25
#define BPF_MAP_UPDATE_BATCH 26
#define BPF_MAP_DELETE_BATCH 27
#define BPF_LINK_CREATE 28
#define BPF_LINK_UPDATE 29
#define BPF_LINK_GET_FD_BY_ID 30
#define BPF_LINK_GET_NEXT_ID 31
#define BPF_ENABLE_STATS 32
#define BPF_ITER_CREATE 33
#define BPF_LINK_DETACH 34
#define BPF_PROG_BIND_MAP 35
#define BPF_PROG_RUN BPF_PROG_TEST_RUN
#define BPF_MAP_TYPE_UNSPEC 0
#define BPF_MAP_TYPE_HASH 1
#define BPF_MAP_TYPE_ARRAY 2
#define BPF_MAP_TYPE_PROG_ARRAY 3
#define BPF_MAP_TYPE_PERF_EVENT_ARRAY 4
#define BPF_MAP_TYPE_PERCPU_HASH 5
#define BPF_MAP_TYPE_PERCPU_ARRAY 6
#define BPF_MAP_TYPE_STACK_TRACE 7
#define BPF_MAP_TYPE_CGROUP_ARRAY 8
#define BPF_MAP_TYPE_LRU_HASH 9
#define BPF_MAP_TYPE_LRU_PERCPU_HASH 10
#define BPF_MAP_TYPE_LPM_TRIE 11
#define BPF_MAP_TYPE_ARRAY_OF_MAPS 12
#define BPF_MAP_TYPE_HASH_OF_MAPS 13
#define BPF_MAP_TYPE_DEVMAP 14
#define BPF_MAP_TYPE_SOCKMAP 15
#define BPF_MAP_TYPE_CPUMAP 16
#define BPF_MAP_TYPE_XSKMAP 17
#define BPF_MAP_TYPE_SOCKHASH 18
#define BPF_MAP_TYPE_CGROUP_STORAGE 19
#define BPF_MAP_TYPE_REUSEPORT_SOCKARRAY 20
#define BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE 21
#define BPF_MAP_TYPE_QUEUE 22
#define BPF_MAP_TYPE_STACK 23
#define BPF_MAP_TYPE_SK_STORAGE 24
#define BPF_MAP_TYPE_DEVMAP_HASH 25
#define BPF_MAP_TYPE_STRUCT_OPS 26
#define BPF_MAP_TYPE_RINGBUF 27
#define BPF_MAP_TYPE_INODE_STORAGE 28
#define BPF_MAP_TYPE_TASK_STORAGE 29
#define BPF_PROG_TYPE_UNSPEC 0
#define BPF_PROG_TYPE_SOCKET_FILTER 1
#define BPF_PROG_TYPE_KPROBE 2
#define BPF_PROG_TYPE_SCHED_CLS 3
#define BPF_PROG_TYPE_SCHED_ACT 4
#define BPF_PROG_TYPE_TRACEPOINT 5
#define BPF_PROG_TYPE_XDP 6
#define BPF_PROG_TYPE_PERF_EVENT 7
#define BPF_PROG_TYPE_CGROUP_SKB 8
#define BPF_PROG_TYPE_CGROUP_SOCK 9
#define BPF_PROG_TYPE_LWT_IN 10
#define BPF_PROG_TYPE_LWT_OUT 11
#define BPF_PROG_TYPE_LWT_XMIT 12
#define BPF_PROG_TYPE_SOCK_OPS 13
#define BPF_PROG_TYPE_SK_SKB 14
#define BPF_PROG_TYPE_CGROUP_DEVICE 15
#define BPF_PROG_TYPE_SK_MSG 16
#define BPF_PROG_TYPE_RAW_TRACEPOINT 17
#define BPF_PROG_TYPE_CGROUP_SOCK_ADDR 18
#define BPF_PROG_TYPE_LWT_SEG6LOCAL 19
#define BPF_PROG_TYPE_LIRC_MODE2 20
#define BPF_PROG_TYPE_SK_REUSEPORT 21
#define BPF_PROG_TYPE_FLOW_DISSECTOR 22
#define BPF_PROG_TYPE_CGROUP_SYSCTL 23
#define BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE 24
#define BPF_PROG_TYPE_CGROUP_SOCKOPT 25
#define BPF_PROG_TYPE_TRACING 26
#define BPF_PROG_TYPE_STRUCT_OPS 27
#define BPF_PROG_TYPE_EXT 28
#define BPF_PROG_TYPE_LSM 29
#define BPF_PROG_TYPE_SK_LOOKUP 30
#define BPF_PROG_TYPE_SYSCALL 31
#define BPF_CGROUP_INET_INGRESS 0
#define BPF_CGROUP_INET_EGRESS 1
#define BPF_CGROUP_INET_SOCK_CREATE 2
#define BPF_CGROUP_SOCK_OPS 3
#define BPF_SK_SKB_STREAM_PARSER 4
#define BPF_SK_SKB_STREAM_VERDICT 5
#define BPF_CGROUP_DEVICE 6
#define BPF_SK_MSG_VERDICT 7
#define BPF_CGROUP_INET4_BIND 8
#define BPF_CGROUP_INET6_BIND 9
#define BPF_CGROUP_INET4_CONNECT 10
#define BPF_CGROUP_INET6_CONNECT 11
#define BPF_CGROUP_INET4_POST_BIND 12
#define BPF_CGROUP_INET6_POST_BIND 13
#define BPF_CGROUP_UDP4_SENDMSG 14
#define BPF_CGROUP_UDP6_SENDMSG 15
#define BPF_LIRC_MODE2 16
#define BPF_FLOW_DISSECTOR 17
#define BPF_CGROUP_SYSCTL 18
#define BPF_CGROUP_UDP4_RECVMSG 19
#define BPF_CGROUP_UDP6_RECVMSG 20
#define BPF_CGROUP_GETSOCKOPT 21
#define BPF_CGROUP_SETSOCKOPT 22
#define BPF_TRACE_RAW_TP 23
#define BPF_TRACE_FENTRY 24
#define BPF_TRACE_FEXIT 25
#define BPF_MODIFY_RETURN 26
#define BPF_LSM_MAC 27
#define BPF_TRACE_ITER 28
#define BPF_CGROUP_INET4_GETPEERNAME 29
#define BPF_CGROUP_INET6_GETPEERNAME 30
#define BPF_CGROUP_INET4_GETSOCKNAME 31
#define BPF_CGROUP_INET6_GETSOCKNAME 32
#define BPF_XDP_DEVMAP 33
#define BPF_CGROUP_INET_SOCK_RELEASE 34
#define BPF_XDP_CPUMAP 35
#define BPF_SK_LOOKUP 36
#define BPF_XDP 37
#define BPF_SK_SKB_VERDICT 38
#define BPF_SK_REUSEPORT_SELECT 39
#define BPF_SK_REUSEPORT_SELECT_OR_MIGRATE 40
#define __MAX_BPF_ATTACH_TYPE 41
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
#define BPF_LINK_TYPE_UNSPEC 0
#define BPF_LINK_TYPE_RAW_TRACEPOINT 1
#define BPF_LINK_TYPE_TRACING 2
#define BPF_LINK_TYPE_CGROUP 3
#define BPF_LINK_TYPE_ITER 4
#define BPF_LINK_TYPE_NETNS 5
#define BPF_LINK_TYPE_XDP 6
#define MAX_BPF_LINK_TYPE 7
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
#define BPF_F_ALLOW_MULTI (1U << 1)
#define BPF_F_REPLACE (1U << 2)
#define BPF_F_STRICT_ALIGNMENT (1U << 0)
#define BPF_F_ANY_ALIGNMENT (1U << 1)
#define BPF_F_TEST_RND_HI32 (1U << 2)
#define BPF_F_TEST_STATE_FREQ (1U << 3)
#define BPF_F_SLEEPABLE (1U << 4)
#define BPF_PSEUDO_MAP_FD 1
#define BPF_PSEUDO_MAP_IDX 5
#define BPF_PSEUDO_MAP_VALUE 2
#define BPF_PSEUDO_MAP_IDX_VALUE 6
#define BPF_PSEUDO_BTF_ID 3
#define BPF_PSEUDO_FUNC 4
#define BPF_PSEUDO_CALL 1
#define BPF_PSEUDO_KFUNC_CALL 2
#define BPF_ANY 0
#define BPF_NOEXIST 1
#define BPF_EXIST 2
#define BPF_F_LOCK 4
#define BPF_F_NO_PREALLOC (1U << 0)
#define BPF_F_NO_COMMON_LRU (1U << 1)
#define BPF_F_NUMA_NODE (1U << 2)
#define BPF_F_RDONLY (1U << 3)
#define BPF_F_WRONLY (1U << 4)
#define BPF_F_STACK_BUILD_ID (1U << 5)
#define BPF_F_ZERO_SEED (1U << 6)
#define BPF_F_RDONLY_PROG (1U << 7)
#define BPF_F_WRONLY_PROG (1U << 8)
#define BPF_F_CLONE (1U << 9)
#define BPF_F_MMAPABLE (1U << 10)
#define BPF_F_PRESERVE_ELEMS (1U << 11)
#define BPF_F_INNER_MAP (1U << 12)
#define BPF_F_QUERY_EFFECTIVE (1U << 0)
#define BPF_F_TEST_RUN_ON_CPU (1U << 0)
#define BPF_STATS_RUN_TIME 0
#define BPF_STACK_BUILD_ID_EMPTY 0
#define BPF_STACK_BUILD_ID_VALID 1
#define BPF_STACK_BUILD_ID_IP 2
#define BPF_BUILD_ID_SIZE 20
#define BPF_OBJ_NAME_LEN 16U
#define BPF_F_RECOMPUTE_CSUM (1ULL << 0)
#define BPF_F_INVALIDATE_HASH (1ULL << 1)
#define BPF_F_HDR_FIELD_MASK 0xfULL
#define BPF_F_PSEUDO_HDR (1ULL << 4)
#define BPF_F_MARK_MANGLED_0 (1ULL << 5)
#define BPF_F_MARK_ENFORCE (1ULL << 6)
#define BPF_F_INGRESS (1ULL << 0)
#define BPF_F_TUNINFO_IPV6 (1ULL << 0)
#define BPF_F_SKIP_FIELD_MASK 0xffULL
#define BPF_F_USER_STACK (1ULL << 8)
#define BPF_F_FAST_STACK_CMP (1ULL << 9)
#define BPF_F_REUSE_STACKID (1ULL << 10)
#define BPF_F_USER_BUILD_ID (1ULL << 11)
#define BPF_F_ZERO_CSUM_TX (1ULL << 1)
#define BPF_F_DONT_FRAGMENT (1ULL << 2)
#define BPF_F_SEQ_NUMBER (1ULL << 3)
#define BPF_F_INDEX_MASK 0xffffffffULL
#define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
#define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
#define BPF_F_CURRENT_NETNS (-1L)
#define BPF_CSUM_LEVEL_QUERY 0
#define BPF_CSUM_LEVEL_INC 1
#define BPF_CSUM_LEVEL_DEC 2
#define BPF_CSUM_LEVEL_RESET 3
#define BPF_F_ADJ_ROOM_FIXED_GSO (1ULL << 0)
#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 (1ULL << 1)
#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 (1ULL << 2)
#define BPF_F_ADJ_ROOM_ENCAP_L4_GRE (1ULL << 3)
#define BPF_F_ADJ_ROOM_ENCAP_L4_UDP (1ULL << 4)
#define BPF_F_ADJ_ROOM_NO_CSUM_RESET (1ULL << 5)
#define BPF_F_ADJ_ROOM_ENCAP_L2_ETH (1ULL << 6)
#define BPF_ADJ_ROOM_ENCAP_L2_MASK 0xff
#define BPF_ADJ_ROOM_ENCAP_L2_SHIFT 56
#define BPF_F_ADJ_ROOM_ENCAP_L2(len) \
(((uint64_t)len & BPF_ADJ_ROOM_ENCAP_L2_MASK) << BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
#define BPF_F_SYSCTL_BASE_NAME (1ULL << 0)
#define BPF_LOCAL_STORAGE_GET_F_CREATE (1ULL << 0)
#define BPF_SK_STORAGE_GET_F_CREATE BPF_LOCAL_STORAGE_GET_F_CREATE
#define BPF_F_GET_BRANCH_RECORDS_SIZE (1ULL << 0)
#define BPF_RB_NO_WAKEUP (1ULL << 0)
#define BPF_RB_FORCE_WAKEUP (1ULL << 1)
#define BPF_RB_AVAIL_DATA 0
#define BPF_RB_RING_SIZE 1
#define BPF_RB_CONS_POS 2
#define BPF_RB_PROD_POS 3
#define BPF_RINGBUF_BUSY_BIT (1U << 31)
#define BPF_RINGBUF_DISCARD_BIT (1U << 30)
#define BPF_RINGBUF_HDR_SZ 8
#define BPF_SK_LOOKUP_F_REPLACE (1ULL << 0)
#define BPF_SK_LOOKUP_F_NO_REUSEPORT (1ULL << 1)
#define BPF_ADJ_ROOM_NET 0
#define BPF_ADJ_ROOM_MAC 1
#define BPF_HDR_START_MAC 0
#define BPF_HDR_START_NET 1
#define BPF_LWT_ENCAP_SEG6 0
#define BPF_LWT_ENCAP_SEG6_INLINE 1
#define BPF_LWT_ENCAP_IP 2
#define BPF_F_BPRM_SECUREEXEC (1ULL << 0)
#define BPF_F_BROADCAST (1ULL << 3)
#define BPF_F_EXCLUDE_INGRESS (1ULL << 4)
#define XDP_PACKET_HEADROOM 256
#define BPF_TAG_SIZE 8
#define BPF_SOCK_OPS_RTO_CB_FLAG (1 << 0)
#define BPF_SOCK_OPS_RETRANS_CB_FLAG (1 << 1)
#define BPF_SOCK_OPS_STATE_CB_FLAG (1 << 2)
#define BPF_SOCK_OPS_RTT_CB_FLAG (1 << 3)
#define BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG (1 << 4)
#define BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG (1 << 5)
#define BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG (1 << 6)
#define BPF_SOCK_OPS_ALL_CB_FLAGS 0x7F
#define BPF_SOCK_OPS_VOID 0
#define BPF_SOCK_OPS_TIMEOUT_INIT 1
#define BPF_SOCK_OPS_RWND_INIT 2
#define BPF_SOCK_OPS_TCP_CONNECT_CB 3
#define BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB 4
#define BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB 5
#define BPF_SOCK_OPS_NEEDS_ECN 6
#define BPF_SOCK_OPS_BASE_RTT 7
#define BPF_SOCK_OPS_RTO_CB 8
#define BPF_SOCK_OPS_RETRANS_CB 9
#define BPF_SOCK_OPS_STATE_CB 10
#define BPF_SOCK_OPS_TCP_LISTEN_CB 11
#define BPF_SOCK_OPS_RTT_CB 12
#define BPF_SOCK_OPS_PARSE_HDR_OPT_CB 13
#define BPF_SOCK_OPS_HDR_OPT_LEN_CB 14
#define BPF_SOCK_OPS_WRITE_HDR_OPT_CB 15
#define BPF_TCP_ESTABLISHED 1
#define BPF_TCP_SYN_SENT 2
#define BPF_TCP_SYN_RECV 3
#define BPF_TCP_FIN_WAIT1 4
#define BPF_TCP_FIN_WAIT2 5
#define BPF_TCP_TIME_WAIT 6
#define BPF_TCP_CLOSE 7
#define BPF_TCP_CLOSE_WAIT 8
#define BPF_TCP_LAST_ACK 9
#define BPF_TCP_LISTEN 10
#define BPF_TCP_CLOSING 11
#define BPF_TCP_NEW_SYN_RECV 12
#define BPF_TCP_MAX_STATES 13
#define TCP_BPF_IW 1001
#define TCP_BPF_SNDCWND_CLAMP 1002
#define TCP_BPF_DELACK_MAX 1003
#define TCP_BPF_RTO_MIN 1004
#define TCP_BPF_SYN 1005
#define TCP_BPF_SYN_IP 1006
#define TCP_BPF_SYN_MAC 1007
#define BPF_LOAD_HDR_OPT_TCP_SYN (1ULL << 0)
#define BPF_WRITE_HDR_TCP_CURRENT_MSS 1
#define BPF_WRITE_HDR_TCP_SYNACK_COOKIE 2
#define BPF_DEVCG_ACC_MKNOD (1ULL << 0)
#define BPF_DEVCG_ACC_READ (1ULL << 1)
#define BPF_DEVCG_ACC_WRITE (1ULL << 2)
#define BPF_DEVCG_DEV_BLOCK (1ULL << 0)
#define BPF_DEVCG_DEV_CHAR (1ULL << 1)
#define BPF_FIB_LOOKUP_DIRECT (1U << 0)
#define BPF_FIB_LOOKUP_OUTPUT (1U << 1)
#define BPF_FIB_LKUP_RET_SUCCESS 0
#define BPF_FIB_LKUP_RET_BLACKHOLE 1
#define BPF_FIB_LKUP_RET_UNREACHABLE 2
#define BPF_FIB_LKUP_RET_PROHIBIT 3
#define BPF_FIB_LKUP_RET_NOT_FWDED 4
#define BPF_FIB_LKUP_RET_FWD_DISABLED 5
#define BPF_FIB_LKUP_RET_UNSUPP_LWT 6
#define BPF_FIB_LKUP_RET_NO_NEIGH 7
#define BPF_FIB_LKUP_RET_FRAG_NEEDED 8
#define BPF_MTU_CHK_SEGS (1U << 0)
#define BPF_MTU_CHK_RET_SUCCESS 0
#define BPF_MTU_CHK_RET_FRAG_NEEDED 1
#define BPF_MTU_CHK_RET_SEGS_TOOBIG 2
#define BPF_FD_TYPE_RAW_TRACEPOINT 0
#define BPF_FD_TYPE_TRACEPOINT 1
#define BPF_FD_TYPE_KPROBE 2
#define BPF_FD_TYPE_KRETPROBE 3
#define BPF_FD_TYPE_UPROBE 4
#define BPF_FD_TYPE_URETPROBE 5
#define BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG (1U << 0)
#define BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL (1U << 1)
#define BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP (1U << 2)
#define BPF_LINE_INFO_LINE_NUM(line_col) ((line_col) >> 10)
#define BPF_LINE_INFO_LINE_COL(line_col) ((line_col)&0x3ff)
#define BTF_F_COMPACT (1ULL << 0)
#define BTF_F_NONAME (1ULL << 1)
#define BTF_F_PTR_RAW (1ULL << 2)
#define BTF_F_ZERO (1ULL << 3)
#define BPF_OK 0
#define BPF_DROP 2
#define BPF_REDIRECT 7
#define BPF_LWT_REROUTE 128
#define BPF_FUNC_unspec 0
#define BPF_FUNC_map_lookup_elem 1
#define BPF_FUNC_map_update_elem 2
#define BPF_FUNC_map_delete_elem 3
#define BPF_FUNC_probe_read 4
#define BPF_FUNC_ktime_get_ns 5
#define BPF_FUNC_trace_printk 6
#define BPF_FUNC_get_prandom_u32 7
#define BPF_FUNC_get_smp_processor_id 8
#define BPF_FUNC_skb_store_bytes 9
#define BPF_FUNC_l3_csum_replace 10
#define BPF_FUNC_l4_csum_replace 11
#define BPF_FUNC_tail_call 12
#define BPF_FUNC_clone_redirect 13
#define BPF_FUNC_get_current_pid_tgid 14
#define BPF_FUNC_get_current_uid_gid 15
#define BPF_FUNC_get_current_comm 16
#define BPF_FUNC_get_cgroup_classid 17
#define BPF_FUNC_skb_vlan_push 18
#define BPF_FUNC_skb_vlan_pop 19
#define BPF_FUNC_skb_get_tunnel_key 20
#define BPF_FUNC_skb_set_tunnel_key 21
#define BPF_FUNC_perf_event_read 22
#define BPF_FUNC_redirect 23
#define BPF_FUNC_get_route_realm 24
#define BPF_FUNC_perf_event_output 25
#define BPF_FUNC_skb_load_bytes 26
#define BPF_FUNC_get_stackid 27
#define BPF_FUNC_csum_diff 28
#define BPF_FUNC_skb_get_tunnel_opt 29
#define BPF_FUNC_skb_set_tunnel_opt 30
#define BPF_FUNC_skb_change_proto 31
#define BPF_FUNC_skb_change_type 32
#define BPF_FUNC_skb_under_cgroup 33
#define BPF_FUNC_get_hash_recalc 34
#define BPF_FUNC_get_current_task 35
#define BPF_FUNC_probe_write_user 36
#define BPF_FUNC_current_task_under_cgroup 37
#define BPF_FUNC_skb_change_tail 38
#define BPF_FUNC_skb_pull_data 39
#define BPF_FUNC_csum_update 40
#define BPF_FUNC_set_hash_invalid 41
#define BPF_FUNC_get_numa_node_id 42
#define BPF_FUNC_skb_change_head 43
#define BPF_FUNC_xdp_adjust_head 44
#define BPF_FUNC_probe_read_str 45
#define BPF_FUNC_get_socket_cookie 46
#define BPF_FUNC_get_socket_uid 47
#define BPF_FUNC_set_hash 48
#define BPF_FUNC_setsockopt 49
#define BPF_FUNC_skb_adjust_room 50
#define BPF_FUNC_redirect_map 51
#define BPF_FUNC_sk_redirect_map 52
#define BPF_FUNC_sock_map_update 53
#define BPF_FUNC_xdp_adjust_meta 54
#define BPF_FUNC_perf_event_read_value 55
#define BPF_FUNC_perf_prog_read_value 56
#define BPF_FUNC_getsockopt 57
#define BPF_FUNC_override_return 58
#define BPF_FUNC_sock_ops_cb_flags_set 59
#define BPF_FUNC_msg_redirect_map 60
#define BPF_FUNC_msg_apply_bytes 61
#define BPF_FUNC_msg_cork_bytes 62
#define BPF_FUNC_msg_pull_data 63
#define BPF_FUNC_bind 64
#define BPF_FUNC_xdp_adjust_tail 65
#define BPF_FUNC_skb_get_xfrm_state 66
#define BPF_FUNC_get_stack 67
#define BPF_FUNC_skb_load_bytes_relative 68
#define BPF_FUNC_fib_lookup 69
#define BPF_FUNC_sock_hash_update 70
#define BPF_FUNC_msg_redirect_hash 71
#define BPF_FUNC_sk_redirect_hash 72
#define BPF_FUNC_lwt_push_encap 73
#define BPF_FUNC_lwt_seg6_store_bytes 74
#define BPF_FUNC_lwt_seg6_adjust_srh 75
#define BPF_FUNC_lwt_seg6_action 76
#define BPF_FUNC_rc_repeat 77
#define BPF_FUNC_rc_keydown 78
#define BPF_FUNC_skb_cgroup_id 79
#define BPF_FUNC_get_current_cgroup_id 80
#define BPF_FUNC_get_local_storage 81
#define BPF_FUNC_sk_select_reuseport 82
#define BPF_FUNC_skb_ancestor_cgroup_id 83
#define BPF_FUNC_sk_lookup_tcp 84
#define BPF_FUNC_sk_lookup_udp 85
#define BPF_FUNC_sk_release 86
#define BPF_FUNC_map_push_elem 87
#define BPF_FUNC_map_pop_elem 88
#define BPF_FUNC_map_peek_elem 89
#define BPF_FUNC_msg_push_data 90
#define BPF_FUNC_msg_pop_data 91
#define BPF_FUNC_rc_pointer_rel 92
#define BPF_FUNC_spin_lock 93
#define BPF_FUNC_spin_unlock 94
#define BPF_FUNC_sk_fullsock 95
#define BPF_FUNC_tcp_sock 96
#define BPF_FUNC_skb_ecn_set_ce 97
#define BPF_FUNC_get_listener_sock 98
#define BPF_FUNC_skc_lookup_tcp 99
#define BPF_FUNC_tcp_check_syncookie 100
#define BPF_FUNC_sysctl_get_name 101
#define BPF_FUNC_sysctl_get_current_value 102
#define BPF_FUNC_sysctl_get_new_value 103
#define BPF_FUNC_sysctl_set_new_value 104
#define BPF_FUNC_strtol 105
#define BPF_FUNC_strtoul 106
#define BPF_FUNC_sk_storage_get 107
#define BPF_FUNC_sk_storage_delete 108
#define BPF_FUNC_send_signal 109
#define BPF_FUNC_tcp_gen_syncookie 110
#define BPF_FUNC_skb_output 111
#define BPF_FUNC_probe_read_user 112
#define BPF_FUNC_probe_read_kernel 113
#define BPF_FUNC_probe_read_user_str 114
#define BPF_FUNC_probe_read_kernel_str 115
#define BPF_FUNC_tcp_send_ack 116
#define BPF_FUNC_send_signal_thread 117
#define BPF_FUNC_jiffies64 118
#define BPF_FUNC_read_branch_records 119
#define BPF_FUNC_get_ns_current_pid_tgid 120
#define BPF_FUNC_xdp_output 121
#define BPF_FUNC_get_netns_cookie 122
#define BPF_FUNC_get_current_ancestor_cgroup_id 123
#define BPF_FUNC_sk_assign 124
#define BPF_FUNC_ktime_get_boot_ns 125
#define BPF_FUNC_seq_printf 126
#define BPF_FUNC_seq_write 127
#define BPF_FUNC_sk_cgroup_id 128
#define BPF_FUNC_sk_ancestor_cgroup_id 129
#define BPF_FUNC_ringbuf_output 130
#define BPF_FUNC_ringbuf_reserve 131
#define BPF_FUNC_ringbuf_submit 132
#define BPF_FUNC_ringbuf_discard 133
#define BPF_FUNC_ringbuf_query 134
#define BPF_FUNC_csum_level 135
#define BPF_FUNC_skc_to_tcp6_sock 136
#define BPF_FUNC_skc_to_tcp_sock 137
#define BPF_FUNC_skc_to_tcp_timewait_sock 138
#define BPF_FUNC_skc_to_tcp_request_sock 139
#define BPF_FUNC_skc_to_udp6_sock 140
#define BPF_FUNC_get_task_stack 141
#define BPF_FUNC_load_hdr_opt 142
#define BPF_FUNC_store_hdr_opt 143
#define BPF_FUNC_reserve_hdr_opt 144
#define BPF_FUNC_inode_storage_get 145
#define BPF_FUNC_inode_storage_delete 146
#define BPF_FUNC_d_path 147
#define BPF_FUNC_copy_from_user 148
#define BPF_FUNC_snprintf_btf 149
#define BPF_FUNC_seq_printf_btf 150
#define BPF_FUNC_skb_cgroup_classid 151
#define BPF_FUNC_redirect_neigh 152
#define BPF_FUNC_per_cpu_ptr 153
#define BPF_FUNC_this_cpu_ptr 154
#define BPF_FUNC_redirect_peer 155
#define BPF_FUNC_task_storage_get 156
#define BPF_FUNC_task_storage_delete 157
#define BPF_FUNC_get_current_task_btf 158
#define BPF_FUNC_bprm_opts_set 159
#define BPF_FUNC_ktime_get_coarse_ns 160
#define BPF_FUNC_ima_inode_hash 161
#define BPF_FUNC_sock_from_file 162
#define BPF_FUNC_check_mtu 163
#define BPF_FUNC_for_each_map_elem 164
#define BPF_FUNC_snprintf 165
#define BPF_FUNC_sys_bpf 166
#define BPF_FUNC_btf_find_by_name_kind 167
#define BPF_FUNC_sys_close 168
#define __BPF_FUNC_MAX_ID 169
#define __bpf_md_ptr(type, name) \
union { \
type name; \
uint64_t : 64; \
} forcealign(8)
struct bpf_insn {
uint8_t code;
uint8_t dst_reg : 4;
uint8_t src_reg : 4;
int16_t off;
int32_t imm;
};
struct bpf_lpm_trie_key {
uint32_t prefixlen;
uint8_t data[0];
};
struct bpf_cgroup_storage_key {
uint64_t cgroup_inode_id;
uint32_t attach_type;
};
union bpf_iter_link_info {
struct {
uint32_t map_fd;
} map;
};
struct bpf_stack_build_id {
int32_t status;
unsigned char build_id[BPF_BUILD_ID_SIZE];
union {
uint64_t offset;
uint64_t ip;
};
};
union bpf_attr {
struct {
uint32_t map_type;
uint32_t key_size;
uint32_t value_size;
uint32_t max_entries;
uint32_t map_flags;
uint32_t inner_map_fd;
uint32_t numa_node;
char map_name[BPF_OBJ_NAME_LEN];
uint32_t map_ifindex;
uint32_t btf_fd;
uint32_t btf_key_type_id;
uint32_t btf_value_type_id;
uint32_t btf_vmlinux_value_type_id;
};
struct {
uint32_t map_fd;
uint64_t key;
union {
uint64_t value;
uint64_t next_key;
};
uint64_t flags;
};
struct {
uint64_t in_batch;
uint64_t out_batch;
uint64_t keys;
uint64_t values;
uint32_t count;
uint32_t map_fd;
uint64_t elem_flags;
uint64_t flags;
} batch;
struct {
uint32_t prog_type;
uint32_t insn_cnt;
uint64_t insns;
uint64_t license;
uint32_t log_level;
uint32_t log_size;
uint64_t log_buf;
uint32_t kern_version;
uint32_t prog_flags;
char prog_name[BPF_OBJ_NAME_LEN];
uint32_t prog_ifindex;
uint32_t expected_attach_type;
uint32_t prog_btf_fd;
uint32_t func_info_rec_size;
uint64_t func_info;
uint32_t func_info_cnt;
uint32_t line_info_rec_size;
uint64_t line_info;
uint32_t line_info_cnt;
uint32_t attach_btf_id;
union {
uint32_t attach_prog_fd;
uint32_t attach_btf_obj_fd;
};
uint32_t : 32;
uint64_t fd_array;
};
struct {
uint64_t pathname;
uint32_t bpf_fd;
uint32_t file_flags;
};
struct {
uint32_t target_fd;
uint32_t attach_bpf_fd;
uint32_t attach_type;
uint32_t attach_flags;
uint32_t replace_bpf_fd;
};
struct {
uint32_t prog_fd;
uint32_t retval;
uint32_t data_size_in;
uint32_t data_size_out;
uint64_t data_in;
uint64_t data_out;
uint32_t repeat;
uint32_t duration;
uint32_t ctx_size_in;
uint32_t ctx_size_out;
uint64_t ctx_in;
uint64_t ctx_out;
uint32_t flags;
uint32_t cpu;
} test;
struct {
union {
uint32_t start_id;
uint32_t prog_id;
uint32_t map_id;
uint32_t btf_id;
uint32_t link_id;
};
uint32_t next_id;
uint32_t open_flags;
};
struct {
uint32_t bpf_fd;
uint32_t info_len;
uint64_t info;
} info;
struct {
uint32_t target_fd;
uint32_t attach_type;
uint32_t query_flags;
uint32_t attach_flags;
uint64_t prog_ids;
uint32_t prog_cnt;
} query;
struct {
uint64_t name;
uint32_t prog_fd;
} raw_tracepoint;
struct {
uint64_t btf;
uint64_t btf_log_buf;
uint32_t btf_size;
uint32_t btf_log_size;
uint32_t btf_log_level;
};
struct {
uint32_t pid;
uint32_t fd;
uint32_t flags;
uint32_t buf_len;
uint64_t buf;
uint32_t prog_id;
uint32_t fd_type;
uint64_t probe_offset;
uint64_t probe_addr;
} task_fd_query;
struct {
uint32_t prog_fd;
union {
uint32_t target_fd;
uint32_t target_ifindex;
};
uint32_t attach_type;
uint32_t flags;
union {
uint32_t target_btf_id;
struct {
uint64_t iter_info;
uint32_t iter_info_len;
};
};
} link_create;
struct {
uint32_t link_fd;
uint32_t new_prog_fd;
uint32_t flags;
uint32_t old_prog_fd;
} link_update;
struct {
uint32_t link_fd;
} link_detach;
struct {
uint32_t type;
} enable_stats;
struct {
uint32_t link_fd;
uint32_t flags;
} iter_create;
struct {
uint32_t prog_fd;
uint32_t map_fd;
uint32_t flags;
} prog_bind_map;
} forcealign(8);
struct __sk_buff {
uint32_t len;
uint32_t pkt_type;
uint32_t mark;
uint32_t queue_mapping;
uint32_t protocol;
uint32_t vlan_present;
uint32_t vlan_tci;
uint32_t vlan_proto;
uint32_t priority;
uint32_t ingress_ifindex;
uint32_t ifindex;
uint32_t tc_index;
uint32_t cb[5];
uint32_t hash;
uint32_t tc_classid;
uint32_t data;
uint32_t data_end;
uint32_t napi_id;
uint32_t family;
uint32_t remote_ip4;
uint32_t local_ip4;
uint32_t remote_ip6[4];
uint32_t local_ip6[4];
uint32_t remote_port;
uint32_t local_port;
uint32_t data_meta;
__bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
uint64_t tstamp;
uint32_t wire_len;
uint32_t gso_segs;
__bpf_md_ptr(struct bpf_sock *, sk);
uint32_t gso_size;
};
struct bpf_tunnel_key {
uint32_t tunnel_id;
union {
uint32_t remote_ipv4;
uint32_t remote_ipv6[4];
};
uint8_t tunnel_tos;
uint8_t tunnel_ttl;
uint16_t tunnel_ext;
uint32_t tunnel_label;
};
struct bpf_xfrm_state {
uint32_t reqid;
uint32_t spi;
uint16_t family;
uint16_t ext;
union {
uint32_t remote_ipv4;
uint32_t remote_ipv6[4];
};
};
struct bpf_sock {
uint32_t bound_dev_if;
uint32_t family;
uint32_t type;
uint32_t protocol;
uint32_t mark;
uint32_t priority;
uint32_t src_ip4;
uint32_t src_ip6[4];
uint32_t src_port;
uint32_t dst_port;
uint32_t dst_ip4;
uint32_t dst_ip6[4];
uint32_t state;
int32_t rx_queue_mapping;
};
struct bpf_tcp_sock {
uint32_t snd_cwnd;
uint32_t srtt_us;
uint32_t rtt_min;
uint32_t snd_ssthresh;
uint32_t rcv_nxt;
uint32_t snd_nxt;
uint32_t snd_una;
uint32_t mss_cache;
uint32_t ecn_flags;
uint32_t rate_delivered;
uint32_t rate_interval_us;
uint32_t packets_out;
uint32_t retrans_out;
uint32_t total_retrans;
uint32_t segs_in;
uint32_t data_segs_in;
uint32_t segs_out;
uint32_t data_segs_out;
uint32_t lost_out;
uint32_t sacked_out;
uint64_t bytes_received;
uint64_t bytes_acked;
uint32_t dsack_dups;
uint32_t delivered;
uint32_t delivered_ce;
uint32_t icsk_retransmits;
};
struct bpf_sock_tuple {
union {
struct {
uint32_t saddr; /* big endian */
uint32_t daddr; /* big endian */
uint16_t sport; /* big endian */
uint16_t dport; /* big endian */
} ipv4;
struct {
uint32_t saddr[4]; /* big endian */
uint32_t daddr[4]; /* big endian */
uint16_t sport; /* big endian */
uint16_t dport; /* big endian */
} ipv6;
};
};
struct bpf_xdp_sock {
uint32_t queue_id;
};
enum xdp_action {
XDP_ABORTED = 0,
XDP_DROP,
XDP_PASS,
XDP_TX,
XDP_REDIRECT,
};
struct xdp_md {
uint32_t data;
uint32_t data_end;
uint32_t data_meta;
uint32_t ingress_ifindex;
uint32_t rx_queue_index;
uint32_t egress_ifindex;
};
struct bpf_devmap_val {
uint32_t ifindex;
union {
int fd;
uint32_t id;
} bpf_prog;
};
struct bpf_cpumap_val {
uint32_t qsize;
union {
int fd;
uint32_t id;
} bpf_prog;
};
enum sk_action {
SK_DROP = 0,
SK_PASS,
};
struct sk_msg_md {
__bpf_md_ptr(void *, data);
__bpf_md_ptr(void *, data_end);
uint32_t family;
uint32_t remote_ip4;
uint32_t local_ip4;
uint32_t remote_ip6[4];
uint32_t local_ip6[4];
uint32_t remote_port;
uint32_t local_port;
uint32_t size;
__bpf_md_ptr(struct bpf_sock *, sk);
};
struct sk_reuseport_md {
__bpf_md_ptr(void *, data);
__bpf_md_ptr(void *, data_end);
uint32_t len;
uint32_t eth_protocol;
uint32_t ip_protocol;
uint32_t bind_inany;
uint32_t hash;
__bpf_md_ptr(struct bpf_sock *, sk);
__bpf_md_ptr(struct bpf_sock *, migrating_sk);
};
struct bpf_prog_info {
uint32_t type;
uint32_t id;
uint8_t tag[BPF_TAG_SIZE];
uint32_t jited_prog_len;
uint32_t xlated_prog_len;
uint64_t jited_prog_insns;
uint64_t xlated_prog_insns;
uint64_t load_time;
uint32_t created_by_uid;
uint32_t nr_map_ids;
uint64_t map_ids;
char name[BPF_OBJ_NAME_LEN];
uint32_t ifindex;
uint32_t gpl_compatible : 1;
uint32_t : 31;
uint64_t netns_dev;
uint64_t netns_ino;
uint32_t nr_jited_ksyms;
uint32_t nr_jited_func_lens;
uint64_t jited_ksyms;
uint64_t jited_func_lens;
uint32_t btf_id;
uint32_t func_info_rec_size;
uint64_t func_info;
uint32_t nr_func_info;
uint32_t nr_line_info;
uint64_t line_info;
uint64_t jited_line_info;
uint32_t nr_jited_line_info;
uint32_t line_info_rec_size;
uint32_t jited_line_info_rec_size;
uint32_t nr_prog_tags;
uint64_t prog_tags;
uint64_t run_time_ns;
uint64_t run_cnt;
uint64_t recursion_misses;
} forcealign(8);
struct bpf_map_info {
uint32_t type;
uint32_t id;
uint32_t key_size;
uint32_t value_size;
uint32_t max_entries;
uint32_t map_flags;
char name[BPF_OBJ_NAME_LEN];
uint32_t ifindex;
uint32_t btf_vmlinux_value_type_id;
uint64_t netns_dev;
uint64_t netns_ino;
uint32_t btf_id;
uint32_t btf_key_type_id;
uint32_t btf_value_type_id;
} forcealign(8);
struct bpf_btf_info {
uint64_t btf;
uint32_t btf_size;
uint32_t id;
uint64_t name;
uint32_t name_len;
uint32_t kernel_btf;
} forcealign(8);
struct bpf_link_info {
uint32_t type;
uint32_t id;
uint32_t prog_id;
union {
struct {
uint64_t tp_name;
uint32_t tp_name_len;
} raw_tracepoint;
struct {
uint32_t attach_type;
uint32_t target_obj_id;
uint32_t target_btf_id;
} tracing;
struct {
uint64_t cgroup_id;
uint32_t attach_type;
} cgroup;
struct {
uint64_t target_name;
uint32_t target_name_len;
union {
struct {
uint32_t map_id;
} map;
};
} iter;
struct {
uint32_t netns_ino;
uint32_t attach_type;
} netns;
struct {
uint32_t ifindex;
} xdp;
};
} forcealign(8);
struct bpf_sock_addr {
uint32_t user_family;
uint32_t user_ip4;
uint32_t user_ip6[4];
uint32_t user_port;
uint32_t family;
uint32_t type;
uint32_t protocol;
uint32_t msg_src_ip4;
uint32_t msg_src_ip6[4];
__bpf_md_ptr(struct bpf_sock *, sk);
};
struct bpf_sock_ops {
uint32_t op;
union {
uint32_t args[4];
uint32_t reply;
uint32_t replylong[4];
};
uint32_t family;
uint32_t remote_ip4;
uint32_t local_ip4;
uint32_t remote_ip6[4];
uint32_t local_ip6[4];
uint32_t remote_port;
uint32_t local_port;
uint32_t is_fullsock;
uint32_t snd_cwnd;
uint32_t srtt_us;
uint32_t bpf_sock_ops_cb_flags;
uint32_t state;
uint32_t rtt_min;
uint32_t snd_ssthresh;
uint32_t rcv_nxt;
uint32_t snd_nxt;
uint32_t snd_una;
uint32_t mss_cache;
uint32_t ecn_flags;
uint32_t rate_delivered;
uint32_t rate_interval_us;
uint32_t packets_out;
uint32_t retrans_out;
uint32_t total_retrans;
uint32_t segs_in;
uint32_t data_segs_in;
uint32_t segs_out;
uint32_t data_segs_out;
uint32_t lost_out;
uint32_t sacked_out;
uint32_t sk_txhash;
uint64_t bytes_received;
uint64_t bytes_acked;
__bpf_md_ptr(struct bpf_sock *, sk);
__bpf_md_ptr(void *, skb_data);
__bpf_md_ptr(void *, skb_data_end);
uint32_t skb_len;
uint32_t skb_tcp_flags;
};
struct bpf_perf_event_value {
uint64_t counter;
uint64_t enabled;
uint64_t running;
};
struct bpf_cgroup_dev_ctx {
uint32_t access_type;
uint32_t major;
uint32_t minor;
};
struct bpf_raw_tracepoint_args {
uint64_t args[0];
};
struct bpf_fib_lookup {
uint8_t family;
uint8_t l4_protocol;
uint16_t sport; /* big endian */
uint16_t dport; /* big endian */
union {
uint16_t tot_len;
uint16_t mtu_result;
};
uint32_t ifindex;
union {
uint8_t tos;
uint32_t flowinfo; /* big endian */
uint32_t rt_metric;
};
union {
uint32_t ipv4_src; /* big endian */
uint32_t ipv6_src[4];
};
union {
uint32_t ipv4_dst; /* big endian */
uint32_t ipv6_dst[4];
};
uint16_t h_vlan_proto; /* big endian */
uint16_t h_vlan_TCI; /* big endian */
uint8_t smac[6];
uint8_t dmac[6];
};
struct bpf_redir_neigh {
uint32_t nh_family;
union {
uint32_t ipv4_nh; /* big endian */
uint32_t ipv6_nh[4];
};
};
struct bpf_flow_keys {
uint16_t nhoff;
uint16_t thoff;
uint16_t addr_proto;
uint8_t is_frag;
uint8_t is_first_frag;
uint8_t is_encap;
uint8_t ip_proto;
uint16_t n_proto; /* big endian */
uint16_t sport; /* big endian */
uint16_t dport; /* big endian */
union {
struct {
uint32_t ipv4_src; /* big endian */
uint32_t ipv4_dst; /* big endian */
};
struct {
uint32_t ipv6_src[4];
uint32_t ipv6_dst[4];
};
};
uint32_t flags;
uint32_t flow_label;
};
struct bpf_func_info {
uint32_t insn_off;
uint32_t type_id;
};
struct bpf_line_info {
uint32_t insn_off;
uint32_t file_name_off;
uint32_t line_off;
uint32_t line_col;
};
struct bpf_spin_lock {
uint32_t val;
};
struct bpf_sysctl {
uint32_t write_;
uint32_t file_pos;
};
struct bpf_sockopt {
__bpf_md_ptr(struct bpf_sock *, sk);
__bpf_md_ptr(void *, optval);
__bpf_md_ptr(void *, optval_end);
int32_t level;
int32_t optname;
int32_t optlen;
int32_t retval;
};
struct bpf_pidns_info {
uint32_t pid;
uint32_t tgid;
};
struct bpf_sk_lookup {
union {
__bpf_md_ptr(struct bpf_sock *, sk);
uint64_t cookie;
};
uint32_t family;
uint32_t protocol;
uint32_t remote_ip4;
uint32_t remote_ip6[4];
uint32_t remote_port;
uint32_t local_ip4;
uint32_t local_ip6[4];
uint32_t local_port;
};
struct btf_ptr {
void *ptr;
uint32_t type_id;
uint32_t flags;
};
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_BPF_H_ */