tcp_diag.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _TCP_DIAG_H_
  2. #define _TCP_DIAG_H_ 1
  3. /* Just some random number */
  4. #define TCPDIAG_GETSOCK 18
  5. /* Socket identity */
  6. struct tcpdiag_sockid
  7. {
  8. __u16 tcpdiag_sport;
  9. __u16 tcpdiag_dport;
  10. __u32 tcpdiag_src[4];
  11. __u32 tcpdiag_dst[4];
  12. __u32 tcpdiag_if;
  13. __u32 tcpdiag_cookie[2];
  14. #define TCPDIAG_NOCOOKIE (~0U)
  15. };
  16. /* Request structure */
  17. struct tcpdiagreq
  18. {
  19. __u8 tcpdiag_family; /* Family of addresses. */
  20. __u8 tcpdiag_src_len;
  21. __u8 tcpdiag_dst_len;
  22. __u8 tcpdiag_ext; /* Query extended information */
  23. struct tcpdiag_sockid id;
  24. __u32 tcpdiag_states; /* States to dump */
  25. __u32 tcpdiag_dbs; /* Tables to dump (NI) */
  26. };
  27. enum
  28. {
  29. TCPDIAG_REQ_NONE,
  30. TCPDIAG_REQ_BYTECODE,
  31. };
  32. #define TCPDIAG_REQ_MAX TCPDIAG_REQ_BYTECODE
  33. /* Bytecode is sequence of 4 byte commands followed by variable arguments.
  34.  * All the commands identified by "code" are conditional jumps forward:
  35.  * to offset cc+"yes" or to offset cc+"no". "yes" is supposed to be
  36.  * length of the command and its arguments.
  37.  */
  38.  
  39. struct tcpdiag_bc_op
  40. {
  41. unsigned char code;
  42. unsigned char yes;
  43. unsigned short no;
  44. };
  45. enum
  46. {
  47. TCPDIAG_BC_NOP,
  48. TCPDIAG_BC_JMP,
  49. TCPDIAG_BC_S_GE,
  50. TCPDIAG_BC_S_LE,
  51. TCPDIAG_BC_D_GE,
  52. TCPDIAG_BC_D_LE,
  53. TCPDIAG_BC_AUTO,
  54. TCPDIAG_BC_S_COND,
  55. TCPDIAG_BC_D_COND,
  56. };
  57. struct tcpdiag_hostcond
  58. {
  59. __u8 family;
  60. __u8 prefix_len;
  61. int port;
  62. __u32 addr[0];
  63. };
  64. /* Base info structure. It contains socket identity (addrs/ports/cookie)
  65.  * and, alas, the information shown by netstat. */
  66. struct tcpdiagmsg
  67. {
  68. __u8 tcpdiag_family;
  69. __u8 tcpdiag_state;
  70. __u8 tcpdiag_timer;
  71. __u8 tcpdiag_retrans;
  72. struct tcpdiag_sockid id;
  73. __u32 tcpdiag_expires;
  74. __u32 tcpdiag_rqueue;
  75. __u32 tcpdiag_wqueue;
  76. __u32 tcpdiag_uid;
  77. __u32 tcpdiag_inode;
  78. };
  79. /* Extensions */
  80. enum
  81. {
  82. TCPDIAG_NONE,
  83. TCPDIAG_MEMINFO,
  84. TCPDIAG_INFO,
  85. };
  86. #define TCPDIAG_MAX TCPDIAG_INFO
  87. /* TCPDIAG_MEM */
  88. struct tcpdiag_meminfo
  89. {
  90. __u32 tcpdiag_rmem;
  91. __u32 tcpdiag_wmem;
  92. __u32 tcpdiag_fmem;
  93. __u32 tcpdiag_tmem;
  94. };
  95. #endif /* _TCP_DIAG_H_ */