[Bug 193246] Bug in IPv6 multicast join(), uncovered by Jenkins
神明達哉
jinmei at wide.ad.jp
Thu Sep 4 17:50:19 UTC 2014
At Thu, 04 Sep 2014 10:42:59 -0400,
John Baldwin <jhb at freebsd.org> wrote:
> > It looks like on Solaris, they support IPv4-mapped multicast addresses for
> > IPV6, and things work when they create an IPv6 socket, and then put an
> > IPv4-mapped multicast address in it. For Linux, they have specific
> > code paths in that function which seem to force creating an IPv4
> > socket.
>
> >From looking at the source, it doesn't look like the Linux workaround (using
> IP_ADD_MEMBERSHIP on an AF_INET6 socket) will work on FreeBSD. I'm not sure
> how hard it would be to fix in6_mcast.c to support IPv4 groups. bms@ might
> know.
(In my understanding) in general, BSD variants intentionally limit the
support for the APIs using to that standardized in RFC3493 because of
issues such as those described in
http://tools.ietf.org/html/draft-cmetz-v6ops-v4mapped-api-harmful-01
(where implications with multicast API are also discussed). So I
suspect it'll be generally difficult to extend the support for
IPv4-mapped IPv6 addresses.
As usual in the case where a deployed application relies on
non-standard, non-portable API, making the decision is difficult.
Personally, I'd first consider dealing it in the JDK so it'll be more
portable. (Even though there are only two OSes today: FreeBSD and
Linux:-) that will be helpful for other BSD variants, and also for even more
minor systems that don't support the non-standard API.
--
JINMEI, Tatuya
More information about the freebsd-net
mailing list