summaryrefslogtreecommitdiff
path: root/pimd/pim_rp.c
diff options
context:
space:
mode:
authorSarita Patra <saritap@vmware.com>2019-02-08 01:35:21 -0800
committerSarita Patra <saritap@vmware.com>2019-02-08 01:35:21 -0800
commit6b44b401410a7f910af560d99822c65d71e8fbad (patch)
tree698b796e329e9d585d42b5932287b964ecb0e6ce /pimd/pim_rp.c
parentaef69c4feab965298bdb176c0fcebddb533a4066 (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.c12
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);