26#ifndef TCPS_ESTABLISHED
27# define TCPS_ESTABLISHED TCP_ESTABLISHED
30# define TCPS_SYN_SENT TCP_SYN_SENT
32#ifndef TCPS_SYN_RECEIVED
33# define TCPS_SYN_RECEIVED TCP_SYN_RECV
35#ifndef TCPS_FIN_WAIT_1
36# define TCPS_FIN_WAIT_1 TCP_FIN_WAIT1
38#ifndef TCPS_FIN_WAIT_2
39# define TCPS_FIN_WAIT_2 TCP_FIN_WAIT2
42# define TCPS_TIME_WAIT TCP_TIME_WAIT
45# define TCPS_CLOSED TCP_CLOSE
47#ifndef TCPS_CLOSE_WAIT
48# define TCPS_CLOSE_WAIT TCP_CLOSE_WAIT
51# define TCPS_LAST_ACK TCP_LAST_ACK
54# define TCPS_LISTEN TCP_LISTEN
57# define TCPS_CLOSING TCP_CLOSING
66 DWORD numEntities = 0;
75 for(
i = 0;
i < numEntities;
i++ ) {
77 TRACE(
"Entity %d is an IP Entity\n",
i);
78 if( numRoutes ==
index )
break;
83 if( numRoutes ==
index &&
i < numEntities ) {
84 TRACE(
"Index %lu is entity #%d - %04x:%08x\n",
index,
i,
85 entitySet[
i].tei_entity, entitySet[
i].tei_instance);
86 memcpy( ent, &entitySet[
i],
sizeof(*ent) );
107 TRACE(
"TdiGetMibForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
108 tcpFile, ent->tei_instance);
124 TRACE(
"TdiGetMibForIpEntity() => status = 0x%08lx, entry = {\n"
125 " ipsi_forwarding ............ %lu\n"
126 " ipsi_defaultttl ............ %lu\n"
127 " ipsi_inreceives ............ %lu\n"
128 " ipsi_indelivers ............ %lu\n"
129 " ipsi_outrequests ........... %lu\n"
130 " ipsi_routingdiscards ....... %lu\n"
131 " ipsi_outdiscards ........... %lu\n"
132 " ipsi_outnoroutes ........... %lu\n"
133 " ipsi_numif ................. %lu\n"
134 " ipsi_numaddr ............... %lu\n"
135 " ipsi_numroutes ............. %lu\n"
142 entry->dwOutRequests,
143 entry->dwRoutingDiscards,
144 entry->dwOutDiscards,
145 entry->dwOutNoRoutes,
165 TRACE(
"TdiGetMibForTcpEntity(tcpFile 0x%p, entityId 0x%x)\n",
166 tcpFile, ent->tei_instance);
182 TRACE(
"TdiGetMibForTcpEntity() => status = 0x%08lx, entry = {\n"
183 " dwInSegs ............. %lu\n"
184 " dwOutSegs ............ %lu\n"
185 " dwNumConns ........... %lu\n"
207 TRACE(
"TdiGetMibForUdpEntity(tcpFile 0x%p, entityId 0x%x)\n",
208 tcpFile, ent->tei_instance);
224 TRACE(
"TdiGetMibForUdpEntity() => status = 0x%08lx, entry = {\n"
225 " dwInDatagrams ....... %lu\n"
226 " dwOutDatagrams ...... %lu\n"
227 " dwNumAddrs .......... %lu\n"
230 entry->dwInDatagrams,
231 entry->dwOutDatagrams,
241 TRACE(
"TdiGetRoutesForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
262 TRACE(
"TdiGetIpAddrsForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
303 fp =
fopen(
"/proc/net/snmp",
"r");
305 const char hdr[] =
"Icmp:";
306 char buf[512] = { 0 }, *
ptr;
477 DWORD numEntities, numRoutes = 0;
488 ERR(
"openTcpFile returned 0x%08lx\n",
status);
494 ERR(
"tdiGetEntityIDSet returned 0x%08lx\n",
status);
499 for (
i = 0;
i < numEntities;
i++) {
502 memset(&ipstats, 0,
sizeof(ipstats));
505 ERR(
"tdiGetMibForIpEntity returned 0x%08lx, for i = %d\n",
status,
i);
513 TRACE(
"numRoutes = %lu\n", numRoutes);
524 for(
i = 0;
i <
Len;
i++ ) {
546 TRACE(
"GETTING ROUTE TABLE\n");
551 if (!out_route_table) {
558 for (
i = 0; routesAdded < out_route_table->
numRoutes;
i++) {
571 TRACE(
"%lu routes in instance %d\n", numRoutes,
i);
575 snmpInfo.ipsi_numroutes);
578 for (
j = 0;
j < numRoutes;
j++) {
579 int routeNum =
j + routesAdded;
594 routesAdded += numRoutes;
598 TRACE(
"status = 0x%08lx, out_route_table = 0x%p\n",
status, out_route_table);
599 return out_route_table;
607 int i, totalNumber = 0;
617 ERR(
"openTcpFile returned 0x%08lx\n",
status);
623 for (
i = 0;
i < numEntities;
i++) {
631 entitySet[
i].tei_instance,
634 (
PVOID *)&IpArpTable,
652 DWORD numEntities, returnSize;
655 int i, totalNumber, TmpIdx, CurrIdx = 0;
667 ERR(
"openTcpFile returned 0x%08lx\n",
status);
680 for (
i = 0;
i < numEntities;
i++) {
688 entitySet[
i].tei_instance,
691 (
PVOID *)&AdapterArpTable,
695 for (TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++)
696 IpArpTable->
table[CurrIdx] = AdapterArpTable[TmpIdx];
721#define Add2Ptr(PTR, INC) (PVOID)((ULONG_PTR)(PTR) + (INC))
728 int i, totalNumber = 0;
738 ERR(
"openTcpFile returned 0x%08lx\n",
status);
744 for (
i = 0;
i < numEntities;
i++) {
752 entitySet[
i].tei_instance,
755 (
PVOID *)&IpUdpTable,
773 DWORD numEntities, returnSize;
776 int i, totalNumber, TmpIdx, CurrIdx = 0;
788 ERR(
"openTcpFile returned 0x%08lx\n",
status);
801 for (
i = 0;
i < numEntities;
i++) {
809 entitySet[
i].tei_instance,
816 for (TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++)
836 int i, totalNumber = 0;
846 ERR(
"openTcpFile returned 0x%08lx\n",
status);
852 for (
i = 0;
i < numEntities;
i++) {
860 entitySet[
i].tei_instance,
863 (
PVOID *)&IpTcpTable,
881 DWORD numEntities, returnSize;
884 int i, totalNumber, TmpIdx, CurrIdx = 0;
896 ERR(
"openTcpFile returned 0x%08lx\n",
status);
909 for (
i = 0;
i < numEntities;
i++) {
917 entitySet[
i].tei_instance,
924 for (TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++)
UINT32 strtoul(const char *String, char **Terminator, UINT32 Base)
#define IP_MIB_ADDRTABLE_ENTRY_ID
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
#define _strnicmp(_String1, _String2, _MaxCount)
#define HeapFree(x, y, z)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
BOOL hasArp(HANDLE tcpFile, TDIEntityID *arp_maybe)
BOOL isInterface(TDIEntityID *if_maybe)
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_Check_return_opt_ _CRTIMP char *__cdecl fgets(_Out_writes_z_(_MaxCount) char *_Buf, _In_ int _MaxCount, _Inout_ FILE *_File)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
#define TCP_REQUEST_QUERY_INFORMATION_INIT
enum _CLASS_TABLE CLASS_TABLE
DWORD getIPStats(_In_ HANDLE TcpFile, _Out_ PMIB_IPSTATS pStats)
static NTSTATUS tdiGetMibForIpEntity(_In_ HANDLE tcpFile, _In_ TDIEntityID *ent, _Out_ MIB_IPSTATS *entry)
#define Add2Ptr(PTR, INC)
DWORD getInterfaceStatsByIndex(DWORD index, PMIB_IFROW entry)
PVOID getTcpTable(CLASS_TABLE Class)
DWORD getNumUdpEntries(void)
DWORD getICMPStats(MIB_ICMP *stats)
static NTSTATUS tdiGetMibForTcpEntity(_In_ HANDLE tcpFile, _In_ TDIEntityID *ent, _Out_ MIB_TCPSTATS *entry)
static NTSTATUS tdiGetMibForUdpEntity(_In_ HANDLE tcpFile, _In_ TDIEntityID *ent, _Out_ MIB_UDPSTATS *entry)
DWORD getInterfaceStatsByName(const char *name, PMIB_IFROW entry)
VOID HexDump(PCHAR Data, DWORD Len)
BOOL isIpEntity(HANDLE tcpFile, TDIEntityID *ent)
DWORD getUDPStats(_In_ HANDLE TcpFile, _Out_ MIB_UDPSTATS *pStats)
DWORD getNumArpEntries(void)
RouteTable * getRouteTable(void)
DWORD getTCPStats(_In_ HANDLE TcpFile, _Out_ MIB_TCPSTATS *pStats)
PMIB_IPNETTABLE getArpTable(void)
PVOID getUdpTable(CLASS_TABLE Class)
DWORD getNumTcpEntries(void)
NTSTATUS tdiGetIpAddrsForIpEntity(HANDLE tcpFile, TDIEntityID *ent, IPAddrEntry **addrs, PDWORD numAddrs)
NTSTATUS getNthIpEntity(HANDLE tcpFile, DWORD index, TDIEntityID *ent)
NTSTATUS tdiGetRoutesForIpEntity(HANDLE tcpFile, TDIEntityID *ent, IPRouteEntry **routes, PDWORD numRoutes)
struct _TABLE_CALL UdpTcpTableCall[]
#define memcpy(s1, s2, n)
NTSTATUS tdiGetSetOfThings(HANDLE tcpFile, DWORD toiClass, DWORD toiType, DWORD toiId, DWORD teiEntity, DWORD teiInstance, DWORD fixedPart, DWORD entrySize, PVOID *tdiEntitySet, PDWORD numEntries)
VOID tdiFreeThingSet(PVOID things)
NTSTATUS tdiGetEntityIDSet(HANDLE tcpFile, TDIEntityID **entitySet, PDWORD numEntities)
NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess)
VOID closeTcpFile(HANDLE h)
unsigned long ire_metric1
MIBICMPSTATS icmpOutStats
#define IP_MIB_ARPTABLE_ENTRY_ID
#define INFO_CLASS_PROTOCOL
#define INFO_TYPE_PROVIDER
#define IOCTL_TCP_QUERY_INFORMATION_EX
#define FIELD_OFFSET(t, f)
#define STATUS_UNSUCCESSFUL
struct _MIB_UDPROW_OWNER_MODULE MIB_UDPROW_OWNER_MODULE
struct _MIB_UDPROW_OWNER_PID MIB_UDPROW_OWNER_PID
struct _MIB_UDPROW MIB_UDPROW