diff options
| author | Mobashshera Rasool <mrasool@vmware.com> | 2022-02-21 05:47:08 -0800 | 
|---|---|---|
| committer | Mobashshera Rasool <mrasool@vmware.com> | 2022-03-08 00:57:51 -0800 | 
| commit | fd5540ead6074a31a91a26441922806488d45280 (patch) | |
| tree | 9985c1793f197168cefd6ec3dd715385486535bd /pimd/pim_rp.c | |
| parent | 9dca52b924bc4a6ec302db30d35ef9d0393ebca9 (diff) | |
pim6d: Modify pim_rp_find_exact and pim_rp_find_match_group
Modify the apis to accomodate IPv4 and IPv6 addreses for RP.
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
Diffstat (limited to 'pimd/pim_rp.c')
| -rw-r--r-- | pimd/pim_rp.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 379ad5c40d..25eabe6743 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -188,16 +188,17 @@ static int pim_rp_prefix_list_used(struct pim_instance *pim, const char *plist)   * Given an RP's address, return the RP's rp_info that is an exact match for   * 'group'   */ -static struct rp_info *pim_rp_find_exact(struct pim_instance *pim, -					 struct in_addr rp, +static struct rp_info *pim_rp_find_exact(struct pim_instance *pim, pim_addr rp,  					 const struct prefix *group)  {  	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 -		    && prefix_same(&rp_info->group, group)) +		if (prefix_same(&rp_prefix, &rp_info->rp.rpf_addr) && +		    prefix_same(&rp_info->group, group))  			return rp_info;  	} @@ -241,7 +242,7 @@ struct rp_info *pim_rp_find_match_group(struct pim_instance *pim,  	bp = NULL;  	for (ALL_LIST_ELEMENTS_RO(pim->rp_list, node, rp_info)) {  		if (rp_info->plist) { -			plist = prefix_list_lookup(AFI_IP, rp_info->plist); +			plist = prefix_list_lookup(PIM_AFI, rp_info->plist);  			if (prefix_list_apply_ext(plist, &entry, group, true)  			    == PREFIX_DENY || !entry) @@ -557,8 +558,7 @@ int pim_rp_new(struct pim_instance *pim, pim_addr rp_addr, struct prefix group,  		/*  		 * Return if the group is already configured for this RP  		 */ -		tmp_rp_info = pim_rp_find_exact( -			pim, rp_info->rp.rpf_addr.u.prefix4, &rp_info->group); +		tmp_rp_info = pim_rp_find_exact(pim, rp_addr, &rp_info->group);  		if (tmp_rp_info) {  			if ((tmp_rp_info->rp_src != rp_src_flag)  			    && (rp_src_flag == RP_SRC_STATIC))  | 
