diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2025-02-07 16:10:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-07 16:10:46 +0200 |
| commit | bf16e531868b0aa87c75adbc11bd9ef1447f5247 (patch) | |
| tree | 4f7876bdf417dc28852b2211155af1fd315da06e | |
| parent | 3d61bbe0d9aa2785a6deb1d8465be2b0956891c7 (diff) | |
| parent | ccbe9f985be63d11edd5be999c7e134a17299d8f (diff) | |
Merge pull request #18053 from FRRouting/mergify/bp/dev/10.3/pr-14105mergify/bp/dev/10.3/pr-17935
pimd: Fix for FHR mroute taking longer to age out (backport #14105)
| -rw-r--r-- | pimd/pim_ifchannel.c | 12 | ||||
| -rw-r--r-- | pimd/pim_upstream.c | 2 |
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; |
