mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 16:26:10 +00:00
pimd: (*,G) Prune processing doesn't remove SGRpt ifchannel
problem : ========= When (*,G) prune received where we have SGRpt state, ifchannel goes to NO_INFO state and doesn't get removed. Root cause : ============ During the processing of (*,G) prune, we are not removing the ifchannel on PruneTmp or PrunePendingTmp state. Fix : ===== In that scenario, stop joinExpiry timer and delete the ifchannel. issue #7347 Co-authored-by: Saravanan K <saravanank@vmware.com> Signed-off-by: vishaldhingra <vdhingra@vmware.com>
This commit is contained in:
parent
1af7c1af06
commit
99f9518b4a
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user