]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Add TOS check for IGMP conformance 9074/head
authorMobashshera Rasool <mrasool@vmware.com>
Mon, 19 Jul 2021 19:31:56 +0000 (19:31 +0000)
committerMobashshera Rasool <mrasool@vmware.com>
Mon, 19 Jul 2021 19:46:10 +0000 (19:46 +0000)
IGMPv3 packets with invalid TOS should be dropped.
Test Case ID: 4.10
TEST_DESCRIPTION
Every IGMP message described in this document is sent with
IP Precedence of Internetwork Control (e.g., Type of Service
0xc0)
(Tests that IGMPv3 Membership Query Message conforms to
above statement)
TEST_REFERENCE
NEGATIVE: RFC 3376, IGMP Version 3, s4 p7 Message Formats
Issue: #9071

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
pimd/pim_igmp.c

index 069c515971ae84120b370c14d739940ce712753b..477cf991b4684c6119c1264989918d3622e4e43a 100644 (file)
@@ -494,6 +494,17 @@ bool pim_igmp_verify_header(struct ip *ip_hdr, size_t len, int igmp_msg_len,
                }
        }
 
+       if ((msg_type == PIM_IGMP_V3_MEMBERSHIP_REPORT)
+           || ((msg_type == PIM_IGMP_MEMBERSHIP_QUERY)
+               && (igmp_msg_len >= IGMP_V3_SOURCES_OFFSET))) {
+               /* All IGMPv3 messages must be received with TOS set to 0xC0*/
+               if (ip_hdr->ip_tos != IPTOS_PREC_INTERNETCONTROL) {
+                       zlog_warn("Received IGMP Packet with invalid TOS %u",
+                                 ip_hdr->ip_tos);
+                       return -1;
+               }
+       }
+
        return true;
 }