From bacf3d12dd822dc993f283338c324389a47b7e84 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 20 Apr 2017 16:11:58 -0400 Subject: [PATCH] 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 --- pimd/pim_upstream.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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))",