summaryrefslogtreecommitdiff
path: root/pimd
diff options
context:
space:
mode:
authorRafael Zalamena <rzalamena@users.noreply.github.com>2025-02-06 21:25:45 -0300
committerGitHub <noreply@github.com>2025-02-06 21:25:45 -0300
commitfd66ede08bf9ccd4a03b9c3a918f51e7e57b7e99 (patch)
treecf27e620a3485d23a3bb81cddc0ed35ea62ea4bb /pimd
parentf04f61163399e76a36437533c6bad2d6e47fcee7 (diff)
parentafed39ea2be25bf30d50ac49b4edf424deadcb17 (diff)
Merge pull request #14105 from routingrocks/pim_ageout_fix
pimd: Fix for FHR mroute taking longer to age out
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim_ifchannel.c12
-rw-r--r--pimd/pim_upstream.c2
2 files changed, 10 insertions, 4 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 1791502b94..d55d2a958a 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -239,10 +239,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,
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index c52119e43a..01e1321b25 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -312,7 +312,7 @@ static void on_join_timer(struct event *t)
}
/*
- * In the case of a HFR we will not ahve anyone to send this to.
+ * In the case of a FHR we will not ahve anyone to send this to.
*/
if (PIM_UPSTREAM_FLAG_TEST_FHR(up->flags))
return;