diff options
Diffstat (limited to 'pimd/pim_upstream.c')
| -rw-r--r-- | pimd/pim_upstream.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 2b674b4234..d21c7b4008 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -1800,12 +1800,16 @@ void pim_upstream_start_register_stop_timer(struct pim_upstream *up, THREAD_OFF(up->t_rs_timer); if (!null_register) { - uint32_t lower = (0.5 * PIM_REGISTER_SUPPRESSION_PERIOD); - uint32_t upper = (1.5 * PIM_REGISTER_SUPPRESSION_PERIOD); - time = lower + (frr_weak_random() % (upper - lower + 1)) - - PIM_REGISTER_PROBE_PERIOD; + uint32_t lower = (0.5 * router->register_suppress_time); + uint32_t upper = (1.5 * router->register_suppress_time); + time = lower + (frr_weak_random() % (upper - lower + 1)); + /* Make sure we don't wrap around */ + if (time >= router->register_probe_time) + time -= router->register_probe_time; + else + time = 0; } else - time = PIM_REGISTER_PROBE_PERIOD; + time = router->register_probe_time; if (PIM_DEBUG_PIM_TRACE) { zlog_debug( |
