summaryrefslogtreecommitdiffstats
path: root/pimd/pim_igmpv3.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2017-01-27 20:33:01 +0100
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-02-14 21:54:29 +0100
commite81d9709ff979502ff7b28ea622d04407068e0c2 (patch)
tree9e6a21db68270d1b95952e827909cce8feca7b30 /pimd/pim_igmpv3.c
parentpimd: mroute entries unresolved IIF issue (diff)
downloadfrr-e81d9709ff979502ff7b28ea622d04407068e0c2.tar.xz
frr-e81d9709ff979502ff7b28ea622d04407068e0c2.zip
pimd: ifdown sequnce stale report entry
Ticket: CM-14652 Testing Done: Tested via sending IGMP report and flap port and verified pim upstream and mroute, the entry is deleted. Run pim-smoke Even after Report received port down event, IGMP entry alawys exists in upstream, mroute, kernel. The entry exist because it was recreated after delete due missing check if group has no more source list, mode is exclude, last source address was * means (*, G) so do not trigger to create entry. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_igmpv3.c')
-rw-r--r--pimd/pim_igmpv3.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index f7a6cbd0c..fb6566513 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -389,10 +389,14 @@ void igmp_source_delete(struct igmp_source *source)
listnode_delete(group->group_source_list, source);
igmp_source_free(source);
-
- if (group->group_filtermode_isexcl) {
- group_exclude_fwd_anysrc_ifempty(group);
- }
+ /* Group source list is empty and current source is * then
+ *,G group going away so do not trigger start */
+ if (group->group_filtermode_isexcl &&
+ (listcount (group->group_source_list) != 0) &&
+ source->source_addr.s_addr != INADDR_ANY)
+ {
+ group_exclude_fwd_anysrc_ifempty (group);
+ }
}
static void source_delete_by_flag(struct list *source_list)