Loading...
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
143static inline struct inet_connection_sock *inet_csk(const struct sock *sk)
144{
145 return (struct inet_connection_sock *)sk;
146}
147
148static inline void *inet_csk_ca(const struct sock *sk)
149{
150 return (void *)inet_csk(sk)->icsk_ca_priv;
151}
152
153static inline struct tcp_sock *tcp_sk(const struct sock *sk)
154{
155 return (struct tcp_sock *)sk;
156}
157
158static inline bool tcp_in_slow_start(const struct tcp_sock *tp)
159{
160 return tp->snd_cwnd < tp->snd_ssthresh;
161}
162
163static 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
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#define AF_INET 2
6#define AF_INET6 10
7
8#define SOL_SOCKET 1
9#define SO_REUSEADDR 2
10#define SO_SNDBUF 7
11#define SO_RCVBUF 8
12#define SO_KEEPALIVE 9
13#define SO_PRIORITY 12
14#define SO_REUSEPORT 15
15#define SO_RCVLOWAT 18
16#define SO_BINDTODEVICE 25
17#define SO_MARK 36
18#define SO_MAX_PACING_RATE 47
19#define SO_BINDTOIFINDEX 62
20#define SO_TXREHASH 74
21#define __SO_ACCEPTCON (1 << 16)
22
23#define IP_TOS 1
24
25#define IPV6_TCLASS 67
26#define IPV6_AUTOFLOWLABEL 70
27
28#define TC_ACT_UNSPEC (-1)
29#define TC_ACT_OK 0
30#define TC_ACT_SHOT 2
31
32#define SOL_TCP 6
33#define TCP_NODELAY 1
34#define TCP_MAXSEG 2
35#define TCP_KEEPIDLE 4
36#define TCP_KEEPINTVL 5
37#define TCP_KEEPCNT 6
38#define TCP_SYNCNT 7
39#define TCP_WINDOW_CLAMP 10
40#define TCP_CONGESTION 13
41#define TCP_THIN_LINEAR_TIMEOUTS 16
42#define TCP_USER_TIMEOUT 18
43#define TCP_NOTSENT_LOWAT 25
44#define TCP_SAVE_SYN 27
45#define TCP_SAVED_SYN 28
46#define TCP_CA_NAME_MAX 16
47#define TCP_NAGLE_OFF 1
48
49#define ICSK_TIME_RETRANS 1
50#define ICSK_TIME_PROBE0 3
51#define ICSK_TIME_LOSS_PROBE 5
52#define ICSK_TIME_REO_TIMEOUT 6
53
54#define ETH_HLEN 14
55#define ETH_P_IPV6 0x86DD
56
57#define CHECKSUM_NONE 0
58#define CHECKSUM_PARTIAL 3
59
60#define IFNAMSIZ 16
61
62#define RTF_GATEWAY 0x0002
63
64#define TCP_INFINITE_SSTHRESH 0x7fffffff
65#define TCP_PINGPONG_THRESH 3
66
67#define fib_nh_dev nh_common.nhc_dev
68#define fib_nh_gw_family nh_common.nhc_gw_family
69#define fib_nh_gw6 nh_common.nhc_gw.ipv6
70
71#define inet_daddr sk.__sk_common.skc_daddr
72#define inet_rcv_saddr sk.__sk_common.skc_rcv_saddr
73#define inet_dport sk.__sk_common.skc_dport
74
75#define udp_portaddr_hash inet.sk.__sk_common.skc_u16hashes[1]
76
77#define ir_loc_addr req.__req_common.skc_rcv_saddr
78#define ir_num req.__req_common.skc_num
79#define ir_rmt_addr req.__req_common.skc_daddr
80#define ir_rmt_port req.__req_common.skc_dport
81#define ir_v6_rmt_addr req.__req_common.skc_v6_daddr
82#define ir_v6_loc_addr req.__req_common.skc_v6_rcv_saddr
83
84#define sk_num __sk_common.skc_num
85#define sk_dport __sk_common.skc_dport
86#define sk_family __sk_common.skc_family
87#define sk_rmem_alloc sk_backlog.rmem_alloc
88#define sk_refcnt __sk_common.skc_refcnt
89#define sk_state __sk_common.skc_state
90#define sk_net __sk_common.skc_net
91#define sk_v6_daddr __sk_common.skc_v6_daddr
92#define sk_v6_rcv_saddr __sk_common.skc_v6_rcv_saddr
93#define sk_flags __sk_common.skc_flags
94#define sk_reuse __sk_common.skc_reuse
95#define sk_cookie __sk_common.skc_cookie
96
97#define s6_addr32 in6_u.u6_addr32
98
99#define tw_daddr __tw_common.skc_daddr
100#define tw_rcv_saddr __tw_common.skc_rcv_saddr
101#define tw_dport __tw_common.skc_dport
102#define tw_refcnt __tw_common.skc_refcnt
103#define tw_v6_daddr __tw_common.skc_v6_daddr
104#define tw_v6_rcv_saddr __tw_common.skc_v6_rcv_saddr
105
106#endif