diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 28b4af9457..4b53464215 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -7385,12 +7385,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 35c040c64c..717566738f 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;