summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJafar Al-Gharaibeh <Jafaral@users.noreply.github.com>2017-05-04 13:09:44 -0500
committerGitHub <noreply@github.com>2017-05-04 13:09:44 -0500
commitbb738156e4057b99daf70ca0d485fa6e6e21160d (patch)
treefc4fd0e77ae6f2dee85f87fb67e33b1de0f55272
parent3c6f31c006e1584df847bbbcef64fdb4a38295ed (diff)
parente6d700e33bb093d40d6c030556bb099f50e1bf96 (diff)
Merge pull request #463 from donaldsharp/pim_stable_3.0
Pim stable 3.0
-rw-r--r--pimd/pim_ifchannel.c10
-rw-r--r--pimd/pim_upstream.c5
2 files changed, 12 insertions, 3 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);
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 1e31a3aba1..5a407f9f9e 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -1217,7 +1217,7 @@ pim_upstream_is_sg_rpt (struct pim_upstream *up)
void
pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming)
{
- struct pim_rpf *grpf = NULL;
+ struct pim_upstream *starup = up->parent;
// iif == RPF_interfvace(S)
if (up->rpf.source_nexthop.interface != incoming)
@@ -1242,8 +1242,7 @@ pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming)
}
// OR RPF_interface(S) != RPF_interface(RP(G))
- grpf = RP(up->sg.grp);
- if (!grpf || up->rpf.source_nexthop.interface != grpf->source_nexthop.interface)
+ if (!starup || up->rpf.source_nexthop.interface != starup->rpf.source_nexthop.interface)
{
if (PIM_DEBUG_TRACE)
zlog_debug ("%s: %s RPF_interface(S) != RPF_interface(RP(G))",