summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2020-12-01 07:48:54 -0500
committerGitHub <noreply@github.com>2020-12-01 07:48:54 -0500
commitfc54da096684bcdcb7402d07ca6a9b88c67be0c6 (patch)
tree64da841de2db03b1c7271d2653a0a0f9661d7e99
parentb8a9f6c6a27c15a1c083dfc2f653fc322a1de42c (diff)
parent99f9518b4a82b710902900c52dc1363cf9ef7da2 (diff)
Merge pull request #7404 from vishaldhingra/pim
pimd: (*,G) Prune processing doesn't remove SGRpt ifchannel
-rw-r--r--pimd/pim_ifchannel.c2
-rw-r--r--pimd/pim_ifchannel.h1
-rw-r--r--pimd/pim_join.c3
3 files changed, 5 insertions, 1 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index b2971e5f1f..e7ff434f4b 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -258,7 +258,7 @@ void pim_ifchannel_delete_all(struct interface *ifp)
}
}
-static void delete_on_noinfo(struct pim_ifchannel *ch)
+void delete_on_noinfo(struct pim_ifchannel *ch)
{
if (ch->local_ifmembership == PIM_IFMEMBERSHIP_NOINFO
&& ch->ifjoin_state == PIM_IFJOIN_NOINFO
diff --git a/pimd/pim_ifchannel.h b/pimd/pim_ifchannel.h
index 425622b79e..7ec8191e56 100644
--- a/pimd/pim_ifchannel.h
+++ b/pimd/pim_ifchannel.h
@@ -173,4 +173,5 @@ int pim_ifchannel_compare(const struct pim_ifchannel *ch1,
const struct pim_ifchannel *ch2);
unsigned int pim_ifchannel_hash_key(const void *arg);
+void delete_on_noinfo(struct pim_ifchannel *ch);
#endif /* PIM_IFCHANNEL_H */
diff --git a/pimd/pim_join.c b/pimd/pim_join.c
index f54d5bf9bf..2766a6d2b5 100644
--- a/pimd/pim_join.c
+++ b/pimd/pim_join.c
@@ -350,8 +350,11 @@ int pim_joinprune_recv(struct interface *ifp, struct pim_neighbor *neigh,
== PIM_IFJOIN_PRUNE_PENDING_TMP)
THREAD_OFF(
child->t_ifjoin_prune_pending_timer);
+ THREAD_OFF(
+ child->t_ifjoin_expiry_timer);
PIM_IF_FLAG_UNSET_S_G_RPT(child->flags);
child->ifjoin_state = PIM_IFJOIN_NOINFO;
+ delete_on_noinfo(child);
}
}