Fix IPv6 read
authorCristian Morales Vega <cristian@samknows.com>
Wed, 14 Dec 2016 16:49:38 +0000 (16:49 +0000)
committerJohn Crispin <john@phrozen.org>
Mon, 19 Dec 2016 07:48:58 +0000 (08:48 +0100)
This is a quick fix. It may still not work when the interface has
multiple IPs, and this also applies to IPv4.

Signed-off-by: Cristian Morales Vega <cristian@samknows.com>
interface.c

index c8d89721d05f15f6e248732f8b694be700f2f45f..4dfeace9de337916b662c608d1cedbab8953734f 100644 (file)
@@ -306,7 +306,7 @@ read_socket6(struct uloop_fd *u, unsigned int events)
 
        if (inp->ipi6_ifindex != iface->ifindex)
                fprintf(stderr, "invalid iface index %d != %d\n", ifindex, iface->ifindex);
-       else if (!interface_valid_src((void *) &iface->v4_addr, (void *) &iface->v4_netmask, (void *) &from.sin6_addr, 16))
+       else if (!interface_valid_src((void *) &iface->v6_addr, (void *) &iface->v6_netmask, (void *) &from.sin6_addr, 16))
                dns_handle_packet(iface, (struct sockaddr *) &from, from.sin6_port, buffer, len);
 }