mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +00:00
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 <mrasool@vmware.com>
This commit is contained in:
parent
3b93886add
commit
69b9ea0b49
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user