]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Note when a S,G stream should be a FHR as well 463/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 25 Apr 2017 14:00:39 +0000 (10:00 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 4 May 2017 15:11:57 +0000 (11:11 -0400)
When we have a S,G being created, that it might
also be a FHR router as well.  This happens
when the FHR is in the path of the RP->LHR
for when it builds it's SPT tree for the S,G.

Ticket: CM-16056, CM-15836
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_ifchannel.c

index d267ee9fb288d1786426d60361d59146e46ed0bc..f3c3e282c60c289c7b70c5330daa193decca5b5c 100644 (file)
@@ -790,6 +790,16 @@ void pim_ifchannel_join_add(struct interface *ifp,
       pim_upstream_inherited_olist (ch->upstream);
       pim_forward_start(ch);
     }
+    /*
+     * If we are going to be a LHR, we need to note it
+     */
+    if (ch->upstream->parent &&
+        (ch->upstream->parent->flags & PIM_UPSTREAM_FLAG_MASK_SRC_IGMP) &&
+        !(ch->upstream->flags & PIM_UPSTREAM_FLAG_MASK_SRC_LHR))
+      {
+        pim_upstream_ref (ch->upstream, PIM_UPSTREAM_FLAG_MASK_SRC_LHR);
+        pim_upstream_keep_alive_timer_start (ch->upstream, qpim_keep_alive_time);
+      }
     break;
   case PIM_IFJOIN_JOIN:
     zassert(!ch->t_ifjoin_prune_pending_timer);