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>
}
}
-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
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 */
== 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);
}
}