diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2020-12-01 07:48:54 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-01 07:48:54 -0500 |
| commit | fc54da096684bcdcb7402d07ca6a9b88c67be0c6 (patch) | |
| tree | 64da841de2db03b1c7271d2653a0a0f9661d7e99 | |
| parent | b8a9f6c6a27c15a1c083dfc2f653fc322a1de42c (diff) | |
| parent | 99f9518b4a82b710902900c52dc1363cf9ef7da2 (diff) | |
Merge pull request #7404 from vishaldhingra/pim
pimd: (*,G) Prune processing doesn't remove SGRpt ifchannel
| -rw-r--r-- | pimd/pim_ifchannel.c | 2 | ||||
| -rw-r--r-- | pimd/pim_ifchannel.h | 1 | ||||
| -rw-r--r-- | pimd/pim_join.c | 3 |
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); } } |
