return NB_OK;
/* Remove Link State Database */
- ls_ted_del_all(area->mta->ted);
+ ls_ted_del_all(&area->mta->ted);
/* Flush LSP if circuit engage */
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
XFREE(MTYPE_LS_DB, ted);
}
-void ls_ted_del_all(struct ls_ted *ted)
+void ls_ted_del_all(struct ls_ted **ted)
{
struct ls_vertex *vertex;
struct ls_edge *edge;
struct ls_subnet *subnet;
- if (ted == NULL)
+ if (*ted == NULL)
return;
/* First remove Vertices, Edges and Subnets and associated Link State */
- frr_each_safe (vertices, &ted->vertices, vertex)
- ls_vertex_del_all(ted, vertex);
- frr_each_safe (edges, &ted->edges, edge)
- ls_edge_del_all(ted, edge);
- frr_each_safe (subnets, &ted->subnets, subnet)
- ls_subnet_del_all(ted, subnet);
+ frr_each_safe (vertices, &(*ted)->vertices, vertex)
+ ls_vertex_del_all(*ted, vertex);
+ frr_each_safe (edges, &(*ted)->edges, edge)
+ ls_edge_del_all(*ted, edge);
+ frr_each_safe (subnets, &(*ted)->subnets, subnet)
+ ls_subnet_del_all(*ted, subnet);
/* then remove TED itself */
- ls_ted_del(ted);
+ ls_ted_del(*ted);
+ *ted = NULL;
}
void ls_ted_clean(struct ls_ted *ted)
*
* @param ted Link State Data Base
*/
-extern void ls_ted_del_all(struct ls_ted *ted);
+extern void ls_ted_del_all(struct ls_ted **ted);
/**
* Clean Link State Data Base by removing all Vertices, Edges and SubNets marked
ote_debug("MPLS-TE: ON -> OFF");
/* Remove TED */
- ls_ted_del_all(OspfMplsTE.ted);
+ ls_ted_del_all(&OspfMplsTE.ted);
OspfMplsTE.enabled = false;
/* Flush all TE Opaque LSAs */
PATH_TED_DEBUG("%s : TED [%p]", __func__, ted_state_g.ted);
path_ted_unregister_vty();
path_ted_stop_importing_igp();
- ls_ted_del_all(ted_state_g.ted);
+ ls_ted_del_all(&ted_state_g.ted);
path_ted_timer_sync_cancel();
path_ted_timer_refresh_cancel();
return 0;
}
/* Remove TED */
- ls_ted_del_all(ted_state_g.ted);
+ ls_ted_del_all(&ted_state_g.ted);
ted_state_g.enabled = false;
PATH_TED_DEBUG("%s: PATHD-TED: ON -> OFF", __func__);
ted_state_g.import = IMPORT_UNKNOWN;