diff options
Diffstat (limited to 'flowtop.c')
-rw-r--r-- | flowtop.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -80,6 +80,7 @@ struct flow_list { static volatile sig_atomic_t sigint = 0; static int what = INCLUDE_IPV4 | INCLUDE_IPV6 | INCLUDE_TCP, show_src = 0; static struct flow_list flow_list; +static struct condlock collector_ready; static const char *short_options = "vhTUsDIS46u"; static const struct option long_options[] = { @@ -978,6 +979,8 @@ static void presenter(void) int skip_lines = 0; WINDOW *screen; + condlock_wait(&collector_ready); + lookup_init_ports(PORTS_TCP); lookup_init_ports(PORTS_UDP); screen = screen_init(false); @@ -1104,6 +1107,8 @@ static void *collector(void *null __maybe_unused) nfct_filter_destroy(filter); flow_list_init(&flow_list); + condlock_signal(&collector_ready); + rcu_register_thread(); while (!sigint && ret >= 0) @@ -1179,12 +1184,16 @@ int main(int argc, char **argv) init_geoip(1); + condlock_init(&collector_ready); + ret = pthread_create(&tid, NULL, collector, NULL); if (ret < 0) panic("Cannot create phthread!\n"); presenter(); + condlock_destroy(&collector_ready); + destroy_geoip(); return 0; |