From 2c0c36f54b2a4d2cb13e29d580f8935be95018f6 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Sun, 1 May 2016 20:57:08 +0100 Subject: [PATCH] Fix problem with IPv6 in new ARP-search code. --- src/arp.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/arp.c b/src/arp.c index 318430e..c980dab 100644 --- a/src/arp.c +++ b/src/arp.c @@ -129,17 +129,17 @@ int find_mac(union mysockaddr *addr, unsigned char *mac, int lazy, time_t now) for (arp = arps; arp; arp = arp->next) { - if (addr->sa.sa_family == arp->family) - { - if (arp->addr.addr.addr4.s_addr != addr->in.sin_addr.s_addr) - continue; - } + if (addr->sa.sa_family != arp->family) + continue; + + if (arp->family == AF_INET && + arp->addr.addr.addr4.s_addr != addr->in.sin_addr.s_addr) + continue; + #ifdef HAVE_IPV6 - else - { - if (!IN6_ARE_ADDR_EQUAL(&arp->addr.addr.addr6, &addr->in6.sin6_addr)) - continue; - } + if (arp->family == AF_INET6 && + !IN6_ARE_ADDR_EQUAL(&arp->addr.addr.addr6, &addr->in6.sin6_addr)) + continue; #endif /* Only accept positive entries unless in lazy mode. */