summaryrefslogtreecommitdiff
path: root/ui/gtk/addr_resolution_dlg.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2013-08-02 15:05:00 +0000
committerAnders Broman <anders.broman@ericsson.com>2013-08-02 15:05:00 +0000
commitbcb5ff75327e67386a87d34bac78d5ebebc378ef (patch)
tree505f100163ba2b7d3dd76213f6a682faae06713b /ui/gtk/addr_resolution_dlg.c
parent7891191c57e13cd338297a5c20edd759cd116c4e (diff)
downloadwireshark-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.c88
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