[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