summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-08-10 16:16:22 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-12-21 20:26:06 -0500
commit8e38a2cfccfdf7b47fb69d6fae26f83c5825d1a6 (patch)
tree1aa68c55611deebe94e918c07c7f17dbab6b3046 /pimd/pim_upstream.c
parent90d82769a88020c485118bc76faff15a2c8648cf (diff)
pimd: Fix RP shenanigans
The RP was not properly handling the series of events: 1) When a WRVIFWHOLE is received if we are the RP, send a pim register stop to the FHR. 2) When a register was received we were sending a join (S,G) towards the S, then a immediate prune (S,G) followed by another join (S,G). Just send the first join 3) Save whom we received the S,G register from so we can use it later 4) Allow a join timer to restart itself instead of causing a crash. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 932e06b76d..9ee0e87004 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -225,8 +225,7 @@ static void join_timer_start(struct pim_upstream *up)
pim_str_sg_dump (&up->sg));
}
- zassert(!up->t_join_timer);
-
+ THREAD_OFF (up->t_join_timer);
THREAD_TIMER_ON(master, up->t_join_timer,
on_join_timer,
up, qpim_t_periodic);