void nhrp_zebra_terminate(void) { zclient_stop(zclient); zclient_free(zclient); route_table_finish(zebra_rib[AFI_IP]); route_table_finish(zebra_rib[AFI_IP6]); }
void ospf_if_free (struct ospf_interface *oi) { ospf_if_down (oi); assert (oi->state == ISM_Down); #ifdef HAVE_OPAQUE_LSA ospf_opaque_type9_lsa_term (oi); #endif /* HAVE_OPAQUE_LSA */ /* Free Pseudo Neighbour */ ospf_nbr_delete (oi->nbr_self); route_table_finish (oi->nbrs); route_table_finish (oi->ls_upd_queue); /* Free any lists that should be freed */ list_free (oi->nbr_nbma); list_free (oi->ls_ack); list_free (oi->ls_ack_direct.ls_ack); ospf_delete_from_if (oi->ifp, oi); listnode_delete (oi->ospf->oiflist, oi); listnode_delete (oi->area->oiflist, oi); memset (oi, 0, sizeof (*oi)); XFREE (MTYPE_OSPF_IF, oi); }
void ospf6_delete(struct ospf6 *o) { struct listnode *node, *nnode; struct ospf6_area *oa; QOBJ_UNREG(o); ospf6_flush_self_originated_lsas_now(); ospf6_disable(ospf6); for (ALL_LIST_ELEMENTS(o->area_list, node, nnode, oa)) ospf6_area_delete(oa); list_delete(&o->area_list); ospf6_lsdb_delete(o->lsdb); ospf6_lsdb_delete(o->lsdb_self); ospf6_route_table_delete(o->route_table); ospf6_route_table_delete(o->brouter_table); ospf6_route_table_delete(o->external_table); route_table_finish(o->external_id_table); ospf6_distance_reset(o); route_table_finish(o->distance_table); XFREE(MTYPE_OSPF6_TOP, o); }
int ospf_if_delete_hook (struct interface *ifp) { int rc = 0; #ifdef HAVE_OPAQUE_LSA rc = ospf_opaque_del_if (ifp); #endif /* HAVE_OPAQUE_LSA */ route_table_finish (IF_OIFS (ifp)); route_table_finish (IF_OIFS_PARAMS (ifp)); XFREE (MTYPE_OSPF_IF_INFO, ifp->info); ifp->info = NULL; return rc; }
void ospf6_delete (struct ospf6 *o) { struct listnode *node, *nnode; struct ospf6_area *oa; ospf6_disable (ospf6); for (ALL_LIST_ELEMENTS (o->area_list, node, nnode, oa)) ospf6_area_delete (oa); list_delete (o->area_list); ospf6_lsdb_delete (o->lsdb); ospf6_lsdb_delete (o->lsdb_self); ospf6_route_table_delete (o->route_table); ospf6_route_table_delete (o->brouter_table); ospf6_route_table_delete (o->external_table); route_table_finish (o->external_id_table); XFREE (MTYPE_OSPF6_TOP, o); /* TODO Fix this */ ospf6 = NULL; }
void ospf6_lsdb_delete (struct ospf6_lsdb *lsdb) { ospf6_lsdb_remove_all (lsdb); route_table_finish (lsdb->table); XFREE (MTYPE_OSPF6_LSDB, lsdb); }
static int ospf_if_delete_hook (struct interface *ifp) { int rc = 0; struct route_node *rn; rc = ospf_opaque_del_if (ifp); route_table_finish (IF_OIFS (ifp)); for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn)) if (rn->info) ospf_del_if_params (rn->info); route_table_finish (IF_OIFS_PARAMS (ifp)); ospf_del_if_params ((struct ospf_if_params *) IF_DEF_PARAMS (ifp)); XFREE (MTYPE_OSPF_IF_INFO, ifp->info); ifp->info = NULL; return rc; }
void bgp_table_unlock(struct bgp_table *rt) { assert(rt->lock > 0); rt->lock--; if (rt->lock != 0) { return; } route_table_finish(rt->route_table); rt->route_table = NULL; XFREE(MTYPE_BGP_TABLE, rt); }
/* Called when interface is deleted. */ static int if_zebra_delete_hook (struct interface *ifp) { struct zebra_if *zebra_if; if (ifp->info) { zebra_if = ifp->info; /* Free installed address chains tree. */ if (zebra_if->ipv4_subnets) route_table_finish (zebra_if->ipv4_subnets); XFREE (MTYPE_TMP, zebra_if); } return 0; }
void ospf6_area_delete (struct ospf6_area *o6a) { listnode n; struct ospf6_interface *o6i; /* ospf6 interface list */ for (n = listhead (o6a->if_list); n; nextnode (n)) { o6i = (struct ospf6_interface *) getdata (n); /* ospf6_interface_delete (o6i); */ } list_delete (o6a->if_list); /* terminate LSDB */ ospf6_lsdb_remove_all (o6a->lsdb); /* spf tree terminate */ /* xxx */ /* threads */ if (o6a->spf_calc) thread_cancel (o6a->spf_calc); o6a->spf_calc = (struct thread *) NULL; if (o6a->route_calc) thread_cancel (o6a->route_calc); o6a->route_calc = (struct thread *) NULL; /* new */ ospf6_spftree_delete (o6a->spf_tree); ospf6_route_delete_all (o6a->table_topology); route_table_finish (o6a->table_topology); /* free area */ XFREE (MTYPE_OSPF6_AREA, o6a); }
void isis_redist_area_finish(struct isis_area *area) { int protocol; int level; int type; for (protocol = 0; protocol < REDIST_PROTOCOL_COUNT; protocol++) for (level = 0; level < ISIS_LEVELS; level++) { for (type = 0; type < ZEBRA_ROUTE_MAX + 1; type++) { struct isis_redist *redist; redist = &area->redist_settings[protocol][type][level]; redist->redist = 0; if (redist->map_name) XFREE(MTYPE_ISIS, redist->map_name); } route_table_finish(area->ext_reach[protocol][level]); } isis_redist_update_zebra_subscriptions(area->isis); }