summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_cmd.c4
-rw-r--r--pimd/pim_rp.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index e5686a94f4..e7e0573968 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -7381,12 +7381,14 @@ static int pim_cmd_interface_add(struct interface *ifp)
struct pim_interface *pim_ifp = ifp->info;
if (!pim_ifp)
- (void)pim_if_new(ifp, false, true, false, false);
+ pim_ifp = pim_if_new(ifp, false, true, false, false);
else
PIM_IF_DO_PIM(pim_ifp->options);
pim_if_addr_add_all(ifp);
pim_if_membership_refresh(ifp);
+
+ pim_if_create_pimreg(pim_ifp->pim);
return 1;
}
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 85a4fcc174..39493b189b 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -457,6 +457,10 @@ int pim_rp_new(struct pim_instance *pim, struct in_addr rp_addr,
struct pim_upstream *up;
struct listnode *upnode;
+ if (rp_addr.s_addr == INADDR_ANY ||
+ rp_addr.s_addr == INADDR_NONE)
+ return PIM_RP_BAD_ADDRESS;
+
rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
rp_info->rp.rpf_addr.family = AF_INET;