summaryrefslogtreecommitdiffstats
path: root/pimd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-04-20 22:11:58 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-05-04 17:11:20 +0200
commitbacf3d12dd822dc993f283338c324389a47b7e84 (patch)
tree65e71b41b5c7e0105f90183b6ad8f911d83ffbcb /pimd
parentMerge pull request #451 from opensourcerouting/ospfd-fix-cmdstr (diff)
downloadfrr-bacf3d12dd822dc993f283338c324389a47b7e84.tar.xz
frr-bacf3d12dd822dc993f283338c324389a47b7e84.zip
pimd: Only compare the actual IIF of the *,G to S,G
Now that pim has the ability to use ecmp, the Group path to the RP, may be different than what is choosen for the *,G IIF. As such when we are making the spt switchover decision, compare the S,G IIF to the *,G IIF. Ticket: CM-15870 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim_upstream.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 1e31a3aba..5a407f9f9 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))",