Commit ceb3d4a1 authored by David Stevens's avatar David Stevens Committed by David S. Miller

[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.
parent ccfca0bf
...@@ -961,8 +961,9 @@ static void igmp6_group_queried(struct ifmcaddr6 *ma, unsigned long resptime) ...@@ -961,8 +961,9 @@ static void igmp6_group_queried(struct ifmcaddr6 *ma, unsigned long resptime)
{ {
unsigned long delay = resptime; unsigned long delay = resptime;
/* Do not start timer for addresses with link/host scope */ /* Do not start timer for these addresses */
if (ipv6_addr_type(&ma->mca_addr)&(IPV6_ADDR_LINKLOCAL|IPV6_ADDR_LOOPBACK)) if (ipv6_addr_is_ll_all_nodes(&ma->mca_addr) ||
IPV6_ADDR_MC_SCOPE(&ma->mca_addr) < IPV6_ADDR_SCOPE_LINKLOCAL)
return; return;
if (del_timer(&ma->mca_timer)) { if (del_timer(&ma->mca_timer)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment