implement net_connection_walk for win32
This commit is contained in:
parent
5f8da2ce15
commit
336c22d863
|
@ -2031,10 +2031,10 @@ sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
|
|||
#define sigar_GetTcpTable \
|
||||
sigar->iphlpapi.get_tcp_table.func
|
||||
|
||||
static int net_conn_get_tcp(sigar_t *sigar,
|
||||
sigar_net_connection_list_t *connlist,
|
||||
int flags)
|
||||
static int net_conn_get_tcp(sigar_net_connection_walker_t *walker)
|
||||
{
|
||||
sigar_t *sigar = walker->sigar;
|
||||
int flags = walker->flags;
|
||||
int status;
|
||||
DWORD rc, size=0, i;
|
||||
PMIB_TCPTABLE tcp;
|
||||
|
@ -2119,9 +2119,9 @@ static int net_conn_get_tcp(sigar_t *sigar,
|
|||
break;
|
||||
}
|
||||
|
||||
SIGAR_NET_CONNLIST_GROW(connlist);
|
||||
memcpy(&connlist->data[connlist->number++],
|
||||
&conn, sizeof(conn));
|
||||
if (walker->add_connection(walker, &conn) != SIGAR_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(tcp);
|
||||
|
@ -2137,10 +2137,10 @@ static int net_conn_get_tcp(sigar_t *sigar,
|
|||
#define sigar_GetUdpTable \
|
||||
sigar->iphlpapi.get_udp_table.func
|
||||
|
||||
static int net_conn_get_udp(sigar_t *sigar,
|
||||
sigar_net_connection_list_t *connlist,
|
||||
int flags)
|
||||
static int net_conn_get_udp(sigar_net_connection_walker_t *walker)
|
||||
{
|
||||
sigar_t *sigar = walker->sigar;
|
||||
int flags = walker->flags;
|
||||
int status;
|
||||
DWORD rc, size=0, i;
|
||||
PMIB_UDPTABLE udp;
|
||||
|
@ -2183,9 +2183,9 @@ static int net_conn_get_udp(sigar_t *sigar,
|
|||
|
||||
conn.send_queue = conn.receive_queue = SIGAR_FIELD_NOTIMPL;
|
||||
|
||||
SIGAR_NET_CONNLIST_GROW(connlist);
|
||||
memcpy(&connlist->data[connlist->number++],
|
||||
&conn, sizeof(conn));
|
||||
if (walker->add_connection(walker, &conn) != SIGAR_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(udp);
|
||||
|
@ -2193,24 +2193,20 @@ static int net_conn_get_udp(sigar_t *sigar,
|
|||
}
|
||||
|
||||
SIGAR_DECLARE(int)
|
||||
sigar_net_connection_list_get(sigar_t *sigar,
|
||||
sigar_net_connection_list_t *connlist,
|
||||
int flags)
|
||||
sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
|
||||
{
|
||||
int status;
|
||||
|
||||
sigar_net_connection_list_create(connlist);
|
||||
|
||||
if (flags & SIGAR_NETCONN_TCP) {
|
||||
status = net_conn_get_tcp(sigar, connlist, flags);
|
||||
if (walker->flags & SIGAR_NETCONN_TCP) {
|
||||
status = net_conn_get_tcp(walker);
|
||||
|
||||
if (status != SIGAR_OK) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & SIGAR_NETCONN_UDP) {
|
||||
status = net_conn_get_udp(sigar, connlist, flags);
|
||||
if (walker->flags & SIGAR_NETCONN_UDP) {
|
||||
status = net_conn_get_udp(walker);
|
||||
|
||||
if (status != SIGAR_OK) {
|
||||
return status;
|
||||
|
|
Loading…
Reference in New Issue