From e81d9709ff979502ff7b28ea622d04407068e0c2 Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Fri, 27 Jan 2017 11:33:01 -0800 Subject: [PATCH] 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 Reviewed-by: Donald Sharp --- pimd/pim_igmpv3.c | 12 ++++++++---- pimd/pim_mroute.c | 7 +++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c index f7a6cbd0ce..fb65665135 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) diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index c2f06ab57b..4fae5b3ca5 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -734,6 +734,13 @@ int pim_mroute_del_vif(int vif_index) return -1; } + if (PIM_DEBUG_MROUTE) + { + struct interface *ifp = pim_if_find_by_vif_index (vif_index); + zlog_debug ("%s %s: Del Vif %d (%s) ", __FILE__, + __PRETTY_FUNCTION__, vif_index, ifp ? ifp->name : "NULL"); + } + memset(&vc, 0, sizeof(vc)); vc.vifc_vifi = vif_index; -- 2.39.5