summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c14
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(