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 41 #ifndef TCPS_TIME_WAIT 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) );
103 TRACE(
"TdiGetMibForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
120 TRACE(
"TdiGetMibForIpEntity() => status = 0x%08lx, entry = {\n" 121 " ipsi_forwarding ............ %lu\n" 122 " ipsi_defaultttl ............ %lu\n" 123 " ipsi_inreceives ............ %lu\n" 124 " ipsi_indelivers ............ %lu\n" 125 " ipsi_outrequests ........... %lu\n" 126 " ipsi_routingdiscards ....... %lu\n" 127 " ipsi_outdiscards ........... %lu\n" 128 " ipsi_outnoroutes ........... %lu\n" 129 " ipsi_numif ................. %lu\n" 130 " ipsi_numaddr ............... %lu\n" 131 " ipsi_numroutes ............. %lu\n" 134 entry->ipsi_forwarding,
135 entry->ipsi_defaultttl,
136 entry->ipsi_inreceives,
137 entry->ipsi_indelivers,
138 entry->ipsi_outrequests,
139 entry->ipsi_routingdiscards,
140 entry->ipsi_outdiscards,
141 entry->ipsi_outnoroutes,
144 entry->ipsi_numroutes);
153 TRACE(
"TdiGetRoutesForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
174 TRACE(
"TdiGetIpAddrsForIpEntity(tcpFile 0x%p, entityId 0x%x)\n",
215 fp =
fopen(
"/proc/net/snmp",
"r");
217 const char hdr[] =
"Icmp:";
218 char buf[512] = { 0 }, *
ptr;
368 DWORD numEntities, numRoutes = 0;
378 ERR(
"openTcpFile returned 0x%08lx\n",
status);
384 ERR(
"tdiGetEntityIDSet returned 0x%08lx\n",
status);
389 for(
i = 0;
i < numEntities;
i++ ) {
392 memset( &isnmp, 0,
sizeof( isnmp ) );
395 ERR(
"tdiGetMibForIpEntity returned 0x%08lx, for i = %d\n",
status,
i);
403 TRACE(
"numRoutes = %lu\n", numRoutes);
414 for(
i = 0;
i <
Len;
i++ ) {
436 TRACE(
"GETTING ROUTE TABLE\n");
441 if (!out_route_table) {
448 for(
i = 0; routesAdded < out_route_table->
numRoutes;
i++ ) {
462 TRACE(
"%lu routes in instance %d\n", numRoutes,
i);
466 snmpInfo.ipsi_numroutes );
469 for(
j = 0;
j < numRoutes;
j++ ) {
470 int routeNum =
j + routesAdded;
485 routesAdded += numRoutes;
490 TRACE(
"status = 0x%08lx, out_route_table = 0x%p\n",
status, out_route_table);
492 return out_route_table;
500 int i, totalNumber = 0;
509 ERR(
"openTcpFile returned 0x%08lx\n",
status);
515 for(
i = 0;
i < numEntities;
i++ ) {
517 hasArp( tcpFile, &entitySet[
i] ) ) {
524 entitySet[
i].tei_instance,
527 (
PVOID *)&IpArpTable,
545 DWORD numEntities, returnSize;
548 int i, totalNumber, TmpIdx, CurrIdx = 0;
559 ERR(
"openTcpFile returned 0x%08lx\n",
status);
573 for(
i = 0;
i < numEntities;
i++ ) {
575 hasArp( tcpFile, &entitySet[
i] ) ) {
582 entitySet[
i].tei_instance,
585 (
PVOID *)&AdapterArpTable,
589 for( TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++ )
590 IpArpTable->
table[CurrIdx] = AdapterArpTable[TmpIdx];
617 #define Add2Ptr(PTR, INC) (PVOID)((ULONG_PTR)(PTR) + (INC)) 624 int i, totalNumber = 0;
633 ERR(
"openTcpFile returned 0x%08lx\n",
status);
639 for(
i = 0;
i < numEntities;
i++ ) {
641 hasArp( tcpFile, &entitySet[
i] ) ) {
648 entitySet[
i].tei_instance,
651 (
PVOID *)&IpUdpTable,
669 DWORD numEntities, returnSize;
672 int i, totalNumber, TmpIdx, CurrIdx = 0;
683 ERR(
"openTcpFile returned 0x%08lx\n",
status);
697 for(
i = 0;
i < numEntities;
i++ ) {
699 hasArp( tcpFile, &entitySet[
i] ) ) {
706 entitySet[
i].tei_instance,
713 for( TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++ )
735 int i, totalNumber = 0;
744 ERR(
"openTcpFile returned 0x%08lx\n",
status);
750 for(
i = 0;
i < numEntities;
i++ ) {
752 hasArp( tcpFile, &entitySet[
i] ) ) {
759 entitySet[
i].tei_instance,
762 (
PVOID *)&IpTcpTable,
780 DWORD numEntities, returnSize;
783 int i, totalNumber, TmpIdx, CurrIdx = 0;
794 ERR(
"openTcpFile returned 0x%08lx\n",
status);
808 for(
i = 0;
i < numEntities;
i++ ) {
810 hasArp( tcpFile, &entitySet[
i] ) ) {
817 entitySet[
i].tei_instance,
824 for( TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++ )
#define ERROR_INVALID_PARAMETER
RouteTable * getRouteTable(void)
BOOL isIpEntity(HANDLE tcpFile, TDIEntityID *ent)
DWORD getTCPStats(MIB_TCPSTATS *stats, DWORD family)
DWORD getIPStats(PMIB_IPSTATS stats, DWORD family)
UINT32 strtoul(const char *String, char **Terminator, UINT32 Base)
#define TCP_REQUEST_QUERY_INFORMATION_INIT
struct _MIB_UDPROW MIB_UDPROW
#define Add2Ptr(PTR, INC)
DWORD getUDPStats(MIB_UDPSTATS *stats, DWORD family)
DWORD getICMPStats(MIB_ICMP *stats)
VOID HexDump(PCHAR Data, DWORD Len)
DWORD getNumTcpEntries(void)
struct _MIB_UDPROW_OWNER_PID MIB_UDPROW_OWNER_PID
WINE_DEFAULT_DEBUG_CHANNEL(iphlpapi)
DWORD getNumUdpEntries(void)
NTSTATUS tdiGetIpAddrsForIpEntity(HANDLE tcpFile, TDIEntityID *ent, IPAddrEntry **addrs, PDWORD numAddrs)
BOOL isInterface(TDIEntityID *if_maybe)
DWORD getInterfaceStatsByIndex(DWORD index, PMIB_IFROW entry)
#define IP_MIB_ARPTABLE_ENTRY_ID
NTSTATUS tdiGetEntityIDSet(HANDLE tcpFile, TDIEntityID **entitySet, PDWORD numEntities)
GLenum GLuint GLenum GLsizei const GLchar * buf
DWORD getNumArpEntries(void)
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
enum _CLASS_TABLE CLASS_TABLE
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
NTSTATUS getNthIpEntity(HANDLE tcpFile, DWORD index, TDIEntityID *ent)
VOID tdiFreeThingSet(PVOID things)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define NT_SUCCESS(StatCode)
PVOID getTcpTable(CLASS_TABLE Class)
#define STATUS_UNSUCCESSFUL
VOID closeTcpFile(HANDLE h)
struct _MIB_UDPROW_OWNER_MODULE MIB_UDPROW_OWNER_MODULE
#define memcpy(s1, s2, n)
BOOL hasArp(HANDLE tcpFile, TDIEntityID *arp_maybe)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
#define IOCTL_TCP_QUERY_INFORMATION_EX
unsigned long ire_metric1
NTSTATUS tdiGetSetOfThings(HANDLE tcpFile, DWORD toiClass, DWORD toiType, DWORD toiId, DWORD teiEntity, DWORD teiInstance, DWORD fixedPart, DWORD entrySize, PVOID *tdiEntitySet, PDWORD numEntries)
MIBICMPSTATS icmpOutStats
_Check_return_opt_ _CRTIMP char *__cdecl fgets(_Out_writes_z_(_MaxCount) char *_Buf, _In_ int _MaxCount, _Inout_ FILE *_File)
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)
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
#define FIELD_OFFSET(t, f)
NTSTATUS tdiGetMibForIpEntity(HANDLE tcpFile, TDIEntityID *ent, IPSNMPInfo *entry)
#define INFO_TYPE_PROVIDER
NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess)
PVOID getUdpTable(CLASS_TABLE Class)
struct _TABLE_CALL UdpTcpTableCall[]
NTSTATUS tdiGetRoutesForIpEntity(HANDLE tcpFile, TDIEntityID *ent, IPRouteEntry **routes, PDWORD numRoutes)
PMIB_IPNETTABLE getArpTable(void)
#define IP_MIB_ADDRTABLE_ENTRY_ID
static SERVICE_STATUS status
DWORD getInterfaceStatsByName(const char *name, PMIB_IFROW entry)
#define HeapFree(x, y, z)
#define INFO_CLASS_PROTOCOL