1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

Fix bug with Samba not recognising an 6to4 IPv6 interface.

"The 6to4 interface has the flags IFF_POINTTOPOINT interface but no
ifa_dstaddr as it's not at the IPv6 level a point to point interface
(at least from my understanding), as we don't have a IFF_BROADCAST
flag set (I have the impression that this flag is only set on a
interface that has also an IPv4 address) the first test is not valid
also, which result in a skipped interface."
This commit is contained in:
Matthieu Patou 2011-10-14 13:45:48 -07:00 committed by Jeremy Allison
parent acc28706b5
commit abe5afc580

View File

@ -195,6 +195,19 @@ static int _get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces)
memcpy(&ifaces[total].bcast,
ifptr->ifa_dstaddr,
copy_size);
#if defined(HAVE_IPV6)
} else if (ifptr->ifa_addr->sa_family == AF_INET6) {
const struct sockaddr_in6 *sin6 =
(const struct sockaddr_in6 *)ifptr->ifa_addr;
const struct in6_addr *in6 =
(const struct in6_addr *)&sin6->sin6_addr;
if (IN6_IS_ADDR_LINKLOCAL(in6) || IN6_IS_ADDR_V4COMPAT(in6)) {
continue;
}
/* IPv6 does not have broadcast it uses multicast. */
memset(&ifaces[total].bcast, '\0', copy_size);
#endif
} else {
continue;
}