static int unload_module(void) { unsigned int i = 0; LNOTICE("unloaded module %s", module_name); for (i = 0; i < profile_size; i++) { if(sniffer_proto[i]) { pcap_breakloop(sniffer_proto[i]); pthread_join(call_thread[i],NULL); } if (reasm[i] != NULL) { reasm_ip_free(reasm[i]); reasm[i] = NULL; } if (tcpreasm[i] != NULL) { tcpreasm_ip_free(tcpreasm[i]); tcpreasm[i] = NULL; } free_profile(i); } /* Close socket */ //pcap_close(sniffer_proto); return 0; }
nmsg_res nmsg_pcap_input_close(nmsg_pcap_t *pcap) { pcap_freecode(&(*pcap)->userbpf); pcap_close((*pcap)->handle); if ((*pcap)->user != NULL) pcap_close((*pcap)->user); reasm_ip_free((*pcap)->reasm); free((*pcap)->new_pkt); free((*pcap)->userbpft); free(*pcap); *pcap = NULL; return (nmsg_res_success); }