summaryrefslogtreecommitdiff
path: root/pimd/pim_rp.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_rp.c')
-rw-r--r--pimd/pim_rp.c27
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);
}