[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(usagi-users 02631) Re: UDP IPv6 Multicast






I'm not Brian, but I can answer your question.

2.4.22 I believe will have this problem. 2.4.21 and earlier should not.

Details:
      The original code would've always passed non-matching addresses
to ipv6_mc_check(), which checked whether a join had been done by that
particular socket (not correct). This broke some java implementations and
any programs that did the group joins separately from the sockets that
read and write the data.
      The fix for that uncovered this bug, which otherwise would've only
shown up if you bound to a particular address but also joined a different
group on that same socket. So, if you bound to ff02::3 port 2000 and joined
both ff02::3 and say ff02::5 on that socket, it'd deliver ff02::5 port 2000
multicasts
in the old code even though they don't have a matching bind address. With
the (incomplete) fix for that, it delivered matching multicasts (e.g.
INADDR_ANY)
 without a join, like it's supposed to, but it was delivering too much
since
mcast_next wasn't doing the address check properly.
      The v4 version of mcast_next already has checks equivalent to
the patched version for that case; it either hadn't been transliterated
correctly,
or had been fixed separately at some point (or was done completely
independently for v6, without considering this case).

                              +-DLS