summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDavid Stevens <dlstevens@us.ibm.com>2003-11-20 00:34:18 -0800
committerDavid S. Miller <davem@nuts.ninka.net>2003-11-20 00:34:18 -0800
commitceb3d4a1d759cfe6db90db0caaf2e88f2fc2aeba (patch)
tree927c259c4b923fbf089fb2c2f1922c69df8cea84 /net
parentccfca0bf8a5a339e1e84e06afef2905af4aa485b (diff)
[IPV6]: In igmp6_group_queried, fix address check to comply with RFC2710.
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.
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/mcast.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 07ed6debe455..883bf65c3ae5 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -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)) {