requests sent to it over the IPv6 protocol.
        Default: 0
 
+echo_ignore_multicast - BOOLEAN
+       If set non-zero, then the kernel will ignore all ICMP ECHO
+       requests sent to it over the IPv6 protocol via multicast.
+       Default: 0
+
 xfrm6_gc_thresh - INTEGER
        The threshold at which we will start garbage collecting for IPv6
        destination cache entries.  At twice this value the system will
 
        net->ipv6.sysctl.bindv6only = 0;
        net->ipv6.sysctl.icmpv6_time = 1*HZ;
        net->ipv6.sysctl.icmpv6_echo_ignore_all = 0;
+       net->ipv6.sysctl.icmpv6_echo_ignore_multicast = 0;
        net->ipv6.sysctl.flowlabel_consistency = 1;
        net->ipv6.sysctl.auto_flowlabels = IP6_DEFAULT_AUTO_FLOW_LABELS;
        net->ipv6.sysctl.idgen_retries = 3;
 
        struct ipcm6_cookie ipc6;
        u32 mark = IP6_REPLY_MARK(net, skb->mark);
 
+       if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr) &&
+           net->ipv6.sysctl.icmpv6_echo_ignore_multicast)
+               return;
+
        saddr = &ipv6_hdr(skb)->daddr;
 
        if (!ipv6_unicast_destination(skb) &&
                .mode           = 0644,
                .proc_handler = proc_dointvec,
        },
+       {
+               .procname       = "echo_ignore_multicast",
+               .data           = &init_net.ipv6.sysctl.icmpv6_echo_ignore_multicast,
+               .maxlen         = sizeof(int),
+               .mode           = 0644,
+               .proc_handler = proc_dointvec,
+       },
        { },
 };
 
        if (table) {
                table[0].data = &net->ipv6.sysctl.icmpv6_time;
                table[1].data = &net->ipv6.sysctl.icmpv6_echo_ignore_all;
+               table[2].data = &net->ipv6.sysctl.icmpv6_echo_ignore_multicast;
        }
        return table;
 }