1 #ifndef STRACE_LINUX_INET_DIAG_H 2 #define STRACE_LINUX_INET_DIAG_H 3 4 #define TCPDIAG_GETSOCK 18 5 #define DCCPDIAG_GETSOCK 19 6 7 /* Socket identity */ 8 struct inet_diag_sockid { 9 uint16_t idiag_sport; 10 uint16_t idiag_dport; 11 uint32_t idiag_src[4]; 12 uint32_t idiag_dst[4]; 13 uint32_t idiag_if; 14 uint32_t idiag_cookie[2]; 15 }; 16 17 /* Request structures */ 18 struct inet_diag_req { 19 uint8_t idiag_family; 20 uint8_t idiag_src_len; 21 uint8_t idiag_dst_len; 22 uint8_t idiag_ext; 23 struct inet_diag_sockid id; 24 uint32_t idiag_states; 25 uint32_t idiag_dbs; 26 }; 27 28 struct inet_diag_req_v2 { 29 uint8_t sdiag_family; 30 uint8_t sdiag_protocol; 31 uint8_t idiag_ext; 32 uint8_t pad; 33 uint32_t idiag_states; 34 struct inet_diag_sockid id; 35 }; 36 37 enum { 38 INET_DIAG_REQ_NONE, 39 INET_DIAG_REQ_BYTECODE, 40 }; 41 42 struct inet_diag_bc_op { 43 unsigned char code; 44 unsigned char yes; 45 unsigned short no; 46 }; 47 48 enum { 49 INET_DIAG_BC_NOP, 50 INET_DIAG_BC_JMP, 51 INET_DIAG_BC_S_GE, 52 INET_DIAG_BC_S_LE, 53 INET_DIAG_BC_D_GE, 54 INET_DIAG_BC_D_LE, 55 INET_DIAG_BC_AUTO, 56 INET_DIAG_BC_S_COND, 57 INET_DIAG_BC_D_COND, 58 INET_DIAG_BC_DEV_COND, /* u32 ifindex */ 59 INET_DIAG_BC_MARK_COND, 60 INET_DIAG_BC_S_EQ, 61 INET_DIAG_BC_D_EQ, 62 }; 63 64 struct inet_diag_hostcond { 65 uint8_t family; 66 uint8_t prefix_len; 67 int port; 68 uint32_t addr[0]; 69 }; 70 71 struct inet_diag_markcond { 72 uint32_t mark; 73 uint32_t mask; 74 }; 75 76 /* Info structure */ 77 struct inet_diag_msg { 78 uint8_t idiag_family; 79 uint8_t idiag_state; 80 uint8_t idiag_timer; 81 uint8_t idiag_retrans; 82 83 struct inet_diag_sockid id; 84 85 uint32_t idiag_expires; 86 uint32_t idiag_rqueue; 87 uint32_t idiag_wqueue; 88 uint32_t idiag_uid; 89 uint32_t idiag_inode; 90 }; 91 92 /* Extensions */ 93 enum { 94 INET_DIAG_NONE, 95 INET_DIAG_MEMINFO, 96 INET_DIAG_INFO, 97 INET_DIAG_VEGASINFO, 98 INET_DIAG_CONG, 99 INET_DIAG_TOS, 100 INET_DIAG_TCLASS, 101 INET_DIAG_SKMEMINFO, 102 INET_DIAG_SHUTDOWN, 103 INET_DIAG_DCTCPINFO, 104 INET_DIAG_PROTOCOL, /* response attribute only */ 105 INET_DIAG_SKV6ONLY, 106 INET_DIAG_LOCALS, 107 INET_DIAG_PEERS, 108 INET_DIAG_PAD, 109 INET_DIAG_MARK, 110 INET_DIAG_BBRINFO, 111 INET_DIAG_CLASS_ID, 112 }; 113 114 /* INET_DIAG_MEM */ 115 struct inet_diag_meminfo { 116 uint32_t idiag_rmem; 117 uint32_t idiag_wmem; 118 uint32_t idiag_fmem; 119 uint32_t idiag_tmem; 120 }; 121 122 /* INET_DIAG_VEGASINFO */ 123 struct tcpvegas_info { 124 uint32_t tcpv_enabled; 125 uint32_t tcpv_rttcnt; 126 uint32_t tcpv_rtt; 127 uint32_t tcpv_minrtt; 128 }; 129 130 /* INET_DIAG_DCTCPINFO */ 131 struct tcp_dctcp_info { 132 uint16_t dctcp_enabled; 133 uint16_t dctcp_ce_state; 134 uint32_t dctcp_alpha; 135 uint32_t dctcp_ab_ecn; 136 uint32_t dctcp_ab_tot; 137 }; 138 139 /* INET_DIAG_BBRINFO */ 140 struct tcp_bbr_info { 141 uint32_t bbr_bw_lo; 142 uint32_t bbr_bw_hi; 143 uint32_t bbr_min_rtt; 144 uint32_t bbr_pacing_gain; 145 uint32_t bbr_cwnd_gain; 146 }; 147 148 #endif /* !STRACE_LINUX_INET_DIAG_H */ 149