1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef _UAPI__LINUX_BPF_H__ 7 #define _UAPI__LINUX_BPF_H__ 8 #include <linux/types.h> 9 #include <linux/bpf_common.h> 10 #define BPF_JMP32 0x06 11 #define BPF_ALU64 0x07 12 #define BPF_DW 0x18 13 #define BPF_XADD 0xc0 14 #define BPF_MOV 0xb0 15 #define BPF_ARSH 0xc0 16 #define BPF_END 0xd0 17 #define BPF_TO_LE 0x00 18 #define BPF_TO_BE 0x08 19 #define BPF_FROM_LE BPF_TO_LE 20 #define BPF_FROM_BE BPF_TO_BE 21 #define BPF_JNE 0x50 22 #define BPF_JLT 0xa0 23 #define BPF_JLE 0xb0 24 #define BPF_JSGT 0x60 25 #define BPF_JSGE 0x70 26 #define BPF_JSLT 0xc0 27 #define BPF_JSLE 0xd0 28 #define BPF_CALL 0x80 29 #define BPF_EXIT 0x90 30 enum { 31 BPF_REG_0 = 0, 32 BPF_REG_1, 33 BPF_REG_2, 34 BPF_REG_3, 35 BPF_REG_4, 36 BPF_REG_5, 37 BPF_REG_6, 38 BPF_REG_7, 39 BPF_REG_8, 40 BPF_REG_9, 41 BPF_REG_10, 42 __MAX_BPF_REG, 43 }; 44 #define MAX_BPF_REG __MAX_BPF_REG 45 struct bpf_insn { 46 __u8 code; 47 __u8 dst_reg:4; 48 __u8 src_reg:4; 49 __s16 off; 50 __s32 imm; 51 }; 52 struct bpf_lpm_trie_key { 53 __u32 prefixlen; 54 __u8 data[0]; 55 }; 56 struct bpf_cgroup_storage_key { 57 __u64 cgroup_inode_id; 58 __u32 attach_type; 59 }; 60 enum bpf_cmd { 61 BPF_MAP_CREATE, 62 BPF_MAP_LOOKUP_ELEM, 63 BPF_MAP_UPDATE_ELEM, 64 BPF_MAP_DELETE_ELEM, 65 BPF_MAP_GET_NEXT_KEY, 66 BPF_PROG_LOAD, 67 BPF_OBJ_PIN, 68 BPF_OBJ_GET, 69 BPF_PROG_ATTACH, 70 BPF_PROG_DETACH, 71 BPF_PROG_TEST_RUN, 72 BPF_PROG_GET_NEXT_ID, 73 BPF_MAP_GET_NEXT_ID, 74 BPF_PROG_GET_FD_BY_ID, 75 BPF_MAP_GET_FD_BY_ID, 76 BPF_OBJ_GET_INFO_BY_FD, 77 BPF_PROG_QUERY, 78 BPF_RAW_TRACEPOINT_OPEN, 79 BPF_BTF_LOAD, 80 BPF_BTF_GET_FD_BY_ID, 81 BPF_TASK_FD_QUERY, 82 }; 83 enum bpf_map_type { 84 BPF_MAP_TYPE_UNSPEC, 85 BPF_MAP_TYPE_HASH, 86 BPF_MAP_TYPE_ARRAY, 87 BPF_MAP_TYPE_PROG_ARRAY, 88 BPF_MAP_TYPE_PERF_EVENT_ARRAY, 89 BPF_MAP_TYPE_PERCPU_HASH, 90 BPF_MAP_TYPE_PERCPU_ARRAY, 91 BPF_MAP_TYPE_STACK_TRACE, 92 BPF_MAP_TYPE_CGROUP_ARRAY, 93 BPF_MAP_TYPE_LRU_HASH, 94 BPF_MAP_TYPE_LRU_PERCPU_HASH, 95 BPF_MAP_TYPE_LPM_TRIE, 96 BPF_MAP_TYPE_ARRAY_OF_MAPS, 97 BPF_MAP_TYPE_HASH_OF_MAPS, 98 BPF_MAP_TYPE_DEVMAP, 99 BPF_MAP_TYPE_SOCKMAP, 100 BPF_MAP_TYPE_CPUMAP, 101 BPF_MAP_TYPE_XSKMAP, 102 BPF_MAP_TYPE_SOCKHASH, 103 BPF_MAP_TYPE_CGROUP_STORAGE, 104 BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, 105 }; 106 enum bpf_prog_type { 107 BPF_PROG_TYPE_UNSPEC, 108 BPF_PROG_TYPE_SOCKET_FILTER, 109 BPF_PROG_TYPE_KPROBE, 110 BPF_PROG_TYPE_SCHED_CLS, 111 BPF_PROG_TYPE_SCHED_ACT, 112 BPF_PROG_TYPE_TRACEPOINT, 113 BPF_PROG_TYPE_XDP, 114 BPF_PROG_TYPE_PERF_EVENT, 115 BPF_PROG_TYPE_CGROUP_SKB, 116 BPF_PROG_TYPE_CGROUP_SOCK, 117 BPF_PROG_TYPE_LWT_IN, 118 BPF_PROG_TYPE_LWT_OUT, 119 BPF_PROG_TYPE_LWT_XMIT, 120 BPF_PROG_TYPE_SOCK_OPS, 121 BPF_PROG_TYPE_SK_SKB, 122 BPF_PROG_TYPE_CGROUP_DEVICE, 123 BPF_PROG_TYPE_SK_MSG, 124 BPF_PROG_TYPE_RAW_TRACEPOINT, 125 BPF_PROG_TYPE_CGROUP_SOCK_ADDR, 126 BPF_PROG_TYPE_LWT_SEG6LOCAL, 127 BPF_PROG_TYPE_LIRC_MODE2, 128 BPF_PROG_TYPE_SK_REUSEPORT, 129 }; 130 enum bpf_attach_type { 131 BPF_CGROUP_INET_INGRESS, 132 BPF_CGROUP_INET_EGRESS, 133 BPF_CGROUP_INET_SOCK_CREATE, 134 BPF_CGROUP_SOCK_OPS, 135 BPF_SK_SKB_STREAM_PARSER, 136 BPF_SK_SKB_STREAM_VERDICT, 137 BPF_CGROUP_DEVICE, 138 BPF_SK_MSG_VERDICT, 139 BPF_CGROUP_INET4_BIND, 140 BPF_CGROUP_INET6_BIND, 141 BPF_CGROUP_INET4_CONNECT, 142 BPF_CGROUP_INET6_CONNECT, 143 BPF_CGROUP_INET4_POST_BIND, 144 BPF_CGROUP_INET6_POST_BIND, 145 BPF_CGROUP_UDP4_SENDMSG, 146 BPF_CGROUP_UDP6_SENDMSG, 147 BPF_LIRC_MODE2, 148 BPF_CGROUP_UDP4_RECVMSG = 19, 149 BPF_CGROUP_UDP6_RECVMSG, 150 __MAX_BPF_ATTACH_TYPE 151 }; 152 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE 153 #define BPF_F_ALLOW_OVERRIDE (1U << 0) 154 #define BPF_F_ALLOW_MULTI (1U << 1) 155 #define BPF_F_STRICT_ALIGNMENT (1U << 0) 156 #define BPF_PSEUDO_MAP_FD 1 157 #define BPF_PSEUDO_CALL 1 158 #define BPF_ANY 0 159 #define BPF_NOEXIST 1 160 #define BPF_EXIST 2 161 #define BPF_F_NO_PREALLOC (1U << 0) 162 #define BPF_F_NO_COMMON_LRU (1U << 1) 163 #define BPF_F_NUMA_NODE (1U << 2) 164 #define BPF_F_QUERY_EFFECTIVE (1U << 0) 165 #define BPF_OBJ_NAME_LEN 16U 166 #define BPF_F_RDONLY (1U << 3) 167 #define BPF_F_WRONLY (1U << 4) 168 #define BPF_F_STACK_BUILD_ID (1U << 5) 169 enum bpf_stack_build_id_status { 170 171 BPF_STACK_BUILD_ID_EMPTY = 0, 172 173 BPF_STACK_BUILD_ID_VALID = 1, 174 175 BPF_STACK_BUILD_ID_IP = 2, 176 }; 177 #define BPF_BUILD_ID_SIZE 20 178 struct bpf_stack_build_id { 179 __s32 status; 180 unsigned char build_id[BPF_BUILD_ID_SIZE]; 181 union { 182 __u64 offset; 183 __u64 ip; 184 }; 185 }; 186 union bpf_attr { 187 struct { 188 __u32 map_type; 189 __u32 key_size; 190 __u32 value_size; 191 __u32 max_entries; 192 __u32 map_flags; 193 __u32 inner_map_fd; 194 __u32 numa_node; 195 char map_name[BPF_OBJ_NAME_LEN]; 196 __u32 map_ifindex; 197 __u32 btf_fd; 198 __u32 btf_key_type_id; 199 __u32 btf_value_type_id; 200 }; 201 struct { 202 __u32 map_fd; 203 __aligned_u64 key; 204 union { 205 __aligned_u64 value; 206 __aligned_u64 next_key; 207 }; 208 __u64 flags; 209 }; 210 struct { 211 __u32 prog_type; 212 __u32 insn_cnt; 213 __aligned_u64 insns; 214 __aligned_u64 license; 215 __u32 log_level; 216 __u32 log_size; 217 __aligned_u64 log_buf; 218 __u32 kern_version; 219 __u32 prog_flags; 220 char prog_name[BPF_OBJ_NAME_LEN]; 221 __u32 prog_ifindex; 222 223 __u32 expected_attach_type; 224 }; 225 struct { 226 __aligned_u64 pathname; 227 __u32 bpf_fd; 228 __u32 file_flags; 229 }; 230 struct { 231 __u32 target_fd; 232 __u32 attach_bpf_fd; 233 __u32 attach_type; 234 __u32 attach_flags; 235 }; 236 struct { 237 __u32 prog_fd; 238 __u32 retval; 239 __u32 data_size_in; 240 __u32 data_size_out; 241 __aligned_u64 data_in; 242 __aligned_u64 data_out; 243 __u32 repeat; 244 __u32 duration; 245 } test; 246 struct { 247 union { 248 __u32 start_id; 249 __u32 prog_id; 250 __u32 map_id; 251 __u32 btf_id; 252 }; 253 __u32 next_id; 254 __u32 open_flags; 255 }; 256 struct { 257 __u32 bpf_fd; 258 __u32 info_len; 259 __aligned_u64 info; 260 } info; 261 struct { 262 __u32 target_fd; 263 __u32 attach_type; 264 __u32 query_flags; 265 __u32 attach_flags; 266 __aligned_u64 prog_ids; 267 __u32 prog_cnt; 268 } query; 269 struct { 270 __u64 name; 271 __u32 prog_fd; 272 } raw_tracepoint; 273 struct { 274 __aligned_u64 btf; 275 __aligned_u64 btf_log_buf; 276 __u32 btf_size; 277 __u32 btf_log_size; 278 __u32 btf_log_level; 279 }; 280 struct { 281 __u32 pid; 282 __u32 fd; 283 __u32 flags; 284 __u32 buf_len; 285 __aligned_u64 buf; 286 __u32 prog_id; 287 __u32 fd_type; 288 __u64 probe_offset; 289 __u64 probe_addr; 290 } task_fd_query; 291 } __attribute__((aligned(8))); 292 #define __BPF_FUNC_MAPPER(FN) \ 293 FN(unspec), \ 294 FN(map_lookup_elem), \ 295 FN(map_update_elem), \ 296 FN(map_delete_elem), \ 297 FN(probe_read), \ 298 FN(ktime_get_ns), \ 299 FN(trace_printk), \ 300 FN(get_prandom_u32), \ 301 FN(get_smp_processor_id), \ 302 FN(skb_store_bytes), \ 303 FN(l3_csum_replace), \ 304 FN(l4_csum_replace), \ 305 FN(tail_call), \ 306 FN(clone_redirect), \ 307 FN(get_current_pid_tgid), \ 308 FN(get_current_uid_gid), \ 309 FN(get_current_comm), \ 310 FN(get_cgroup_classid), \ 311 FN(skb_vlan_push), \ 312 FN(skb_vlan_pop), \ 313 FN(skb_get_tunnel_key), \ 314 FN(skb_set_tunnel_key), \ 315 FN(perf_event_read), \ 316 FN(redirect), \ 317 FN(get_route_realm), \ 318 FN(perf_event_output), \ 319 FN(skb_load_bytes), \ 320 FN(get_stackid), \ 321 FN(csum_diff), \ 322 FN(skb_get_tunnel_opt), \ 323 FN(skb_set_tunnel_opt), \ 324 FN(skb_change_proto), \ 325 FN(skb_change_type), \ 326 FN(skb_under_cgroup), \ 327 FN(get_hash_recalc), \ 328 FN(get_current_task), \ 329 FN(probe_write_user), \ 330 FN(current_task_under_cgroup), \ 331 FN(skb_change_tail), \ 332 FN(skb_pull_data), \ 333 FN(csum_update), \ 334 FN(set_hash_invalid), \ 335 FN(get_numa_node_id), \ 336 FN(skb_change_head), \ 337 FN(xdp_adjust_head), \ 338 FN(probe_read_str), \ 339 FN(get_socket_cookie), \ 340 FN(get_socket_uid), \ 341 FN(set_hash), \ 342 FN(setsockopt), \ 343 FN(skb_adjust_room), \ 344 FN(redirect_map), \ 345 FN(sk_redirect_map), \ 346 FN(sock_map_update), \ 347 FN(xdp_adjust_meta), \ 348 FN(perf_event_read_value), \ 349 FN(perf_prog_read_value), \ 350 FN(getsockopt), \ 351 FN(override_return), \ 352 FN(sock_ops_cb_flags_set), \ 353 FN(msg_redirect_map), \ 354 FN(msg_apply_bytes), \ 355 FN(msg_cork_bytes), \ 356 FN(msg_pull_data), \ 357 FN(bind), \ 358 FN(xdp_adjust_tail), \ 359 FN(skb_get_xfrm_state), \ 360 FN(get_stack), \ 361 FN(skb_load_bytes_relative), \ 362 FN(fib_lookup), \ 363 FN(sock_hash_update), \ 364 FN(msg_redirect_hash), \ 365 FN(sk_redirect_hash), \ 366 FN(lwt_push_encap), \ 367 FN(lwt_seg6_store_bytes), \ 368 FN(lwt_seg6_adjust_srh), \ 369 FN(lwt_seg6_action), \ 370 FN(rc_repeat), \ 371 FN(rc_keydown), \ 372 FN(skb_cgroup_id), \ 373 FN(get_current_cgroup_id), \ 374 FN(get_local_storage), \ 375 FN(sk_select_reuseport), \ 376 FN(skb_ancestor_cgroup_id), 377 #define __BPF_ENUM_FN(x) BPF_FUNC_ ## x 378 enum bpf_func_id { 379 __BPF_FUNC_MAPPER(__BPF_ENUM_FN) 380 __BPF_FUNC_MAX_ID, 381 }; 382 #undef __BPF_ENUM_FN 383 #define BPF_F_RECOMPUTE_CSUM (1ULL << 0) 384 #define BPF_F_INVALIDATE_HASH (1ULL << 1) 385 #define BPF_F_HDR_FIELD_MASK 0xfULL 386 #define BPF_F_PSEUDO_HDR (1ULL << 4) 387 #define BPF_F_MARK_MANGLED_0 (1ULL << 5) 388 #define BPF_F_MARK_ENFORCE (1ULL << 6) 389 #define BPF_F_INGRESS (1ULL << 0) 390 #define BPF_F_TUNINFO_IPV6 (1ULL << 0) 391 #define BPF_F_SKIP_FIELD_MASK 0xffULL 392 #define BPF_F_USER_STACK (1ULL << 8) 393 #define BPF_F_FAST_STACK_CMP (1ULL << 9) 394 #define BPF_F_REUSE_STACKID (1ULL << 10) 395 #define BPF_F_USER_BUILD_ID (1ULL << 11) 396 #define BPF_F_ZERO_CSUM_TX (1ULL << 1) 397 #define BPF_F_DONT_FRAGMENT (1ULL << 2) 398 #define BPF_F_SEQ_NUMBER (1ULL << 3) 399 #define BPF_F_INDEX_MASK 0xffffffffULL 400 #define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK 401 #define BPF_F_CTXLEN_MASK (0xfffffULL << 32) 402 enum bpf_adj_room_mode { 403 BPF_ADJ_ROOM_NET, 404 }; 405 enum bpf_hdr_start_off { 406 BPF_HDR_START_MAC, 407 BPF_HDR_START_NET, 408 }; 409 enum bpf_lwt_encap_mode { 410 BPF_LWT_ENCAP_SEG6, 411 BPF_LWT_ENCAP_SEG6_INLINE 412 }; 413 struct __sk_buff { 414 __u32 len; 415 __u32 pkt_type; 416 __u32 mark; 417 __u32 queue_mapping; 418 __u32 protocol; 419 __u32 vlan_present; 420 __u32 vlan_tci; 421 __u32 vlan_proto; 422 __u32 priority; 423 __u32 ingress_ifindex; 424 __u32 ifindex; 425 __u32 tc_index; 426 __u32 cb[5]; 427 __u32 hash; 428 __u32 tc_classid; 429 __u32 data; 430 __u32 data_end; 431 __u32 napi_id; 432 433 __u32 family; 434 __u32 remote_ip4; 435 __u32 local_ip4; 436 __u32 remote_ip6[4]; 437 __u32 local_ip6[4]; 438 __u32 remote_port; 439 __u32 local_port; 440 441 __u32 data_meta; 442 }; 443 struct bpf_tunnel_key { 444 __u32 tunnel_id; 445 union { 446 __u32 remote_ipv4; 447 __u32 remote_ipv6[4]; 448 }; 449 __u8 tunnel_tos; 450 __u8 tunnel_ttl; 451 __u16 tunnel_ext; 452 __u32 tunnel_label; 453 }; 454 struct bpf_xfrm_state { 455 __u32 reqid; 456 __u32 spi; 457 __u16 family; 458 __u16 ext; 459 union { 460 __u32 remote_ipv4; 461 __u32 remote_ipv6[4]; 462 }; 463 }; 464 enum bpf_ret_code { 465 BPF_OK = 0, 466 467 BPF_DROP = 2, 468 469 BPF_REDIRECT = 7, 470 471 }; 472 struct bpf_sock { 473 __u32 bound_dev_if; 474 __u32 family; 475 __u32 type; 476 __u32 protocol; 477 __u32 mark; 478 __u32 priority; 479 __u32 src_ip4; 480 __u32 src_ip6[4]; 481 __u32 src_port; 482 }; 483 #define XDP_PACKET_HEADROOM 256 484 enum xdp_action { 485 XDP_ABORTED = 0, 486 XDP_DROP, 487 XDP_PASS, 488 XDP_TX, 489 XDP_REDIRECT, 490 }; 491 struct xdp_md { 492 __u32 data; 493 __u32 data_end; 494 __u32 data_meta; 495 496 __u32 ingress_ifindex; 497 __u32 rx_queue_index; 498 }; 499 enum sk_action { 500 SK_DROP = 0, 501 SK_PASS, 502 }; 503 struct sk_msg_md { 504 void *data; 505 void *data_end; 506 __u32 family; 507 __u32 remote_ip4; 508 __u32 local_ip4; 509 __u32 remote_ip6[4]; 510 __u32 local_ip6[4]; 511 __u32 remote_port; 512 __u32 local_port; 513 }; 514 struct sk_reuseport_md { 515 516 void *data; 517 void *data_end; 518 519 __u32 len; 520 521 __u32 eth_protocol; 522 __u32 ip_protocol; 523 __u32 bind_inany; 524 __u32 hash; 525 }; 526 #define BPF_TAG_SIZE 8 527 struct bpf_prog_info { 528 __u32 type; 529 __u32 id; 530 __u8 tag[BPF_TAG_SIZE]; 531 __u32 jited_prog_len; 532 __u32 xlated_prog_len; 533 __aligned_u64 jited_prog_insns; 534 __aligned_u64 xlated_prog_insns; 535 __u64 load_time; 536 __u32 created_by_uid; 537 __u32 nr_map_ids; 538 __aligned_u64 map_ids; 539 char name[BPF_OBJ_NAME_LEN]; 540 __u32 ifindex; 541 __u32 gpl_compatible:1; 542 __u32 :31; 543 __u64 netns_dev; 544 __u64 netns_ino; 545 __u32 nr_jited_ksyms; 546 __u32 nr_jited_func_lens; 547 __aligned_u64 jited_ksyms; 548 __aligned_u64 jited_func_lens; 549 } __attribute__((aligned(8))); 550 struct bpf_map_info { 551 __u32 type; 552 __u32 id; 553 __u32 key_size; 554 __u32 value_size; 555 __u32 max_entries; 556 __u32 map_flags; 557 char name[BPF_OBJ_NAME_LEN]; 558 __u32 ifindex; 559 __u32 :32; 560 __u64 netns_dev; 561 __u64 netns_ino; 562 __u32 btf_id; 563 __u32 btf_key_type_id; 564 __u32 btf_value_type_id; 565 } __attribute__((aligned(8))); 566 struct bpf_btf_info { 567 __aligned_u64 btf; 568 __u32 btf_size; 569 __u32 id; 570 } __attribute__((aligned(8))); 571 struct bpf_sock_addr { 572 __u32 user_family; 573 __u32 user_ip4; 574 __u32 user_ip6[4]; 575 __u32 user_port; 576 __u32 family; 577 __u32 type; 578 __u32 protocol; 579 __u32 msg_src_ip4; 580 __u32 msg_src_ip6[4]; 581 }; 582 struct bpf_sock_ops { 583 __u32 op; 584 union { 585 __u32 args[4]; 586 __u32 reply; 587 __u32 replylong[4]; 588 }; 589 __u32 family; 590 __u32 remote_ip4; 591 __u32 local_ip4; 592 __u32 remote_ip6[4]; 593 __u32 local_ip6[4]; 594 __u32 remote_port; 595 __u32 local_port; 596 __u32 is_fullsock; 597 __u32 snd_cwnd; 598 __u32 srtt_us; 599 __u32 bpf_sock_ops_cb_flags; 600 __u32 state; 601 __u32 rtt_min; 602 __u32 snd_ssthresh; 603 __u32 rcv_nxt; 604 __u32 snd_nxt; 605 __u32 snd_una; 606 __u32 mss_cache; 607 __u32 ecn_flags; 608 __u32 rate_delivered; 609 __u32 rate_interval_us; 610 __u32 packets_out; 611 __u32 retrans_out; 612 __u32 total_retrans; 613 __u32 segs_in; 614 __u32 data_segs_in; 615 __u32 segs_out; 616 __u32 data_segs_out; 617 __u32 lost_out; 618 __u32 sacked_out; 619 __u32 sk_txhash; 620 __u64 bytes_received; 621 __u64 bytes_acked; 622 }; 623 #define BPF_SOCK_OPS_RTO_CB_FLAG (1<<0) 624 #define BPF_SOCK_OPS_RETRANS_CB_FLAG (1<<1) 625 #define BPF_SOCK_OPS_STATE_CB_FLAG (1<<2) 626 #define BPF_SOCK_OPS_ALL_CB_FLAGS 0x7 627 enum { 628 BPF_SOCK_OPS_VOID, 629 BPF_SOCK_OPS_TIMEOUT_INIT, 630 BPF_SOCK_OPS_RWND_INIT, 631 BPF_SOCK_OPS_TCP_CONNECT_CB, 632 BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB, 633 BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB, 634 BPF_SOCK_OPS_NEEDS_ECN, 635 BPF_SOCK_OPS_BASE_RTT, 636 BPF_SOCK_OPS_RTO_CB, 637 BPF_SOCK_OPS_RETRANS_CB, 638 BPF_SOCK_OPS_STATE_CB, 639 BPF_SOCK_OPS_TCP_LISTEN_CB, 640 }; 641 enum { 642 BPF_TCP_ESTABLISHED = 1, 643 BPF_TCP_SYN_SENT, 644 BPF_TCP_SYN_RECV, 645 BPF_TCP_FIN_WAIT1, 646 BPF_TCP_FIN_WAIT2, 647 BPF_TCP_TIME_WAIT, 648 BPF_TCP_CLOSE, 649 BPF_TCP_CLOSE_WAIT, 650 BPF_TCP_LAST_ACK, 651 BPF_TCP_LISTEN, 652 BPF_TCP_CLOSING, 653 BPF_TCP_NEW_SYN_RECV, 654 BPF_TCP_MAX_STATES 655 }; 656 #define TCP_BPF_IW 1001 657 #define TCP_BPF_SNDCWND_CLAMP 1002 658 struct bpf_perf_event_value { 659 __u64 counter; 660 __u64 enabled; 661 __u64 running; 662 }; 663 #define BPF_DEVCG_ACC_MKNOD (1ULL << 0) 664 #define BPF_DEVCG_ACC_READ (1ULL << 1) 665 #define BPF_DEVCG_ACC_WRITE (1ULL << 2) 666 #define BPF_DEVCG_DEV_BLOCK (1ULL << 0) 667 #define BPF_DEVCG_DEV_CHAR (1ULL << 1) 668 struct bpf_cgroup_dev_ctx { 669 670 __u32 access_type; 671 __u32 major; 672 __u32 minor; 673 }; 674 struct bpf_raw_tracepoint_args { 675 __u64 args[0]; 676 }; 677 #define BPF_FIB_LOOKUP_DIRECT (1U << 0) 678 #define BPF_FIB_LOOKUP_OUTPUT (1U << 1) 679 enum { 680 BPF_FIB_LKUP_RET_SUCCESS, 681 BPF_FIB_LKUP_RET_BLACKHOLE, 682 BPF_FIB_LKUP_RET_UNREACHABLE, 683 BPF_FIB_LKUP_RET_PROHIBIT, 684 BPF_FIB_LKUP_RET_NOT_FWDED, 685 BPF_FIB_LKUP_RET_FWD_DISABLED, 686 BPF_FIB_LKUP_RET_UNSUPP_LWT, 687 BPF_FIB_LKUP_RET_NO_NEIGH, 688 BPF_FIB_LKUP_RET_FRAG_NEEDED, 689 }; 690 struct bpf_fib_lookup { 691 692 __u8 family; 693 694 __u8 l4_protocol; 695 __be16 sport; 696 __be16 dport; 697 698 __u16 tot_len; 699 700 __u32 ifindex; 701 union { 702 703 __u8 tos; 704 __be32 flowinfo; 705 706 __u32 rt_metric; 707 }; 708 union { 709 __be32 ipv4_src; 710 __u32 ipv6_src[4]; 711 }; 712 713 union { 714 __be32 ipv4_dst; 715 __u32 ipv6_dst[4]; 716 }; 717 718 __be16 h_vlan_proto; 719 __be16 h_vlan_TCI; 720 __u8 smac[6]; 721 __u8 dmac[6]; 722 }; 723 enum bpf_task_fd_type { 724 BPF_FD_TYPE_RAW_TRACEPOINT, 725 BPF_FD_TYPE_TRACEPOINT, 726 BPF_FD_TYPE_KPROBE, 727 BPF_FD_TYPE_KRETPROBE, 728 BPF_FD_TYPE_UPROBE, 729 BPF_FD_TYPE_URETPROBE, 730 }; 731 #endif 732