1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2020 Facebook */
3 /* "undefine" structs in vmlinux.h, because we "override" them below */
4 #define bpf_iter_meta bpf_iter_meta___not_used
5 #define bpf_iter__bpf_map bpf_iter__bpf_map___not_used
6 #define bpf_iter__ipv6_route bpf_iter__ipv6_route___not_used
7 #define bpf_iter__netlink bpf_iter__netlink___not_used
8 #define bpf_iter__task bpf_iter__task___not_used
9 #define bpf_iter__task_file bpf_iter__task_file___not_used
10 #define bpf_iter__tcp bpf_iter__tcp___not_used
11 #define tcp6_sock tcp6_sock___not_used
12 #define bpf_iter__udp bpf_iter__udp___not_used
13 #define udp6_sock udp6_sock___not_used
14 #include "vmlinux.h"
15 #undef bpf_iter_meta
16 #undef bpf_iter__bpf_map
17 #undef bpf_iter__ipv6_route
18 #undef bpf_iter__netlink
19 #undef bpf_iter__task
20 #undef bpf_iter__task_file
21 #undef bpf_iter__tcp
22 #undef tcp6_sock
23 #undef bpf_iter__udp
24 #undef udp6_sock
25 
26 struct bpf_iter_meta {
27 	struct seq_file *seq;
28 	__u64 session_id;
29 	__u64 seq_num;
30 } __attribute__((preserve_access_index));
31 
32 struct bpf_iter__ipv6_route {
33 	struct bpf_iter_meta *meta;
34 	struct fib6_info *rt;
35 } __attribute__((preserve_access_index));
36 
37 struct bpf_iter__netlink {
38 	struct bpf_iter_meta *meta;
39 	struct netlink_sock *sk;
40 } __attribute__((preserve_access_index));
41 
42 struct bpf_iter__task {
43 	struct bpf_iter_meta *meta;
44 	struct task_struct *task;
45 } __attribute__((preserve_access_index));
46 
47 struct bpf_iter__task_file {
48 	struct bpf_iter_meta *meta;
49 	struct task_struct *task;
50 	__u32 fd;
51 	struct file *file;
52 } __attribute__((preserve_access_index));
53 
54 struct bpf_iter__bpf_map {
55 	struct bpf_iter_meta *meta;
56 	struct bpf_map *map;
57 } __attribute__((preserve_access_index));
58 
59 struct bpf_iter__tcp {
60 	struct bpf_iter_meta *meta;
61 	struct sock_common *sk_common;
62 	uid_t uid;
63 } __attribute__((preserve_access_index));
64 
65 struct tcp6_sock {
66 	struct tcp_sock	tcp;
67 	struct ipv6_pinfo inet6;
68 } __attribute__((preserve_access_index));
69 
70 struct bpf_iter__udp {
71 	struct bpf_iter_meta *meta;
72 	struct udp_sock *udp_sk;
73 	uid_t uid __attribute__((aligned(8)));
74 	int bucket __attribute__((aligned(8)));
75 } __attribute__((preserve_access_index));
76 
77 struct udp6_sock {
78 	struct udp_sock	udp;
79 	struct ipv6_pinfo inet6;
80 } __attribute__((preserve_access_index));
81