xref: /aosp_15_r20/external/strace/linux/inet_diag.h (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #ifndef STRACE_LINUX_INET_DIAG_H
2*cf84ac9aSAndroid Build Coastguard Worker #define STRACE_LINUX_INET_DIAG_H
3*cf84ac9aSAndroid Build Coastguard Worker 
4*cf84ac9aSAndroid Build Coastguard Worker #define TCPDIAG_GETSOCK 18
5*cf84ac9aSAndroid Build Coastguard Worker #define DCCPDIAG_GETSOCK 19
6*cf84ac9aSAndroid Build Coastguard Worker 
7*cf84ac9aSAndroid Build Coastguard Worker /* Socket identity */
8*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_sockid {
9*cf84ac9aSAndroid Build Coastguard Worker 	uint16_t idiag_sport;
10*cf84ac9aSAndroid Build Coastguard Worker 	uint16_t idiag_dport;
11*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_src[4];
12*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_dst[4];
13*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_if;
14*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_cookie[2];
15*cf84ac9aSAndroid Build Coastguard Worker };
16*cf84ac9aSAndroid Build Coastguard Worker 
17*cf84ac9aSAndroid Build Coastguard Worker /* Request structures */
18*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_req {
19*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_family;
20*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_src_len;
21*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_dst_len;
22*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_ext;
23*cf84ac9aSAndroid Build Coastguard Worker 	struct inet_diag_sockid id;
24*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_states;
25*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_dbs;
26*cf84ac9aSAndroid Build Coastguard Worker };
27*cf84ac9aSAndroid Build Coastguard Worker 
28*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_req_v2 {
29*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t sdiag_family;
30*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t sdiag_protocol;
31*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_ext;
32*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t pad;
33*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_states;
34*cf84ac9aSAndroid Build Coastguard Worker 	struct inet_diag_sockid id;
35*cf84ac9aSAndroid Build Coastguard Worker };
36*cf84ac9aSAndroid Build Coastguard Worker 
37*cf84ac9aSAndroid Build Coastguard Worker enum {
38*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_REQ_NONE,
39*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_REQ_BYTECODE,
40*cf84ac9aSAndroid Build Coastguard Worker };
41*cf84ac9aSAndroid Build Coastguard Worker 
42*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_bc_op {
43*cf84ac9aSAndroid Build Coastguard Worker 	unsigned char code;
44*cf84ac9aSAndroid Build Coastguard Worker 	unsigned char yes;
45*cf84ac9aSAndroid Build Coastguard Worker 	unsigned short no;
46*cf84ac9aSAndroid Build Coastguard Worker };
47*cf84ac9aSAndroid Build Coastguard Worker 
48*cf84ac9aSAndroid Build Coastguard Worker enum {
49*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_NOP,
50*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_JMP,
51*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_S_GE,
52*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_S_LE,
53*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_D_GE,
54*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_D_LE,
55*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_AUTO,
56*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_S_COND,
57*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_D_COND,
58*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_DEV_COND,   /* u32 ifindex */
59*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_MARK_COND,
60*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_S_EQ,
61*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BC_D_EQ,
62*cf84ac9aSAndroid Build Coastguard Worker };
63*cf84ac9aSAndroid Build Coastguard Worker 
64*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_hostcond {
65*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t family;
66*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t prefix_len;
67*cf84ac9aSAndroid Build Coastguard Worker 	int port;
68*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t addr[0];
69*cf84ac9aSAndroid Build Coastguard Worker };
70*cf84ac9aSAndroid Build Coastguard Worker 
71*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_markcond {
72*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t mark;
73*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t mask;
74*cf84ac9aSAndroid Build Coastguard Worker };
75*cf84ac9aSAndroid Build Coastguard Worker 
76*cf84ac9aSAndroid Build Coastguard Worker /* Info structure */
77*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_msg {
78*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_family;
79*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_state;
80*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_timer;
81*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t idiag_retrans;
82*cf84ac9aSAndroid Build Coastguard Worker 
83*cf84ac9aSAndroid Build Coastguard Worker 	struct inet_diag_sockid id;
84*cf84ac9aSAndroid Build Coastguard Worker 
85*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_expires;
86*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_rqueue;
87*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_wqueue;
88*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_uid;
89*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_inode;
90*cf84ac9aSAndroid Build Coastguard Worker };
91*cf84ac9aSAndroid Build Coastguard Worker 
92*cf84ac9aSAndroid Build Coastguard Worker /* Extensions */
93*cf84ac9aSAndroid Build Coastguard Worker enum {
94*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_NONE,
95*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_MEMINFO,
96*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_INFO,
97*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_VEGASINFO,
98*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_CONG,
99*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_TOS,
100*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_TCLASS,
101*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_SKMEMINFO,
102*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_SHUTDOWN,
103*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_DCTCPINFO,
104*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_PROTOCOL,  /* response attribute only */
105*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_SKV6ONLY,
106*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_LOCALS,
107*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_PEERS,
108*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_PAD,
109*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_MARK,
110*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_BBRINFO,
111*cf84ac9aSAndroid Build Coastguard Worker 	INET_DIAG_CLASS_ID,
112*cf84ac9aSAndroid Build Coastguard Worker };
113*cf84ac9aSAndroid Build Coastguard Worker 
114*cf84ac9aSAndroid Build Coastguard Worker /* INET_DIAG_MEM */
115*cf84ac9aSAndroid Build Coastguard Worker struct inet_diag_meminfo {
116*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_rmem;
117*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_wmem;
118*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_fmem;
119*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t idiag_tmem;
120*cf84ac9aSAndroid Build Coastguard Worker };
121*cf84ac9aSAndroid Build Coastguard Worker 
122*cf84ac9aSAndroid Build Coastguard Worker /* INET_DIAG_VEGASINFO */
123*cf84ac9aSAndroid Build Coastguard Worker struct tcpvegas_info {
124*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t tcpv_enabled;
125*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t tcpv_rttcnt;
126*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t tcpv_rtt;
127*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t tcpv_minrtt;
128*cf84ac9aSAndroid Build Coastguard Worker };
129*cf84ac9aSAndroid Build Coastguard Worker 
130*cf84ac9aSAndroid Build Coastguard Worker /* INET_DIAG_DCTCPINFO */
131*cf84ac9aSAndroid Build Coastguard Worker struct tcp_dctcp_info {
132*cf84ac9aSAndroid Build Coastguard Worker 	uint16_t dctcp_enabled;
133*cf84ac9aSAndroid Build Coastguard Worker 	uint16_t dctcp_ce_state;
134*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t dctcp_alpha;
135*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t dctcp_ab_ecn;
136*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t dctcp_ab_tot;
137*cf84ac9aSAndroid Build Coastguard Worker };
138*cf84ac9aSAndroid Build Coastguard Worker 
139*cf84ac9aSAndroid Build Coastguard Worker /* INET_DIAG_BBRINFO */
140*cf84ac9aSAndroid Build Coastguard Worker struct tcp_bbr_info {
141*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bbr_bw_lo;
142*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bbr_bw_hi;
143*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bbr_min_rtt;
144*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bbr_pacing_gain;
145*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bbr_cwnd_gain;
146*cf84ac9aSAndroid Build Coastguard Worker };
147*cf84ac9aSAndroid Build Coastguard Worker 
148*cf84ac9aSAndroid Build Coastguard Worker #endif /* !STRACE_LINUX_INET_DIAG_H */
149