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