/* counterpart to MSDP init; XXX: unused currently */ void pim_msdp_exit(struct pim_instance *pim) { pim_msdp_sa_adv_timer_setup(pim, false); /* XXX: stop listener and delete all peer sessions */ pim_msdp_mg_free(pim); if (pim->msdp.peer_hash) { hash_clean(pim->msdp.peer_hash, NULL); hash_free(pim->msdp.peer_hash); pim->msdp.peer_hash = NULL; } if (pim->msdp.peer_list) { list_delete(&pim->msdp.peer_list); } if (pim->msdp.sa_hash) { hash_clean(pim->msdp.sa_hash, NULL); hash_free(pim->msdp.sa_hash); pim->msdp.sa_hash = NULL; } if (pim->msdp.sa_list) { list_delete(&pim->msdp.sa_list); } if (pim->msdp.work_obuf) stream_free(pim->msdp.work_obuf); pim->msdp.work_obuf = NULL; }
int hash_destroy(hash_t *hash) { hash_clean(hash); free(hash->nodes); free(hash); return 0; }
void pim_vxlan_exit(struct pim_instance *pim) { if (pim->vxlan.sg_hash) { hash_clean(pim->vxlan.sg_hash, NULL); hash_free(pim->vxlan.sg_hash); pim->vxlan.sg_hash = NULL; } }
int hash_release(hash_t* htable) { if (!htable) return -1; hash_clean(htable); FREE(htable->m_table); FREE(htable); return 0; }
void bgp_address_destroy (void) { if (bgp_address_hash == NULL) return; hash_clean(bgp_address_hash, NULL); hash_free(bgp_address_hash); bgp_address_hash = NULL; }
void hash_free ( struct Hash *hash, void (* func)(void *) ) { if(NULL == hash){ return ; } hash_clean ( hash, func ); free(hash->index ); free(hash->index2 ); free(hash); }