summaryrefslogtreecommitdiff
path: root/pimd/pim_igmpv2.c
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2022-01-12 20:39:48 -0800
committerMobashshera Rasool <mrasool@vmware.com>2022-01-13 00:20:39 -0800
commit3b93886add3b28acec698da8a50cf8c87eb16e4e (patch)
treeca6848038c6444e59965688498b6d35d685b5724 /pimd/pim_igmpv2.c
parent83fc30745dacdfcb8f7e3d9848500aa0a0de57ea (diff)
pimd: IGMPv2 report msg may be longer than 8 octets
As per test case IGMP Conformance test case 5.6, report messages longer than 8 octets should be accepted to support future-backward compatibilty. 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 <mrasool@vmware.com>
Diffstat (limited to 'pimd/pim_igmpv2.c')
-rw-r--r--pimd/pim_igmpv2.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/pimd/pim_igmpv2.c b/pimd/pim_igmpv2.c
index 2616afca69..dc18e1593d 100644
--- a/pimd/pim_igmpv2.c
+++ b/pimd/pim_igmpv2.c
@@ -115,10 +115,11 @@ int igmp_v2_recv_report(struct gm_sock *igmp, struct in_addr from,
return 0;
if (igmp_msg_len != IGMP_V12_MSG_SIZE) {
- zlog_warn(
- "Recv IGMPv2 REPORT 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 REPORT 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) {