bgpd: avoid memory leak in bgp flowspec list, plus usage of bool

Avoid memory leak in bgp flowspec list.
Usage of bool parameter instead of int, to handle the number of entries
PBR.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
Philippe Guibert 2018-08-20 18:32:00 +02:00
parent e0909ff51f
commit 503d1ec6eb
2 changed files with 6 additions and 7 deletions

View File

@ -335,7 +335,7 @@ void route_vty_out_flowspec(struct vty *vty, struct prefix *p,
struct listnode *node;
struct bgp_pbr_match_entry *bpme;
struct bgp_pbr_match *bpm;
int unit = 0;
bool list_began = false;
struct list *list_bpm;
list_bpm = list_new();
@ -347,14 +347,14 @@ void route_vty_out_flowspec(struct vty *vty, struct prefix *p,
if (listnode_lookup(list_bpm, bpm))
continue;
listnode_add(list_bpm, bpm);
if (unit == 0)
if (!list_began) {
vty_out(vty, " (");
else
list_began = true;
} else
vty_out(vty, ", ");
vty_out(vty, "%s", bpm->ipset_name);
unit++;
}
if (unit)
if (list_began)
vty_out(vty, ")");
vty_out(vty, "\n");
list_delete_and_null(&list_bpm);

View File

@ -198,8 +198,7 @@ static void bgp_info_extra_free(struct bgp_info_extra **extra)
bgp_unlock(e->bgp_orig);
if ((*extra)->bgp_fs_pbr)
list_delete_all_node((*extra)->bgp_fs_pbr);
(*extra)->bgp_fs_pbr = NULL;
list_delete_and_null(&((*extra)->bgp_fs_pbr));
XFREE(MTYPE_BGP_ROUTE_EXTRA, *extra);
*extra = NULL;