diff options
author | Anders Broman <anders.broman@ericsson.com> | 2013-08-02 15:05:00 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2013-08-02 15:05:00 +0000 |
commit | bcb5ff75327e67386a87d34bac78d5ebebc378ef (patch) | |
tree | 505f100163ba2b7d3dd76213f6a682faae06713b /ui/gtk/addr_resolution_dlg.c | |
parent | 7891191c57e13cd338297a5c20edd759cd116c4e (diff) | |
download | wireshark-bcb5ff75327e67386a87d34bac78d5ebebc378ef.tar.gz |
- Use a hashtable for eth lookup.
Currently broken get_ether_addr().
- Show hastable content in address dlg.(temp solution).
svn path=/trunk/; revision=51119
Diffstat (limited to 'ui/gtk/addr_resolution_dlg.c')
-rw-r--r-- | ui/gtk/addr_resolution_dlg.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/ui/gtk/addr_resolution_dlg.c b/ui/gtk/addr_resolution_dlg.c index 05bea5e0e4..507dc5e223 100644 --- a/ui/gtk/addr_resolution_dlg.c +++ b/ui/gtk/addr_resolution_dlg.c @@ -163,6 +163,60 @@ comment_summary_copy_to_clipboard_cb(GtkWidget *w _U_, GtkWidget *view) #define ADDRESS_STR_MAX 1024 static void +eth_hash_to_texbuff(gpointer key, gpointer value, gpointer user_data) +{ + gchar string_buff[ADDRESS_STR_MAX]; + GtkTextBuffer *buffer = (GtkTextBuffer*)user_data; + gint64 eth_as_gint64 = *(gint64*)key; + hashether_t* tp = (hashether_t*)value; + + g_snprintf(string_buff, ADDRESS_STR_MAX, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X Status: %u %s %s\n", + eth_as_gint64>>40&0xff, + eth_as_gint64>>32&0xff, + (eth_as_gint64>>24)&0xff, + (eth_as_gint64>>16)&0xff, + (eth_as_gint64>>8)&0xff, + eth_as_gint64&0xff, + tp->status, + tp->hexaddr, + tp->resolved_name); + gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); + +} +static void +manuf_hash_to_texbuff(gpointer key, gpointer value, gpointer user_data) +{ + gchar string_buff[ADDRESS_STR_MAX]; + GtkTextBuffer *buffer = (GtkTextBuffer*)user_data; + gchar *name = (gchar *)value; + int eth_as_gint = *(int*)key; + + g_snprintf(string_buff, ADDRESS_STR_MAX, "%.2X:%.2X:%.2X %s\n",eth_as_gint>>16, (eth_as_gint>>8)&0xff, eth_as_gint&0xff,name); + gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); + +} + +static void +wka_hash_to_texbuff(gpointer key, gpointer value, gpointer user_data) +{ + gchar string_buff[ADDRESS_STR_MAX]; + GtkTextBuffer *buffer = (GtkTextBuffer*)user_data; + gchar *name = (gchar *)value; + gint64 eth_as_gint64 = *(gint64*)key; + + g_snprintf(string_buff, ADDRESS_STR_MAX, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X %s\n", + eth_as_gint64>>40&0xff, + eth_as_gint64>>32&0xff, + (eth_as_gint64>>24)&0xff, + (eth_as_gint64>>16)&0xff, + (eth_as_gint64>>8)&0xff, + eth_as_gint64&0xff, + name); + gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); + +} + +static void addres_resolution_to_texbuff(GtkTextBuffer *buffer) { struct addrinfo *ai; @@ -171,6 +225,9 @@ addres_resolution_to_texbuff(GtkTextBuffer *buffer) char addr_str[ADDRSTRLEN]; int i, tab_count; gchar string_buff[ADDRESS_STR_MAX]; + GHashTable *manuf_hashtable; + GHashTable *wka_hashtable; + GHashTable *eth_hashtable; g_snprintf(string_buff, ADDRESS_STR_MAX, "# Hosts information in Wireshark \n#\n"); gtk_text_buffer_insert_at_cursor (buffer, string_buff, -1); @@ -217,6 +274,37 @@ addres_resolution_to_texbuff(GtkTextBuffer *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); + } + + } void |