Reactos
at master 247 lines 7.3 kB view raw
1/* 2 * PROJECT: ReactOS PSDK 3 * LICENSE: MIT (https://spdx.org/licenses/MIT) 4 * PURPOSE: TCPMIB Header 5 * COPYRIGHT: Copyright 2025 Carl Bialorucki <carl.bialorucki@reactos.org> 6 */ 7 8#ifndef _TCPMIB_ 9#define _TCPMIB_ 10 11#define TCPIP_OWNING_MODULE_SIZE 16 12#define MIB_TCP_MAXCONN_DYNAMIC ((ULONG)-1) 13 14typedef enum { 15 MIB_TCP_STATE_CLOSED = 1, 16 MIB_TCP_STATE_LISTEN = 2, 17 MIB_TCP_STATE_SYN_SENT = 3, 18 MIB_TCP_STATE_SYN_RCVD = 4, 19 MIB_TCP_STATE_ESTAB = 5, 20 MIB_TCP_STATE_FIN_WAIT1 = 6, 21 MIB_TCP_STATE_FIN_WAIT2 = 7, 22 MIB_TCP_STATE_CLOSE_WAIT = 8, 23 MIB_TCP_STATE_CLOSING = 9, 24 MIB_TCP_STATE_LAST_ACK = 10, 25 MIB_TCP_STATE_TIME_WAIT = 11, 26 MIB_TCP_STATE_DELETE_TCB = 12, 27 28 MIB_TCP_STATE_RESERVED = 100 29} MIB_TCP_STATE; 30 31typedef enum { 32 TcpConnectionOffloadStateInHost, 33 TcpConnectionOffloadStateOffloading, 34 TcpConnectionOffloadStateOffloaded, 35 TcpConnectionOffloadStateUploading, 36 TcpConnectionOffloadStateMax, 37} TCP_CONNECTION_OFFLOAD_STATE, *PTCP_CONNECTION_OFFLOAD_STATE; 38 39typedef struct _MIB_TCPROW { 40 union { 41 DWORD dwState; 42 MIB_TCP_STATE State; 43 }; 44 DWORD dwLocalAddr; 45 DWORD dwLocalPort; 46 DWORD dwRemoteAddr; 47 DWORD dwRemotePort; 48} MIB_TCPROW, *PMIB_TCPROW; 49 50typedef struct _MIB_TCPTABLE { 51 DWORD dwNumEntries; 52 MIB_TCPROW table[1]; 53} MIB_TCPTABLE, *PMIB_TCPTABLE; 54 55#define SIZEOF_TCPTABLE(x) \ 56 (FIELD_OFFSET(MIB_TCPTABLE, table[0]) + ((x) * sizeof(MIB_TCPROW)) + ALIGN_SIZE) 57 58typedef struct _MIB_TCPROW2 { 59 DWORD dwState; 60 DWORD dwLocalAddr; 61 DWORD dwLocalPort; 62 DWORD dwRemoteAddr; 63 DWORD dwRemotePort; 64 DWORD dwOwningPid; 65 TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; 66} MIB_TCPROW2, *PMIB_TCPROW2; 67 68typedef struct _MIB_TCPTABLE2 { 69 DWORD dwNumEntries; 70 MIB_TCPROW2 table[1]; 71} MIB_TCPTABLE2, *PMIB_TCPTABLE2; 72 73#define SIZEOF_TCPTABLE2(x) \ 74 (FIELD_OFFSET(MIB_TCPTABLE2, table[0]) + ((x) * sizeof(MIB_TCPROW2)) + ALIGN_SIZE) 75 76typedef struct _MIB_TCPROW_OWNER_PID { 77 DWORD dwState; 78 DWORD dwLocalAddr; 79 DWORD dwLocalPort; 80 DWORD dwRemoteAddr; 81 DWORD dwRemotePort; 82 DWORD dwOwningPid; 83} MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID; 84 85typedef struct _MIB_TCPTABLE_OWNER_PID { 86 DWORD dwNumEntries; 87 MIB_TCPROW_OWNER_PID table[1]; 88} MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID; 89 90#define SIZEOF_TCPTABLE_OWNER_PID(x) \ 91 (FIELD_OFFSET(MIB_TCPTABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_TCPROW_OWNER_PID)) + ALIGN_SIZE) 92 93typedef struct _MIB_TCPROW_OWNER_MODULE { 94 DWORD dwState; 95 DWORD dwLocalAddr; 96 DWORD dwLocalPort; 97 DWORD dwRemoteAddr; 98 DWORD dwRemotePort; 99 DWORD dwOwningPid; 100 LARGE_INTEGER liCreateTimestamp; 101 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 102} MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE; 103 104typedef struct _MIB_TCPTABLE_OWNER_MODULE { 105 DWORD dwNumEntries; 106 MIB_TCPROW_OWNER_MODULE table[1]; 107} MIB_TCPTABLE_OWNER_MODULE, *PMIB_TCPTABLE_OWNER_MODULE; 108 109#define SIZEOF_TCPTABLE_OWNER_MODULE(x) \ 110 (FIELD_OFFSET(MIB_TCPTABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_TCPROW_OWNER_MODULE)) + ALIGN_SIZE) 111 112typedef enum { 113 TcpRtoAlgorithmOther = 1, 114 TcpRtoAlgorithmConstant = 2, 115 TcpRtoAlgorithmRsre = 3, 116 TcpRtoAlgorithmVanj = 4, 117 118 MIB_TCP_RTO_OTHER = 1, 119 MIB_TCP_RTO_CONSTANT = 2, 120 MIB_TCP_RTO_RSRE = 3, 121 MIB_TCP_RTO_VANJ = 4, 122} TCP_RTO_ALGORITHM, *PTCP_RTO_ALGORITHM; 123 124typedef struct _MIB_TCPSTATS { 125 union { 126 DWORD dwRtoAlgorithm; 127 TCP_RTO_ALGORITHM RtoAlgorithm; 128 }; 129 DWORD dwRtoMin; 130 DWORD dwRtoMax; 131 DWORD dwMaxConn; 132 DWORD dwActiveOpens; 133 DWORD dwPassiveOpens; 134 DWORD dwAttemptFails; 135 DWORD dwEstabResets; 136 DWORD dwCurrEstab; 137 DWORD dwInSegs; 138 DWORD dwOutSegs; 139 DWORD dwRetransSegs; 140 DWORD dwInErrs; 141 DWORD dwOutRsts; 142 DWORD dwNumConns; 143} MIB_TCPSTATS, *PMIB_TCPSTATS; 144 145#if (NTDDI_VERSION >= NTDDI_WIN10_RS3) 146typedef struct _MIB_TCPSTATS2 { 147 TCP_RTO_ALGORITHM RtoAlgorithm; 148 DWORD dwRtoMin; 149 DWORD dwRtoMax; 150 DWORD dwMaxConn; 151 DWORD dwActiveOpens; 152 DWORD dwPassiveOpens; 153 DWORD dwAttemptFails; 154 DWORD dwEstabResets; 155 DWORD dwCurrEstab; 156 DWORD64 dw64InSegs; 157 DWORD64 dw64OutSegs; 158 DWORD dwRetransSegs; 159 DWORD dwInErrs; 160 DWORD dwOutRsts; 161 DWORD dwNumConns; 162} MIB_TCPSTATS2, *PMIB_TCPSTATS2; 163#endif // (NTDDI_VERSION >= NTDDI_WIN10_RS3) 164 165#ifdef _WS2IPDEF_ 166typedef struct _MIB_TCP6ROW { 167 MIB_TCP_STATE State; 168 IN6_ADDR LocalAddr; 169 DWORD dwLocalScopeId; 170 DWORD dwLocalPort; 171 IN6_ADDR RemoteAddr; 172 DWORD dwRemoteScopeId; 173 DWORD dwRemotePort; 174} MIB_TCP6ROW, *PMIB_TCP6ROW; 175 176typedef struct _MIB_TCP6TABLE { 177 DWORD dwNumEntries; 178 MIB_TCP6ROW table[1]; 179} MIB_TCP6TABLE, *PMIB_TCP6TABLE; 180 181#define SIZEOF_TCP6TABLE(x) \ 182 (FIELD_OFFSET(MIB_TCP6TABLE, table[0]) + ((x) * sizeof(MIB_TCP6ROW)) + ALIGN_SIZE) 183 184typedef struct _MIB_TCP6ROW2 { 185 IN6_ADDR LocalAddr; 186 DWORD dwLocalScopeId; 187 DWORD dwLocalPort; 188 IN6_ADDR RemoteAddr; 189 DWORD dwRemoteScopeId; 190 DWORD dwRemotePort; 191 MIB_TCP_STATE State; 192 DWORD dwOwningPid; 193 TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; 194} MIB_TCP6ROW2, *PMIB_TCP6ROW2; 195 196typedef struct _MIB_TCP6TABLE2 { 197 DWORD dwNumEntries; 198 MIB_TCP6ROW2 table[1]; 199} MIB_TCP6TABLE2, *PMIB_TCP6TABLE2; 200 201#define SIZEOF_TCP6TABLE2(x) \ 202 (FIELD_OFFSET(MIB_TCP6TABLE2, table[0]) + ((x) * sizeof(MIB_TCP6ROW2)) + ALIGN_SIZE) 203 204typedef struct _MIB_TCP6ROW_OWNER_PID { 205 UCHAR ucLocalAddr[16]; 206 DWORD dwLocalScopeId; 207 DWORD dwLocalPort; 208 UCHAR ucRemoteAddr[16]; 209 DWORD dwRemoteScopeId; 210 DWORD dwRemotePort; 211 DWORD dwState; 212 DWORD dwOwningPid; 213} MIB_TCP6ROW_OWNER_PID, *PMIB_TCP6ROW_OWNER_PID; 214 215typedef struct _MIB_TCP6TABLE_OWNER_PID { 216 DWORD dwNumEntries; 217 _Field_size_(dwNumEntries) 218 MIB_TCP6ROW_OWNER_PID table[1]; 219} MIB_TCP6TABLE_OWNER_PID, *PMIB_TCP6TABLE_OWNER_PID; 220 221#define SIZEOF_TCP6TABLE_OWNER_PID(x) \ 222 (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE) 223 224typedef struct _MIB_TCP6ROW_OWNER_MODULE { 225 UCHAR ucLocalAddr[16]; 226 DWORD dwLocalScopeId; 227 DWORD dwLocalPort; 228 UCHAR ucRemoteAddr[16]; 229 DWORD dwRemoteScopeId; 230 DWORD dwRemotePort; 231 DWORD dwState; 232 DWORD dwOwningPid; 233 LARGE_INTEGER liCreateTimestamp; 234 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 235} MIB_TCP6ROW_OWNER_MODULE, *PMIB_TCP6ROW_OWNER_MODULE; 236 237typedef struct _MIB_TCP6TABLE_OWNER_MODULE { 238 DWORD dwNumEntries; 239 _Field_size_(dwNumEntries) 240 MIB_TCP6ROW_OWNER_MODULE table[1]; 241} MIB_TCP6TABLE_OWNER_MODULE, *PMIB_TCP6TABLE_OWNER_MODULE; 242 243#define SIZEOF_TCP6TABLE_OWNER_MODULE(x) \ 244 (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_TCP6ROW_OWNER_MODULE)) + ALIGN_SIZE) 245#endif // _WS2IPDEF_ 246 247#endif // _TCPMIB_