fillin net_interface_config.type
This commit is contained in:
parent
dc347bc614
commit
72841ad4c2
29
src/sigar.c
29
src/sigar.c
|
@ -1161,6 +1161,30 @@ static void hwaddr_arp_lookup(sigar_net_interface_config_t *ifconfig, int sock)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
|
||||||
|
#include <net/if_arp.h>
|
||||||
|
|
||||||
|
static void get_interface_type(sigar_net_interface_config_t *ifconfig,
|
||||||
|
int family)
|
||||||
|
{
|
||||||
|
char *type;
|
||||||
|
|
||||||
|
switch (family) {
|
||||||
|
case ARPHRD_NETROM:
|
||||||
|
type = "AMPR NET/ROM";
|
||||||
|
break;
|
||||||
|
/* XXX more */
|
||||||
|
default:
|
||||||
|
type = "Ethernet";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIGAR_SSTRCPY(ifconfig->type, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
int sigar_net_interface_config_get(sigar_t *sigar, const char *name,
|
int sigar_net_interface_config_get(sigar_t *sigar, const char *name,
|
||||||
sigar_net_interface_config_t *ifconfig)
|
sigar_net_interface_config_t *ifconfig)
|
||||||
{
|
{
|
||||||
|
@ -1217,6 +1241,7 @@ int sigar_net_interface_config_get(sigar_t *sigar, const char *name,
|
||||||
ifconfig->destination = ifconfig->address;
|
ifconfig->destination = ifconfig->address;
|
||||||
ifconfig->broadcast = 0;
|
ifconfig->broadcast = 0;
|
||||||
sigar_hwaddr_set_null(ifconfig);
|
sigar_hwaddr_set_null(ifconfig);
|
||||||
|
SIGAR_SSTRCPY(ifconfig->type, "Local Loopback");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!ioctl(sock, SIOCGIFDSTADDR, &ifr)) {
|
if (!ioctl(sock, SIOCGIFDSTADDR, &ifr)) {
|
||||||
|
@ -1229,12 +1254,16 @@ int sigar_net_interface_config_get(sigar_t *sigar, const char *name,
|
||||||
|
|
||||||
#if defined(SIOCGIFHWADDR)
|
#if defined(SIOCGIFHWADDR)
|
||||||
if (!ioctl(sock, SIOCGIFHWADDR, &ifr)) {
|
if (!ioctl(sock, SIOCGIFHWADDR, &ifr)) {
|
||||||
|
get_interface_type(ifconfig,
|
||||||
|
ifr.ifr_hwaddr.sa_family);
|
||||||
sigar_hwaddr_format(ifconfig->hwaddr, ifr.ifr_hwaddr.sa_data);
|
sigar_hwaddr_format(ifconfig->hwaddr, ifr.ifr_hwaddr.sa_data);
|
||||||
}
|
}
|
||||||
#elif defined(_AIX) || defined(__osf__)
|
#elif defined(_AIX) || defined(__osf__)
|
||||||
hwaddr_aix_lookup(sigar, ifconfig);
|
hwaddr_aix_lookup(sigar, ifconfig);
|
||||||
|
SIGAR_SSTRCPY(ifconfig->type, "Ethernet");
|
||||||
#else
|
#else
|
||||||
hwaddr_arp_lookup(ifconfig, sock);
|
hwaddr_arp_lookup(ifconfig, sock);
|
||||||
|
SIGAR_SSTRCPY(ifconfig->type, "Ethernet");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue