Dave,
Someone pointed out to me this apparently old bug in MLDv1. According
to RFC 2710:
"MLD messages are never sent for multicast addresses whose scope is 0
(reserved) or 1 (node-local).
MLD messages ARE sent for multicast addresses whose scope is 2
(link-local), including Solicited-Node multicast addersses [ADDR-ARCH],
except for the link-scope, all-nodes address (FF02::1)."
The current MLDv1 code does not send reports for link-scope addresses
and doesn't restrict scope 0. This may break switches that snoop reports for
determining which ports should receive particular addresses. Patch below.
+-DLS
--- linux-2.6.0-test9-bk23/net/ipv6/mcast.c 2003-11-18 23:20:56.000000000
-0800
+++ linux-2.6.0-test9-bk23F2/net/ipv6/mcast.c 2003-11-20 14:22:51.910526392
-0800
@@ -960,8 +960,9 @@
{
unsigned long delay = resptime;
- /* Do not start timer for addresses with link/host scope */
- if
(ipv6_addr_type(&ma->mca_addr)&(IPV6_ADDR_LINKLOCAL|IPV6_ADDR_LOOPBACK))
+ /* Do not start timer for these addresses */
+ if (ipv6_addr_is_ll_all_nodes(&ma->mca_addr) ||
+ IPV6_ADDR_MC_SCOPE(&ma->mca_addr) < IPV6_ADDR_SCOPE_LINKLOCAL)
return;
if (del_timer(&ma->mca_timer)) {
(See attached file: MLDv1LL.patch)
MLDv1LL.patch
Description: Binary data
|