void tcp_copy_release_resources() { int i; output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); address_release(); tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }
void tcp_copy_release_resources() { int i; output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); #if (!TCPCOPY_DR) address_release(); #endif tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif #if (TCPCOPY_PCAP) for (i = 0; i < clt_settings.devices.device_num; i++) { if (clt_settings.devices.device[i].pcap != NULL) { pcap_close(clt_settings.devices.device[i].pcap); clt_settings.devices.device[i].pcap = NULL; } } #endif #if (TCPCOPY_OFFLINE) pcap_close(clt_settings.pcap); #endif if (tc_raw_socket_out > 0) { close(tc_raw_socket_out); tc_raw_socket_out = -1; } if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }
static void sender_fini(struct sender *s) { mutex_lock(&s->mutex); if (s->output) stream_destroy(s->output); error_fini(&s->err); tasklet_fini(&s->tasklet); mutex_unlock_fini(&s->mutex); address_release(s->address); }
int address_drop(Address *address, Link *link, sd_rtnl_message_handler_t callback) { _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL; int r; assert(address); assert(address->family == AF_INET || address->family == AF_INET6); assert(link); assert(link->ifindex > 0); assert(link->manager); assert(link->manager->rtnl); address_release(address, link); r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_DELADDR, link->ifindex, address->family); if (r < 0) return log_error_errno(r, "Could not allocate RTM_DELADDR message: %m"); r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen); if (r < 0) return log_error_errno(r, "Could not set prefixlen: %m"); if (address->family == AF_INET) r = sd_rtnl_message_append_in_addr(req, IFA_LOCAL, &address->in_addr.in); else if (address->family == AF_INET6) r = sd_rtnl_message_append_in6_addr(req, IFA_LOCAL, &address->in_addr.in6); if (r < 0) return log_error_errno(r, "Could not append IFA_LOCAL attribute: %m"); r = sd_rtnl_call_async(link->manager->rtnl, req, callback, link, 0, NULL); if (r < 0) return log_error_errno(r, "Could not send rtnetlink message: %m"); link_ref(link); return 0; }
void tcp_copy_release_resources() { int i; tc_log_info(LOG_WARN, 0, "sig %d received", tc_over); output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); #if (TCPCOPY_DIGEST) tc_destroy_sha1(); tc_destroy_digests(); #endif #if (!TCPCOPY_DR) address_release(); #endif tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif #if (TCPCOPY_PCAP) for (i = 0; i < clt_settings.devices.device_num; i++) { if (clt_settings.devices.device[i].pcap != NULL) { pcap_close(clt_settings.devices.device[i].pcap); clt_settings.devices.device[i].pcap = NULL; } } #endif #if (TCPCOPY_OFFLINE) if (clt_settings.pcap != NULL) { pcap_close(clt_settings.pcap); clt_settings.pcap = NULL; } #endif if (tc_raw_socket_out > 0) { tc_socket_close(tc_raw_socket_out); tc_raw_socket_out = TC_INVALID_SOCKET; } #if (TCPCOPY_PCAP_SEND) tc_pcap_over(); #endif if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }