Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/net/if_indextoname.c
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
char * | char * | ||||
if_indextoname(unsigned int ifindex, char *ifname) | if_indextoname(unsigned int ifindex, char *ifname) | ||||
{ | { | ||||
struct ifaddrs *ifaddrs, *ifa; | struct ifaddrs *ifaddrs, *ifa; | ||||
int error = 0; | int error = 0; | ||||
if (ifindex == 0) { | |||||
errno = ENXIO; | |||||
return(NULL); | |||||
} | |||||
if (getifaddrs(&ifaddrs) < 0) | if (getifaddrs(&ifaddrs) < 0) | ||||
return(NULL); /* getifaddrs properly set errno */ | return(NULL); /* getifaddrs properly set errno */ | ||||
for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { | for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { | ||||
if (ifa->ifa_addr && | if (ifa->ifa_addr && | ||||
ifa->ifa_addr->sa_family == AF_LINK && | ifa->ifa_addr->sa_family == AF_LINK && | ||||
ifindex == LLINDEX((struct sockaddr_dl*)ifa->ifa_addr)) | ifindex == LLINDEX((struct sockaddr_dl*)ifa->ifa_addr)) | ||||
break; | break; | ||||
Show All 14 Lines |