1 /* 2 * Copyright (C) 2003 Juan Lang 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 #ifndef __WINE_TCPMIB_H 19 #define __WINE_TCPMIB_H 20 21 #define TCPIP_OWNING_MODULE_SIZE 16 22 23 24 /* TCP tables */ 25 26 typedef enum 27 { 28 MIB_TCP_STATE_CLOSED = 1, 29 MIB_TCP_STATE_LISTEN = 2, 30 MIB_TCP_STATE_SYN_SENT = 3, 31 MIB_TCP_STATE_SYN_RCVD = 4, 32 MIB_TCP_STATE_ESTAB = 5, 33 MIB_TCP_STATE_FIN_WAIT1 = 6, 34 MIB_TCP_STATE_FIN_WAIT2 = 7, 35 MIB_TCP_STATE_CLOSE_WAIT = 8, 36 MIB_TCP_STATE_CLOSING = 9, 37 MIB_TCP_STATE_LAST_ACK = 10, 38 MIB_TCP_STATE_TIME_WAIT = 11, 39 MIB_TCP_STATE_DELETE_TCB = 12, 40 } MIB_TCP_STATE; 41 42 typedef enum 43 { 44 TcpConnectionOffloadStateInHost, 45 TcpConnectionOffloadStateOffloading, 46 TcpConnectionOffloadStateOffloaded, 47 TcpConnectionOffloadStateUploading, 48 TcpConnectionOffloadStateMax, 49 } TCP_CONNECTION_OFFLOAD_STATE, *PTCP_CONNECTION_OFFLOAD_STATE; 50 51 typedef struct _MIB_TCPROW 52 { 53 union 54 { 55 DWORD dwState; 56 MIB_TCP_STATE State; 57 } DUMMYUNIONNAME; 58 DWORD dwLocalAddr; 59 DWORD dwLocalPort; 60 DWORD dwRemoteAddr; 61 DWORD dwRemotePort; 62 } MIB_TCPROW, *PMIB_TCPROW; 63 64 typedef struct _MIB_TCPTABLE 65 { 66 DWORD dwNumEntries; 67 MIB_TCPROW table[1]; 68 } MIB_TCPTABLE, *PMIB_TCPTABLE; 69 70 typedef struct _MIB_TCP6ROW { 71 MIB_TCP_STATE State; 72 IN6_ADDR LocalAddr; 73 DWORD dwLocalScopeId; 74 DWORD dwLocalPort; 75 IN6_ADDR RemoteAddr; 76 DWORD dwRemoteScopeId; 77 DWORD dwRemotePort; 78 } MIB_TCP6ROW, *PMIB_TCP6ROW; 79 80 typedef struct _MIB_TCP6TABLE { 81 DWORD dwNumEntries; 82 MIB_TCP6ROW table[1]; 83 } MIB_TCP6TABLE, *PMIB_TCP6TABLE; 84 85 typedef struct _MIB_TCP6ROW2 { 86 IN6_ADDR LocalAddr; 87 DWORD dwLocalScopeId; 88 DWORD dwLocalPort; 89 IN6_ADDR RemoteAddr; 90 DWORD dwRemoteScopeId; 91 DWORD dwRemotePort; 92 MIB_TCP_STATE State; 93 DWORD dwOwningPid; 94 TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; 95 } MIB_TCP6ROW2, *PMIB_TCP6ROW2; 96 97 typedef struct _MIB_TCP6TABLE2 { 98 DWORD dwNumEntries; 99 MIB_TCP6ROW2 table[1]; 100 } MIB_TCP6TABLE2, *PMIB_TCP6TABLE2; 101 102 typedef struct _MIB_TCPROW_OWNER_PID 103 { 104 DWORD dwState; 105 DWORD dwLocalAddr; 106 DWORD dwLocalPort; 107 DWORD dwRemoteAddr; 108 DWORD dwRemotePort; 109 DWORD dwOwningPid; 110 } MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID; 111 112 typedef struct _MIB_TCPTABLE_OWNER_PID 113 { 114 DWORD dwNumEntries; 115 MIB_TCPROW_OWNER_PID table[1]; 116 } MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID; 117 118 typedef struct _MIB_TCPROW_OWNER_MODULE 119 { 120 DWORD dwState; 121 DWORD dwLocalAddr; 122 DWORD dwLocalPort; 123 DWORD dwRemoteAddr; 124 DWORD dwRemotePort; 125 DWORD dwOwningPid; 126 LARGE_INTEGER liCreateTimestamp; 127 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 128 } MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE; 129 130 typedef struct _MIB_TCPTABLE_OWNER_MODULE 131 { 132 DWORD dwNumEntries; 133 MIB_TCPROW_OWNER_MODULE table[1]; 134 } MIB_TCPTABLE_OWNER_MODULE, *PMIB_TCPTABLE_OWNER_MODULE; 135 136 typedef struct _MIB_TCPROW2 137 { 138 DWORD dwState; 139 DWORD dwLocalAddr; 140 DWORD dwLocalPort; 141 DWORD dwRemoteAddr; 142 DWORD dwRemotePort; 143 DWORD dwOwningPid; 144 TCP_CONNECTION_OFFLOAD_STATE dwOffloadState; 145 } MIB_TCPROW2, *PMIB_TCPROW2; 146 147 typedef struct _MIB_TCPTABLE2 148 { 149 DWORD dwNumEntries; 150 MIB_TCPROW2 table[1]; 151 } MIB_TCPTABLE2, *PMIB_TCPTABLE2; 152 153 154 /* TCP stats */ 155 156 typedef enum 157 { 158 TcpRtoAlgorithmOther = 0, 159 TcpRtoAlgorithmConstant = 1, 160 TcpRtoAlgorithmRsre = 2, 161 TcpRtoAlgorithmVanj = 3, 162 163 MIB_TCP_RTO_OTHER = 1, 164 MIB_TCP_RTO_CONSTANT = 2, 165 MIB_TCP_RTO_RSRE = 3, 166 MIB_TCP_RTO_VANJ = 4, 167 } TCP_RTO_ALGORITHM, *PTCP_RTO_ALGORITHM; 168 169 typedef struct _MIB_TCPSTATS 170 { 171 union 172 { 173 DWORD dwRtoAlgorithm; 174 TCP_RTO_ALGORITHM RtoAlgorithm; 175 } DUMMYUNIONNAME; 176 DWORD dwRtoMin; 177 DWORD dwRtoMax; 178 DWORD dwMaxConn; 179 DWORD dwActiveOpens; 180 DWORD dwPassiveOpens; 181 DWORD dwAttemptFails; 182 DWORD dwEstabResets; 183 DWORD dwCurrEstab; 184 DWORD dwInSegs; 185 DWORD dwOutSegs; 186 DWORD dwRetransSegs; 187 DWORD dwInErrs; 188 DWORD dwOutRsts; 189 DWORD dwNumConns; 190 } MIB_TCPSTATS, *PMIB_TCPSTATS; 191 192 #endif /* __WINE_TCPMIB_H */ 193