int wlantest_relog(struct wlantest *wt) { int ret = 0; wpa_printf(MSG_INFO, "Re-open log/capture files"); if (wpa_debug_reopen_file()) ret = -1; if (wt->write_file) { write_pcap_deinit(wt); if (write_pcap_init(wt, wt->write_file) < 0) ret = -1; } if (wt->pcapng_file) { write_pcapng_deinit(wt); if (write_pcapng_init(wt, wt->pcapng_file) < 0) ret = -1; } return ret; }
int main(int argc, char *argv[]) { int c; const char *read_file = NULL; const char *read_wired_file = NULL; const char *write_file = NULL; const char *ifname = NULL; const char *ifname_wired = NULL; struct wlantest wt; int ctrl_iface = 0; wpa_debug_level = MSG_INFO; wpa_debug_show_keys = 1; if (os_program_init()) return -1; wlantest_init(&wt); for (;;) { c = getopt(argc, argv, "cdf:hi:I:p:P:qr:R:w:W:"); if (c < 0) break; switch (c) { case 'c': ctrl_iface = 1; break; case 'd': if (wpa_debug_level > 0) wpa_debug_level--; break; case 'f': if (add_pmk_file(&wt, optarg) < 0) return -1; break; case 'h': usage(); return 0; case 'i': ifname = optarg; break; case 'I': ifname_wired = optarg; break; case 'p': add_passphrase(&wt, optarg); break; case 'P': add_secret(&wt, optarg); break; case 'q': wpa_debug_level++; break; case 'r': read_file = optarg; break; case 'R': read_wired_file = optarg; break; case 'w': write_file = optarg; break; case 'W': if (add_wep(&wt, optarg) < 0) return -1; break; default: usage(); return -1; } } if (ifname == NULL && ifname_wired == NULL && read_file == NULL && read_wired_file == NULL) { usage(); return 0; } if (eloop_init()) return -1; if (write_file && write_pcap_init(&wt, write_file) < 0) return -1; if (read_wired_file && read_wired_cap_file(&wt, read_wired_file) < 0) return -1; if (read_file && read_cap_file(&wt, read_file) < 0) return -1; if (ifname && monitor_init(&wt, ifname) < 0) return -1; if (ifname_wired && monitor_init_wired(&wt, ifname_wired) < 0) return -1; if (ctrl_iface && ctrl_init(&wt) < 0) return -1; eloop_register_signal_terminate(wlantest_terminate, &wt); eloop_run(); wpa_printf(MSG_INFO, "Processed: rx_mgmt=%u rx_ctrl=%u rx_data=%u " "fcs_error=%u", wt.rx_mgmt, wt.rx_ctrl, wt.rx_data, wt.fcs_error); wlantest_deinit(&wt); eloop_destroy(); os_program_deinit(); return 0; }