mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Fix ordering problem in multicast setup.
This commit is contained in:
15
src/dhcp6.c
15
src/dhcp6.c
@@ -101,13 +101,6 @@ static int join_multicast(struct in6_addr *local, int prefix,
|
|||||||
if (if_index == listenp->fd_or_iface)
|
if (if_index == listenp->fd_or_iface)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
mreq.ipv6mr_interface = if_index;
|
|
||||||
inet_pton(AF_INET6, ALL_ROUTERS, &mreq.ipv6mr_multiaddr);
|
|
||||||
|
|
||||||
if (daemon->icmp6fd != -1 &&
|
|
||||||
setsockopt(daemon->icmp6fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!indextoname(fd, if_index, ifrn_name))
|
if (!indextoname(fd, if_index, ifrn_name))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -127,6 +120,8 @@ static int join_multicast(struct in6_addr *local, int prefix,
|
|||||||
if (!context)
|
if (!context)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
mreq.ipv6mr_interface = if_index;
|
||||||
|
|
||||||
inet_pton(AF_INET6, ALL_RELAY_AGENTS_AND_SERVERS, &mreq.ipv6mr_multiaddr);
|
inet_pton(AF_INET6, ALL_RELAY_AGENTS_AND_SERVERS, &mreq.ipv6mr_multiaddr);
|
||||||
|
|
||||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
||||||
@@ -137,6 +132,12 @@ static int join_multicast(struct in6_addr *local, int prefix,
|
|||||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
inet_pton(AF_INET6, ALL_ROUTERS, &mreq.ipv6mr_multiaddr);
|
||||||
|
|
||||||
|
if (daemon->icmp6fd != -1 &&
|
||||||
|
setsockopt(daemon->icmp6fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)) == -1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
listenp = whine_malloc(sizeof(struct listen_param));
|
listenp = whine_malloc(sizeof(struct listen_param));
|
||||||
listenp->fd_or_iface = if_index;
|
listenp->fd_or_iface = if_index;
|
||||||
listenp->next = param->next;
|
listenp->next = param->next;
|
||||||
|
|||||||
Reference in New Issue
Block a user