1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI__LINUX_BPF_H__ 8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI__LINUX_BPF_H__ 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker #include <linux/bpf_common.h> 11*8d67ca89SAndroid Build Coastguard Worker #define BPF_JMP32 0x06 12*8d67ca89SAndroid Build Coastguard Worker #define BPF_ALU64 0x07 13*8d67ca89SAndroid Build Coastguard Worker #define BPF_DW 0x18 14*8d67ca89SAndroid Build Coastguard Worker #define BPF_MEMSX 0x80 15*8d67ca89SAndroid Build Coastguard Worker #define BPF_ATOMIC 0xc0 16*8d67ca89SAndroid Build Coastguard Worker #define BPF_XADD 0xc0 17*8d67ca89SAndroid Build Coastguard Worker #define BPF_MOV 0xb0 18*8d67ca89SAndroid Build Coastguard Worker #define BPF_ARSH 0xc0 19*8d67ca89SAndroid Build Coastguard Worker #define BPF_END 0xd0 20*8d67ca89SAndroid Build Coastguard Worker #define BPF_TO_LE 0x00 21*8d67ca89SAndroid Build Coastguard Worker #define BPF_TO_BE 0x08 22*8d67ca89SAndroid Build Coastguard Worker #define BPF_FROM_LE BPF_TO_LE 23*8d67ca89SAndroid Build Coastguard Worker #define BPF_FROM_BE BPF_TO_BE 24*8d67ca89SAndroid Build Coastguard Worker #define BPF_JNE 0x50 25*8d67ca89SAndroid Build Coastguard Worker #define BPF_JLT 0xa0 26*8d67ca89SAndroid Build Coastguard Worker #define BPF_JLE 0xb0 27*8d67ca89SAndroid Build Coastguard Worker #define BPF_JSGT 0x60 28*8d67ca89SAndroid Build Coastguard Worker #define BPF_JSGE 0x70 29*8d67ca89SAndroid Build Coastguard Worker #define BPF_JSLT 0xc0 30*8d67ca89SAndroid Build Coastguard Worker #define BPF_JSLE 0xd0 31*8d67ca89SAndroid Build Coastguard Worker #define BPF_JCOND 0xe0 32*8d67ca89SAndroid Build Coastguard Worker #define BPF_CALL 0x80 33*8d67ca89SAndroid Build Coastguard Worker #define BPF_EXIT 0x90 34*8d67ca89SAndroid Build Coastguard Worker #define BPF_FETCH 0x01 35*8d67ca89SAndroid Build Coastguard Worker #define BPF_XCHG (0xe0 | BPF_FETCH) 36*8d67ca89SAndroid Build Coastguard Worker #define BPF_CMPXCHG (0xf0 | BPF_FETCH) 37*8d67ca89SAndroid Build Coastguard Worker enum bpf_cond_pseudo_jmp { 38*8d67ca89SAndroid Build Coastguard Worker BPF_MAY_GOTO = 0, 39*8d67ca89SAndroid Build Coastguard Worker }; 40*8d67ca89SAndroid Build Coastguard Worker enum { 41*8d67ca89SAndroid Build Coastguard Worker BPF_REG_0 = 0, 42*8d67ca89SAndroid Build Coastguard Worker BPF_REG_1, 43*8d67ca89SAndroid Build Coastguard Worker BPF_REG_2, 44*8d67ca89SAndroid Build Coastguard Worker BPF_REG_3, 45*8d67ca89SAndroid Build Coastguard Worker BPF_REG_4, 46*8d67ca89SAndroid Build Coastguard Worker BPF_REG_5, 47*8d67ca89SAndroid Build Coastguard Worker BPF_REG_6, 48*8d67ca89SAndroid Build Coastguard Worker BPF_REG_7, 49*8d67ca89SAndroid Build Coastguard Worker BPF_REG_8, 50*8d67ca89SAndroid Build Coastguard Worker BPF_REG_9, 51*8d67ca89SAndroid Build Coastguard Worker BPF_REG_10, 52*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_REG, 53*8d67ca89SAndroid Build Coastguard Worker }; 54*8d67ca89SAndroid Build Coastguard Worker #define MAX_BPF_REG __MAX_BPF_REG 55*8d67ca89SAndroid Build Coastguard Worker struct bpf_insn { 56*8d67ca89SAndroid Build Coastguard Worker __u8 code; 57*8d67ca89SAndroid Build Coastguard Worker __u8 dst_reg : 4; 58*8d67ca89SAndroid Build Coastguard Worker __u8 src_reg : 4; 59*8d67ca89SAndroid Build Coastguard Worker __s16 off; 60*8d67ca89SAndroid Build Coastguard Worker __s32 imm; 61*8d67ca89SAndroid Build Coastguard Worker }; 62*8d67ca89SAndroid Build Coastguard Worker struct bpf_lpm_trie_key { 63*8d67ca89SAndroid Build Coastguard Worker __u32 prefixlen; 64*8d67ca89SAndroid Build Coastguard Worker __u8 data[0]; 65*8d67ca89SAndroid Build Coastguard Worker }; 66*8d67ca89SAndroid Build Coastguard Worker struct bpf_lpm_trie_key_hdr { 67*8d67ca89SAndroid Build Coastguard Worker __u32 prefixlen; 68*8d67ca89SAndroid Build Coastguard Worker }; 69*8d67ca89SAndroid Build Coastguard Worker struct bpf_lpm_trie_key_u8 { 70*8d67ca89SAndroid Build Coastguard Worker union { 71*8d67ca89SAndroid Build Coastguard Worker struct bpf_lpm_trie_key_hdr hdr; 72*8d67ca89SAndroid Build Coastguard Worker __u32 prefixlen; 73*8d67ca89SAndroid Build Coastguard Worker }; 74*8d67ca89SAndroid Build Coastguard Worker __u8 data[]; 75*8d67ca89SAndroid Build Coastguard Worker }; 76*8d67ca89SAndroid Build Coastguard Worker struct bpf_cgroup_storage_key { 77*8d67ca89SAndroid Build Coastguard Worker __u64 cgroup_inode_id; 78*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 79*8d67ca89SAndroid Build Coastguard Worker }; 80*8d67ca89SAndroid Build Coastguard Worker enum bpf_cgroup_iter_order { 81*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_ITER_ORDER_UNSPEC = 0, 82*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_ITER_SELF_ONLY, 83*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_ITER_DESCENDANTS_PRE, 84*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_ITER_DESCENDANTS_POST, 85*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_ITER_ANCESTORS_UP, 86*8d67ca89SAndroid Build Coastguard Worker }; 87*8d67ca89SAndroid Build Coastguard Worker union bpf_iter_link_info { 88*8d67ca89SAndroid Build Coastguard Worker struct { 89*8d67ca89SAndroid Build Coastguard Worker __u32 map_fd; 90*8d67ca89SAndroid Build Coastguard Worker } map; 91*8d67ca89SAndroid Build Coastguard Worker struct { 92*8d67ca89SAndroid Build Coastguard Worker enum bpf_cgroup_iter_order order; 93*8d67ca89SAndroid Build Coastguard Worker __u32 cgroup_fd; 94*8d67ca89SAndroid Build Coastguard Worker __u64 cgroup_id; 95*8d67ca89SAndroid Build Coastguard Worker } cgroup; 96*8d67ca89SAndroid Build Coastguard Worker struct { 97*8d67ca89SAndroid Build Coastguard Worker __u32 tid; 98*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 99*8d67ca89SAndroid Build Coastguard Worker __u32 pid_fd; 100*8d67ca89SAndroid Build Coastguard Worker } task; 101*8d67ca89SAndroid Build Coastguard Worker }; 102*8d67ca89SAndroid Build Coastguard Worker enum bpf_cmd { 103*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_CREATE, 104*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_LOOKUP_ELEM, 105*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_UPDATE_ELEM, 106*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_DELETE_ELEM, 107*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_GET_NEXT_KEY, 108*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_LOAD, 109*8d67ca89SAndroid Build Coastguard Worker BPF_OBJ_PIN, 110*8d67ca89SAndroid Build Coastguard Worker BPF_OBJ_GET, 111*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_ATTACH, 112*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_DETACH, 113*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TEST_RUN, 114*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_RUN = BPF_PROG_TEST_RUN, 115*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_GET_NEXT_ID, 116*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_GET_NEXT_ID, 117*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_GET_FD_BY_ID, 118*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_GET_FD_BY_ID, 119*8d67ca89SAndroid Build Coastguard Worker BPF_OBJ_GET_INFO_BY_FD, 120*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_QUERY, 121*8d67ca89SAndroid Build Coastguard Worker BPF_RAW_TRACEPOINT_OPEN, 122*8d67ca89SAndroid Build Coastguard Worker BPF_BTF_LOAD, 123*8d67ca89SAndroid Build Coastguard Worker BPF_BTF_GET_FD_BY_ID, 124*8d67ca89SAndroid Build Coastguard Worker BPF_TASK_FD_QUERY, 125*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_LOOKUP_AND_DELETE_ELEM, 126*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_FREEZE, 127*8d67ca89SAndroid Build Coastguard Worker BPF_BTF_GET_NEXT_ID, 128*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_LOOKUP_BATCH, 129*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_LOOKUP_AND_DELETE_BATCH, 130*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_UPDATE_BATCH, 131*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_DELETE_BATCH, 132*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_CREATE, 133*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_UPDATE, 134*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_GET_FD_BY_ID, 135*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_GET_NEXT_ID, 136*8d67ca89SAndroid Build Coastguard Worker BPF_ENABLE_STATS, 137*8d67ca89SAndroid Build Coastguard Worker BPF_ITER_CREATE, 138*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_DETACH, 139*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_BIND_MAP, 140*8d67ca89SAndroid Build Coastguard Worker BPF_TOKEN_CREATE, 141*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_CMD, 142*8d67ca89SAndroid Build Coastguard Worker }; 143*8d67ca89SAndroid Build Coastguard Worker enum bpf_map_type { 144*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_UNSPEC, 145*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_HASH, 146*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_ARRAY, 147*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PROG_ARRAY, 148*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PERF_EVENT_ARRAY, 149*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PERCPU_HASH, 150*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PERCPU_ARRAY, 151*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_STACK_TRACE, 152*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_CGROUP_ARRAY, 153*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_LRU_HASH, 154*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_LRU_PERCPU_HASH, 155*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_LPM_TRIE, 156*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_ARRAY_OF_MAPS, 157*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_HASH_OF_MAPS, 158*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_DEVMAP, 159*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_SOCKMAP, 160*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_CPUMAP, 161*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_XSKMAP, 162*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_SOCKHASH, 163*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED, 164*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_CGROUP_STORAGE = BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED, 165*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, 166*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED, 167*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED, 168*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_QUEUE, 169*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_STACK, 170*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_SK_STORAGE, 171*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_DEVMAP_HASH, 172*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_STRUCT_OPS, 173*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_RINGBUF, 174*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_INODE_STORAGE, 175*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_TASK_STORAGE, 176*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_BLOOM_FILTER, 177*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_USER_RINGBUF, 178*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_CGRP_STORAGE, 179*8d67ca89SAndroid Build Coastguard Worker BPF_MAP_TYPE_ARENA, 180*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_MAP_TYPE 181*8d67ca89SAndroid Build Coastguard Worker }; 182*8d67ca89SAndroid Build Coastguard Worker enum bpf_prog_type { 183*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_UNSPEC, 184*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SOCKET_FILTER, 185*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_KPROBE, 186*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SCHED_CLS, 187*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SCHED_ACT, 188*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_TRACEPOINT, 189*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_XDP, 190*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_PERF_EVENT, 191*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_SKB, 192*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_SOCK, 193*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LWT_IN, 194*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LWT_OUT, 195*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LWT_XMIT, 196*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SOCK_OPS, 197*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SK_SKB, 198*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_DEVICE, 199*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SK_MSG, 200*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_RAW_TRACEPOINT, 201*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_SOCK_ADDR, 202*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LWT_SEG6LOCAL, 203*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LIRC_MODE2, 204*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SK_REUSEPORT, 205*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_FLOW_DISSECTOR, 206*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_SYSCTL, 207*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE, 208*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_CGROUP_SOCKOPT, 209*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_TRACING, 210*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_STRUCT_OPS, 211*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_EXT, 212*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_LSM, 213*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SK_LOOKUP, 214*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_SYSCALL, 215*8d67ca89SAndroid Build Coastguard Worker BPF_PROG_TYPE_NETFILTER, 216*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_PROG_TYPE 217*8d67ca89SAndroid Build Coastguard Worker }; 218*8d67ca89SAndroid Build Coastguard Worker enum bpf_attach_type { 219*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET_INGRESS, 220*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET_EGRESS, 221*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET_SOCK_CREATE, 222*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_SOCK_OPS, 223*8d67ca89SAndroid Build Coastguard Worker BPF_SK_SKB_STREAM_PARSER, 224*8d67ca89SAndroid Build Coastguard Worker BPF_SK_SKB_STREAM_VERDICT, 225*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_DEVICE, 226*8d67ca89SAndroid Build Coastguard Worker BPF_SK_MSG_VERDICT, 227*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET4_BIND, 228*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET6_BIND, 229*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET4_CONNECT, 230*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET6_CONNECT, 231*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET4_POST_BIND, 232*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET6_POST_BIND, 233*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UDP4_SENDMSG, 234*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UDP6_SENDMSG, 235*8d67ca89SAndroid Build Coastguard Worker BPF_LIRC_MODE2, 236*8d67ca89SAndroid Build Coastguard Worker BPF_FLOW_DISSECTOR, 237*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_SYSCTL, 238*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UDP4_RECVMSG, 239*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UDP6_RECVMSG, 240*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_GETSOCKOPT, 241*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_SETSOCKOPT, 242*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_RAW_TP, 243*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_FENTRY, 244*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_FEXIT, 245*8d67ca89SAndroid Build Coastguard Worker BPF_MODIFY_RETURN, 246*8d67ca89SAndroid Build Coastguard Worker BPF_LSM_MAC, 247*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_ITER, 248*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET4_GETPEERNAME, 249*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET6_GETPEERNAME, 250*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET4_GETSOCKNAME, 251*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET6_GETSOCKNAME, 252*8d67ca89SAndroid Build Coastguard Worker BPF_XDP_DEVMAP, 253*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_INET_SOCK_RELEASE, 254*8d67ca89SAndroid Build Coastguard Worker BPF_XDP_CPUMAP, 255*8d67ca89SAndroid Build Coastguard Worker BPF_SK_LOOKUP, 256*8d67ca89SAndroid Build Coastguard Worker BPF_XDP, 257*8d67ca89SAndroid Build Coastguard Worker BPF_SK_SKB_VERDICT, 258*8d67ca89SAndroid Build Coastguard Worker BPF_SK_REUSEPORT_SELECT, 259*8d67ca89SAndroid Build Coastguard Worker BPF_SK_REUSEPORT_SELECT_OR_MIGRATE, 260*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT, 261*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_KPROBE_MULTI, 262*8d67ca89SAndroid Build Coastguard Worker BPF_LSM_CGROUP, 263*8d67ca89SAndroid Build Coastguard Worker BPF_STRUCT_OPS, 264*8d67ca89SAndroid Build Coastguard Worker BPF_NETFILTER, 265*8d67ca89SAndroid Build Coastguard Worker BPF_TCX_INGRESS, 266*8d67ca89SAndroid Build Coastguard Worker BPF_TCX_EGRESS, 267*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_UPROBE_MULTI, 268*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UNIX_CONNECT, 269*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UNIX_SENDMSG, 270*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UNIX_RECVMSG, 271*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UNIX_GETPEERNAME, 272*8d67ca89SAndroid Build Coastguard Worker BPF_CGROUP_UNIX_GETSOCKNAME, 273*8d67ca89SAndroid Build Coastguard Worker BPF_NETKIT_PRIMARY, 274*8d67ca89SAndroid Build Coastguard Worker BPF_NETKIT_PEER, 275*8d67ca89SAndroid Build Coastguard Worker BPF_TRACE_KPROBE_SESSION, 276*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_ATTACH_TYPE 277*8d67ca89SAndroid Build Coastguard Worker }; 278*8d67ca89SAndroid Build Coastguard Worker #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE 279*8d67ca89SAndroid Build Coastguard Worker enum bpf_link_type { 280*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_UNSPEC = 0, 281*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_RAW_TRACEPOINT = 1, 282*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_TRACING = 2, 283*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_CGROUP = 3, 284*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_ITER = 4, 285*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_NETNS = 5, 286*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_XDP = 6, 287*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_PERF_EVENT = 7, 288*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_KPROBE_MULTI = 8, 289*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_STRUCT_OPS = 9, 290*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_NETFILTER = 10, 291*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_TCX = 11, 292*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_UPROBE_MULTI = 12, 293*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_NETKIT = 13, 294*8d67ca89SAndroid Build Coastguard Worker BPF_LINK_TYPE_SOCKMAP = 14, 295*8d67ca89SAndroid Build Coastguard Worker __MAX_BPF_LINK_TYPE, 296*8d67ca89SAndroid Build Coastguard Worker }; 297*8d67ca89SAndroid Build Coastguard Worker #define MAX_BPF_LINK_TYPE __MAX_BPF_LINK_TYPE 298*8d67ca89SAndroid Build Coastguard Worker enum bpf_perf_event_type { 299*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_UNSPEC = 0, 300*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_UPROBE = 1, 301*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_URETPROBE = 2, 302*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_KPROBE = 3, 303*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_KRETPROBE = 4, 304*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_TRACEPOINT = 5, 305*8d67ca89SAndroid Build Coastguard Worker BPF_PERF_EVENT_EVENT = 6, 306*8d67ca89SAndroid Build Coastguard Worker }; 307*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_ALLOW_OVERRIDE (1U << 0) 308*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_ALLOW_MULTI (1U << 1) 309*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_REPLACE (1U << 2) 310*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_BEFORE (1U << 3) 311*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_AFTER (1U << 4) 312*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_ID (1U << 5) 313*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_LINK BPF_F_LINK 314*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_STRICT_ALIGNMENT (1U << 0) 315*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_ANY_ALIGNMENT (1U << 1) 316*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_RND_HI32 (1U << 2) 317*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_STATE_FREQ (1U << 3) 318*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_SLEEPABLE (1U << 4) 319*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_XDP_HAS_FRAGS (1U << 5) 320*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_XDP_DEV_BOUND_ONLY (1U << 6) 321*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_REG_INVARIANTS (1U << 7) 322*8d67ca89SAndroid Build Coastguard Worker enum { 323*8d67ca89SAndroid Build Coastguard Worker BPF_F_KPROBE_MULTI_RETURN = (1U << 0) 324*8d67ca89SAndroid Build Coastguard Worker }; 325*8d67ca89SAndroid Build Coastguard Worker enum { 326*8d67ca89SAndroid Build Coastguard Worker BPF_F_UPROBE_MULTI_RETURN = (1U << 0) 327*8d67ca89SAndroid Build Coastguard Worker }; 328*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_NETFILTER_IP_DEFRAG (1U << 0) 329*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_FD 1 330*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_IDX 5 331*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_VALUE 2 332*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_IDX_VALUE 6 333*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_BTF_ID 3 334*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_FUNC 4 335*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_CALL 1 336*8d67ca89SAndroid Build Coastguard Worker #define BPF_PSEUDO_KFUNC_CALL 2 337*8d67ca89SAndroid Build Coastguard Worker enum bpf_addr_space_cast { 338*8d67ca89SAndroid Build Coastguard Worker BPF_ADDR_SPACE_CAST = 1, 339*8d67ca89SAndroid Build Coastguard Worker }; 340*8d67ca89SAndroid Build Coastguard Worker enum { 341*8d67ca89SAndroid Build Coastguard Worker BPF_ANY = 0, 342*8d67ca89SAndroid Build Coastguard Worker BPF_NOEXIST = 1, 343*8d67ca89SAndroid Build Coastguard Worker BPF_EXIST = 2, 344*8d67ca89SAndroid Build Coastguard Worker BPF_F_LOCK = 4, 345*8d67ca89SAndroid Build Coastguard Worker }; 346*8d67ca89SAndroid Build Coastguard Worker enum { 347*8d67ca89SAndroid Build Coastguard Worker BPF_F_NO_PREALLOC = (1U << 0), 348*8d67ca89SAndroid Build Coastguard Worker BPF_F_NO_COMMON_LRU = (1U << 1), 349*8d67ca89SAndroid Build Coastguard Worker BPF_F_NUMA_NODE = (1U << 2), 350*8d67ca89SAndroid Build Coastguard Worker BPF_F_RDONLY = (1U << 3), 351*8d67ca89SAndroid Build Coastguard Worker BPF_F_WRONLY = (1U << 4), 352*8d67ca89SAndroid Build Coastguard Worker BPF_F_STACK_BUILD_ID = (1U << 5), 353*8d67ca89SAndroid Build Coastguard Worker BPF_F_ZERO_SEED = (1U << 6), 354*8d67ca89SAndroid Build Coastguard Worker BPF_F_RDONLY_PROG = (1U << 7), 355*8d67ca89SAndroid Build Coastguard Worker BPF_F_WRONLY_PROG = (1U << 8), 356*8d67ca89SAndroid Build Coastguard Worker BPF_F_CLONE = (1U << 9), 357*8d67ca89SAndroid Build Coastguard Worker BPF_F_MMAPABLE = (1U << 10), 358*8d67ca89SAndroid Build Coastguard Worker BPF_F_PRESERVE_ELEMS = (1U << 11), 359*8d67ca89SAndroid Build Coastguard Worker BPF_F_INNER_MAP = (1U << 12), 360*8d67ca89SAndroid Build Coastguard Worker BPF_F_LINK = (1U << 13), 361*8d67ca89SAndroid Build Coastguard Worker BPF_F_PATH_FD = (1U << 14), 362*8d67ca89SAndroid Build Coastguard Worker BPF_F_VTYPE_BTF_OBJ_FD = (1U << 15), 363*8d67ca89SAndroid Build Coastguard Worker BPF_F_TOKEN_FD = (1U << 16), 364*8d67ca89SAndroid Build Coastguard Worker BPF_F_SEGV_ON_FAULT = (1U << 17), 365*8d67ca89SAndroid Build Coastguard Worker BPF_F_NO_USER_CONV = (1U << 18), 366*8d67ca89SAndroid Build Coastguard Worker }; 367*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_QUERY_EFFECTIVE (1U << 0) 368*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_RUN_ON_CPU (1U << 0) 369*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1) 370*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_TEST_SKB_CHECKSUM_COMPLETE (1U << 2) 371*8d67ca89SAndroid Build Coastguard Worker enum bpf_stats_type { 372*8d67ca89SAndroid Build Coastguard Worker BPF_STATS_RUN_TIME = 0, 373*8d67ca89SAndroid Build Coastguard Worker }; 374*8d67ca89SAndroid Build Coastguard Worker enum bpf_stack_build_id_status { 375*8d67ca89SAndroid Build Coastguard Worker BPF_STACK_BUILD_ID_EMPTY = 0, 376*8d67ca89SAndroid Build Coastguard Worker BPF_STACK_BUILD_ID_VALID = 1, 377*8d67ca89SAndroid Build Coastguard Worker BPF_STACK_BUILD_ID_IP = 2, 378*8d67ca89SAndroid Build Coastguard Worker }; 379*8d67ca89SAndroid Build Coastguard Worker #define BPF_BUILD_ID_SIZE 20 380*8d67ca89SAndroid Build Coastguard Worker struct bpf_stack_build_id { 381*8d67ca89SAndroid Build Coastguard Worker __s32 status; 382*8d67ca89SAndroid Build Coastguard Worker unsigned char build_id[BPF_BUILD_ID_SIZE]; 383*8d67ca89SAndroid Build Coastguard Worker union { 384*8d67ca89SAndroid Build Coastguard Worker __u64 offset; 385*8d67ca89SAndroid Build Coastguard Worker __u64 ip; 386*8d67ca89SAndroid Build Coastguard Worker }; 387*8d67ca89SAndroid Build Coastguard Worker }; 388*8d67ca89SAndroid Build Coastguard Worker #define BPF_OBJ_NAME_LEN 16U 389*8d67ca89SAndroid Build Coastguard Worker union bpf_attr { 390*8d67ca89SAndroid Build Coastguard Worker struct { 391*8d67ca89SAndroid Build Coastguard Worker __u32 map_type; 392*8d67ca89SAndroid Build Coastguard Worker __u32 key_size; 393*8d67ca89SAndroid Build Coastguard Worker __u32 value_size; 394*8d67ca89SAndroid Build Coastguard Worker __u32 max_entries; 395*8d67ca89SAndroid Build Coastguard Worker __u32 map_flags; 396*8d67ca89SAndroid Build Coastguard Worker __u32 inner_map_fd; 397*8d67ca89SAndroid Build Coastguard Worker __u32 numa_node; 398*8d67ca89SAndroid Build Coastguard Worker char map_name[BPF_OBJ_NAME_LEN]; 399*8d67ca89SAndroid Build Coastguard Worker __u32 map_ifindex; 400*8d67ca89SAndroid Build Coastguard Worker __u32 btf_fd; 401*8d67ca89SAndroid Build Coastguard Worker __u32 btf_key_type_id; 402*8d67ca89SAndroid Build Coastguard Worker __u32 btf_value_type_id; 403*8d67ca89SAndroid Build Coastguard Worker __u32 btf_vmlinux_value_type_id; 404*8d67ca89SAndroid Build Coastguard Worker __u64 map_extra; 405*8d67ca89SAndroid Build Coastguard Worker __s32 value_type_btf_obj_fd; 406*8d67ca89SAndroid Build Coastguard Worker __s32 map_token_fd; 407*8d67ca89SAndroid Build Coastguard Worker }; 408*8d67ca89SAndroid Build Coastguard Worker struct { 409*8d67ca89SAndroid Build Coastguard Worker __u32 map_fd; 410*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 key; 411*8d67ca89SAndroid Build Coastguard Worker union { 412*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 value; 413*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 next_key; 414*8d67ca89SAndroid Build Coastguard Worker }; 415*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 416*8d67ca89SAndroid Build Coastguard Worker }; 417*8d67ca89SAndroid Build Coastguard Worker struct { 418*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 in_batch; 419*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 out_batch; 420*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 keys; 421*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 values; 422*8d67ca89SAndroid Build Coastguard Worker __u32 count; 423*8d67ca89SAndroid Build Coastguard Worker __u32 map_fd; 424*8d67ca89SAndroid Build Coastguard Worker __u64 elem_flags; 425*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 426*8d67ca89SAndroid Build Coastguard Worker } batch; 427*8d67ca89SAndroid Build Coastguard Worker struct { 428*8d67ca89SAndroid Build Coastguard Worker __u32 prog_type; 429*8d67ca89SAndroid Build Coastguard Worker __u32 insn_cnt; 430*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 insns; 431*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 license; 432*8d67ca89SAndroid Build Coastguard Worker __u32 log_level; 433*8d67ca89SAndroid Build Coastguard Worker __u32 log_size; 434*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 log_buf; 435*8d67ca89SAndroid Build Coastguard Worker __u32 kern_version; 436*8d67ca89SAndroid Build Coastguard Worker __u32 prog_flags; 437*8d67ca89SAndroid Build Coastguard Worker char prog_name[BPF_OBJ_NAME_LEN]; 438*8d67ca89SAndroid Build Coastguard Worker __u32 prog_ifindex; 439*8d67ca89SAndroid Build Coastguard Worker __u32 expected_attach_type; 440*8d67ca89SAndroid Build Coastguard Worker __u32 prog_btf_fd; 441*8d67ca89SAndroid Build Coastguard Worker __u32 func_info_rec_size; 442*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 func_info; 443*8d67ca89SAndroid Build Coastguard Worker __u32 func_info_cnt; 444*8d67ca89SAndroid Build Coastguard Worker __u32 line_info_rec_size; 445*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 line_info; 446*8d67ca89SAndroid Build Coastguard Worker __u32 line_info_cnt; 447*8d67ca89SAndroid Build Coastguard Worker __u32 attach_btf_id; 448*8d67ca89SAndroid Build Coastguard Worker union { 449*8d67ca89SAndroid Build Coastguard Worker __u32 attach_prog_fd; 450*8d67ca89SAndroid Build Coastguard Worker __u32 attach_btf_obj_fd; 451*8d67ca89SAndroid Build Coastguard Worker }; 452*8d67ca89SAndroid Build Coastguard Worker __u32 core_relo_cnt; 453*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 fd_array; 454*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 core_relos; 455*8d67ca89SAndroid Build Coastguard Worker __u32 core_relo_rec_size; 456*8d67ca89SAndroid Build Coastguard Worker __u32 log_true_size; 457*8d67ca89SAndroid Build Coastguard Worker __s32 prog_token_fd; 458*8d67ca89SAndroid Build Coastguard Worker }; 459*8d67ca89SAndroid Build Coastguard Worker struct { 460*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 pathname; 461*8d67ca89SAndroid Build Coastguard Worker __u32 bpf_fd; 462*8d67ca89SAndroid Build Coastguard Worker __u32 file_flags; 463*8d67ca89SAndroid Build Coastguard Worker __s32 path_fd; 464*8d67ca89SAndroid Build Coastguard Worker }; 465*8d67ca89SAndroid Build Coastguard Worker struct { 466*8d67ca89SAndroid Build Coastguard Worker union { 467*8d67ca89SAndroid Build Coastguard Worker __u32 target_fd; 468*8d67ca89SAndroid Build Coastguard Worker __u32 target_ifindex; 469*8d67ca89SAndroid Build Coastguard Worker }; 470*8d67ca89SAndroid Build Coastguard Worker __u32 attach_bpf_fd; 471*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 472*8d67ca89SAndroid Build Coastguard Worker __u32 attach_flags; 473*8d67ca89SAndroid Build Coastguard Worker __u32 replace_bpf_fd; 474*8d67ca89SAndroid Build Coastguard Worker union { 475*8d67ca89SAndroid Build Coastguard Worker __u32 relative_fd; 476*8d67ca89SAndroid Build Coastguard Worker __u32 relative_id; 477*8d67ca89SAndroid Build Coastguard Worker }; 478*8d67ca89SAndroid Build Coastguard Worker __u64 expected_revision; 479*8d67ca89SAndroid Build Coastguard Worker }; 480*8d67ca89SAndroid Build Coastguard Worker struct { 481*8d67ca89SAndroid Build Coastguard Worker __u32 prog_fd; 482*8d67ca89SAndroid Build Coastguard Worker __u32 retval; 483*8d67ca89SAndroid Build Coastguard Worker __u32 data_size_in; 484*8d67ca89SAndroid Build Coastguard Worker __u32 data_size_out; 485*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 data_in; 486*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 data_out; 487*8d67ca89SAndroid Build Coastguard Worker __u32 repeat; 488*8d67ca89SAndroid Build Coastguard Worker __u32 duration; 489*8d67ca89SAndroid Build Coastguard Worker __u32 ctx_size_in; 490*8d67ca89SAndroid Build Coastguard Worker __u32 ctx_size_out; 491*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 ctx_in; 492*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 ctx_out; 493*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 494*8d67ca89SAndroid Build Coastguard Worker __u32 cpu; 495*8d67ca89SAndroid Build Coastguard Worker __u32 batch_size; 496*8d67ca89SAndroid Build Coastguard Worker } test; 497*8d67ca89SAndroid Build Coastguard Worker struct { 498*8d67ca89SAndroid Build Coastguard Worker union { 499*8d67ca89SAndroid Build Coastguard Worker __u32 start_id; 500*8d67ca89SAndroid Build Coastguard Worker __u32 prog_id; 501*8d67ca89SAndroid Build Coastguard Worker __u32 map_id; 502*8d67ca89SAndroid Build Coastguard Worker __u32 btf_id; 503*8d67ca89SAndroid Build Coastguard Worker __u32 link_id; 504*8d67ca89SAndroid Build Coastguard Worker }; 505*8d67ca89SAndroid Build Coastguard Worker __u32 next_id; 506*8d67ca89SAndroid Build Coastguard Worker __u32 open_flags; 507*8d67ca89SAndroid Build Coastguard Worker }; 508*8d67ca89SAndroid Build Coastguard Worker struct { 509*8d67ca89SAndroid Build Coastguard Worker __u32 bpf_fd; 510*8d67ca89SAndroid Build Coastguard Worker __u32 info_len; 511*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 info; 512*8d67ca89SAndroid Build Coastguard Worker } info; 513*8d67ca89SAndroid Build Coastguard Worker struct { 514*8d67ca89SAndroid Build Coastguard Worker union { 515*8d67ca89SAndroid Build Coastguard Worker __u32 target_fd; 516*8d67ca89SAndroid Build Coastguard Worker __u32 target_ifindex; 517*8d67ca89SAndroid Build Coastguard Worker }; 518*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 519*8d67ca89SAndroid Build Coastguard Worker __u32 query_flags; 520*8d67ca89SAndroid Build Coastguard Worker __u32 attach_flags; 521*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 prog_ids; 522*8d67ca89SAndroid Build Coastguard Worker union { 523*8d67ca89SAndroid Build Coastguard Worker __u32 prog_cnt; 524*8d67ca89SAndroid Build Coastguard Worker __u32 count; 525*8d67ca89SAndroid Build Coastguard Worker }; 526*8d67ca89SAndroid Build Coastguard Worker __u32 : 32; 527*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 prog_attach_flags; 528*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 link_ids; 529*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 link_attach_flags; 530*8d67ca89SAndroid Build Coastguard Worker __u64 revision; 531*8d67ca89SAndroid Build Coastguard Worker } query; 532*8d67ca89SAndroid Build Coastguard Worker struct { 533*8d67ca89SAndroid Build Coastguard Worker __u64 name; 534*8d67ca89SAndroid Build Coastguard Worker __u32 prog_fd; 535*8d67ca89SAndroid Build Coastguard Worker __u32 : 32; 536*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 cookie; 537*8d67ca89SAndroid Build Coastguard Worker } raw_tracepoint; 538*8d67ca89SAndroid Build Coastguard Worker struct { 539*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 btf; 540*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 btf_log_buf; 541*8d67ca89SAndroid Build Coastguard Worker __u32 btf_size; 542*8d67ca89SAndroid Build Coastguard Worker __u32 btf_log_size; 543*8d67ca89SAndroid Build Coastguard Worker __u32 btf_log_level; 544*8d67ca89SAndroid Build Coastguard Worker __u32 btf_log_true_size; 545*8d67ca89SAndroid Build Coastguard Worker __u32 btf_flags; 546*8d67ca89SAndroid Build Coastguard Worker __s32 btf_token_fd; 547*8d67ca89SAndroid Build Coastguard Worker }; 548*8d67ca89SAndroid Build Coastguard Worker struct { 549*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 550*8d67ca89SAndroid Build Coastguard Worker __u32 fd; 551*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 552*8d67ca89SAndroid Build Coastguard Worker __u32 buf_len; 553*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 buf; 554*8d67ca89SAndroid Build Coastguard Worker __u32 prog_id; 555*8d67ca89SAndroid Build Coastguard Worker __u32 fd_type; 556*8d67ca89SAndroid Build Coastguard Worker __u64 probe_offset; 557*8d67ca89SAndroid Build Coastguard Worker __u64 probe_addr; 558*8d67ca89SAndroid Build Coastguard Worker } task_fd_query; 559*8d67ca89SAndroid Build Coastguard Worker struct { 560*8d67ca89SAndroid Build Coastguard Worker union { 561*8d67ca89SAndroid Build Coastguard Worker __u32 prog_fd; 562*8d67ca89SAndroid Build Coastguard Worker __u32 map_fd; 563*8d67ca89SAndroid Build Coastguard Worker }; 564*8d67ca89SAndroid Build Coastguard Worker union { 565*8d67ca89SAndroid Build Coastguard Worker __u32 target_fd; 566*8d67ca89SAndroid Build Coastguard Worker __u32 target_ifindex; 567*8d67ca89SAndroid Build Coastguard Worker }; 568*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 569*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 570*8d67ca89SAndroid Build Coastguard Worker union { 571*8d67ca89SAndroid Build Coastguard Worker __u32 target_btf_id; 572*8d67ca89SAndroid Build Coastguard Worker struct { 573*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 iter_info; 574*8d67ca89SAndroid Build Coastguard Worker __u32 iter_info_len; 575*8d67ca89SAndroid Build Coastguard Worker }; 576*8d67ca89SAndroid Build Coastguard Worker struct { 577*8d67ca89SAndroid Build Coastguard Worker __u64 bpf_cookie; 578*8d67ca89SAndroid Build Coastguard Worker } perf_event; 579*8d67ca89SAndroid Build Coastguard Worker struct { 580*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 581*8d67ca89SAndroid Build Coastguard Worker __u32 cnt; 582*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 syms; 583*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 addrs; 584*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 cookies; 585*8d67ca89SAndroid Build Coastguard Worker } kprobe_multi; 586*8d67ca89SAndroid Build Coastguard Worker struct { 587*8d67ca89SAndroid Build Coastguard Worker __u32 target_btf_id; 588*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 589*8d67ca89SAndroid Build Coastguard Worker } tracing; 590*8d67ca89SAndroid Build Coastguard Worker struct { 591*8d67ca89SAndroid Build Coastguard Worker __u32 pf; 592*8d67ca89SAndroid Build Coastguard Worker __u32 hooknum; 593*8d67ca89SAndroid Build Coastguard Worker __s32 priority; 594*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 595*8d67ca89SAndroid Build Coastguard Worker } netfilter; 596*8d67ca89SAndroid Build Coastguard Worker struct { 597*8d67ca89SAndroid Build Coastguard Worker union { 598*8d67ca89SAndroid Build Coastguard Worker __u32 relative_fd; 599*8d67ca89SAndroid Build Coastguard Worker __u32 relative_id; 600*8d67ca89SAndroid Build Coastguard Worker }; 601*8d67ca89SAndroid Build Coastguard Worker __u64 expected_revision; 602*8d67ca89SAndroid Build Coastguard Worker } tcx; 603*8d67ca89SAndroid Build Coastguard Worker struct { 604*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 path; 605*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 offsets; 606*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 ref_ctr_offsets; 607*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 cookies; 608*8d67ca89SAndroid Build Coastguard Worker __u32 cnt; 609*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 610*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 611*8d67ca89SAndroid Build Coastguard Worker } uprobe_multi; 612*8d67ca89SAndroid Build Coastguard Worker struct { 613*8d67ca89SAndroid Build Coastguard Worker union { 614*8d67ca89SAndroid Build Coastguard Worker __u32 relative_fd; 615*8d67ca89SAndroid Build Coastguard Worker __u32 relative_id; 616*8d67ca89SAndroid Build Coastguard Worker }; 617*8d67ca89SAndroid Build Coastguard Worker __u64 expected_revision; 618*8d67ca89SAndroid Build Coastguard Worker } netkit; 619*8d67ca89SAndroid Build Coastguard Worker }; 620*8d67ca89SAndroid Build Coastguard Worker } link_create; 621*8d67ca89SAndroid Build Coastguard Worker struct { 622*8d67ca89SAndroid Build Coastguard Worker __u32 link_fd; 623*8d67ca89SAndroid Build Coastguard Worker union { 624*8d67ca89SAndroid Build Coastguard Worker __u32 new_prog_fd; 625*8d67ca89SAndroid Build Coastguard Worker __u32 new_map_fd; 626*8d67ca89SAndroid Build Coastguard Worker }; 627*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 628*8d67ca89SAndroid Build Coastguard Worker union { 629*8d67ca89SAndroid Build Coastguard Worker __u32 old_prog_fd; 630*8d67ca89SAndroid Build Coastguard Worker __u32 old_map_fd; 631*8d67ca89SAndroid Build Coastguard Worker }; 632*8d67ca89SAndroid Build Coastguard Worker } link_update; 633*8d67ca89SAndroid Build Coastguard Worker struct { 634*8d67ca89SAndroid Build Coastguard Worker __u32 link_fd; 635*8d67ca89SAndroid Build Coastguard Worker } link_detach; 636*8d67ca89SAndroid Build Coastguard Worker struct { 637*8d67ca89SAndroid Build Coastguard Worker __u32 type; 638*8d67ca89SAndroid Build Coastguard Worker } enable_stats; 639*8d67ca89SAndroid Build Coastguard Worker struct { 640*8d67ca89SAndroid Build Coastguard Worker __u32 link_fd; 641*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 642*8d67ca89SAndroid Build Coastguard Worker } iter_create; 643*8d67ca89SAndroid Build Coastguard Worker struct { 644*8d67ca89SAndroid Build Coastguard Worker __u32 prog_fd; 645*8d67ca89SAndroid Build Coastguard Worker __u32 map_fd; 646*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 647*8d67ca89SAndroid Build Coastguard Worker } prog_bind_map; 648*8d67ca89SAndroid Build Coastguard Worker struct { 649*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 650*8d67ca89SAndroid Build Coastguard Worker __u32 bpffs_fd; 651*8d67ca89SAndroid Build Coastguard Worker } token_create; 652*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 653*8d67ca89SAndroid Build Coastguard Worker #define ___BPF_FUNC_MAPPER(FN,ctx...) FN(unspec, 0, ##ctx) FN(map_lookup_elem, 1, ##ctx) FN(map_update_elem, 2, ##ctx) FN(map_delete_elem, 3, ##ctx) FN(probe_read, 4, ##ctx) FN(ktime_get_ns, 5, ##ctx) FN(trace_printk, 6, ##ctx) FN(get_prandom_u32, 7, ##ctx) FN(get_smp_processor_id, 8, ##ctx) FN(skb_store_bytes, 9, ##ctx) FN(l3_csum_replace, 10, ##ctx) FN(l4_csum_replace, 11, ##ctx) FN(tail_call, 12, ##ctx) FN(clone_redirect, 13, ##ctx) FN(get_current_pid_tgid, 14, ##ctx) FN(get_current_uid_gid, 15, ##ctx) FN(get_current_comm, 16, ##ctx) FN(get_cgroup_classid, 17, ##ctx) FN(skb_vlan_push, 18, ##ctx) FN(skb_vlan_pop, 19, ##ctx) FN(skb_get_tunnel_key, 20, ##ctx) FN(skb_set_tunnel_key, 21, ##ctx) FN(perf_event_read, 22, ##ctx) FN(redirect, 23, ##ctx) FN(get_route_realm, 24, ##ctx) FN(perf_event_output, 25, ##ctx) FN(skb_load_bytes, 26, ##ctx) FN(get_stackid, 27, ##ctx) FN(csum_diff, 28, ##ctx) FN(skb_get_tunnel_opt, 29, ##ctx) FN(skb_set_tunnel_opt, 30, ##ctx) FN(skb_change_proto, 31, ##ctx) FN(skb_change_type, 32, ##ctx) FN(skb_under_cgroup, 33, ##ctx) FN(get_hash_recalc, 34, ##ctx) FN(get_current_task, 35, ##ctx) FN(probe_write_user, 36, ##ctx) FN(current_task_under_cgroup, 37, ##ctx) FN(skb_change_tail, 38, ##ctx) FN(skb_pull_data, 39, ##ctx) FN(csum_update, 40, ##ctx) FN(set_hash_invalid, 41, ##ctx) FN(get_numa_node_id, 42, ##ctx) FN(skb_change_head, 43, ##ctx) FN(xdp_adjust_head, 44, ##ctx) FN(probe_read_str, 45, ##ctx) FN(get_socket_cookie, 46, ##ctx) FN(get_socket_uid, 47, ##ctx) FN(set_hash, 48, ##ctx) FN(setsockopt, 49, ##ctx) FN(skb_adjust_room, 50, ##ctx) FN(redirect_map, 51, ##ctx) FN(sk_redirect_map, 52, ##ctx) FN(sock_map_update, 53, ##ctx) FN(xdp_adjust_meta, 54, ##ctx) FN(perf_event_read_value, 55, ##ctx) FN(perf_prog_read_value, 56, ##ctx) FN(getsockopt, 57, ##ctx) FN(override_return, 58, ##ctx) FN(sock_ops_cb_flags_set, 59, ##ctx) FN(msg_redirect_map, 60, ##ctx) FN(msg_apply_bytes, 61, ##ctx) FN(msg_cork_bytes, 62, ##ctx) FN(msg_pull_data, 63, ##ctx) FN(bind, 64, ##ctx) FN(xdp_adjust_tail, 65, ##ctx) FN(skb_get_xfrm_state, 66, ##ctx) FN(get_stack, 67, ##ctx) FN(skb_load_bytes_relative, 68, ##ctx) FN(fib_lookup, 69, ##ctx) FN(sock_hash_update, 70, ##ctx) FN(msg_redirect_hash, 71, ##ctx) FN(sk_redirect_hash, 72, ##ctx) FN(lwt_push_encap, 73, ##ctx) FN(lwt_seg6_store_bytes, 74, ##ctx) FN(lwt_seg6_adjust_srh, 75, ##ctx) FN(lwt_seg6_action, 76, ##ctx) FN(rc_repeat, 77, ##ctx) FN(rc_keydown, 78, ##ctx) FN(skb_cgroup_id, 79, ##ctx) FN(get_current_cgroup_id, 80, ##ctx) FN(get_local_storage, 81, ##ctx) FN(sk_select_reuseport, 82, ##ctx) FN(skb_ancestor_cgroup_id, 83, ##ctx) FN(sk_lookup_tcp, 84, ##ctx) FN(sk_lookup_udp, 85, ##ctx) FN(sk_release, 86, ##ctx) FN(map_push_elem, 87, ##ctx) FN(map_pop_elem, 88, ##ctx) FN(map_peek_elem, 89, ##ctx) FN(msg_push_data, 90, ##ctx) FN(msg_pop_data, 91, ##ctx) FN(rc_pointer_rel, 92, ##ctx) FN(spin_lock, 93, ##ctx) FN(spin_unlock, 94, ##ctx) FN(sk_fullsock, 95, ##ctx) FN(tcp_sock, 96, ##ctx) FN(skb_ecn_set_ce, 97, ##ctx) FN(get_listener_sock, 98, ##ctx) FN(skc_lookup_tcp, 99, ##ctx) FN(tcp_check_syncookie, 100, ##ctx) FN(sysctl_get_name, 101, ##ctx) FN(sysctl_get_current_value, 102, ##ctx) FN(sysctl_get_new_value, 103, ##ctx) FN(sysctl_set_new_value, 104, ##ctx) FN(strtol, 105, ##ctx) FN(strtoul, 106, ##ctx) FN(sk_storage_get, 107, ##ctx) FN(sk_storage_delete, 108, ##ctx) FN(send_signal, 109, ##ctx) FN(tcp_gen_syncookie, 110, ##ctx) FN(skb_output, 111, ##ctx) FN(probe_read_user, 112, ##ctx) FN(probe_read_kernel, 113, ##ctx) FN(probe_read_user_str, 114, ##ctx) FN(probe_read_kernel_str, 115, ##ctx) FN(tcp_send_ack, 116, ##ctx) FN(send_signal_thread, 117, ##ctx) FN(jiffies64, 118, ##ctx) FN(read_branch_records, 119, ##ctx) FN(get_ns_current_pid_tgid, 120, ##ctx) FN(xdp_output, 121, ##ctx) FN(get_netns_cookie, 122, ##ctx) FN(get_current_ancestor_cgroup_id, 123, ##ctx) FN(sk_assign, 124, ##ctx) FN(ktime_get_boot_ns, 125, ##ctx) FN(seq_printf, 126, ##ctx) FN(seq_write, 127, ##ctx) FN(sk_cgroup_id, 128, ##ctx) FN(sk_ancestor_cgroup_id, 129, ##ctx) FN(ringbuf_output, 130, ##ctx) FN(ringbuf_reserve, 131, ##ctx) FN(ringbuf_submit, 132, ##ctx) FN(ringbuf_discard, 133, ##ctx) FN(ringbuf_query, 134, ##ctx) FN(csum_level, 135, ##ctx) FN(skc_to_tcp6_sock, 136, ##ctx) FN(skc_to_tcp_sock, 137, ##ctx) FN(skc_to_tcp_timewait_sock, 138, ##ctx) FN(skc_to_tcp_request_sock, 139, ##ctx) FN(skc_to_udp6_sock, 140, ##ctx) FN(get_task_stack, 141, ##ctx) FN(load_hdr_opt, 142, ##ctx) FN(store_hdr_opt, 143, ##ctx) FN(reserve_hdr_opt, 144, ##ctx) FN(inode_storage_get, 145, ##ctx) FN(inode_storage_delete, 146, ##ctx) FN(d_path, 147, ##ctx) FN(copy_from_user, 148, ##ctx) FN(snprintf_btf, 149, ##ctx) FN(seq_printf_btf, 150, ##ctx) FN(skb_cgroup_classid, 151, ##ctx) FN(redirect_neigh, 152, ##ctx) FN(per_cpu_ptr, 153, ##ctx) FN(this_cpu_ptr, 154, ##ctx) FN(redirect_peer, 155, ##ctx) FN(task_storage_get, 156, ##ctx) FN(task_storage_delete, 157, ##ctx) FN(get_current_task_btf, 158, ##ctx) FN(bprm_opts_set, 159, ##ctx) FN(ktime_get_coarse_ns, 160, ##ctx) FN(ima_inode_hash, 161, ##ctx) FN(sock_from_file, 162, ##ctx) FN(check_mtu, 163, ##ctx) FN(for_each_map_elem, 164, ##ctx) FN(snprintf, 165, ##ctx) FN(sys_bpf, 166, ##ctx) FN(btf_find_by_name_kind, 167, ##ctx) FN(sys_close, 168, ##ctx) FN(timer_init, 169, ##ctx) FN(timer_set_callback, 170, ##ctx) FN(timer_start, 171, ##ctx) FN(timer_cancel, 172, ##ctx) FN(get_func_ip, 173, ##ctx) FN(get_attach_cookie, 174, ##ctx) FN(task_pt_regs, 175, ##ctx) FN(get_branch_snapshot, 176, ##ctx) FN(trace_vprintk, 177, ##ctx) FN(skc_to_unix_sock, 178, ##ctx) FN(kallsyms_lookup_name, 179, ##ctx) FN(find_vma, 180, ##ctx) FN(loop, 181, ##ctx) FN(strncmp, 182, ##ctx) FN(get_func_arg, 183, ##ctx) FN(get_func_ret, 184, ##ctx) FN(get_func_arg_cnt, 185, ##ctx) FN(get_retval, 186, ##ctx) FN(set_retval, 187, ##ctx) FN(xdp_get_buff_len, 188, ##ctx) FN(xdp_load_bytes, 189, ##ctx) FN(xdp_store_bytes, 190, ##ctx) FN(copy_from_user_task, 191, ##ctx) FN(skb_set_tstamp, 192, ##ctx) FN(ima_file_hash, 193, ##ctx) FN(kptr_xchg, 194, ##ctx) FN(map_lookup_percpu_elem, 195, ##ctx) FN(skc_to_mptcp_sock, 196, ##ctx) FN(dynptr_from_mem, 197, ##ctx) FN(ringbuf_reserve_dynptr, 198, ##ctx) FN(ringbuf_submit_dynptr, 199, ##ctx) FN(ringbuf_discard_dynptr, 200, ##ctx) FN(dynptr_read, 201, ##ctx) FN(dynptr_write, 202, ##ctx) FN(dynptr_data, 203, ##ctx) FN(tcp_raw_gen_syncookie_ipv4, 204, ##ctx) FN(tcp_raw_gen_syncookie_ipv6, 205, ##ctx) FN(tcp_raw_check_syncookie_ipv4, 206, ##ctx) FN(tcp_raw_check_syncookie_ipv6, 207, ##ctx) FN(ktime_get_tai_ns, 208, ##ctx) FN(user_ringbuf_drain, 209, ##ctx) FN(cgrp_storage_get, 210, ##ctx) FN(cgrp_storage_delete, 211, ##ctx) 654*8d67ca89SAndroid Build Coastguard Worker #define __BPF_FUNC_MAPPER_APPLY(name,value,FN) FN(name), 655*8d67ca89SAndroid Build Coastguard Worker #define __BPF_FUNC_MAPPER(FN) ___BPF_FUNC_MAPPER(__BPF_FUNC_MAPPER_APPLY, FN) 656*8d67ca89SAndroid Build Coastguard Worker #define __BPF_ENUM_FN(x,y) BPF_FUNC_ ##x = y, 657*8d67ca89SAndroid Build Coastguard Worker enum bpf_func_id { 658*8d67ca89SAndroid Build Coastguard Worker ___BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID, 659*8d67ca89SAndroid Build Coastguard Worker }; 660*8d67ca89SAndroid Build Coastguard Worker #undef __BPF_ENUM_FN 661*8d67ca89SAndroid Build Coastguard Worker enum { 662*8d67ca89SAndroid Build Coastguard Worker BPF_F_RECOMPUTE_CSUM = (1ULL << 0), 663*8d67ca89SAndroid Build Coastguard Worker BPF_F_INVALIDATE_HASH = (1ULL << 1), 664*8d67ca89SAndroid Build Coastguard Worker }; 665*8d67ca89SAndroid Build Coastguard Worker enum { 666*8d67ca89SAndroid Build Coastguard Worker BPF_F_HDR_FIELD_MASK = 0xfULL, 667*8d67ca89SAndroid Build Coastguard Worker }; 668*8d67ca89SAndroid Build Coastguard Worker enum { 669*8d67ca89SAndroid Build Coastguard Worker BPF_F_PSEUDO_HDR = (1ULL << 4), 670*8d67ca89SAndroid Build Coastguard Worker BPF_F_MARK_MANGLED_0 = (1ULL << 5), 671*8d67ca89SAndroid Build Coastguard Worker BPF_F_MARK_ENFORCE = (1ULL << 6), 672*8d67ca89SAndroid Build Coastguard Worker }; 673*8d67ca89SAndroid Build Coastguard Worker enum { 674*8d67ca89SAndroid Build Coastguard Worker BPF_F_INGRESS = (1ULL << 0), 675*8d67ca89SAndroid Build Coastguard Worker }; 676*8d67ca89SAndroid Build Coastguard Worker enum { 677*8d67ca89SAndroid Build Coastguard Worker BPF_F_TUNINFO_IPV6 = (1ULL << 0), 678*8d67ca89SAndroid Build Coastguard Worker }; 679*8d67ca89SAndroid Build Coastguard Worker enum { 680*8d67ca89SAndroid Build Coastguard Worker BPF_F_SKIP_FIELD_MASK = 0xffULL, 681*8d67ca89SAndroid Build Coastguard Worker BPF_F_USER_STACK = (1ULL << 8), 682*8d67ca89SAndroid Build Coastguard Worker BPF_F_FAST_STACK_CMP = (1ULL << 9), 683*8d67ca89SAndroid Build Coastguard Worker BPF_F_REUSE_STACKID = (1ULL << 10), 684*8d67ca89SAndroid Build Coastguard Worker BPF_F_USER_BUILD_ID = (1ULL << 11), 685*8d67ca89SAndroid Build Coastguard Worker }; 686*8d67ca89SAndroid Build Coastguard Worker enum { 687*8d67ca89SAndroid Build Coastguard Worker BPF_F_ZERO_CSUM_TX = (1ULL << 1), 688*8d67ca89SAndroid Build Coastguard Worker BPF_F_DONT_FRAGMENT = (1ULL << 2), 689*8d67ca89SAndroid Build Coastguard Worker BPF_F_SEQ_NUMBER = (1ULL << 3), 690*8d67ca89SAndroid Build Coastguard Worker BPF_F_NO_TUNNEL_KEY = (1ULL << 4), 691*8d67ca89SAndroid Build Coastguard Worker }; 692*8d67ca89SAndroid Build Coastguard Worker enum { 693*8d67ca89SAndroid Build Coastguard Worker BPF_F_TUNINFO_FLAGS = (1ULL << 4), 694*8d67ca89SAndroid Build Coastguard Worker }; 695*8d67ca89SAndroid Build Coastguard Worker enum { 696*8d67ca89SAndroid Build Coastguard Worker BPF_F_INDEX_MASK = 0xffffffffULL, 697*8d67ca89SAndroid Build Coastguard Worker BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK, 698*8d67ca89SAndroid Build Coastguard Worker BPF_F_CTXLEN_MASK = (0xfffffULL << 32), 699*8d67ca89SAndroid Build Coastguard Worker }; 700*8d67ca89SAndroid Build Coastguard Worker enum { 701*8d67ca89SAndroid Build Coastguard Worker BPF_F_CURRENT_NETNS = (- 1L), 702*8d67ca89SAndroid Build Coastguard Worker }; 703*8d67ca89SAndroid Build Coastguard Worker enum { 704*8d67ca89SAndroid Build Coastguard Worker BPF_CSUM_LEVEL_QUERY, 705*8d67ca89SAndroid Build Coastguard Worker BPF_CSUM_LEVEL_INC, 706*8d67ca89SAndroid Build Coastguard Worker BPF_CSUM_LEVEL_DEC, 707*8d67ca89SAndroid Build Coastguard Worker BPF_CSUM_LEVEL_RESET, 708*8d67ca89SAndroid Build Coastguard Worker }; 709*8d67ca89SAndroid Build Coastguard Worker enum { 710*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_FIXED_GSO = (1ULL << 0), 711*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = (1ULL << 1), 712*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = (1ULL << 2), 713*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_ENCAP_L4_GRE = (1ULL << 3), 714*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_ENCAP_L4_UDP = (1ULL << 4), 715*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_NO_CSUM_RESET = (1ULL << 5), 716*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_ENCAP_L2_ETH = (1ULL << 6), 717*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = (1ULL << 7), 718*8d67ca89SAndroid Build Coastguard Worker BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = (1ULL << 8), 719*8d67ca89SAndroid Build Coastguard Worker }; 720*8d67ca89SAndroid Build Coastguard Worker enum { 721*8d67ca89SAndroid Build Coastguard Worker BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff, 722*8d67ca89SAndroid Build Coastguard Worker BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 56, 723*8d67ca89SAndroid Build Coastguard Worker }; 724*8d67ca89SAndroid Build Coastguard Worker #define BPF_F_ADJ_ROOM_ENCAP_L2(len) (((__u64) len & BPF_ADJ_ROOM_ENCAP_L2_MASK) << BPF_ADJ_ROOM_ENCAP_L2_SHIFT) 725*8d67ca89SAndroid Build Coastguard Worker enum { 726*8d67ca89SAndroid Build Coastguard Worker BPF_F_SYSCTL_BASE_NAME = (1ULL << 0), 727*8d67ca89SAndroid Build Coastguard Worker }; 728*8d67ca89SAndroid Build Coastguard Worker enum { 729*8d67ca89SAndroid Build Coastguard Worker BPF_LOCAL_STORAGE_GET_F_CREATE = (1ULL << 0), 730*8d67ca89SAndroid Build Coastguard Worker BPF_SK_STORAGE_GET_F_CREATE = BPF_LOCAL_STORAGE_GET_F_CREATE, 731*8d67ca89SAndroid Build Coastguard Worker }; 732*8d67ca89SAndroid Build Coastguard Worker enum { 733*8d67ca89SAndroid Build Coastguard Worker BPF_F_GET_BRANCH_RECORDS_SIZE = (1ULL << 0), 734*8d67ca89SAndroid Build Coastguard Worker }; 735*8d67ca89SAndroid Build Coastguard Worker enum { 736*8d67ca89SAndroid Build Coastguard Worker BPF_RB_NO_WAKEUP = (1ULL << 0), 737*8d67ca89SAndroid Build Coastguard Worker BPF_RB_FORCE_WAKEUP = (1ULL << 1), 738*8d67ca89SAndroid Build Coastguard Worker }; 739*8d67ca89SAndroid Build Coastguard Worker enum { 740*8d67ca89SAndroid Build Coastguard Worker BPF_RB_AVAIL_DATA = 0, 741*8d67ca89SAndroid Build Coastguard Worker BPF_RB_RING_SIZE = 1, 742*8d67ca89SAndroid Build Coastguard Worker BPF_RB_CONS_POS = 2, 743*8d67ca89SAndroid Build Coastguard Worker BPF_RB_PROD_POS = 3, 744*8d67ca89SAndroid Build Coastguard Worker }; 745*8d67ca89SAndroid Build Coastguard Worker enum { 746*8d67ca89SAndroid Build Coastguard Worker BPF_RINGBUF_BUSY_BIT = (1U << 31), 747*8d67ca89SAndroid Build Coastguard Worker BPF_RINGBUF_DISCARD_BIT = (1U << 30), 748*8d67ca89SAndroid Build Coastguard Worker BPF_RINGBUF_HDR_SZ = 8, 749*8d67ca89SAndroid Build Coastguard Worker }; 750*8d67ca89SAndroid Build Coastguard Worker enum { 751*8d67ca89SAndroid Build Coastguard Worker BPF_SK_LOOKUP_F_REPLACE = (1ULL << 0), 752*8d67ca89SAndroid Build Coastguard Worker BPF_SK_LOOKUP_F_NO_REUSEPORT = (1ULL << 1), 753*8d67ca89SAndroid Build Coastguard Worker }; 754*8d67ca89SAndroid Build Coastguard Worker enum bpf_adj_room_mode { 755*8d67ca89SAndroid Build Coastguard Worker BPF_ADJ_ROOM_NET, 756*8d67ca89SAndroid Build Coastguard Worker BPF_ADJ_ROOM_MAC, 757*8d67ca89SAndroid Build Coastguard Worker }; 758*8d67ca89SAndroid Build Coastguard Worker enum bpf_hdr_start_off { 759*8d67ca89SAndroid Build Coastguard Worker BPF_HDR_START_MAC, 760*8d67ca89SAndroid Build Coastguard Worker BPF_HDR_START_NET, 761*8d67ca89SAndroid Build Coastguard Worker }; 762*8d67ca89SAndroid Build Coastguard Worker enum bpf_lwt_encap_mode { 763*8d67ca89SAndroid Build Coastguard Worker BPF_LWT_ENCAP_SEG6, 764*8d67ca89SAndroid Build Coastguard Worker BPF_LWT_ENCAP_SEG6_INLINE, 765*8d67ca89SAndroid Build Coastguard Worker BPF_LWT_ENCAP_IP, 766*8d67ca89SAndroid Build Coastguard Worker }; 767*8d67ca89SAndroid Build Coastguard Worker enum { 768*8d67ca89SAndroid Build Coastguard Worker BPF_F_BPRM_SECUREEXEC = (1ULL << 0), 769*8d67ca89SAndroid Build Coastguard Worker }; 770*8d67ca89SAndroid Build Coastguard Worker enum { 771*8d67ca89SAndroid Build Coastguard Worker BPF_F_BROADCAST = (1ULL << 3), 772*8d67ca89SAndroid Build Coastguard Worker BPF_F_EXCLUDE_INGRESS = (1ULL << 4), 773*8d67ca89SAndroid Build Coastguard Worker }; 774*8d67ca89SAndroid Build Coastguard Worker #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \ 775*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))) 776*8d67ca89SAndroid Build Coastguard Worker enum { 777*8d67ca89SAndroid Build Coastguard Worker BPF_SKB_TSTAMP_UNSPEC = 0, 778*8d67ca89SAndroid Build Coastguard Worker BPF_SKB_TSTAMP_DELIVERY_MONO = 1, 779*8d67ca89SAndroid Build Coastguard Worker BPF_SKB_CLOCK_REALTIME = 0, 780*8d67ca89SAndroid Build Coastguard Worker BPF_SKB_CLOCK_MONOTONIC = 1, 781*8d67ca89SAndroid Build Coastguard Worker BPF_SKB_CLOCK_TAI = 2, 782*8d67ca89SAndroid Build Coastguard Worker }; 783*8d67ca89SAndroid Build Coastguard Worker struct __sk_buff { 784*8d67ca89SAndroid Build Coastguard Worker __u32 len; 785*8d67ca89SAndroid Build Coastguard Worker __u32 pkt_type; 786*8d67ca89SAndroid Build Coastguard Worker __u32 mark; 787*8d67ca89SAndroid Build Coastguard Worker __u32 queue_mapping; 788*8d67ca89SAndroid Build Coastguard Worker __u32 protocol; 789*8d67ca89SAndroid Build Coastguard Worker __u32 vlan_present; 790*8d67ca89SAndroid Build Coastguard Worker __u32 vlan_tci; 791*8d67ca89SAndroid Build Coastguard Worker __u32 vlan_proto; 792*8d67ca89SAndroid Build Coastguard Worker __u32 priority; 793*8d67ca89SAndroid Build Coastguard Worker __u32 ingress_ifindex; 794*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 795*8d67ca89SAndroid Build Coastguard Worker __u32 tc_index; 796*8d67ca89SAndroid Build Coastguard Worker __u32 cb[5]; 797*8d67ca89SAndroid Build Coastguard Worker __u32 hash; 798*8d67ca89SAndroid Build Coastguard Worker __u32 tc_classid; 799*8d67ca89SAndroid Build Coastguard Worker __u32 data; 800*8d67ca89SAndroid Build Coastguard Worker __u32 data_end; 801*8d67ca89SAndroid Build Coastguard Worker __u32 napi_id; 802*8d67ca89SAndroid Build Coastguard Worker __u32 family; 803*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip4; 804*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip4; 805*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip6[4]; 806*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip6[4]; 807*8d67ca89SAndroid Build Coastguard Worker __u32 remote_port; 808*8d67ca89SAndroid Build Coastguard Worker __u32 local_port; 809*8d67ca89SAndroid Build Coastguard Worker __u32 data_meta; 810*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_flow_keys *, flow_keys); 811*8d67ca89SAndroid Build Coastguard Worker __u64 tstamp; 812*8d67ca89SAndroid Build Coastguard Worker __u32 wire_len; 813*8d67ca89SAndroid Build Coastguard Worker __u32 gso_segs; 814*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 815*8d67ca89SAndroid Build Coastguard Worker __u32 gso_size; 816*8d67ca89SAndroid Build Coastguard Worker __u8 tstamp_type; 817*8d67ca89SAndroid Build Coastguard Worker __u32 : 24; 818*8d67ca89SAndroid Build Coastguard Worker __u64 hwtstamp; 819*8d67ca89SAndroid Build Coastguard Worker }; 820*8d67ca89SAndroid Build Coastguard Worker struct bpf_tunnel_key { 821*8d67ca89SAndroid Build Coastguard Worker __u32 tunnel_id; 822*8d67ca89SAndroid Build Coastguard Worker union { 823*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ipv4; 824*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ipv6[4]; 825*8d67ca89SAndroid Build Coastguard Worker }; 826*8d67ca89SAndroid Build Coastguard Worker __u8 tunnel_tos; 827*8d67ca89SAndroid Build Coastguard Worker __u8 tunnel_ttl; 828*8d67ca89SAndroid Build Coastguard Worker union { 829*8d67ca89SAndroid Build Coastguard Worker __u16 tunnel_ext; 830*8d67ca89SAndroid Build Coastguard Worker __be16 tunnel_flags; 831*8d67ca89SAndroid Build Coastguard Worker }; 832*8d67ca89SAndroid Build Coastguard Worker __u32 tunnel_label; 833*8d67ca89SAndroid Build Coastguard Worker union { 834*8d67ca89SAndroid Build Coastguard Worker __u32 local_ipv4; 835*8d67ca89SAndroid Build Coastguard Worker __u32 local_ipv6[4]; 836*8d67ca89SAndroid Build Coastguard Worker }; 837*8d67ca89SAndroid Build Coastguard Worker }; 838*8d67ca89SAndroid Build Coastguard Worker struct bpf_xfrm_state { 839*8d67ca89SAndroid Build Coastguard Worker __u32 reqid; 840*8d67ca89SAndroid Build Coastguard Worker __u32 spi; 841*8d67ca89SAndroid Build Coastguard Worker __u16 family; 842*8d67ca89SAndroid Build Coastguard Worker __u16 ext; 843*8d67ca89SAndroid Build Coastguard Worker union { 844*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ipv4; 845*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ipv6[4]; 846*8d67ca89SAndroid Build Coastguard Worker }; 847*8d67ca89SAndroid Build Coastguard Worker }; 848*8d67ca89SAndroid Build Coastguard Worker enum bpf_ret_code { 849*8d67ca89SAndroid Build Coastguard Worker BPF_OK = 0, 850*8d67ca89SAndroid Build Coastguard Worker BPF_DROP = 2, 851*8d67ca89SAndroid Build Coastguard Worker BPF_REDIRECT = 7, 852*8d67ca89SAndroid Build Coastguard Worker BPF_LWT_REROUTE = 128, 853*8d67ca89SAndroid Build Coastguard Worker BPF_FLOW_DISSECTOR_CONTINUE = 129, 854*8d67ca89SAndroid Build Coastguard Worker }; 855*8d67ca89SAndroid Build Coastguard Worker struct bpf_sock { 856*8d67ca89SAndroid Build Coastguard Worker __u32 bound_dev_if; 857*8d67ca89SAndroid Build Coastguard Worker __u32 family; 858*8d67ca89SAndroid Build Coastguard Worker __u32 type; 859*8d67ca89SAndroid Build Coastguard Worker __u32 protocol; 860*8d67ca89SAndroid Build Coastguard Worker __u32 mark; 861*8d67ca89SAndroid Build Coastguard Worker __u32 priority; 862*8d67ca89SAndroid Build Coastguard Worker __u32 src_ip4; 863*8d67ca89SAndroid Build Coastguard Worker __u32 src_ip6[4]; 864*8d67ca89SAndroid Build Coastguard Worker __u32 src_port; 865*8d67ca89SAndroid Build Coastguard Worker __be16 dst_port; 866*8d67ca89SAndroid Build Coastguard Worker __u16 : 16; 867*8d67ca89SAndroid Build Coastguard Worker __u32 dst_ip4; 868*8d67ca89SAndroid Build Coastguard Worker __u32 dst_ip6[4]; 869*8d67ca89SAndroid Build Coastguard Worker __u32 state; 870*8d67ca89SAndroid Build Coastguard Worker __s32 rx_queue_mapping; 871*8d67ca89SAndroid Build Coastguard Worker }; 872*8d67ca89SAndroid Build Coastguard Worker struct bpf_tcp_sock { 873*8d67ca89SAndroid Build Coastguard Worker __u32 snd_cwnd; 874*8d67ca89SAndroid Build Coastguard Worker __u32 srtt_us; 875*8d67ca89SAndroid Build Coastguard Worker __u32 rtt_min; 876*8d67ca89SAndroid Build Coastguard Worker __u32 snd_ssthresh; 877*8d67ca89SAndroid Build Coastguard Worker __u32 rcv_nxt; 878*8d67ca89SAndroid Build Coastguard Worker __u32 snd_nxt; 879*8d67ca89SAndroid Build Coastguard Worker __u32 snd_una; 880*8d67ca89SAndroid Build Coastguard Worker __u32 mss_cache; 881*8d67ca89SAndroid Build Coastguard Worker __u32 ecn_flags; 882*8d67ca89SAndroid Build Coastguard Worker __u32 rate_delivered; 883*8d67ca89SAndroid Build Coastguard Worker __u32 rate_interval_us; 884*8d67ca89SAndroid Build Coastguard Worker __u32 packets_out; 885*8d67ca89SAndroid Build Coastguard Worker __u32 retrans_out; 886*8d67ca89SAndroid Build Coastguard Worker __u32 total_retrans; 887*8d67ca89SAndroid Build Coastguard Worker __u32 segs_in; 888*8d67ca89SAndroid Build Coastguard Worker __u32 data_segs_in; 889*8d67ca89SAndroid Build Coastguard Worker __u32 segs_out; 890*8d67ca89SAndroid Build Coastguard Worker __u32 data_segs_out; 891*8d67ca89SAndroid Build Coastguard Worker __u32 lost_out; 892*8d67ca89SAndroid Build Coastguard Worker __u32 sacked_out; 893*8d67ca89SAndroid Build Coastguard Worker __u64 bytes_received; 894*8d67ca89SAndroid Build Coastguard Worker __u64 bytes_acked; 895*8d67ca89SAndroid Build Coastguard Worker __u32 dsack_dups; 896*8d67ca89SAndroid Build Coastguard Worker __u32 delivered; 897*8d67ca89SAndroid Build Coastguard Worker __u32 delivered_ce; 898*8d67ca89SAndroid Build Coastguard Worker __u32 icsk_retransmits; 899*8d67ca89SAndroid Build Coastguard Worker }; 900*8d67ca89SAndroid Build Coastguard Worker struct bpf_sock_tuple { 901*8d67ca89SAndroid Build Coastguard Worker union { 902*8d67ca89SAndroid Build Coastguard Worker struct { 903*8d67ca89SAndroid Build Coastguard Worker __be32 saddr; 904*8d67ca89SAndroid Build Coastguard Worker __be32 daddr; 905*8d67ca89SAndroid Build Coastguard Worker __be16 sport; 906*8d67ca89SAndroid Build Coastguard Worker __be16 dport; 907*8d67ca89SAndroid Build Coastguard Worker } ipv4; 908*8d67ca89SAndroid Build Coastguard Worker struct { 909*8d67ca89SAndroid Build Coastguard Worker __be32 saddr[4]; 910*8d67ca89SAndroid Build Coastguard Worker __be32 daddr[4]; 911*8d67ca89SAndroid Build Coastguard Worker __be16 sport; 912*8d67ca89SAndroid Build Coastguard Worker __be16 dport; 913*8d67ca89SAndroid Build Coastguard Worker } ipv6; 914*8d67ca89SAndroid Build Coastguard Worker }; 915*8d67ca89SAndroid Build Coastguard Worker }; 916*8d67ca89SAndroid Build Coastguard Worker enum tcx_action_base { 917*8d67ca89SAndroid Build Coastguard Worker TCX_NEXT = - 1, 918*8d67ca89SAndroid Build Coastguard Worker TCX_PASS = 0, 919*8d67ca89SAndroid Build Coastguard Worker TCX_DROP = 2, 920*8d67ca89SAndroid Build Coastguard Worker TCX_REDIRECT = 7, 921*8d67ca89SAndroid Build Coastguard Worker }; 922*8d67ca89SAndroid Build Coastguard Worker struct bpf_xdp_sock { 923*8d67ca89SAndroid Build Coastguard Worker __u32 queue_id; 924*8d67ca89SAndroid Build Coastguard Worker }; 925*8d67ca89SAndroid Build Coastguard Worker #define XDP_PACKET_HEADROOM 256 926*8d67ca89SAndroid Build Coastguard Worker enum xdp_action { 927*8d67ca89SAndroid Build Coastguard Worker XDP_ABORTED = 0, 928*8d67ca89SAndroid Build Coastguard Worker XDP_DROP, 929*8d67ca89SAndroid Build Coastguard Worker XDP_PASS, 930*8d67ca89SAndroid Build Coastguard Worker XDP_TX, 931*8d67ca89SAndroid Build Coastguard Worker XDP_REDIRECT, 932*8d67ca89SAndroid Build Coastguard Worker }; 933*8d67ca89SAndroid Build Coastguard Worker struct xdp_md { 934*8d67ca89SAndroid Build Coastguard Worker __u32 data; 935*8d67ca89SAndroid Build Coastguard Worker __u32 data_end; 936*8d67ca89SAndroid Build Coastguard Worker __u32 data_meta; 937*8d67ca89SAndroid Build Coastguard Worker __u32 ingress_ifindex; 938*8d67ca89SAndroid Build Coastguard Worker __u32 rx_queue_index; 939*8d67ca89SAndroid Build Coastguard Worker __u32 egress_ifindex; 940*8d67ca89SAndroid Build Coastguard Worker }; 941*8d67ca89SAndroid Build Coastguard Worker struct bpf_devmap_val { 942*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 943*8d67ca89SAndroid Build Coastguard Worker union { 944*8d67ca89SAndroid Build Coastguard Worker int fd; 945*8d67ca89SAndroid Build Coastguard Worker __u32 id; 946*8d67ca89SAndroid Build Coastguard Worker } bpf_prog; 947*8d67ca89SAndroid Build Coastguard Worker }; 948*8d67ca89SAndroid Build Coastguard Worker struct bpf_cpumap_val { 949*8d67ca89SAndroid Build Coastguard Worker __u32 qsize; 950*8d67ca89SAndroid Build Coastguard Worker union { 951*8d67ca89SAndroid Build Coastguard Worker int fd; 952*8d67ca89SAndroid Build Coastguard Worker __u32 id; 953*8d67ca89SAndroid Build Coastguard Worker } bpf_prog; 954*8d67ca89SAndroid Build Coastguard Worker }; 955*8d67ca89SAndroid Build Coastguard Worker enum sk_action { 956*8d67ca89SAndroid Build Coastguard Worker SK_DROP = 0, 957*8d67ca89SAndroid Build Coastguard Worker SK_PASS, 958*8d67ca89SAndroid Build Coastguard Worker }; 959*8d67ca89SAndroid Build Coastguard Worker struct sk_msg_md { 960*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, data); 961*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, data_end); 962*8d67ca89SAndroid Build Coastguard Worker __u32 family; 963*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip4; 964*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip4; 965*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip6[4]; 966*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip6[4]; 967*8d67ca89SAndroid Build Coastguard Worker __u32 remote_port; 968*8d67ca89SAndroid Build Coastguard Worker __u32 local_port; 969*8d67ca89SAndroid Build Coastguard Worker __u32 size; 970*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 971*8d67ca89SAndroid Build Coastguard Worker }; 972*8d67ca89SAndroid Build Coastguard Worker struct sk_reuseport_md { 973*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, data); 974*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, data_end); 975*8d67ca89SAndroid Build Coastguard Worker __u32 len; 976*8d67ca89SAndroid Build Coastguard Worker __u32 eth_protocol; 977*8d67ca89SAndroid Build Coastguard Worker __u32 ip_protocol; 978*8d67ca89SAndroid Build Coastguard Worker __u32 bind_inany; 979*8d67ca89SAndroid Build Coastguard Worker __u32 hash; 980*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 981*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, migrating_sk); 982*8d67ca89SAndroid Build Coastguard Worker }; 983*8d67ca89SAndroid Build Coastguard Worker #define BPF_TAG_SIZE 8 984*8d67ca89SAndroid Build Coastguard Worker struct bpf_prog_info { 985*8d67ca89SAndroid Build Coastguard Worker __u32 type; 986*8d67ca89SAndroid Build Coastguard Worker __u32 id; 987*8d67ca89SAndroid Build Coastguard Worker __u8 tag[BPF_TAG_SIZE]; 988*8d67ca89SAndroid Build Coastguard Worker __u32 jited_prog_len; 989*8d67ca89SAndroid Build Coastguard Worker __u32 xlated_prog_len; 990*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 jited_prog_insns; 991*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 xlated_prog_insns; 992*8d67ca89SAndroid Build Coastguard Worker __u64 load_time; 993*8d67ca89SAndroid Build Coastguard Worker __u32 created_by_uid; 994*8d67ca89SAndroid Build Coastguard Worker __u32 nr_map_ids; 995*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 map_ids; 996*8d67ca89SAndroid Build Coastguard Worker char name[BPF_OBJ_NAME_LEN]; 997*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 998*8d67ca89SAndroid Build Coastguard Worker __u32 gpl_compatible : 1; 999*8d67ca89SAndroid Build Coastguard Worker __u32 : 31; 1000*8d67ca89SAndroid Build Coastguard Worker __u64 netns_dev; 1001*8d67ca89SAndroid Build Coastguard Worker __u64 netns_ino; 1002*8d67ca89SAndroid Build Coastguard Worker __u32 nr_jited_ksyms; 1003*8d67ca89SAndroid Build Coastguard Worker __u32 nr_jited_func_lens; 1004*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 jited_ksyms; 1005*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 jited_func_lens; 1006*8d67ca89SAndroid Build Coastguard Worker __u32 btf_id; 1007*8d67ca89SAndroid Build Coastguard Worker __u32 func_info_rec_size; 1008*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 func_info; 1009*8d67ca89SAndroid Build Coastguard Worker __u32 nr_func_info; 1010*8d67ca89SAndroid Build Coastguard Worker __u32 nr_line_info; 1011*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 line_info; 1012*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 jited_line_info; 1013*8d67ca89SAndroid Build Coastguard Worker __u32 nr_jited_line_info; 1014*8d67ca89SAndroid Build Coastguard Worker __u32 line_info_rec_size; 1015*8d67ca89SAndroid Build Coastguard Worker __u32 jited_line_info_rec_size; 1016*8d67ca89SAndroid Build Coastguard Worker __u32 nr_prog_tags; 1017*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 prog_tags; 1018*8d67ca89SAndroid Build Coastguard Worker __u64 run_time_ns; 1019*8d67ca89SAndroid Build Coastguard Worker __u64 run_cnt; 1020*8d67ca89SAndroid Build Coastguard Worker __u64 recursion_misses; 1021*8d67ca89SAndroid Build Coastguard Worker __u32 verified_insns; 1022*8d67ca89SAndroid Build Coastguard Worker __u32 attach_btf_obj_id; 1023*8d67ca89SAndroid Build Coastguard Worker __u32 attach_btf_id; 1024*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1025*8d67ca89SAndroid Build Coastguard Worker struct bpf_map_info { 1026*8d67ca89SAndroid Build Coastguard Worker __u32 type; 1027*8d67ca89SAndroid Build Coastguard Worker __u32 id; 1028*8d67ca89SAndroid Build Coastguard Worker __u32 key_size; 1029*8d67ca89SAndroid Build Coastguard Worker __u32 value_size; 1030*8d67ca89SAndroid Build Coastguard Worker __u32 max_entries; 1031*8d67ca89SAndroid Build Coastguard Worker __u32 map_flags; 1032*8d67ca89SAndroid Build Coastguard Worker char name[BPF_OBJ_NAME_LEN]; 1033*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 1034*8d67ca89SAndroid Build Coastguard Worker __u32 btf_vmlinux_value_type_id; 1035*8d67ca89SAndroid Build Coastguard Worker __u64 netns_dev; 1036*8d67ca89SAndroid Build Coastguard Worker __u64 netns_ino; 1037*8d67ca89SAndroid Build Coastguard Worker __u32 btf_id; 1038*8d67ca89SAndroid Build Coastguard Worker __u32 btf_key_type_id; 1039*8d67ca89SAndroid Build Coastguard Worker __u32 btf_value_type_id; 1040*8d67ca89SAndroid Build Coastguard Worker __u32 btf_vmlinux_id; 1041*8d67ca89SAndroid Build Coastguard Worker __u64 map_extra; 1042*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1043*8d67ca89SAndroid Build Coastguard Worker struct bpf_btf_info { 1044*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 btf; 1045*8d67ca89SAndroid Build Coastguard Worker __u32 btf_size; 1046*8d67ca89SAndroid Build Coastguard Worker __u32 id; 1047*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 name; 1048*8d67ca89SAndroid Build Coastguard Worker __u32 name_len; 1049*8d67ca89SAndroid Build Coastguard Worker __u32 kernel_btf; 1050*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1051*8d67ca89SAndroid Build Coastguard Worker struct bpf_link_info { 1052*8d67ca89SAndroid Build Coastguard Worker __u32 type; 1053*8d67ca89SAndroid Build Coastguard Worker __u32 id; 1054*8d67ca89SAndroid Build Coastguard Worker __u32 prog_id; 1055*8d67ca89SAndroid Build Coastguard Worker union { 1056*8d67ca89SAndroid Build Coastguard Worker struct { 1057*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 tp_name; 1058*8d67ca89SAndroid Build Coastguard Worker __u32 tp_name_len; 1059*8d67ca89SAndroid Build Coastguard Worker } raw_tracepoint; 1060*8d67ca89SAndroid Build Coastguard Worker struct { 1061*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1062*8d67ca89SAndroid Build Coastguard Worker __u32 target_obj_id; 1063*8d67ca89SAndroid Build Coastguard Worker __u32 target_btf_id; 1064*8d67ca89SAndroid Build Coastguard Worker } tracing; 1065*8d67ca89SAndroid Build Coastguard Worker struct { 1066*8d67ca89SAndroid Build Coastguard Worker __u64 cgroup_id; 1067*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1068*8d67ca89SAndroid Build Coastguard Worker } cgroup; 1069*8d67ca89SAndroid Build Coastguard Worker struct { 1070*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 target_name; 1071*8d67ca89SAndroid Build Coastguard Worker __u32 target_name_len; 1072*8d67ca89SAndroid Build Coastguard Worker union { 1073*8d67ca89SAndroid Build Coastguard Worker struct { 1074*8d67ca89SAndroid Build Coastguard Worker __u32 map_id; 1075*8d67ca89SAndroid Build Coastguard Worker } map; 1076*8d67ca89SAndroid Build Coastguard Worker }; 1077*8d67ca89SAndroid Build Coastguard Worker union { 1078*8d67ca89SAndroid Build Coastguard Worker struct { 1079*8d67ca89SAndroid Build Coastguard Worker __u64 cgroup_id; 1080*8d67ca89SAndroid Build Coastguard Worker __u32 order; 1081*8d67ca89SAndroid Build Coastguard Worker } cgroup; 1082*8d67ca89SAndroid Build Coastguard Worker struct { 1083*8d67ca89SAndroid Build Coastguard Worker __u32 tid; 1084*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 1085*8d67ca89SAndroid Build Coastguard Worker } task; 1086*8d67ca89SAndroid Build Coastguard Worker }; 1087*8d67ca89SAndroid Build Coastguard Worker } iter; 1088*8d67ca89SAndroid Build Coastguard Worker struct { 1089*8d67ca89SAndroid Build Coastguard Worker __u32 netns_ino; 1090*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1091*8d67ca89SAndroid Build Coastguard Worker } netns; 1092*8d67ca89SAndroid Build Coastguard Worker struct { 1093*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 1094*8d67ca89SAndroid Build Coastguard Worker } xdp; 1095*8d67ca89SAndroid Build Coastguard Worker struct { 1096*8d67ca89SAndroid Build Coastguard Worker __u32 map_id; 1097*8d67ca89SAndroid Build Coastguard Worker } struct_ops; 1098*8d67ca89SAndroid Build Coastguard Worker struct { 1099*8d67ca89SAndroid Build Coastguard Worker __u32 pf; 1100*8d67ca89SAndroid Build Coastguard Worker __u32 hooknum; 1101*8d67ca89SAndroid Build Coastguard Worker __s32 priority; 1102*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 1103*8d67ca89SAndroid Build Coastguard Worker } netfilter; 1104*8d67ca89SAndroid Build Coastguard Worker struct { 1105*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 addrs; 1106*8d67ca89SAndroid Build Coastguard Worker __u32 count; 1107*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 1108*8d67ca89SAndroid Build Coastguard Worker __u64 missed; 1109*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 cookies; 1110*8d67ca89SAndroid Build Coastguard Worker } kprobe_multi; 1111*8d67ca89SAndroid Build Coastguard Worker struct { 1112*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 path; 1113*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 offsets; 1114*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 ref_ctr_offsets; 1115*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 cookies; 1116*8d67ca89SAndroid Build Coastguard Worker __u32 path_size; 1117*8d67ca89SAndroid Build Coastguard Worker __u32 count; 1118*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 1119*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 1120*8d67ca89SAndroid Build Coastguard Worker } uprobe_multi; 1121*8d67ca89SAndroid Build Coastguard Worker struct { 1122*8d67ca89SAndroid Build Coastguard Worker __u32 type; 1123*8d67ca89SAndroid Build Coastguard Worker __u32 : 32; 1124*8d67ca89SAndroid Build Coastguard Worker union { 1125*8d67ca89SAndroid Build Coastguard Worker struct { 1126*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 file_name; 1127*8d67ca89SAndroid Build Coastguard Worker __u32 name_len; 1128*8d67ca89SAndroid Build Coastguard Worker __u32 offset; 1129*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 1130*8d67ca89SAndroid Build Coastguard Worker } uprobe; 1131*8d67ca89SAndroid Build Coastguard Worker struct { 1132*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 func_name; 1133*8d67ca89SAndroid Build Coastguard Worker __u32 name_len; 1134*8d67ca89SAndroid Build Coastguard Worker __u32 offset; 1135*8d67ca89SAndroid Build Coastguard Worker __u64 addr; 1136*8d67ca89SAndroid Build Coastguard Worker __u64 missed; 1137*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 1138*8d67ca89SAndroid Build Coastguard Worker } kprobe; 1139*8d67ca89SAndroid Build Coastguard Worker struct { 1140*8d67ca89SAndroid Build Coastguard Worker __aligned_u64 tp_name; 1141*8d67ca89SAndroid Build Coastguard Worker __u32 name_len; 1142*8d67ca89SAndroid Build Coastguard Worker __u32 : 32; 1143*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 1144*8d67ca89SAndroid Build Coastguard Worker } tracepoint; 1145*8d67ca89SAndroid Build Coastguard Worker struct { 1146*8d67ca89SAndroid Build Coastguard Worker __u64 config; 1147*8d67ca89SAndroid Build Coastguard Worker __u32 type; 1148*8d67ca89SAndroid Build Coastguard Worker __u32 : 32; 1149*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 1150*8d67ca89SAndroid Build Coastguard Worker } event; 1151*8d67ca89SAndroid Build Coastguard Worker }; 1152*8d67ca89SAndroid Build Coastguard Worker } perf_event; 1153*8d67ca89SAndroid Build Coastguard Worker struct { 1154*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 1155*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1156*8d67ca89SAndroid Build Coastguard Worker } tcx; 1157*8d67ca89SAndroid Build Coastguard Worker struct { 1158*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 1159*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1160*8d67ca89SAndroid Build Coastguard Worker } netkit; 1161*8d67ca89SAndroid Build Coastguard Worker struct { 1162*8d67ca89SAndroid Build Coastguard Worker __u32 map_id; 1163*8d67ca89SAndroid Build Coastguard Worker __u32 attach_type; 1164*8d67ca89SAndroid Build Coastguard Worker } sockmap; 1165*8d67ca89SAndroid Build Coastguard Worker }; 1166*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1167*8d67ca89SAndroid Build Coastguard Worker struct bpf_sock_addr { 1168*8d67ca89SAndroid Build Coastguard Worker __u32 user_family; 1169*8d67ca89SAndroid Build Coastguard Worker __u32 user_ip4; 1170*8d67ca89SAndroid Build Coastguard Worker __u32 user_ip6[4]; 1171*8d67ca89SAndroid Build Coastguard Worker __u32 user_port; 1172*8d67ca89SAndroid Build Coastguard Worker __u32 family; 1173*8d67ca89SAndroid Build Coastguard Worker __u32 type; 1174*8d67ca89SAndroid Build Coastguard Worker __u32 protocol; 1175*8d67ca89SAndroid Build Coastguard Worker __u32 msg_src_ip4; 1176*8d67ca89SAndroid Build Coastguard Worker __u32 msg_src_ip6[4]; 1177*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 1178*8d67ca89SAndroid Build Coastguard Worker }; 1179*8d67ca89SAndroid Build Coastguard Worker struct bpf_sock_ops { 1180*8d67ca89SAndroid Build Coastguard Worker __u32 op; 1181*8d67ca89SAndroid Build Coastguard Worker union { 1182*8d67ca89SAndroid Build Coastguard Worker __u32 args[4]; 1183*8d67ca89SAndroid Build Coastguard Worker __u32 reply; 1184*8d67ca89SAndroid Build Coastguard Worker __u32 replylong[4]; 1185*8d67ca89SAndroid Build Coastguard Worker }; 1186*8d67ca89SAndroid Build Coastguard Worker __u32 family; 1187*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip4; 1188*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip4; 1189*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip6[4]; 1190*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip6[4]; 1191*8d67ca89SAndroid Build Coastguard Worker __u32 remote_port; 1192*8d67ca89SAndroid Build Coastguard Worker __u32 local_port; 1193*8d67ca89SAndroid Build Coastguard Worker __u32 is_fullsock; 1194*8d67ca89SAndroid Build Coastguard Worker __u32 snd_cwnd; 1195*8d67ca89SAndroid Build Coastguard Worker __u32 srtt_us; 1196*8d67ca89SAndroid Build Coastguard Worker __u32 bpf_sock_ops_cb_flags; 1197*8d67ca89SAndroid Build Coastguard Worker __u32 state; 1198*8d67ca89SAndroid Build Coastguard Worker __u32 rtt_min; 1199*8d67ca89SAndroid Build Coastguard Worker __u32 snd_ssthresh; 1200*8d67ca89SAndroid Build Coastguard Worker __u32 rcv_nxt; 1201*8d67ca89SAndroid Build Coastguard Worker __u32 snd_nxt; 1202*8d67ca89SAndroid Build Coastguard Worker __u32 snd_una; 1203*8d67ca89SAndroid Build Coastguard Worker __u32 mss_cache; 1204*8d67ca89SAndroid Build Coastguard Worker __u32 ecn_flags; 1205*8d67ca89SAndroid Build Coastguard Worker __u32 rate_delivered; 1206*8d67ca89SAndroid Build Coastguard Worker __u32 rate_interval_us; 1207*8d67ca89SAndroid Build Coastguard Worker __u32 packets_out; 1208*8d67ca89SAndroid Build Coastguard Worker __u32 retrans_out; 1209*8d67ca89SAndroid Build Coastguard Worker __u32 total_retrans; 1210*8d67ca89SAndroid Build Coastguard Worker __u32 segs_in; 1211*8d67ca89SAndroid Build Coastguard Worker __u32 data_segs_in; 1212*8d67ca89SAndroid Build Coastguard Worker __u32 segs_out; 1213*8d67ca89SAndroid Build Coastguard Worker __u32 data_segs_out; 1214*8d67ca89SAndroid Build Coastguard Worker __u32 lost_out; 1215*8d67ca89SAndroid Build Coastguard Worker __u32 sacked_out; 1216*8d67ca89SAndroid Build Coastguard Worker __u32 sk_txhash; 1217*8d67ca89SAndroid Build Coastguard Worker __u64 bytes_received; 1218*8d67ca89SAndroid Build Coastguard Worker __u64 bytes_acked; 1219*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 1220*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, skb_data); 1221*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, skb_data_end); 1222*8d67ca89SAndroid Build Coastguard Worker __u32 skb_len; 1223*8d67ca89SAndroid Build Coastguard Worker __u32 skb_tcp_flags; 1224*8d67ca89SAndroid Build Coastguard Worker __u64 skb_hwtstamp; 1225*8d67ca89SAndroid Build Coastguard Worker }; 1226*8d67ca89SAndroid Build Coastguard Worker enum { 1227*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RTO_CB_FLAG = (1 << 0), 1228*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RETRANS_CB_FLAG = (1 << 1), 1229*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_STATE_CB_FLAG = (1 << 2), 1230*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RTT_CB_FLAG = (1 << 3), 1231*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = (1 << 4), 1232*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = (1 << 5), 1233*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = (1 << 6), 1234*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F, 1235*8d67ca89SAndroid Build Coastguard Worker }; 1236*8d67ca89SAndroid Build Coastguard Worker enum { 1237*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_VOID, 1238*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_TIMEOUT_INIT, 1239*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RWND_INIT, 1240*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_TCP_CONNECT_CB, 1241*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB, 1242*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB, 1243*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_NEEDS_ECN, 1244*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_BASE_RTT, 1245*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RTO_CB, 1246*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RETRANS_CB, 1247*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_STATE_CB, 1248*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_TCP_LISTEN_CB, 1249*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_RTT_CB, 1250*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_PARSE_HDR_OPT_CB, 1251*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_HDR_OPT_LEN_CB, 1252*8d67ca89SAndroid Build Coastguard Worker BPF_SOCK_OPS_WRITE_HDR_OPT_CB, 1253*8d67ca89SAndroid Build Coastguard Worker }; 1254*8d67ca89SAndroid Build Coastguard Worker enum { 1255*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_ESTABLISHED = 1, 1256*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_SYN_SENT, 1257*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_SYN_RECV, 1258*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_FIN_WAIT1, 1259*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_FIN_WAIT2, 1260*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_TIME_WAIT, 1261*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_CLOSE, 1262*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_CLOSE_WAIT, 1263*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_LAST_ACK, 1264*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_LISTEN, 1265*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_CLOSING, 1266*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_NEW_SYN_RECV, 1267*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_BOUND_INACTIVE, 1268*8d67ca89SAndroid Build Coastguard Worker BPF_TCP_MAX_STATES 1269*8d67ca89SAndroid Build Coastguard Worker }; 1270*8d67ca89SAndroid Build Coastguard Worker enum { 1271*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_IW = 1001, 1272*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_SNDCWND_CLAMP = 1002, 1273*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_DELACK_MAX = 1003, 1274*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_RTO_MIN = 1004, 1275*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_SYN = 1005, 1276*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_SYN_IP = 1006, 1277*8d67ca89SAndroid Build Coastguard Worker TCP_BPF_SYN_MAC = 1007, 1278*8d67ca89SAndroid Build Coastguard Worker }; 1279*8d67ca89SAndroid Build Coastguard Worker enum { 1280*8d67ca89SAndroid Build Coastguard Worker BPF_LOAD_HDR_OPT_TCP_SYN = (1ULL << 0), 1281*8d67ca89SAndroid Build Coastguard Worker }; 1282*8d67ca89SAndroid Build Coastguard Worker enum { 1283*8d67ca89SAndroid Build Coastguard Worker BPF_WRITE_HDR_TCP_CURRENT_MSS = 1, 1284*8d67ca89SAndroid Build Coastguard Worker BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2, 1285*8d67ca89SAndroid Build Coastguard Worker }; 1286*8d67ca89SAndroid Build Coastguard Worker struct bpf_perf_event_value { 1287*8d67ca89SAndroid Build Coastguard Worker __u64 counter; 1288*8d67ca89SAndroid Build Coastguard Worker __u64 enabled; 1289*8d67ca89SAndroid Build Coastguard Worker __u64 running; 1290*8d67ca89SAndroid Build Coastguard Worker }; 1291*8d67ca89SAndroid Build Coastguard Worker enum { 1292*8d67ca89SAndroid Build Coastguard Worker BPF_DEVCG_ACC_MKNOD = (1ULL << 0), 1293*8d67ca89SAndroid Build Coastguard Worker BPF_DEVCG_ACC_READ = (1ULL << 1), 1294*8d67ca89SAndroid Build Coastguard Worker BPF_DEVCG_ACC_WRITE = (1ULL << 2), 1295*8d67ca89SAndroid Build Coastguard Worker }; 1296*8d67ca89SAndroid Build Coastguard Worker enum { 1297*8d67ca89SAndroid Build Coastguard Worker BPF_DEVCG_DEV_BLOCK = (1ULL << 0), 1298*8d67ca89SAndroid Build Coastguard Worker BPF_DEVCG_DEV_CHAR = (1ULL << 1), 1299*8d67ca89SAndroid Build Coastguard Worker }; 1300*8d67ca89SAndroid Build Coastguard Worker struct bpf_cgroup_dev_ctx { 1301*8d67ca89SAndroid Build Coastguard Worker __u32 access_type; 1302*8d67ca89SAndroid Build Coastguard Worker __u32 major; 1303*8d67ca89SAndroid Build Coastguard Worker __u32 minor; 1304*8d67ca89SAndroid Build Coastguard Worker }; 1305*8d67ca89SAndroid Build Coastguard Worker struct bpf_raw_tracepoint_args { 1306*8d67ca89SAndroid Build Coastguard Worker __u64 args[0]; 1307*8d67ca89SAndroid Build Coastguard Worker }; 1308*8d67ca89SAndroid Build Coastguard Worker enum { 1309*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_DIRECT = (1U << 0), 1310*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_OUTPUT = (1U << 1), 1311*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_SKIP_NEIGH = (1U << 2), 1312*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_TBID = (1U << 3), 1313*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_SRC = (1U << 4), 1314*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LOOKUP_MARK = (1U << 5), 1315*8d67ca89SAndroid Build Coastguard Worker }; 1316*8d67ca89SAndroid Build Coastguard Worker enum { 1317*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_SUCCESS, 1318*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_BLACKHOLE, 1319*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_UNREACHABLE, 1320*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_PROHIBIT, 1321*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_NOT_FWDED, 1322*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_FWD_DISABLED, 1323*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_UNSUPP_LWT, 1324*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_NO_NEIGH, 1325*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_FRAG_NEEDED, 1326*8d67ca89SAndroid Build Coastguard Worker BPF_FIB_LKUP_RET_NO_SRC_ADDR, 1327*8d67ca89SAndroid Build Coastguard Worker }; 1328*8d67ca89SAndroid Build Coastguard Worker struct bpf_fib_lookup { 1329*8d67ca89SAndroid Build Coastguard Worker __u8 family; 1330*8d67ca89SAndroid Build Coastguard Worker __u8 l4_protocol; 1331*8d67ca89SAndroid Build Coastguard Worker __be16 sport; 1332*8d67ca89SAndroid Build Coastguard Worker __be16 dport; 1333*8d67ca89SAndroid Build Coastguard Worker union { 1334*8d67ca89SAndroid Build Coastguard Worker __u16 tot_len; 1335*8d67ca89SAndroid Build Coastguard Worker __u16 mtu_result; 1336*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed, aligned(2))); 1337*8d67ca89SAndroid Build Coastguard Worker __u32 ifindex; 1338*8d67ca89SAndroid Build Coastguard Worker union { 1339*8d67ca89SAndroid Build Coastguard Worker __u8 tos; 1340*8d67ca89SAndroid Build Coastguard Worker __be32 flowinfo; 1341*8d67ca89SAndroid Build Coastguard Worker __u32 rt_metric; 1342*8d67ca89SAndroid Build Coastguard Worker }; 1343*8d67ca89SAndroid Build Coastguard Worker union { 1344*8d67ca89SAndroid Build Coastguard Worker __be32 ipv4_src; 1345*8d67ca89SAndroid Build Coastguard Worker __u32 ipv6_src[4]; 1346*8d67ca89SAndroid Build Coastguard Worker }; 1347*8d67ca89SAndroid Build Coastguard Worker union { 1348*8d67ca89SAndroid Build Coastguard Worker __be32 ipv4_dst; 1349*8d67ca89SAndroid Build Coastguard Worker __u32 ipv6_dst[4]; 1350*8d67ca89SAndroid Build Coastguard Worker }; 1351*8d67ca89SAndroid Build Coastguard Worker union { 1352*8d67ca89SAndroid Build Coastguard Worker struct { 1353*8d67ca89SAndroid Build Coastguard Worker __be16 h_vlan_proto; 1354*8d67ca89SAndroid Build Coastguard Worker __be16 h_vlan_TCI; 1355*8d67ca89SAndroid Build Coastguard Worker }; 1356*8d67ca89SAndroid Build Coastguard Worker __u32 tbid; 1357*8d67ca89SAndroid Build Coastguard Worker }; 1358*8d67ca89SAndroid Build Coastguard Worker union { 1359*8d67ca89SAndroid Build Coastguard Worker struct { 1360*8d67ca89SAndroid Build Coastguard Worker __u32 mark; 1361*8d67ca89SAndroid Build Coastguard Worker }; 1362*8d67ca89SAndroid Build Coastguard Worker struct { 1363*8d67ca89SAndroid Build Coastguard Worker __u8 smac[6]; 1364*8d67ca89SAndroid Build Coastguard Worker __u8 dmac[6]; 1365*8d67ca89SAndroid Build Coastguard Worker }; 1366*8d67ca89SAndroid Build Coastguard Worker }; 1367*8d67ca89SAndroid Build Coastguard Worker }; 1368*8d67ca89SAndroid Build Coastguard Worker struct bpf_redir_neigh { 1369*8d67ca89SAndroid Build Coastguard Worker __u32 nh_family; 1370*8d67ca89SAndroid Build Coastguard Worker union { 1371*8d67ca89SAndroid Build Coastguard Worker __be32 ipv4_nh; 1372*8d67ca89SAndroid Build Coastguard Worker __u32 ipv6_nh[4]; 1373*8d67ca89SAndroid Build Coastguard Worker }; 1374*8d67ca89SAndroid Build Coastguard Worker }; 1375*8d67ca89SAndroid Build Coastguard Worker enum bpf_check_mtu_flags { 1376*8d67ca89SAndroid Build Coastguard Worker BPF_MTU_CHK_SEGS = (1U << 0), 1377*8d67ca89SAndroid Build Coastguard Worker }; 1378*8d67ca89SAndroid Build Coastguard Worker enum bpf_check_mtu_ret { 1379*8d67ca89SAndroid Build Coastguard Worker BPF_MTU_CHK_RET_SUCCESS, 1380*8d67ca89SAndroid Build Coastguard Worker BPF_MTU_CHK_RET_FRAG_NEEDED, 1381*8d67ca89SAndroid Build Coastguard Worker BPF_MTU_CHK_RET_SEGS_TOOBIG, 1382*8d67ca89SAndroid Build Coastguard Worker }; 1383*8d67ca89SAndroid Build Coastguard Worker enum bpf_task_fd_type { 1384*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_RAW_TRACEPOINT, 1385*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_TRACEPOINT, 1386*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_KPROBE, 1387*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_KRETPROBE, 1388*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_UPROBE, 1389*8d67ca89SAndroid Build Coastguard Worker BPF_FD_TYPE_URETPROBE, 1390*8d67ca89SAndroid Build Coastguard Worker }; 1391*8d67ca89SAndroid Build Coastguard Worker enum { 1392*8d67ca89SAndroid Build Coastguard Worker BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = (1U << 0), 1393*8d67ca89SAndroid Build Coastguard Worker BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = (1U << 1), 1394*8d67ca89SAndroid Build Coastguard Worker BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = (1U << 2), 1395*8d67ca89SAndroid Build Coastguard Worker }; 1396*8d67ca89SAndroid Build Coastguard Worker struct bpf_flow_keys { 1397*8d67ca89SAndroid Build Coastguard Worker __u16 nhoff; 1398*8d67ca89SAndroid Build Coastguard Worker __u16 thoff; 1399*8d67ca89SAndroid Build Coastguard Worker __u16 addr_proto; 1400*8d67ca89SAndroid Build Coastguard Worker __u8 is_frag; 1401*8d67ca89SAndroid Build Coastguard Worker __u8 is_first_frag; 1402*8d67ca89SAndroid Build Coastguard Worker __u8 is_encap; 1403*8d67ca89SAndroid Build Coastguard Worker __u8 ip_proto; 1404*8d67ca89SAndroid Build Coastguard Worker __be16 n_proto; 1405*8d67ca89SAndroid Build Coastguard Worker __be16 sport; 1406*8d67ca89SAndroid Build Coastguard Worker __be16 dport; 1407*8d67ca89SAndroid Build Coastguard Worker union { 1408*8d67ca89SAndroid Build Coastguard Worker struct { 1409*8d67ca89SAndroid Build Coastguard Worker __be32 ipv4_src; 1410*8d67ca89SAndroid Build Coastguard Worker __be32 ipv4_dst; 1411*8d67ca89SAndroid Build Coastguard Worker }; 1412*8d67ca89SAndroid Build Coastguard Worker struct { 1413*8d67ca89SAndroid Build Coastguard Worker __u32 ipv6_src[4]; 1414*8d67ca89SAndroid Build Coastguard Worker __u32 ipv6_dst[4]; 1415*8d67ca89SAndroid Build Coastguard Worker }; 1416*8d67ca89SAndroid Build Coastguard Worker }; 1417*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 1418*8d67ca89SAndroid Build Coastguard Worker __be32 flow_label; 1419*8d67ca89SAndroid Build Coastguard Worker }; 1420*8d67ca89SAndroid Build Coastguard Worker struct bpf_func_info { 1421*8d67ca89SAndroid Build Coastguard Worker __u32 insn_off; 1422*8d67ca89SAndroid Build Coastguard Worker __u32 type_id; 1423*8d67ca89SAndroid Build Coastguard Worker }; 1424*8d67ca89SAndroid Build Coastguard Worker #define BPF_LINE_INFO_LINE_NUM(line_col) ((line_col) >> 10) 1425*8d67ca89SAndroid Build Coastguard Worker #define BPF_LINE_INFO_LINE_COL(line_col) ((line_col) & 0x3ff) 1426*8d67ca89SAndroid Build Coastguard Worker struct bpf_line_info { 1427*8d67ca89SAndroid Build Coastguard Worker __u32 insn_off; 1428*8d67ca89SAndroid Build Coastguard Worker __u32 file_name_off; 1429*8d67ca89SAndroid Build Coastguard Worker __u32 line_off; 1430*8d67ca89SAndroid Build Coastguard Worker __u32 line_col; 1431*8d67ca89SAndroid Build Coastguard Worker }; 1432*8d67ca89SAndroid Build Coastguard Worker struct bpf_spin_lock { 1433*8d67ca89SAndroid Build Coastguard Worker __u32 val; 1434*8d67ca89SAndroid Build Coastguard Worker }; 1435*8d67ca89SAndroid Build Coastguard Worker struct bpf_timer { 1436*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[2]; 1437*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1438*8d67ca89SAndroid Build Coastguard Worker struct bpf_wq { 1439*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[2]; 1440*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1441*8d67ca89SAndroid Build Coastguard Worker struct bpf_dynptr { 1442*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[2]; 1443*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1444*8d67ca89SAndroid Build Coastguard Worker struct bpf_list_head { 1445*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[2]; 1446*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1447*8d67ca89SAndroid Build Coastguard Worker struct bpf_list_node { 1448*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[3]; 1449*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1450*8d67ca89SAndroid Build Coastguard Worker struct bpf_rb_root { 1451*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[2]; 1452*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1453*8d67ca89SAndroid Build Coastguard Worker struct bpf_rb_node { 1454*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[4]; 1455*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1456*8d67ca89SAndroid Build Coastguard Worker struct bpf_refcount { 1457*8d67ca89SAndroid Build Coastguard Worker __u32 __opaque[1]; 1458*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(4))); 1459*8d67ca89SAndroid Build Coastguard Worker struct bpf_sysctl { 1460*8d67ca89SAndroid Build Coastguard Worker __u32 write; 1461*8d67ca89SAndroid Build Coastguard Worker __u32 file_pos; 1462*8d67ca89SAndroid Build Coastguard Worker }; 1463*8d67ca89SAndroid Build Coastguard Worker struct bpf_sockopt { 1464*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 1465*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, optval); 1466*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(void *, optval_end); 1467*8d67ca89SAndroid Build Coastguard Worker __s32 level; 1468*8d67ca89SAndroid Build Coastguard Worker __s32 optname; 1469*8d67ca89SAndroid Build Coastguard Worker __s32 optlen; 1470*8d67ca89SAndroid Build Coastguard Worker __s32 retval; 1471*8d67ca89SAndroid Build Coastguard Worker }; 1472*8d67ca89SAndroid Build Coastguard Worker struct bpf_pidns_info { 1473*8d67ca89SAndroid Build Coastguard Worker __u32 pid; 1474*8d67ca89SAndroid Build Coastguard Worker __u32 tgid; 1475*8d67ca89SAndroid Build Coastguard Worker }; 1476*8d67ca89SAndroid Build Coastguard Worker struct bpf_sk_lookup { 1477*8d67ca89SAndroid Build Coastguard Worker union { 1478*8d67ca89SAndroid Build Coastguard Worker __bpf_md_ptr(struct bpf_sock *, sk); 1479*8d67ca89SAndroid Build Coastguard Worker __u64 cookie; 1480*8d67ca89SAndroid Build Coastguard Worker }; 1481*8d67ca89SAndroid Build Coastguard Worker __u32 family; 1482*8d67ca89SAndroid Build Coastguard Worker __u32 protocol; 1483*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip4; 1484*8d67ca89SAndroid Build Coastguard Worker __u32 remote_ip6[4]; 1485*8d67ca89SAndroid Build Coastguard Worker __be16 remote_port; 1486*8d67ca89SAndroid Build Coastguard Worker __u16 : 16; 1487*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip4; 1488*8d67ca89SAndroid Build Coastguard Worker __u32 local_ip6[4]; 1489*8d67ca89SAndroid Build Coastguard Worker __u32 local_port; 1490*8d67ca89SAndroid Build Coastguard Worker __u32 ingress_ifindex; 1491*8d67ca89SAndroid Build Coastguard Worker }; 1492*8d67ca89SAndroid Build Coastguard Worker struct btf_ptr { 1493*8d67ca89SAndroid Build Coastguard Worker void * ptr; 1494*8d67ca89SAndroid Build Coastguard Worker __u32 type_id; 1495*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 1496*8d67ca89SAndroid Build Coastguard Worker }; 1497*8d67ca89SAndroid Build Coastguard Worker enum { 1498*8d67ca89SAndroid Build Coastguard Worker BTF_F_COMPACT = (1ULL << 0), 1499*8d67ca89SAndroid Build Coastguard Worker BTF_F_NONAME = (1ULL << 1), 1500*8d67ca89SAndroid Build Coastguard Worker BTF_F_PTR_RAW = (1ULL << 2), 1501*8d67ca89SAndroid Build Coastguard Worker BTF_F_ZERO = (1ULL << 3), 1502*8d67ca89SAndroid Build Coastguard Worker }; 1503*8d67ca89SAndroid Build Coastguard Worker enum bpf_core_relo_kind { 1504*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_BYTE_OFFSET = 0, 1505*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_BYTE_SIZE = 1, 1506*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_EXISTS = 2, 1507*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_SIGNED = 3, 1508*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_LSHIFT_U64 = 4, 1509*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_FIELD_RSHIFT_U64 = 5, 1510*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_TYPE_ID_LOCAL = 6, 1511*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_TYPE_ID_TARGET = 7, 1512*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_TYPE_EXISTS = 8, 1513*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_TYPE_SIZE = 9, 1514*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_ENUMVAL_EXISTS = 10, 1515*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_ENUMVAL_VALUE = 11, 1516*8d67ca89SAndroid Build Coastguard Worker BPF_CORE_TYPE_MATCHES = 12, 1517*8d67ca89SAndroid Build Coastguard Worker }; 1518*8d67ca89SAndroid Build Coastguard Worker struct bpf_core_relo { 1519*8d67ca89SAndroid Build Coastguard Worker __u32 insn_off; 1520*8d67ca89SAndroid Build Coastguard Worker __u32 type_id; 1521*8d67ca89SAndroid Build Coastguard Worker __u32 access_str_off; 1522*8d67ca89SAndroid Build Coastguard Worker enum bpf_core_relo_kind kind; 1523*8d67ca89SAndroid Build Coastguard Worker }; 1524*8d67ca89SAndroid Build Coastguard Worker enum { 1525*8d67ca89SAndroid Build Coastguard Worker BPF_F_TIMER_ABS = (1ULL << 0), 1526*8d67ca89SAndroid Build Coastguard Worker BPF_F_TIMER_CPU_PIN = (1ULL << 1), 1527*8d67ca89SAndroid Build Coastguard Worker }; 1528*8d67ca89SAndroid Build Coastguard Worker struct bpf_iter_num { 1529*8d67ca89SAndroid Build Coastguard Worker __u64 __opaque[1]; 1530*8d67ca89SAndroid Build Coastguard Worker } __attribute__((aligned(8))); 1531*8d67ca89SAndroid Build Coastguard Worker #endif 1532