diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2025-02-12 12:39:43 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-12 12:39:43 -0500 | 
| commit | 07e44e0aadcf9afccb25b7911a9eeea841aa979f (patch) | |
| tree | 5ad8f88af0ac14e200da44be551ae5cd6b8438fb | |
| parent | f9a61b182399fe9978966975970089ae20f7c218 (diff) | |
| parent | cdd4cacb119777d3c752eee71106e74605e1f26d (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)
| -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 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, diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 7417f31137..ddd9fe1ff0 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -304,7 +304,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;  | 
