diff options
| author | Sarita Patra <saritap@vmware.com> | 2019-02-08 01:35:21 -0800 | 
|---|---|---|
| committer | Sarita Patra <saritap@vmware.com> | 2019-02-08 01:35:21 -0800 | 
| commit | 6b44b401410a7f910af560d99822c65d71e8fbad (patch) | |
| tree | 698b796e329e9d585d42b5932287b964ecb0e6ce /pimd/pim_rp.c | |
| parent | aef69c4feab965298bdb176c0fcebddb533a4066 (diff) | |
pimd: reject inconsistent address/mask "ip pim rp command"
Issue: Configure "ip pim rp x.x.x.x 225.0.0.0/4".
Show running config shows "ip pim rp x.x.x.x 224.0.0.0/4"
This is mis-leading.
Root-cause: Internally 225.0.0.0/4 is getting converted to
224.0.0.0/4 group mask, since the prefix length is 4.
Fix: Restrict the user to configure inconsistent group address
mask by throughing a cli error "Inconsistent address and mask".
Signed-off-by: Sarita Patra <saritap@vmware.com>
Diffstat (limited to 'pimd/pim_rp.c')
| -rw-r--r-- | pimd/pim_rp.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 6b76794b75..08f2ffc4ea 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -345,6 +345,7 @@ int pim_rp_new(struct pim_instance *pim, const char *rp,  	struct rp_info *tmp_rp_info;  	char buffer[BUFSIZ];  	struct prefix nht_p; +	struct prefix temp;  	struct pim_nexthop_cache pnc;  	struct route_node *rn; @@ -352,8 +353,17 @@ int pim_rp_new(struct pim_instance *pim, const char *rp,  	if (group_range == NULL)  		result = str2prefix("224.0.0.0/4", &rp_info->group); -	else +	else {  		result = str2prefix(group_range, &rp_info->group); +		if (result) { +			prefix_copy(&temp, &rp_info->group); +			apply_mask(&temp); +			if (!prefix_same(&rp_info->group, &temp)) { +				XFREE(MTYPE_PIM_RP, rp_info); +				return PIM_GROUP_BAD_ADDR_MASK_COMBO; +			} +		} +	}  	if (!result) {  		XFREE(MTYPE_PIM_RP, rp_info);  | 
