mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 19:39:28 +00:00
pimd: Improve handling in pim_rp_init
When we are starting up improve the error handling of pim_rp_init and fix some memory leaks. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
ea89ab14e2
commit
093c928fc1
@ -98,15 +98,24 @@ void pim_rp_init(struct pim_instance *pim)
|
||||
struct rp_info *rp_info;
|
||||
|
||||
pim->rp_list = list_new();
|
||||
if (!pim->rp_list) {
|
||||
zlog_err("Unable to alloc rp_list");
|
||||
return;
|
||||
}
|
||||
pim->rp_list->del = (void (*)(void *))pim_rp_info_free;
|
||||
pim->rp_list->cmp = pim_rp_list_cmp;
|
||||
|
||||
rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
|
||||
|
||||
if (!rp_info)
|
||||
if (!rp_info) {
|
||||
zlog_err("Unable to alloc rp_info");
|
||||
list_delete(pim->rp_list);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!str2prefix("224.0.0.0/4", &rp_info->group)) {
|
||||
zlog_err("Unable to convert 224.0.0.0/4 to prefix");
|
||||
list_delete(pim->rp_list);
|
||||
XFREE(MTYPE_PIM_RP, rp_info);
|
||||
return;
|
||||
}
|
||||
@ -554,6 +563,8 @@ int pim_rp_del(struct pim_instance *pim, const char *rp,
|
||||
|
||||
listnode_delete(pim->rp_list, rp_info);
|
||||
pim_rp_refresh_group_to_rp_mapping(pim);
|
||||
|
||||
XFREE(MTYPE_PIM_RP, rp_info);
|
||||
return PIM_SUCCESS;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user