From 69b9ea0b496dd02aabda038465ba6b59bf1b3810 Mon Sep 17 00:00:00 2001 From: Mobashshera Rasool Date: Thu, 13 Jan 2022 00:07:12 -0800 Subject: [PATCH] pimd: IGMPv2 leave msg may be longer than 8 octets Fix the code as per RFC 2236 section 2.5: Note that IGMP messages may be longer than 8 octets, especially future backwards-compatible versions of IGMP. As long as the Type is one that is recognized, an IGMPv2 implementation MUST ignore anything past the first 8 octets while processing the packet. However, the IGMP checksum is always computed over the whole IP payload, not just over the first 8 octets. Fixes: #10331 Signed-off-by: Mobashshera Rasool --- pimd/pim_igmpv2.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pimd/pim_igmpv2.c b/pimd/pim_igmpv2.c index dc18e1593d..a7c7c99ebf 100644 --- a/pimd/pim_igmpv2.c +++ b/pimd/pim_igmpv2.c @@ -173,10 +173,11 @@ int igmp_v2_recv_leave(struct gm_sock *igmp, struct ip *ip_hdr, return 0; if (igmp_msg_len != IGMP_V12_MSG_SIZE) { - zlog_warn( - "Recv IGMPv2 LEAVE from %s on %s: size=%d other than correct=%d", - from_str, ifp->name, igmp_msg_len, IGMP_V12_MSG_SIZE); - return -1; + if (PIM_DEBUG_IGMP_PACKETS) + zlog_debug( + "Recv IGMPv2 LEAVE from %s on %s: size=%d other than correct=%d", + from_str, ifp->name, igmp_msg_len, + IGMP_V12_MSG_SIZE); } if (igmp_validate_checksum(igmp_msg, igmp_msg_len) == -1) { -- 2.39.5