void isis_circuit_deconfigure (struct isis_circuit *circuit, struct isis_area *area) { /* Free the index of SRM and SSN flags */ flags_free_index (&area->flags, circuit->idx); circuit->idx = 0; /* Remove circuit from area */ assert (circuit->area == area); listnode_delete (area->circuit_list, circuit); circuit->area = NULL; return; }
void isis_circuit_deconfigure (struct isis_circuit *circuit, struct isis_area *area) { /* destroy adjacencies */ if (circuit->u.bc.adjdb[0]) isis_adjdb_iterate (circuit->u.bc.adjdb[0], (void(*) (struct isis_adjacency *, void *)) isis_delete_adj, circuit->u.bc.adjdb[0]); if (circuit->u.bc.adjdb[1]) isis_adjdb_iterate (circuit->u.bc.adjdb[1], (void(*) (struct isis_adjacency *, void *)) isis_delete_adj, circuit->u.bc.adjdb[1]); /* Remove circuit from area */ listnode_delete (area->circuit_list, circuit); /* Free the index of SRM and SSN flags */ flags_free_index (&area->flags, circuit->idx); return; }