netdev
[Top] [All Lists]

MLDv1 bug [PATCH]

To: davem@xxxxxxxxxx, netdev@xxxxxxxxxxx
Subject: MLDv1 bug [PATCH]
From: David Stevens <dlstevens@xxxxxxxxxx>
Date: Thu, 20 Nov 2003 15:33:52 -0700
Importance: Normal
Sender: netdev-bounce@xxxxxxxxxxx
Sensitivity:



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)

Attachment: MLDv1LL.patch
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>