summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelley <simon@thekelleys.org.uk>2016-05-01 20:57:08 +0100
committerSimon Kelley <simon@thekelleys.org.uk>2016-05-01 20:57:08 +0100
commit2c0c36f54b2a4d2cb13e29d580f8935be95018f6 (patch)
treef96d5cfc7f918acc8e2d0d33ba3cd868ca0fb2ea
parentd6b749af91f1f0decfbb8018d6711092e539394a (diff)
downloaddnsmasq-2c0c36f54b2a4d2cb13e29d580f8935be95018f6.tar.gz
Fix problem with IPv6 in new ARP-search code.v2.76test13
-rw-r--r--src/arp.c20
1 files 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. */