Don't drop IGMP packets with a source address of all zeros which are
IGMP proxy reports. This is documented in Section 2.1.1 IGMP
Forwarding Rules of RFC 4541 IGMP and MLD Snooping Switches
Considerations.

Signed-off-by: Edward Chron <ech...@arista.com>
---
 net/ipv4/route.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 99be68b15da0..16259ea9df54 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1608,7 +1608,8 @@ int ip_mc_validate_source(struct sk_buff *skb, __be32 
daddr, __be32 saddr,
                return -EINVAL;
 
        if (ipv4_is_zeronet(saddr)) {
-               if (!ipv4_is_local_multicast(daddr))
+               if (!ipv4_is_local_multicast(daddr) &&
+                   ip_hdr(skb)->protocol != IPPROTO_IGMP)
                        return -EINVAL;
        } else {
                err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
-- 
2.17.2

Reply via email to