Unbreak getTcpTable() on Linux-based systems and make it work on BSD

and Solaris as well.
oldstable
Gerald Pfeifer 2003-06-16 19:37:36 +00:00 committed by Alexandre Julliard
parent 25b4d10138
commit 8da2cbaa30
1 changed files with 45 additions and 35 deletions

View File

@ -42,6 +42,40 @@
#include "ifenum.h" #include "ifenum.h"
#include "ipstats.h" #include "ipstats.h"
#ifndef TCPS_ESTABLISHED
# define TCPS_ESTABLISHED TCP_ESTABLISHED
#endif
#ifndef TCPS_SYN_SENT
# define TCPS_SYN_SENT TCP_SYN_SENT
#endif
#ifndef TCPS_SYN_RECEIVED
# define TCPS_SYN_RECEIVED TCP_SYN_RECV
#endif
#ifndef TCPS_FIN_WAIT_1
# define TCPS_FIN_WAIT_1 TCP_FIN_WAIT1
#endif
#ifndef TCPS_FIN_WAIT_2
# define TCPS_FIN_WAIT_2 TCP_FIN_WAIT2
#endif
#ifndef TCPS_TIME_WAIT
# define TCPS_TIME_WAIT TCP_TIME_WAIT
#endif
#ifndef TCPS_CLOSED
# define TCPS_CLOSED TCP_CLOSE
#endif
#ifndef TCPS_CLOSE_WAIT
# define TCPS_CLOSE_WAIT TCP_CLOSE_WAIT
#endif
#ifndef TCPS_LAST_ACK
# define TCPS_LAST_ACK TCP_LAST_ACK
#endif
#ifndef TCPS_LISTEN
# define TCPS_LISTEN TCP_LISTEN
#endif
#ifndef TCPS_CLOSING
# define TCPS_CLOSING TCP_CLOSING
#endif
DWORD getInterfaceStatsByName(const char *name, PMIB_IFROW entry) DWORD getInterfaceStatsByName(const char *name, PMIB_IFROW entry)
{ {
FILE *fp; FILE *fp;
@ -778,67 +812,43 @@ PMIB_TCPTABLE getTcpTable(void)
if (ptr && *ptr) { if (ptr && *ptr) {
DWORD state = strtoul(ptr, &endPtr, 16); DWORD state = strtoul(ptr, &endPtr, 16);
#if HAVE_NETINET_TCP_H
switch (state) switch (state)
{ {
#ifdef TCP_ESTABLISHED case TCPS_ESTABLISHED:
case TCP_ESTABLISHED:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_ESTAB; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_ESTAB;
break; break;
#endif case TCPS_SYN_SENT:
#ifdef TCP_SYN_SEND
case TCP_SYN_SENT:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_SYN_SENT; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_SYN_SENT;
break; break;
#endif case TCPS_SYN_RECEIVED:
#ifdef TCP_SYN_RECV
case TCP_SYN_RECV:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_SYN_RCVD; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_SYN_RCVD;
break; break;
#endif case TCPS_FIN_WAIT_1:
#ifdef TCP_FIN_WAIT1
case TCP_FIN_WAIT1:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_FIN_WAIT1; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_FIN_WAIT1;
break; break;
#endif case TCPS_FIN_WAIT_2:
#ifdef TCP_FIN_WAIT2
case TCP_FIN_WAIT2:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_FIN_WAIT2; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_FIN_WAIT2;
break; break;
#endif case TCPS_TIME_WAIT:
#ifdef TCP_TIME_WAIT
case TCP_TIME_WAIT:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_TIME_WAIT; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_TIME_WAIT;
break; break;
#endif case TCPS_CLOSED:
#ifdef TCP_CLOSE
case TCP_CLOSE:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_CLOSED; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_CLOSED;
break; break;
#endif case TCPS_CLOSE_WAIT:
#ifdef TCP_CLOSE_WAIT
case TCP_CLOSE_WAIT:
ret->table[ret->dwNumEntries].dwState = ret->table[ret->dwNumEntries].dwState =
MIB_TCP_STATE_CLOSE_WAIT; MIB_TCP_STATE_CLOSE_WAIT;
break; break;
#endif case TCPS_LAST_ACK:
#ifdef TCP_LAST_ACK
case TCP_LAST_ACK:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_LAST_ACK; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_LAST_ACK;
break; break;
#endif case TCPS_LISTEN:
#ifdef TCP_LISTEN
case TCP_LISTEN:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_LISTEN; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_LISTEN;
break; break;
#endif case TCPS_CLOSING:
#ifdef TCP_CLOSING
case TCP_CLOSING:
ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_CLOSING; ret->table[ret->dwNumEntries].dwState = MIB_TCP_STATE_CLOSING;
break; break;
#endif
} }
#endif
ptr = endPtr; ptr = endPtr;
} }
ret->dwNumEntries++; ret->dwNumEntries++;