linux/include/uapi/linux/inet_diag.h
<<
>>
Prefs
   1#ifndef _UAPI_INET_DIAG_H_
   2#define _UAPI_INET_DIAG_H_
   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
  37struct inet_diag_req_v2 {
  38        __u8    sdiag_family;
  39        __u8    sdiag_protocol;
  40        __u8    idiag_ext;
  41        __u8    pad;
  42        __u32   idiag_states;
  43        struct inet_diag_sockid id;
  44};
  45
  46enum {
  47        INET_DIAG_REQ_NONE,
  48        INET_DIAG_REQ_BYTECODE,
  49};
  50
  51#define INET_DIAG_REQ_MAX INET_DIAG_REQ_BYTECODE
  52
  53/* Bytecode is sequence of 4 byte commands followed by variable arguments.
  54 * All the commands identified by "code" are conditional jumps forward:
  55 * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
  56 * length of the command and its arguments.
  57 */
  58 
  59struct inet_diag_bc_op {
  60        unsigned char   code;
  61        unsigned char   yes;
  62        unsigned short  no;
  63};
  64
  65enum {
  66        INET_DIAG_BC_NOP,
  67        INET_DIAG_BC_JMP,
  68        INET_DIAG_BC_S_GE,
  69        INET_DIAG_BC_S_LE,
  70        INET_DIAG_BC_D_GE,
  71        INET_DIAG_BC_D_LE,
  72        INET_DIAG_BC_AUTO,
  73        INET_DIAG_BC_S_COND,
  74        INET_DIAG_BC_D_COND,
  75};
  76
  77struct inet_diag_hostcond {
  78        __u8    family;
  79        __u8    prefix_len;
  80        int     port;
  81        __be32  addr[0];
  82};
  83
  84/* Base info structure. It contains socket identity (addrs/ports/cookie)
  85 * and, alas, the information shown by netstat. */
  86struct inet_diag_msg {
  87        __u8    idiag_family;
  88        __u8    idiag_state;
  89        __u8    idiag_timer;
  90        __u8    idiag_retrans;
  91
  92        struct inet_diag_sockid id;
  93
  94        __u32   idiag_expires;
  95        __u32   idiag_rqueue;
  96        __u32   idiag_wqueue;
  97        __u32   idiag_uid;
  98        __u32   idiag_inode;
  99};
 100
 101/* Extensions */
 102
 103enum {
 104        INET_DIAG_NONE,
 105        INET_DIAG_MEMINFO,
 106        INET_DIAG_INFO,
 107        INET_DIAG_VEGASINFO,
 108        INET_DIAG_CONG,
 109        INET_DIAG_TOS,
 110        INET_DIAG_TCLASS,
 111        INET_DIAG_SKMEMINFO,
 112        INET_DIAG_SHUTDOWN,
 113        INET_DIAG_DCTCPINFO,
 114        INET_DIAG_PROTOCOL,  /* response attribute only */
 115        INET_DIAG_SKV6ONLY,
 116};
 117
 118#define INET_DIAG_MAX INET_DIAG_SKV6ONLY
 119
 120/* INET_DIAG_MEM */
 121
 122struct inet_diag_meminfo {
 123        __u32   idiag_rmem;
 124        __u32   idiag_wmem;
 125        __u32   idiag_fmem;
 126        __u32   idiag_tmem;
 127};
 128
 129/* INET_DIAG_VEGASINFO */
 130
 131struct tcpvegas_info {
 132        __u32   tcpv_enabled;
 133        __u32   tcpv_rttcnt;
 134        __u32   tcpv_rtt;
 135        __u32   tcpv_minrtt;
 136};
 137
 138/* INET_DIAG_DCTCPINFO */
 139
 140struct tcp_dctcp_info {
 141        __u16   dctcp_enabled;
 142        __u16   dctcp_ce_state;
 143        __u32   dctcp_alpha;
 144        __u32   dctcp_ab_ecn;
 145        __u32   dctcp_ab_tot;
 146};
 147
 148union tcp_cc_info {
 149        struct tcpvegas_info    vegas;
 150        struct tcp_dctcp_info   dctcp;
 151};
 152#endif /* _UAPI_INET_DIAG_H_ */
 153