summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-08-18 09:44:52 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-12-21 20:26:06 -0500
commitd854589aba9d047f7601a2748d9ab9381f528cce (patch)
tree88071d5bff0169c616882df89da2ff52c8ae3cfd
parent4304f95c86af2ea658678fb969b984108a4c597f (diff)
pimd: When the Keep Alive timer Pops Stop timers
When the Keep alive timer Pops stop the timer and send a prune upstream if we need to remove the state. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--pimd/pim_upstream.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 10f8b21ed0..d1e90caf95 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -635,7 +635,6 @@ void pim_upstream_update_join_desired(struct pim_upstream *up)
/* switched from true to false */
if (!is_join_desired && was_join_desired) {
- zassert(up->join_state == PIM_UPSTREAM_JOINED);
pim_upstream_switch(up, PIM_UPSTREAM_NOTJOINED);
return;
}
@@ -837,6 +836,11 @@ pim_upstream_keep_alive_timer (struct thread *t)
(up->channel_oil->cc.oldlastused >= up->channel_oil->cc.lastused))
{
pim_mroute_del (up->channel_oil);
+ THREAD_OFF (up->t_ka_timer);
+ THREAD_OFF (up->t_rs_timer);
+ THREAD_OFF (up->t_join_timer);
+ pim_joinprune_send (up->rpf.source_nexthop.interface, up->rpf.rpf_addr,
+ &up->sg, 0);
pim_upstream_del (up);
}
else