summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
5c28462)
isis_spftree_clear() calls:
- _isis_spftree_del() to partially delete a spftree instance
without freeing spftree->route_table and
spftree->route_table_backup.
- then _isis_spftree_init() that allocates new spftree->route_table
and spftree->route_table_backup.
As a consequence, the previous table instances are not referenced and
not freed.
Free the route tables before allocating new ones.
Fixes: 860b75b40e ("isisd: calculate flex-algo constraint spf")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
isis_vertex_queue_free(&spftree->paths);
isis_route_table_info_free(spftree->route_table->info);
isis_route_table_info_free(spftree->route_table_backup->info);
isis_vertex_queue_free(&spftree->paths);
isis_route_table_info_free(spftree->route_table->info);
isis_route_table_info_free(spftree->route_table_backup->info);
+ route_table_finish(spftree->route_table);
+ route_table_finish(spftree->route_table_backup);
}
void isis_spftree_del(struct isis_spftree *spftree)
{
_isis_spftree_del(spftree);
}
void isis_spftree_del(struct isis_spftree *spftree)
{
_isis_spftree_del(spftree);
- route_table_finish(spftree->route_table);
- route_table_finish(spftree->route_table_backup);
spftree->route_table = NULL;
XFREE(MTYPE_ISIS_SPFTREE, spftree);
spftree->route_table = NULL;
XFREE(MTYPE_ISIS_SPFTREE, spftree);