diff options
| author | David Stevens <dlstevens@us.ibm.com> | 2003-11-20 00:34:18 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2003-11-20 00:34:18 -0800 |
| commit | ceb3d4a1d759cfe6db90db0caaf2e88f2fc2aeba (patch) | |
| tree | 927c259c4b923fbf089fb2c2f1922c69df8cea84 /net | |
| parent | ccfca0bf8a5a339e1e84e06afef2905af4aa485b (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.c | 5 |
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)) { |
