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