summaryrefslogtreecommitdiff
path: root/pimd/pim_ifchannel.c
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2025-02-12 12:39:43 -0500
committerGitHub <noreply@github.com>2025-02-12 12:39:43 -0500
commit07e44e0aadcf9afccb25b7911a9eeea841aa979f (patch)
tree5ad8f88af0ac14e200da44be551ae5cd6b8438fb /pimd/pim_ifchannel.c
parentf9a61b182399fe9978966975970089ae20f7c218 (diff)
parentcdd4cacb119777d3c752eee71106e74605e1f26d (diff)
Merge pull request #18055 from FRRouting/mergify/bp/stable/10.1/pr-14105
pimd: Fix for FHR mroute taking longer to age out (backport #14105)
Diffstat (limited to 'pimd/pim_ifchannel.c')
-rw-r--r--pimd/pim_ifchannel.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 8f9e41039a..3ef2ccd83e 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -233,10 +233,16 @@ void pim_ifchannel_delete_all(struct interface *ifp)
void delete_on_noinfo(struct pim_ifchannel *ch)
{
- if (ch->local_ifmembership == PIM_IFMEMBERSHIP_NOINFO
- && ch->ifjoin_state == PIM_IFJOIN_NOINFO
- && ch->t_ifjoin_expiry_timer == NULL)
+ struct pim_upstream *up = ch->upstream;
+ /*
+ * (S,G) with no active traffic, KAT expires, PPT expries,
+ * channel state is NoInfo
+ */
+ if (ch->local_ifmembership == PIM_IFMEMBERSHIP_NOINFO &&
+ ch->ifjoin_state == PIM_IFJOIN_NOINFO &&
+ (ch->t_ifjoin_expiry_timer == NULL || (up && !pim_upstream_is_kat_running(up)))) {
pim_ifchannel_delete(ch);
+ }
}
void pim_ifchannel_ifjoin_switch(const char *caller, struct pim_ifchannel *ch,