diff options
Diffstat (limited to 'freebsd/lib/libc/net/if_nametoindex.c')
-rw-r--r-- | freebsd/lib/libc/net/if_nametoindex.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/freebsd/lib/libc/net/if_nametoindex.c b/freebsd/lib/libc/net/if_nametoindex.c index eff590e7..92a2abed 100644 --- a/freebsd/lib/libc/net/if_nametoindex.c +++ b/freebsd/lib/libc/net/if_nametoindex.c @@ -70,8 +70,9 @@ if_nametoindex(const char *ifname) struct ifaddrs *ifaddrs, *ifa; unsigned int ni; - s = _socket(AF_INET, SOCK_DGRAM, 0); + s = _socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (s != -1) { + memset(&ifr, 0, sizeof(ifr)); strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); if (_ioctl(s, SIOCGIFINDEX, &ifr) != -1) { _close(s); @@ -89,7 +90,7 @@ if_nametoindex(const char *ifname) if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_LINK && strcmp(ifa->ifa_name, ifname) == 0) { - ni = ((struct sockaddr_dl*)ifa->ifa_addr)->sdl_index; + ni = LLINDEX((struct sockaddr_dl*)ifa->ifa_addr); break; } } |