mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 14:17:20 +00:00
pimd: adjust rp_keep_alive_time when register_suppress_time is changed
The router->register_suppress_time is used to derive the rp_keep_alive_time, but when the suppress time was changed, pim was not recalculating the rp_keep_alive_time and left it at the old value. This fix applies the changes when a new suppress_time is entered (or removed.) Signed-off-by: Don Slice <dslice@nvidia.com>
This commit is contained in:
parent
bb4b6eb547
commit
3f1f8641fa
@ -763,8 +763,8 @@ int pim_register_suppress_time_modify(struct nb_cb_modify_args *args)
|
|||||||
case NB_EV_ABORT:
|
case NB_EV_ABORT:
|
||||||
break;
|
break;
|
||||||
case NB_EV_APPLY:
|
case NB_EV_APPLY:
|
||||||
router->register_suppress_time =
|
pim_update_suppress_timers(
|
||||||
yang_dnode_get_uint16(args->dnode, NULL);
|
yang_dnode_get_uint16(args->dnode, NULL));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,6 +407,28 @@ static void pim_upstream_join_timer_restart_msec(struct pim_upstream *up,
|
|||||||
&up->t_join_timer);
|
&up->t_join_timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pim_update_suppress_timers(uint32_t suppress_time)
|
||||||
|
{
|
||||||
|
struct pim_instance *pim;
|
||||||
|
struct vrf *vrf;
|
||||||
|
unsigned int old_rp_ka_time;
|
||||||
|
|
||||||
|
/* stash the old one so we know which values were manually configured */
|
||||||
|
old_rp_ka_time = (3 * router->register_suppress_time
|
||||||
|
+ router->register_probe_time);
|
||||||
|
router->register_suppress_time = suppress_time;
|
||||||
|
|
||||||
|
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
|
||||||
|
pim = vrf->info;
|
||||||
|
if (!pim)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Only adjust if not manually configured */
|
||||||
|
if (pim->rp_keep_alive_time == old_rp_ka_time)
|
||||||
|
pim->rp_keep_alive_time = PIM_RP_KEEPALIVE_PERIOD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void pim_upstream_join_suppress(struct pim_upstream *up,
|
void pim_upstream_join_suppress(struct pim_upstream *up,
|
||||||
struct in_addr rpf_addr, int holdtime)
|
struct in_addr rpf_addr, int holdtime)
|
||||||
{
|
{
|
||||||
|
@ -317,6 +317,7 @@ int pim_upstream_eval_inherit_if(struct pim_upstream *up,
|
|||||||
void pim_upstream_update_join_desired(struct pim_instance *pim,
|
void pim_upstream_update_join_desired(struct pim_instance *pim,
|
||||||
struct pim_upstream *up);
|
struct pim_upstream *up);
|
||||||
|
|
||||||
|
void pim_update_suppress_timers(uint32_t suppress_time);
|
||||||
void pim_upstream_join_suppress(struct pim_upstream *up,
|
void pim_upstream_join_suppress(struct pim_upstream *up,
|
||||||
struct in_addr rpf_addr, int holdtime);
|
struct in_addr rpf_addr, int holdtime);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user