]> git.hungrycats.org Git - linux/commitdiff
[IPV6]: In igmp6_group_queried, fix address check to comply with RFC2710.
authorDavid Stevens <dlstevens@us.ibm.com>
Thu, 20 Nov 2003 08:34:18 +0000 (00:34 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Thu, 20 Nov 2003 08:34:18 +0000 (00:34 -0800)
RFC2710 says:
1) MLD messages are never sent for multicast addresses whose scope is 0
   (reserved) or 1 (node-local).
2) 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.

net/ipv6/mcast.c

index 07ed6debe4559a941b20bb441cbe849995f9ffde..883bf65c3ae54ec8b476104a2e208c1bc5ff5aa3 100644 (file)
@@ -961,8 +961,9 @@ static void igmp6_group_queried(struct ifmcaddr6 *ma, unsigned long resptime)
 {
        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)) {