IGMP: handle (*,G) report with no source addresses

Change-Id: I363370b9d4a27b992bad55c48fc930a2fbea2165
Signed-off-by: Neale Ranns <nranns@cisco.com>
This commit is contained in:
Neale Ranns
2018-09-26 06:51:39 -07:00
committed by Damjan Marion
parent bc0c8fe6ff
commit 21064cec96
2 changed files with 30 additions and 8 deletions

View File

@ -32,8 +32,13 @@ igmp_group_mk_source_list (const igmp_membership_group_v3_t * r)
n = clib_net_to_host_u16 (r->n_src_addresses);
if (0 == n)
return (NULL);
{
/* a (*,G) join has no source address specified */
vec_validate (srcs, 0);
srcs[0].ip4.as_u32 = 0;
}
else
{
vec_validate (srcs, n - 1);
s = r->src_addresses;
@ -42,6 +47,7 @@ igmp_group_mk_source_list (const igmp_membership_group_v3_t * r)
srcs[ii].ip4 = *s;
s++;
}
}
return (srcs);
}

View File

@ -628,6 +628,22 @@ class TestIgmp(VppTestCase):
self.assertFalse(self.vapi.igmp_dump())
self.assertFalse(self.vapi.igmp_dump())
#
# A (*,G) host report
#
p_j = (Ether(dst=self.pg0.local_mac, src=self.pg0.remote_mac) /
IP(src=self.pg0.remote_ip4, dst="224.0.0.22", tos=0xc0, ttl=1,
options=[IPOption(copy_flag=1, optclass="control",
option="router_alert")]) /
IGMPv3(type="Version 3 Membership Report") /
IGMPv3mr(numgrp=1) /
IGMPv3gr(rtype="Allow New Sources", maddr="239.1.1.2"))
self.send(self.pg0, p_j)
self.assertTrue(wait_for_igmp_event(self, 1, self.pg0,
"239.1.1.2", "0.0.0.0", 1))
#
# disable router config
#