add function to get primary net_interface_config
This commit is contained in:
parent
02ddbf19cd
commit
da7ea6cb29
|
@ -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 */
|
||||||
|
|
45
src/sigar.c
45
src/sigar.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue