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