static void addres_resolution_to_texbuff(GtkTextBuffer *buffer) { gchar string_buff[ADDRESS_STR_MAX]; GHashTable *manuf_hashtable; GHashTable *wka_hashtable; GHashTable *eth_hashtable; GHashTable *serv_port_hashtable; GHashTable *ipv4_hash_table; GHashTable *ipv6_hash_table; g_snprintf(string_buff, ADDRESS_STR_MAX, "# Hosts information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_snprintf(string_buff, ADDRESS_STR_MAX, "# Host data gathered from %s\n\n", cfile.filename); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); /* Dump the v4 addresses first, then v6 */ ipv4_hash_table = get_ipv4_hash_table(); if(ipv4_hash_table){ g_hash_table_foreach( ipv4_hash_table, ipv4_hash_table_resolved_to_texbuff, buffer); } ipv6_hash_table = get_ipv6_hash_table(); if(ipv6_hash_table){ g_hash_table_foreach( ipv6_hash_table, ipv6_hash_table_resolved_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# Address resolution IPv4 Hash table \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); if(ipv4_hash_table){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(ipv4_hash_table)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( ipv4_hash_table, ipv4_hash_table_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# Address resolution IPv6 Hash table \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); if(ipv6_hash_table){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(ipv6_hash_table)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( ipv6_hash_table, ipv6_hash_table_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# Port names information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); serv_port_hashtable = get_serv_port_hashtable(); if(serv_port_hashtable){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(serv_port_hashtable)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( serv_port_hashtable, serv_port_hash_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# Eth names information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); eth_hashtable = get_eth_hashtable(); if(eth_hashtable){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(eth_hashtable)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( eth_hashtable, eth_hash_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# Manuf information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); manuf_hashtable = get_manuf_hashtable(); if(manuf_hashtable){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(manuf_hashtable)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( manuf_hashtable, manuf_hash_to_texbuff, buffer); } g_snprintf(string_buff, ADDRESS_STR_MAX, "\n\n# wka information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); wka_hashtable = get_wka_hashtable(); if(wka_hashtable){ g_snprintf(string_buff, ADDRESS_STR_MAX, "# With %i entries\n#\n", g_hash_table_size(wka_hashtable)); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); g_hash_table_foreach( wka_hashtable, wka_hash_to_texbuff, buffer); } }
} } static void hosts_draw(void *dummy _U_) { wmem_map_t *ipv4_hash_table; wmem_map_t *ipv6_hash_table; printf("# TShark hosts output\n"); printf("#\n"); printf("# Host data gathered from %s\n", cfile.filename); printf("\n"); ipv4_hash_table = get_ipv4_hash_table(); if (ipv4_hash_table) { wmem_map_foreach( ipv4_hash_table, ipv4_hash_table_print_resolved, NULL); } ipv6_hash_table = get_ipv6_hash_table(); if (ipv6_hash_table) { wmem_map_foreach( ipv6_hash_table, ipv6_hash_table_print_resolved, NULL); } } static void hosts_init(const char *opt_arg, void *userdata _U_) {