]> Git Repo - linux.git/blob - tools/testing/selftests/bpf/progs/bpf_tracing_net.h
Linux 6.14-rc3
[linux.git] / tools / testing / selftests / bpf / progs / bpf_tracing_net.h
1 /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
2 #ifndef __BPF_TRACING_NET_H__
3 #define __BPF_TRACING_NET_H__
4
5 #include <vmlinux.h>
6 #include <bpf/bpf_core_read.h>
7
8 #define AF_INET                 2
9 #define AF_INET6                10
10
11 #define SOL_SOCKET              1
12 #define SO_REUSEADDR            2
13 #define SO_SNDBUF               7
14 #define SO_RCVBUF               8
15 #define SO_KEEPALIVE            9
16 #define SO_PRIORITY             12
17 #define SO_REUSEPORT            15
18 #define SO_RCVLOWAT             18
19 #define SO_BINDTODEVICE         25
20 #define SO_MARK                 36
21 #define SO_MAX_PACING_RATE      47
22 #define SO_BINDTOIFINDEX        62
23 #define SO_TXREHASH             74
24 #define __SO_ACCEPTCON          (1 << 16)
25
26 #define IP_TOS                  1
27
28 #define SOL_IPV6                41
29 #define IPV6_TCLASS             67
30 #define IPV6_AUTOFLOWLABEL      70
31
32 #define TC_ACT_UNSPEC           (-1)
33 #define TC_ACT_OK               0
34 #define TC_ACT_SHOT             2
35
36 #define SOL_TCP                 6
37 #define TCP_NODELAY             1
38 #define TCP_MAXSEG              2
39 #define TCP_KEEPIDLE            4
40 #define TCP_KEEPINTVL           5
41 #define TCP_KEEPCNT             6
42 #define TCP_SYNCNT              7
43 #define TCP_WINDOW_CLAMP        10
44 #define TCP_CONGESTION          13
45 #define TCP_THIN_LINEAR_TIMEOUTS        16
46 #define TCP_USER_TIMEOUT        18
47 #define TCP_NOTSENT_LOWAT       25
48 #define TCP_SAVE_SYN            27
49 #define TCP_SAVED_SYN           28
50 #define TCP_CA_NAME_MAX         16
51 #define TCP_NAGLE_OFF           1
52
53 #define TCP_ECN_OK              1
54 #define TCP_ECN_QUEUE_CWR       2
55 #define TCP_ECN_DEMAND_CWR      4
56 #define TCP_ECN_SEEN            8
57
58 #define TCP_CONG_NEEDS_ECN     0x2
59
60 #define ICSK_TIME_RETRANS       1
61 #define ICSK_TIME_PROBE0        3
62 #define ICSK_TIME_LOSS_PROBE    5
63 #define ICSK_TIME_REO_TIMEOUT   6
64
65 #define ETH_ALEN                6
66 #define ETH_HLEN                14
67 #define ETH_P_IP                0x0800
68 #define ETH_P_IPV6              0x86DD
69
70 #define NEXTHDR_TCP             6
71
72 #define TCPOPT_NOP              1
73 #define TCPOPT_EOL              0
74 #define TCPOPT_MSS              2
75 #define TCPOPT_WINDOW           3
76 #define TCPOPT_TIMESTAMP        8
77 #define TCPOPT_SACK_PERM        4
78
79 #define TCPOLEN_MSS             4
80 #define TCPOLEN_WINDOW          3
81 #define TCPOLEN_TIMESTAMP       10
82 #define TCPOLEN_SACK_PERM       2
83
84 #define CHECKSUM_NONE           0
85 #define CHECKSUM_PARTIAL        3
86
87 #define IFNAMSIZ                16
88
89 #define RTF_GATEWAY             0x0002
90
91 #define TCP_INFINITE_SSTHRESH   0x7fffffff
92 #define TCP_PINGPONG_THRESH     3
93
94 #define FLAG_DATA_ACKED 0x04 /* This ACK acknowledged new data.         */
95 #define FLAG_SYN_ACKED 0x10 /* This ACK acknowledged SYN.               */
96 #define FLAG_DATA_SACKED 0x20 /* New SACK.                              */
97 #define FLAG_SND_UNA_ADVANCED \
98         0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */
99 #define FLAG_ACKED (FLAG_DATA_ACKED | FLAG_SYN_ACKED)
100 #define FLAG_FORWARD_PROGRESS (FLAG_ACKED | FLAG_DATA_SACKED)
101
102 #define fib_nh_dev              nh_common.nhc_dev
103 #define fib_nh_gw_family        nh_common.nhc_gw_family
104 #define fib_nh_gw6              nh_common.nhc_gw.ipv6
105
106 #define inet_daddr              sk.__sk_common.skc_daddr
107 #define inet_rcv_saddr          sk.__sk_common.skc_rcv_saddr
108 #define inet_dport              sk.__sk_common.skc_dport
109
110 #define udp_portaddr_hash       inet.sk.__sk_common.skc_u16hashes[1]
111
112 #define ir_loc_addr             req.__req_common.skc_rcv_saddr
113 #define ir_num                  req.__req_common.skc_num
114 #define ir_rmt_addr             req.__req_common.skc_daddr
115 #define ir_rmt_port             req.__req_common.skc_dport
116 #define ir_v6_rmt_addr          req.__req_common.skc_v6_daddr
117 #define ir_v6_loc_addr          req.__req_common.skc_v6_rcv_saddr
118
119 #define sk_num                  __sk_common.skc_num
120 #define sk_dport                __sk_common.skc_dport
121 #define sk_family               __sk_common.skc_family
122 #define sk_rmem_alloc           sk_backlog.rmem_alloc
123 #define sk_refcnt               __sk_common.skc_refcnt
124 #define sk_state                __sk_common.skc_state
125 #define sk_net                  __sk_common.skc_net
126 #define sk_v6_daddr             __sk_common.skc_v6_daddr
127 #define sk_v6_rcv_saddr         __sk_common.skc_v6_rcv_saddr
128 #define sk_flags                __sk_common.skc_flags
129 #define sk_reuse                __sk_common.skc_reuse
130 #define sk_cookie               __sk_common.skc_cookie
131
132 #define s6_addr32               in6_u.u6_addr32
133
134 #define tw_daddr                __tw_common.skc_daddr
135 #define tw_rcv_saddr            __tw_common.skc_rcv_saddr
136 #define tw_dport                __tw_common.skc_dport
137 #define tw_refcnt               __tw_common.skc_refcnt
138 #define tw_v6_daddr             __tw_common.skc_v6_daddr
139 #define tw_v6_rcv_saddr         __tw_common.skc_v6_rcv_saddr
140
141 #define tcp_jiffies32 ((__u32)bpf_jiffies64())
142
143 static inline struct inet_connection_sock *inet_csk(const struct sock *sk)
144 {
145         return (struct inet_connection_sock *)sk;
146 }
147
148 static inline void *inet_csk_ca(const struct sock *sk)
149 {
150         return (void *)inet_csk(sk)->icsk_ca_priv;
151 }
152
153 static inline struct tcp_sock *tcp_sk(const struct sock *sk)
154 {
155         return (struct tcp_sock *)sk;
156 }
157
158 static inline bool tcp_in_slow_start(const struct tcp_sock *tp)
159 {
160         return tp->snd_cwnd < tp->snd_ssthresh;
161 }
162
163 static inline bool tcp_is_cwnd_limited(const struct sock *sk)
164 {
165         const struct tcp_sock *tp = tcp_sk(sk);
166
167         /* If in slow start, ensure cwnd grows to twice what was ACKed. */
168         if (tcp_in_slow_start(tp))
169                 return tp->snd_cwnd < 2 * tp->max_packets_out;
170
171         return !!BPF_CORE_READ_BITFIELD(tp, is_cwnd_limited);
172 }
173
174 #endif
This page took 0.041099 seconds and 4 git commands to generate.