summaryrefslogtreecommitdiff
path: root/pimd/pim_ifchannel.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_ifchannel.c')
-rw-r--r--pimd/pim_ifchannel.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index d267ee9fb2..f3c3e282c6 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -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);