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>
This commit is contained in:
Donald Sharp 2017-04-20 16:11:58 -04:00
parent b3d28d8f8a
commit bacf3d12dd

View File

@ -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))",