int ofp_term_post_global(const char *pool_name) { odp_pool_t pool; int rc = 0; if (ofp_inet_term()) { OFP_ERR("Failed to cleanup inet/inet6 domains.\n"); rc = -1; } /* Cleanup sockets */ CHECK_ERROR(ofp_socket_term_global(), rc); /* Cleanup vxlan */ CHECK_ERROR(ofp_vxlan_term_global(), rc); /* Cleanup interface related objects */ CHECK_ERROR(ofp_portconf_term_global(), rc); /* Cleanup routes */ CHECK_ERROR(ofp_route_term_global(), rc); /* Cleanup ARP*/ CHECK_ERROR(ofp_arp_term_global(), rc); /* Cleanup hooks */ CHECK_ERROR(ofp_hook_term_global(), rc); /* Cleanup stats */ CHECK_ERROR(ofp_stat_term_global(), rc); /* Cleanup packet capture */ CHECK_ERROR(ofp_pcap_term_global(), rc); /* Cleanup reassembly queues*/ CHECK_ERROR(ofp_reassembly_term_global(), rc); /* Cleanup avl trees*/ CHECK_ERROR(ofp_avl_term_global(), rc); /* Cleanup timers - phase 1*/ CHECK_ERROR(ofp_timer_stop_global(), rc); /* Cleanup pending events */ schedule_shutdown(); /* Cleanup timers - phase 2*/ CHECK_ERROR(ofp_timer_term_global(), rc); /* Cleanup packet pool */ pool = odp_pool_lookup(pool_name); if (pool == ODP_POOL_INVALID) { OFP_ERR("Failed to locate pool %s\n", pool_name); rc = -1; } else if (odp_pool_destroy(pool) < 0) { OFP_ERR("Failed to destroy pool %s.\n", pool_name); rc = -1; pool = ODP_POOL_INVALID; } CHECK_ERROR(ofp_global_config_free_shared_memory(), rc); CHECK_ERROR(ofp_unregister_sysctls(), rc); return rc; }
void ccnet_peer_shutdown (CcnetPeer *peer) { schedule_shutdown (peer); }