add function to get primary net_interface_config

This commit is contained in:
Doug MacEachern 2007-03-13 03:49:08 +00:00
parent 02ddbf19cd
commit da7ea6cb29
2 changed files with 38 additions and 15 deletions

View File

@ -542,6 +542,10 @@ sigar_net_interface_config_get(sigar_t *sigar,
const char *name, const char *name,
sigar_net_interface_config_t *ifconfig); sigar_net_interface_config_t *ifconfig);
SIGAR_DECLARE(int)
sigar_net_interface_config_primary_get(sigar_t *sigar,
sigar_net_interface_config_t *ifconfig);
typedef struct { typedef struct {
sigar_uint64_t sigar_uint64_t
/* received */ /* received */

View File

@ -1862,9 +1862,11 @@ SIGAR_DECLARE(sigar_uint32_t) sigar_net_address_hash(sigar_net_address_t *addres
return hash; return hash;
} }
static int fqdn_ip_get(sigar_t *sigar, char *name) SIGAR_DECLARE(int)
sigar_net_interface_config_primary_get(sigar_t *sigar,
sigar_net_interface_config_t *ifconfig)
{ {
int i, status; int i, status, found=0;
sigar_net_interface_list_t iflist; sigar_net_interface_list_t iflist;
if ((status = sigar_net_interface_list_get(sigar, &iflist)) != SIGAR_OK) { if ((status = sigar_net_interface_list_get(sigar, &iflist)) != SIGAR_OK) {
@ -1872,19 +1874,41 @@ static int fqdn_ip_get(sigar_t *sigar, char *name)
} }
for (i=0; i<iflist.number; i++) { for (i=0; i<iflist.number; i++) {
sigar_net_interface_config_t ifconfig;
status = sigar_net_interface_config_get(sigar, status = sigar_net_interface_config_get(sigar,
iflist.data[i], &ifconfig); iflist.data[i], ifconfig);
if ((status != SIGAR_OK) || if ((status != SIGAR_OK) ||
(ifconfig.flags & SIGAR_IFF_LOOPBACK) || (ifconfig->flags & SIGAR_IFF_LOOPBACK) ||
!ifconfig.address.addr.in || /* no ip address */ !ifconfig->address.addr.in || /* no ip address */
!ifconfig.hwaddr.addr.in || /* no mac address */ !ifconfig->hwaddr.addr.in || /* no mac address */
strchr(iflist.data[i], ':')) /* alias */ strchr(iflist.data[i], ':')) /* alias */
{ {
continue; continue;
} }
found = 1;
break;
}
sigar_net_interface_list_destroy(sigar, &iflist);
if (found) {
return SIGAR_OK;
}
else {
return !SIGAR_OK;
}
}
static int fqdn_ip_get(sigar_t *sigar, char *name)
{
sigar_net_interface_config_t ifconfig;
int status;
status = sigar_net_interface_config_primary_get(sigar, &ifconfig);
if (status != SIGAR_OK) {
return status;
}
sigar_net_address_to_string(sigar, &ifconfig.address, name); sigar_net_address_to_string(sigar, &ifconfig.address, name);
@ -1892,11 +1916,6 @@ static int fqdn_ip_get(sigar_t *sigar, char *name)
"[fqdn] using ip address '%s' for fqdn", "[fqdn] using ip address '%s' for fqdn",
name); name);
break;
}
sigar_net_interface_list_destroy(sigar, &iflist);
return SIGAR_OK; return SIGAR_OK;
} }