- Uses network interface description in place of sigar's
ethX naming scheme. This does not allow for an administrator
to disable/enable the device, but at least gives identifiable
names.
---
include/sigar.h | 8 ++++----
src/os/win32/win32_sigar.c | 13 ++++++-------
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/include/sigar.h b/include/sigar.h
index 48974ed..309cd0f 100644
--- a/include/sigar.h
+++ b/include/sigar.h
@@ -529,7 +529,7 @@ typedef struct {
typedef struct {
char default_gateway[SIGAR_INET6_ADDRSTRLEN];
- char default_gateway_interface[16];
+ char default_gateway_interface[256];
char host_name[SIGAR_MAXHOSTNAMELEN];
char domain_name[SIGAR_MAXDOMAINNAMELEN];
char primary_dns[SIGAR_INET6_ADDRSTRLEN];
@@ -556,7 +556,7 @@ typedef struct {
mtu,
window,
irtt;
- char ifname[16];
+ char ifname[256];
} sigar_net_route_t;
typedef struct {
@@ -602,7 +602,7 @@ SIGAR_DECLARE(int) sigar_net_route_list_destroy(sigar_t *sigar,
#define SIGAR_IPV6_ADDR_COMPATv4 0x0080
typedef struct {
- char name[16];
+ char name[256];
char type[64];
char description[256];
sigar_net_address_t hwaddr;
@@ -847,7 +847,7 @@ sigar_net_listen_address_get(sigar_t *sigar,
sigar_net_address_t *address);
typedef struct {
- char ifname[16];
+ char ifname[256];
char type[64];
sigar_net_address_t hwaddr;
sigar_net_address_t address;
diff --git a/src/os/win32/win32_sigar.c b/src/os/win32/win32_sigar.c
index 87076c8..0960ac1 100755
--- a/src/os/win32/win32_sigar.c
+++ b/src/os/win32/win32_sigar.c
@@ -2701,8 +2701,8 @@ sigar_net_interface_list_get(sigar_t *sigar,
}
for (i=0; i<ift->dwNumEntries; i++) {
- char name[16];
- int key;
+ char name[256];
+ int key, j;
MIB_IFROW *ifr = ift->table + i;
sigar_cache_entry_t *entry;
@@ -2710,13 +2710,11 @@ sigar_net_interface_list_get(sigar_t *sigar,
/* special-case */
sprintf(name, NETIF_LA "%d", la++);
}
- else if (ifr->dwType == MIB_IF_TYPE_LOOPBACK) {
- sprintf(name, "lo%d", lo++);
- }
else if ((ifr->dwType == MIB_IF_TYPE_ETHERNET) ||
- (ifr->dwType == IF_TYPE_IEEE80211))
+ (ifr->dwType == IF_TYPE_IEEE80211) ||
+ (ifr->dwType == MIB_IF_TYPE_LOOPBACK))
{
- sprintf(name, "eth%d", eth++);
+ SIGAR_SSTRCPY(name, ifr->bDescr);
}
else {
continue; /*XXX*/
@@ -2725,6 +2723,7 @@ sigar_net_interface_list_get(sigar_t *sigar,
if (iflist) {
iflist->data[iflist->number++] = sigar_strdup(name);
}
+ fprintf(stderr,"> SIGAR iface: %s\n", name);
key = netif_hash(name);
entry = sigar_cache_get(sigar->netif_mib_rows, key);
--
1.7.3.5