]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: When the Keep Alive timer Pops Stop timers
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 18 Aug 2016 13:44:52 +0000 (09:44 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:06 +0000 (20:26 -0500)
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>
pimd/pim_upstream.c

index 10f8b21ed01729c18905f1804bcb8cbb7d9af638..d1e90caf95c6d38b98373c3315f6f9da7c53f192 100644 (file)
@@ -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