mdnsd: interface: enable looped back messages
authorEyal Birger <eyal.birger@gmail.com>
Sun, 22 May 2016 09:20:43 +0000 (12:20 +0300)
committerJohn Crispin <john@phrozen.org>
Mon, 23 May 2016 07:26:42 +0000 (09:26 +0200)
When the IP_MULTICAST_LOOP/IPV6_MULTICAST_LOOP socket options are not enabled,
locally generated queries are ignored by mdnsd; This prevents local
applications from being able to discover locally published services.

Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
interface.c

index c8d89721d05f15f6e248732f8b694be700f2f45f..9ca85e1a6dc343a9ecb055cf90df64c75de83566 100644 (file)
@@ -315,7 +315,7 @@ interface_mcast_setup4(struct interface *iface)
 {
        struct ip_mreqn mreq;
        uint8_t ttl = 255;
-       int no = 0;
+       int yes = 1;
        struct sockaddr_in sa = { 0 };
        int fd = iface->fd.fd;
 
@@ -345,7 +345,7 @@ interface_mcast_setup4(struct interface *iface)
                return -1;
        }
 
-       if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &no, sizeof(no)) < 0)
+       if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes)) < 0)
                fprintf(stderr, "ioctl failed: IP_MULTICAST_LOOP\n");
 
        return 0;
@@ -356,7 +356,7 @@ interface_socket_setup6(struct interface *iface)
 {
        struct ipv6_mreq mreq;
        int ttl = 255;
-       int no = 0;
+       int yes = 1;
        struct sockaddr_in6 sa = { 0 };
        int fd = iface->fd.fd;
 
@@ -379,7 +379,7 @@ interface_socket_setup6(struct interface *iface)
                return -1;
        }
 
-       if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &no, sizeof(no)) < 0)
+       if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &yes, sizeof(yes)) < 0)
                fprintf(stderr, "ioctl failed: IPV6_MULTICAST_LOOP\n");
 
        return 0;