#ifndef _TCP_DIAG_H_ #define _TCP_DIAG_H_ 1 /* Just some random number */ #define TCPDIAG_GETSOCK 18 /* Socket identity */ struct tcpdiag_sockid { __u16 tcpdiag_sport; __u16 tcpdiag_dport; __u32 tcpdiag_src[4]; __u32 tcpdiag_dst[4]; __u32 tcpdiag_if; __u32 tcpdiag_cookie[2]; #define TCPDIAG_NOCOOKIE (~0U) }; /* Request structure */ struct tcpdiagreq { __u8 tcpdiag_family; /* Family of addresses. */ __u8 tcpdiag_src_len; __u8 tcpdiag_dst_len; __u8 tcpdiag_ext; /* Query extended information */ struct tcpdiag_sockid id; __u32 tcpdiag_states; /* States to dump */ __u32 tcpdiag_dbs; /* Tables to dump (NI) */ }; enum { TCPDIAG_REQ_NONE, TCPDIAG_REQ_BYTECODE, }; #define TCPDIAG_REQ_MAX TCPDIAG_REQ_BYTECODE /* Bytecode is sequence of 4 byte commands followed by variable arguments. * All the commands identified by "code" are conditional jumps forward: * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be * length of the command and its arguments. */ struct tcpdiag_bc_op { unsigned char code; unsigned char yes; unsigned short no; }; enum { TCPDIAG_BC_NOP, TCPDIAG_BC_JMP, TCPDIAG_BC_S_GE, TCPDIAG_BC_S_LE, TCPDIAG_BC_D_GE, TCPDIAG_BC_D_LE, TCPDIAG_BC_AUTO, TCPDIAG_BC_S_COND, TCPDIAG_BC_D_COND, }; struct tcpdiag_hostcond { __u8 family; __u8 prefix_len; int port; __u32 addr[0]; }; /* Base info structure. It contains socket identity (addrs/ports/cookie) * and, alas, the information shown by netstat. */ struct tcpdiagmsg { __u8 tcpdiag_family; __u8 tcpdiag_state; __u8 tcpdiag_timer; __u8 tcpdiag_retrans; struct tcpdiag_sockid id; __u32 tcpdiag_expires; __u32 tcpdiag_rqueue; __u32 tcpdiag_wqueue; __u32 tcpdiag_uid; __u32 tcpdiag_inode; }; /* Extensions */ enum { TCPDIAG_NONE, TCPDIAG_MEMINFO, TCPDIAG_INFO, TCPDIAG_VEGASINFO, }; #define TCPDIAG_MAX TCPDIAG_VEGASINFO /* TCPDIAG_MEM */ struct tcpdiag_meminfo { __u32 tcpdiag_rmem; __u32 tcpdiag_wmem; __u32 tcpdiag_fmem; __u32 tcpdiag_tmem; }; /* TCPDIAG_VEGASINFO */ struct tcpvegas_info { __u32 tcpv_enabled; __u32 tcpv_rttcnt; __u32 tcpv_rtt; __u32 tcpv_minrtt; }; #endif /* _TCP_DIAG_H_ */