mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +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;
|
struct rp_info *rp_info;
|
||||||
|
|
||||||
pim->rp_list = list_new();
|
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->del = (void (*)(void *))pim_rp_info_free;
|
||||||
pim->rp_list->cmp = pim_rp_list_cmp;
|
pim->rp_list->cmp = pim_rp_list_cmp;
|
||||||
|
|
||||||
rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
|
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;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!str2prefix("224.0.0.0/4", &rp_info->group)) {
|
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);
|
XFREE(MTYPE_PIM_RP, rp_info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -554,6 +563,8 @@ int pim_rp_del(struct pim_instance *pim, const char *rp,
|
|||||||
|
|
||||||
listnode_delete(pim->rp_list, rp_info);
|
listnode_delete(pim->rp_list, rp_info);
|
||||||
pim_rp_refresh_group_to_rp_mapping(pim);
|
pim_rp_refresh_group_to_rp_mapping(pim);
|
||||||
|
|
||||||
|
XFREE(MTYPE_PIM_RP, rp_info);
|
||||||
return PIM_SUCCESS;
|
return PIM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user