inet_diag.h revision a08d2590a042f8173713cb3b1bf7bb7aeb3ce584
12f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#ifndef _INET_DIAG_H_
21b362b15af34006e6a11974088a46d42b903418eJohann#define _INET_DIAG_H_ 1
32f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
42f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#include <linux/types.h>
52f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
62f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* Just some random number */
72f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#define TCPDIAG_GETSOCK 18
82f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#define DCCPDIAG_GETSOCK 19
92f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
102f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#define INET_DIAG_GETSOCK_MAX 24
112f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
121b362b15af34006e6a11974088a46d42b903418eJohann/* Socket identity */
13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangstruct inet_diag_sockid {
141b362b15af34006e6a11974088a46d42b903418eJohann	__be16	idiag_sport;
152f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__be16	idiag_dport;
161b362b15af34006e6a11974088a46d42b903418eJohann	__be32	idiag_src[4];
172f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__be32	idiag_dst[4];
182f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_if;
192f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_cookie[2];
201b362b15af34006e6a11974088a46d42b903418eJohann#define INET_DIAG_NOCOOKIE (~0U)
211b362b15af34006e6a11974088a46d42b903418eJohann};
222f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
232f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* Request structure */
242f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
252f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_req_compat {
262f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_family;		/* Family of addresses. */
272f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_src_len;
282f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_dst_len;
292f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_ext;		/* Query extended information */
302f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
311b362b15af34006e6a11974088a46d42b903418eJohann	struct inet_diag_sockid id;
321b362b15af34006e6a11974088a46d42b903418eJohann
332f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_states;		/* States to dump */
342f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_dbs;		/* Tables to dump (NI) */
352f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
362f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
372f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_req {
382f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	sdiag_family;
392f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	sdiag_protocol;
402f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_ext;
412f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	pad;
422f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_states;
432f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	struct inet_diag_sockid id;
442f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
452f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
462f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanenum {
472f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_REQ_NONE,
482f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_REQ_BYTECODE,
492f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
502f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
512f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
522f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
532f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* Bytecode is sequence of 4 byte commands followed by variable arguments.
542f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan * All the commands identified by "code" are conditional jumps forward:
552f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
562f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan * length of the command and its arguments.
572f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan */
582f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
592f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_bc_op {
602f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	unsigned char	code;
612f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	unsigned char	yes;
622f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	unsigned short	no;
632f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
642f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
652f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanenum {
662f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_NOP,
672f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_JMP,
682f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_S_GE,
692f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_S_LE,
702f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_D_GE,
712f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_D_LE,
722f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_AUTO,
732f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_S_COND,
742f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_BC_D_COND,
752f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
762f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
772f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_hostcond {
782f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	family;
792f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	prefix_len;
802f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	int	port;
812f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__be32	addr[0];
822f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
832f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
842f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* Base info structure. It contains socket identity (addrs/ports/cookie)
852f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan * and, alas, the information shown by netstat. */
862f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_msg {
872f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_family;
882f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_state;
892f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_timer;
902f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u8	idiag_retrans;
912f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
922f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	struct inet_diag_sockid id;
932f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
942f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_expires;
952f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_rqueue;
962f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_wqueue;
972f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_uid;
982f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_inode;
992f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
1002f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1012f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* Extensions */
1022f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1032f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanenum {
1042f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_NONE,
1052f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_MEMINFO,
1062f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_INFO,
1072f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_VEGASINFO,
1082f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_CONG,
1092f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_TOS,
1102f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_TCLASS,
1112f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	INET_DIAG_SKMEMINFO,
1122f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
1132f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1142f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#define INET_DIAG_MAX INET_DIAG_SKMEMINFO
1152f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1162f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1172f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* INET_DIAG_MEM */
1182f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1192f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct inet_diag_meminfo {
1202f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_rmem;
1212f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_wmem;
1222f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_fmem;
1232f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	idiag_tmem;
1242f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
1252f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1262f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan/* INET_DIAG_VEGASINFO */
1272f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1282f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjanstruct tcpvegas_info {
1292f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	tcpv_enabled;
1302f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	tcpv_rttcnt;
1312f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	tcpv_rtt;
1322f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan	__u32	tcpv_minrtt;
1332f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan};
1342f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1352f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan
1362f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan#endif /* _INET_DIAG_H_ */
1372f01f9a5c363613e7389fb28c250edcd4509f815Dragan Mrdjan