summaryrefslogtreecommitdiff
path: root/pimd/pim_rp.c
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2022-02-21 05:23:15 -0800
committerMobashshera Rasool <mrasool@vmware.com>2022-03-08 00:57:51 -0800
commit1db07606fff031e22275fe121a6289bf9be50a94 (patch)
treeac9c7ef1dd81421e18fb4122bb9a4d880923dc96 /pimd/pim_rp.c
parent8eb5ad6c4aa61defb16fdd841c7807e8d7a9e9d5 (diff)
pim6d: Modify pim_rp_find_prefix_list for PIMv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
Diffstat (limited to 'pimd/pim_rp.c')
-rw-r--r--pimd/pim_rp.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index b3ba40f3fe..43021ef888 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -149,15 +149,17 @@ void pim_rp_free(struct pim_instance *pim)
* Given an RP's prefix-list, return the RP's rp_info for that prefix-list
*/
static struct rp_info *pim_rp_find_prefix_list(struct pim_instance *pim,
- struct in_addr rp,
- const char *plist)
+ pim_addr rp, const char *plist)
{
struct listnode *node;
struct rp_info *rp_info;
+ struct prefix rp_prefix;
+
+ pim_addr_to_prefix(&rp_prefix, rp);
for (ALL_LIST_ELEMENTS_RO(pim->rp_list, node, rp_info)) {
- if (rp.s_addr == rp_info->rp.rpf_addr.u.prefix4.s_addr
- && rp_info->plist && strcmp(rp_info->plist, plist) == 0) {
+ if (prefix_same(&rp_prefix, &rp_info->rp.rpf_addr) &&
+ rp_info->plist && strcmp(rp_info->plist, plist) == 0) {
return rp_info;
}
}
@@ -441,8 +443,7 @@ int pim_rp_new(struct pim_instance *pim, pim_addr rp_addr, struct prefix group,
/*
* Return if the prefix-list is already configured for this RP
*/
- if (pim_rp_find_prefix_list(pim, rp_info->rp.rpf_addr.u.prefix4,
- plist)) {
+ if (pim_rp_find_prefix_list(pim, rp_addr, plist)) {
XFREE(MTYPE_PIM_RP, rp_info);
return PIM_SUCCESS;
}