void termination_handler(int sig) { PRINT_DEBUG("**********Terminating *******"); //shutdown all module threads in backwards order of startup //rtm_shutdown(); udp_shutdown(); tcp_shutdown(); icmp_shutdown(); ipv4_shutdown(); arp_shutdown(); interface_shutdown(); //TODO finish daemon_shutdown(); //TODO finish switch_shutdown(); //TODO finish //have each module free data & que/sem //TODO finish each of these //rtm_release(); udp_release(); tcp_release(); icmp_release(); ipv4_release(); arp_release(); interface_release(); daemon_release(); switch_release(); PRINT_DEBUG("FIN"); exit(-1); }
static void tcp_stream_chunk_free(struct tcp_stream_chunk *chunk) { if (chunk->tcp) { tcp_release(chunk->tcp); chunk->tcp = NULL; } vector_destroy(&chunk->modifs); free(chunk); }