inet_diag.h revision 9044a4547d73df5c41fd53c83e5ccc2a59200797
1#ifndef _INET_DIAG_H_
2#define _INET_DIAG_H_ 1
3
4#include <linux/types.h>
5
6/* Just some random number */
7#define TCPDIAG_GETSOCK 18
8#define DCCPDIAG_GETSOCK 19
9
10#define INET_DIAG_GETSOCK_MAX 24
11
12/* Socket identity */
13struct inet_diag_sockid {
14	__be16	idiag_sport;
15	__be16	idiag_dport;
16	__be32	idiag_src[4];
17	__be32	idiag_dst[4];
18	__u32	idiag_if;
19	__u32	idiag_cookie[2];
20#define INET_DIAG_NOCOOKIE (~0U)
21};
22
23/* Request structure */
24
25struct inet_diag_req {
26	__u8	idiag_family;		/* Family of addresses. */
27	__u8	idiag_src_len;
28	__u8	idiag_dst_len;
29	__u8	idiag_ext;		/* Query extended information */
30
31	struct inet_diag_sockid id;
32
33	__u32	idiag_states;		/* States to dump */
34	__u32	idiag_dbs;		/* Tables to dump (NI) */
35};
36
37enum {
38	INET_DIAG_REQ_NONE,
39	INET_DIAG_REQ_BYTECODE,
40};
41
42#define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
43
44/* Bytecode is sequence of 4 byte commands followed by variable arguments.
45 * All the commands identified by "code" are conditional jumps forward:
46 * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
47 * length of the command and its arguments.
48 */
49
50struct inet_diag_bc_op {
51	unsigned char	code;
52	unsigned char	yes;
53	unsigned short	no;
54};
55
56enum {
57	INET_DIAG_BC_NOP,
58	INET_DIAG_BC_JMP,
59	INET_DIAG_BC_S_GE,
60	INET_DIAG_BC_S_LE,
61	INET_DIAG_BC_D_GE,
62	INET_DIAG_BC_D_LE,
63	INET_DIAG_BC_AUTO,
64	INET_DIAG_BC_S_COND,
65	INET_DIAG_BC_D_COND,
66};
67
68struct inet_diag_hostcond {
69	__u8	family;
70	__u8	prefix_len;
71	int	port;
72	__be32	addr[0];
73};
74
75/* Base info structure. It contains socket identity (addrs/ports/cookie)
76 * and, alas, the information shown by netstat. */
77struct inet_diag_msg {
78	__u8	idiag_family;
79	__u8	idiag_state;
80	__u8	idiag_timer;
81	__u8	idiag_retrans;
82
83	struct inet_diag_sockid id;
84
85	__u32	idiag_expires;
86	__u32	idiag_rqueue;
87	__u32	idiag_wqueue;
88	__u32	idiag_uid;
89	__u32	idiag_inode;
90};
91
92/* Extensions */
93
94enum {
95	INET_DIAG_NONE,
96	INET_DIAG_MEMINFO,
97	INET_DIAG_INFO,
98	INET_DIAG_VEGASINFO,
99	INET_DIAG_CONG,
100	INET_DIAG_TOS,
101	INET_DIAG_TCLASS,
102};
103
104#define INET_DIAG_MAX INET_DIAG_TCLASS
105
106
107/* INET_DIAG_MEM */
108
109struct inet_diag_meminfo {
110	__u32	idiag_rmem;
111	__u32	idiag_wmem;
112	__u32	idiag_fmem;
113	__u32	idiag_tmem;
114};
115
116/* INET_DIAG_VEGASINFO */
117
118struct tcpvegas_info {
119	__u32	tcpv_enabled;
120	__u32	tcpv_rttcnt;
121	__u32	tcpv_rtt;
122	__u32	tcpv_minrtt;
123};
124
125
126#endif /* _INET_DIAG_H_ */
127