diff options
Diffstat (limited to 'pimd/pim_rp.c')
| -rw-r--r-- | pimd/pim_rp.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 7e053d2aa0..c1623ec15e 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -194,7 +194,7 @@ static int pim_rp_prefix_list_used(struct pim_instance *pim, const char *plist) */ static struct rp_info *pim_rp_find_exact(struct pim_instance *pim, struct in_addr rp, - struct prefix *group) + const struct prefix *group) { struct listnode *node; struct rp_info *rp_info; @@ -212,13 +212,13 @@ static struct rp_info *pim_rp_find_exact(struct pim_instance *pim, * Given a group, return the rp_info for that group */ static struct rp_info *pim_rp_find_match_group(struct pim_instance *pim, - struct prefix *group) + const struct prefix *group) { struct listnode *node; struct rp_info *best = NULL; struct rp_info *rp_info; struct prefix_list *plist; - struct prefix *p, *bp; + const struct prefix *p, *bp; struct route_node *rn; bp = NULL; @@ -477,10 +477,9 @@ int pim_rp_new(struct pim_instance *pim, const char *rp, &rp_all->group, 1)) return PIM_RP_NO_PATH; } else { - if (pim_nexthop_lookup( + if (!pim_ecmp_nexthop_lookup( pim, &rp_all->rp.source_nexthop, - rp_all->rp.rpf_addr.u.prefix4, 1) - != 0) + &nht_p, &rp_all->group, 1)) return PIM_RP_NO_PATH; } pim_rp_check_interfaces(pim, rp_all); @@ -556,9 +555,8 @@ int pim_rp_new(struct pim_instance *pim, const char *rp, &nht_p, &rp_info->group, 1)) return PIM_RP_NO_PATH; } else { - if (pim_nexthop_lookup(pim, &rp_info->rp.source_nexthop, - rp_info->rp.rpf_addr.u.prefix4, 1) - != 0) + if (!pim_ecmp_nexthop_lookup(pim, &rp_info->rp.source_nexthop, + &nht_p, &rp_info->group, 1)) return PIM_RP_NO_PATH; } @@ -687,9 +685,9 @@ void pim_rp_setup(struct pim_instance *pim) "%s: NHT Local Nexthop not found for RP %s ", __PRETTY_FUNCTION__, buf); } - if (pim_nexthop_lookup( - pim, &rp_info->rp.source_nexthop, - rp_info->rp.rpf_addr.u.prefix4, 1) < 0) + if (!pim_ecmp_nexthop_lookup(pim, + &rp_info->rp.source_nexthop, + &nht_p, &rp_info->group, 1)) if (PIM_DEBUG_PIM_NHT_RP) zlog_debug( "Unable to lookup nexthop for rp specified"); @@ -854,8 +852,9 @@ struct pim_rpf *pim_rp_g(struct pim_instance *pim, struct in_addr group) __PRETTY_FUNCTION__, buf, buf1); } pim_rpf_set_refresh_time(pim); - pim_nexthop_lookup(pim, &rp_info->rp.source_nexthop, - rp_info->rp.rpf_addr.u.prefix4, 1); + pim_ecmp_nexthop_lookup(pim, + &rp_info->rp.source_nexthop, + &nht_p, &rp_info->group, 1); } return (&rp_info->rp); } |
