diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/odhcpd.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/odhcpd.c b/src/odhcpd.c index bf1d496..b1e89b3 100644 --- a/src/odhcpd.c +++ b/src/odhcpd.c @@ -292,19 +292,20 @@ out: int odhcpd_get_linklocal_interface_address(int ifindex, struct in6_addr *lladdr) { - int status = -1; - struct sockaddr_in6 addr = {AF_INET6, 0, 0, ALL_IPV6_ROUTERS, ifindex}; - socklen_t alen = sizeof(addr); - int sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - - if (!connect(sock, (struct sockaddr*)&addr, sizeof(addr)) && - !getsockname(sock, (struct sockaddr*)&addr, &alen)) { - *lladdr = addr.sin6_addr; - status = 0; - } + int status = -1; + struct sockaddr_in6 addr = {AF_INET6, 0, 0, ALL_IPV6_ROUTERS, ifindex}; + socklen_t alen = sizeof(addr); + int sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); + + if (!connect(sock, (struct sockaddr*)&addr, sizeof(addr)) && + !getsockname(sock, (struct sockaddr*)&addr, &alen)) { + *lladdr = addr.sin6_addr; + status = 0; + } + + close(sock); - close(sock); - return status; + return status; } void odhcpd_setup_route(const struct in6_addr *addr, int prefixlen, |