linux net_interface_ipv6_config impl

This commit is contained in:
Doug MacEachern 2009-07-24 17:46:56 -07:00
parent 1b28f2a4e3
commit 7c5e4e3a3b
1 changed files with 34 additions and 1 deletions

View File

@ -2095,7 +2095,40 @@ static int sigar_net_connection_get(sigar_t *sigar,
int sigar_net_interface_ipv6_config_get(sigar_t *sigar, const char *name, int sigar_net_interface_ipv6_config_get(sigar_t *sigar, const char *name,
sigar_net_interface_config_t *ifconfig) sigar_net_interface_config_t *ifconfig)
{ {
return SIGAR_ENOTIMPL; FILE *fp;
char addr[32+1], ifname[8+1];
int status = SIGAR_ENOENT;
int idx, prefix, scope, flags;
if (!(fp = fopen(PROC_FS_ROOT "net/if_inet6", "r"))) {
return errno;
}
while (fscanf(fp, "%32s %02x %02x %02x %02x %8s\n",
addr, &idx, &prefix, &scope, &flags, ifname) != EOF)
{
if (strEQ(name, ifname)) {
status = SIGAR_OK;
break;
}
}
fclose(fp);
if (status == SIGAR_OK) {
int i=0;
unsigned char *addr6 = (unsigned char *)&(ifconfig->address6.addr.in6);
char *ptr = addr;
for (i=0; i<16; i++, ptr+=2) {
addr6[i] = (unsigned char)hex2int(ptr, 2);
}
ifconfig->prefix_length = prefix;
ifconfig->scope = scope;
}
return status;
} }
#define SNMP_TCP_PREFIX "Tcp: " #define SNMP_TCP_PREFIX "Tcp: "