diff options
-rw-r--r-- | docbook/wsug_src/WSUG_chapter_statistics.xml | 7 | ||||
-rw-r--r-- | gtk/help_dlg.c | 3 | ||||
-rw-r--r-- | gtk/help_dlg.h | 1 | ||||
-rw-r--r-- | gtk/wlan_stat_dlg.c | 51 |
4 files changed, 57 insertions, 5 deletions
diff --git a/docbook/wsug_src/WSUG_chapter_statistics.xml b/docbook/wsug_src/WSUG_chapter_statistics.xml index 1ae45ed1d4..ad4ca632a4 100644 --- a/docbook/wsug_src/WSUG_chapter_statistics.xml +++ b/docbook/wsug_src/WSUG_chapter_statistics.xml @@ -460,6 +460,13 @@ </para> </section> + <section id="ChStatWLANTraffic"> + <title>WLAN Traffic Statistics</title> + <para> + Statistics of the captured WLAN traffic. + </para> + </section> + <section id="ChStatSRT"> <title>Service Response Time</title> <para> diff --git a/gtk/help_dlg.c b/gtk/help_dlg.c index 223aaa5c3c..eda0450f8f 100644 --- a/gtk/help_dlg.c +++ b/gtk/help_dlg.c @@ -455,6 +455,9 @@ topic_action(topic_action_e action) case(HELP_STATS_IO_GRAPH_DIALOG): help_topic_html("ChStatIOGraphs.html"); break; + case(HELP_STATS_WLAN_TRAFFIC_DIALOG): + help_topic_html("ChStatWLANTraffic.html"); + break; case(HELP_FILESET_DIALOG): help_topic_html("ChIOFileSetSection.html"); break; diff --git a/gtk/help_dlg.h b/gtk/help_dlg.h index fd9ef88ae7..9659db224a 100644 --- a/gtk/help_dlg.h +++ b/gtk/help_dlg.h @@ -72,6 +72,7 @@ typedef enum { HELP_STATS_ENDPOINTS_DIALOG, HELP_STATS_CONVERSATIONS_DIALOG, HELP_STATS_IO_GRAPH_DIALOG, + HELP_STATS_WLAN_TRAFFIC_DIALOG, HELP_CAPTURE_INTERFACES_DETAILS_DIALOG, HELP_PREFERENCES_DIALOG, HELP_CAPTURE_INFO_DIALOG, diff --git a/gtk/wlan_stat_dlg.c b/gtk/wlan_stat_dlg.c index 8c6241652d..34ada47aa5 100644 --- a/gtk/wlan_stat_dlg.c +++ b/gtk/wlan_stat_dlg.c @@ -48,6 +48,7 @@ #include <epan/dissectors/packet-ieee80211.h> #include "image/clist_ascend.xpm" #include "image/clist_descend.xpm" +#include "help_dlg.h" #define NUM_COLS 12 static const gchar *titles[] = {"BSSID", "Channel", "SSID", "Beacons", "Data Packets", "Probe Req", "Probe Resp", "Auth", "Deauth", "Other", "Percent", "Protection" }; @@ -72,6 +73,7 @@ static GtkWidget *wlanstat_dlg_w = NULL; typedef struct _wlan_stat_t { GtkWidget *table; guint32 number_of_packets; + gboolean resolve_names; gboolean show_only_existing; wlan_ep_t* ep_list; } wlanstat_t; @@ -313,11 +315,15 @@ wlanstat_draw(void *phs) tmp->type[0x05] - tmp->type[0x0B] - tmp->type[0x0C]; f = (float)(((float)tmp->number_of_packets * 100.0) / hs->number_of_packets); - g_snprintf (str[0], sizeof(char[256]),"%s", get_addr_name(&tmp->bssid)); + if (hs->resolve_names) { + g_snprintf (str[0], sizeof(char[256]),"%s", get_addr_name(&tmp->bssid)); + } else { + g_snprintf (str[0], sizeof(char[256]),"%s", address_to_str(&tmp->bssid)); + } if (tmp->stats.channel) { - g_snprintf (str[1], sizeof(char[256]),"%u", tmp->stats.channel); + g_snprintf (str[1], sizeof(char[256]),"%u", tmp->stats.channel); } else { - str[1][0] = '\0'; + str[1][0] = '\0'; } g_snprintf (str[2], sizeof(char[256]),"%s", tmp->stats.ssid); g_snprintf (str[3], sizeof(char[256]),"%u", tmp->type[0x08]); @@ -338,6 +344,16 @@ wlanstat_draw(void *phs) } static void +wlan_resolve_toggle_dest(GtkWidget *widget, gpointer data) +{ + wlanstat_t *hs = (wlanstat_t *)data; + + hs->resolve_names = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); + + wlanstat_draw(hs); +} + +static void wlan_existing_toggle_dest(GtkWidget *widget, gpointer data) { wlanstat_t *hs = (wlanstat_t *)data; @@ -412,8 +428,10 @@ wlanstat_dlg_create (void) GtkWidget *bbox; GtkWidget *vbox; GtkWidget *hbox; + GtkWidget *resolv_cb; GtkWidget *existing_cb; GtkWidget *close_bt; + GtkWidget *help_bt; GtkTooltips *tooltips = gtk_tooltips_new(); #if GTK_MAJOR_VERSION >= 2 GtkWidget *copy_bt; @@ -426,6 +444,7 @@ wlanstat_dlg_create (void) hs=g_malloc (sizeof(wlanstat_t)); hs->ep_list = NULL; hs->number_of_packets = 0; + hs->resolve_names = TRUE; hs->show_only_existing = FALSE; g_snprintf (title, 255, "Wireshark: WLAN Traffic Statistics: %s", @@ -498,6 +517,14 @@ wlanstat_dlg_create (void) hbox = gtk_hbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("Name resolution", NULL); + gtk_container_add(GTK_CONTAINER(hbox), resolv_cb); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), TRUE); + gtk_tooltips_set_tip(tooltips, resolv_cb, "Show results of name resolutions rather than the \"raw\" values. " + "Please note: The corresponding name resolution must be enabled.", NULL); + + SIGNAL_CONNECT(resolv_cb, "toggled", wlan_resolve_toggle_dest, hs); + existing_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("Only show existing networks", NULL); gtk_container_add(GTK_CONTAINER(hbox), existing_cb); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(existing_cb), FALSE); @@ -507,10 +534,19 @@ wlanstat_dlg_create (void) /* Button row. */ #if GTK_MAJOR_VERSION >= 2 - bbox = dlg_button_row_new (GTK_STOCK_CLOSE, GTK_STOCK_COPY, NULL); + if (topic_available (HELP_STATS_WLAN_TRAFFIC_DIALOG)) { + bbox = dlg_button_row_new (GTK_STOCK_CLOSE, GTK_STOCK_COPY, GTK_STOCK_HELP, NULL); + } else { + bbox = dlg_button_row_new (GTK_STOCK_CLOSE, GTK_STOCK_COPY, NULL); + } #else - bbox = dlg_button_row_new (GTK_STOCK_CLOSE, NULL); + if (topic_available (HELP_STATS_WLAN_TRAFFIC_DIALOG)) { + bbox = dlg_button_row_new (GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL); + } else { + bbox = dlg_button_row_new (GTK_STOCK_CLOSE, NULL); + } #endif + gtk_box_pack_end (GTK_BOX(vbox), bbox, FALSE, FALSE, 0); close_bt = OBJECT_GET_DATA (bbox, GTK_STOCK_CLOSE); @@ -523,6 +559,11 @@ wlanstat_dlg_create (void) SIGNAL_CONNECT(copy_bt, "clicked", wlan_copy_as_csv, hs->table); #endif + if (topic_available (HELP_STATS_WLAN_TRAFFIC_DIALOG)) { + help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP); + SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_WLAN_TRAFFIC_DIALOG); + } + SIGNAL_CONNECT (wlanstat_dlg_w, "delete_event", window_delete_event_cb, NULL); SIGNAL_CONNECT (wlanstat_dlg_w, "destroy", win_destroy_cb, hs); |