• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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