diff options
author | Simon Kelley <simon@thekelleys.org.uk> | 2016-05-01 20:57:08 +0100 |
---|---|---|
committer | Simon Kelley <simon@thekelleys.org.uk> | 2016-05-01 20:57:08 +0100 |
commit | 2c0c36f54b2a4d2cb13e29d580f8935be95018f6 (patch) | |
tree | f96d5cfc7f918acc8e2d0d33ba3cd868ca0fb2ea | |
parent | d6b749af91f1f0decfbb8018d6711092e539394a (diff) | |
download | dnsmasq-2c0c36f54b2a4d2cb13e29d580f8935be95018f6.tar.gz |
Fix problem with IPv6 in new ARP-search code.v2.76test13
-rw-r--r-- | src/arp.c | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -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. */ |