diff options
Diffstat (limited to 'pimd/pim_tib.c')
| -rw-r--r-- | pimd/pim_tib.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/pimd/pim_tib.c b/pimd/pim_tib.c index e21793b8ca..d067abf45a 100644 --- a/pimd/pim_tib.c +++ b/pimd/pim_tib.c @@ -34,16 +34,17 @@ tib_sg_oil_setup(struct pim_instance *pim, pim_sgaddr sg, struct interface *oif) up = pim_upstream_find(pim, &sg); if (up) { - memcpy(&nexthop, &up->rpf.source_nexthop, - sizeof(struct pim_nexthop)); - (void)pim_ecmp_nexthop_lookup(pim, &nexthop, vif_source, &grp, - 0); + memcpy(&nexthop, &up->rpf.source_nexthop, sizeof(struct pim_nexthop)); + if (!pim_nht_lookup_ecmp(pim, &nexthop, vif_source, &grp, false)) + if (PIM_DEBUG_PIM_NHT_RP) + zlog_debug("%s: Nexthop Lookup failed vif_src:%pPA, sg.src:%pPA, sg.grp:%pPA", + __func__, &vif_source, &sg.src, &sg.grp); + if (nexthop.interface) input_iface_vif_index = pim_if_find_vifindex_by_ifindex( pim, nexthop.interface->ifindex); } else - input_iface_vif_index = - pim_ecmp_fib_lookup_if_vif_index(pim, vif_source, &grp); + input_iface_vif_index = pim_nht_lookup_ecmp_if_vif_index(pim, vif_source, &grp); if (PIM_DEBUG_ZEBRA) zlog_debug("%s: NHT %pSG vif_source %pPAs vif_index:%d", @@ -115,13 +116,8 @@ bool tib_sg_gm_join(struct pim_instance *pim, pim_sgaddr sg, return false; } - if (!*oilp) { + if (!*oilp) *oilp = tib_sg_oil_setup(pim, sg, oif); -#if PIM_IPV == 6 - if (pim_embedded_rp_is_embedded(&sg.grp)) - (*oilp)->oil_ref_count--; -#endif /* PIM_IPV == 6 */ - } if (!*oilp) return false; |
