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        INET_DIAG_BC_DEV_COND,   /* u32 ifindex */
  76        INET_DIAG_BC_MARK_COND,
  77};
  78
  79struct inet_diag_hostcond {
  80        __u8    family;
  81        __u8    prefix_len;
  82        int     port;
  83        __be32  addr[0];
  84};
  85
  86struct inet_diag_markcond {
  87        __u32 mark;
  88        __u32 mask;
  89};
  90
  91/* Base info structure. It contains socket identity (addrs/ports/cookie)
  92 * and, alas, the information shown by netstat. */
  93struct inet_diag_msg {
  94        __u8    idiag_family;
  95        __u8    idiag_state;
  96        __u8    idiag_timer;
  97        __u8    idiag_retrans;
  98
  99        struct inet_diag_sockid id;
 100
 101        __u32   idiag_expires;
 102        __u32   idiag_rqueue;
 103        __u32   idiag_wqueue;
 104        __u32   idiag_uid;
 105        __u32   idiag_inode;
 106};
 107
 108/* Extensions */
 109
 110enum {
 111        INET_DIAG_NONE,
 112        INET_DIAG_MEMINFO,
 113        INET_DIAG_INFO,
 114        INET_DIAG_VEGASINFO,
 115        INET_DIAG_CONG,
 116        INET_DIAG_TOS,
 117        INET_DIAG_TCLASS,
 118        INET_DIAG_SKMEMINFO,
 119        INET_DIAG_SHUTDOWN,
 120        INET_DIAG_DCTCPINFO,
 121        INET_DIAG_PROTOCOL,  /* response attribute only */
 122        INET_DIAG_SKV6ONLY,
 123        INET_DIAG_LOCALS,
 124        INET_DIAG_PEERS,
 125        INET_DIAG_PAD,
 126        INET_DIAG_MARK,
 127        INET_DIAG_BBRINFO,
 128        __INET_DIAG_MAX,
 129};
 130
 131#define INET_DIAG_MAX (__INET_DIAG_MAX - 1)
 132
 133/* INET_DIAG_MEM */
 134
 135struct inet_diag_meminfo {
 136        __u32   idiag_rmem;
 137        __u32   idiag_wmem;
 138        __u32   idiag_fmem;
 139        __u32   idiag_tmem;
 140};
 141
 142/* INET_DIAG_VEGASINFO */
 143
 144struct tcpvegas_info {
 145        __u32   tcpv_enabled;
 146        __u32   tcpv_rttcnt;
 147        __u32   tcpv_rtt;
 148        __u32   tcpv_minrtt;
 149};
 150
 151/* INET_DIAG_DCTCPINFO */
 152
 153struct tcp_dctcp_info {
 154        __u16   dctcp_enabled;
 155        __u16   dctcp_ce_state;
 156        __u32   dctcp_alpha;
 157        __u32   dctcp_ab_ecn;
 158        __u32   dctcp_ab_tot;
 159};
 160
 161/* INET_DIAG_BBRINFO */
 162
 163struct tcp_bbr_info {
 164        /* u64 bw: max-filtered BW (app throughput) estimate in Byte per sec: */
 165        __u32   bbr_bw_lo;              /* lower 32 bits of bw */
 166        __u32   bbr_bw_hi;              /* upper 32 bits of bw */
 167        __u32   bbr_min_rtt;            /* min-filtered RTT in uSec */
 168        __u32   bbr_pacing_gain;        /* pacing gain shifted left 8 bits */
 169        __u32   bbr_cwnd_gain;          /* cwnd gain shifted left 8 bits */
 170};
 171
 172union tcp_cc_info {
 173        struct tcpvegas_info    vegas;
 174        struct tcp_dctcp_info   dctcp;
 175        struct tcp_bbr_info     bbr;
 176};
 177#endif /* _UAPI_INET_DIAG_H_ */
 178