#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 ops */ #define BPF_LDX 0x01 /* load into 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_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_DW 0x18 #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_ */