aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/summary_dlg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/summary_dlg.c')
-rw-r--r--gtk/summary_dlg.c112
1 files changed, 82 insertions, 30 deletions
diff --git a/gtk/summary_dlg.c b/gtk/summary_dlg.c
index 192ef3e58a..c57936c49a 100644
--- a/gtk/summary_dlg.c
+++ b/gtk/summary_dlg.c
@@ -41,6 +41,7 @@
#include "../globals.h"
#include "../file.h"
#include "../summary.h"
+#include "../capture-pcap-util.h"
#ifdef HAVE_LIBPCAP
#include "../capture.h"
#include "gtk/main.h"
@@ -52,7 +53,6 @@
#include "gtk/gui_utils.h"
#include "gtk/help_dlg.h"
-
#define SUM_STR_MAX 1024
#define FILTER_SNIP_LEN 50
@@ -106,13 +106,19 @@ summary_open_cb(GtkWidget *w _U_, gpointer d _U_)
summary_tally summary;
GtkWidget *sum_open_w,
*main_vb, *bbox, *close_bt, *help_bt;
- GtkWidget *table;
- GtkWidget *list;
+ GtkWidget *table, *scrolled_window;
+ GtkWidget *list, *treeview;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
static const char *titles[] = { "Traffic", "Captured", "Displayed", "Marked" };
gchar string_buff[SUM_STR_MAX];
gchar string_buff2[SUM_STR_MAX];
gchar string_buff3[SUM_STR_MAX];
+ gchar string_buff4[SUM_STR_MAX];
+ gchar string_buff5[SUM_STR_MAX];
double seconds;
double disp_seconds;
@@ -126,6 +132,8 @@ summary_open_cb(GtkWidget *w _U_, gpointer d _U_)
time_t ti_time;
struct tm *ti_tm;
unsigned int elapsed_time;
+ iface_options iface;
+ unsigned int i;
/* initial computations */
summary_fill_in(&cfile, &summary);
@@ -221,37 +229,81 @@ summary_open_cb(GtkWidget *w _U_, gpointer d _U_)
/* Capture */
add_string_to_table(table, &row, "", "");
- add_string_to_table_sensitive(table, &row, "Capture", "", (summary.iface != NULL));
-
- /* interface */
- if (summary.iface) {
- g_snprintf(string_buff, SUM_STR_MAX, "%s", summary.iface_descr);
- } else {
- g_snprintf(string_buff, SUM_STR_MAX, "unknown");
- }
- add_string_to_table_sensitive(table, &row, "Interface:", string_buff, (summary.iface) != NULL);
-
- /* Dropped count */
- if (summary.drops_known) {
- g_snprintf(string_buff, SUM_STR_MAX, "%" G_GINT64_MODIFIER "u", summary.drops);
- } else {
- g_snprintf(string_buff, SUM_STR_MAX, "unknown");
- }
- add_string_to_table_sensitive(table, &row, "Dropped packets:", string_buff, (summary.iface != NULL));
-
-#ifdef HAVE_LIBPCAP
- /* Capture filter */
- if (summary.cfilter && summary.cfilter[0] != '\0') {
- g_snprintf(string_buff, SUM_STR_MAX, "%s", summary.cfilter);
- } else {
- if(summary.iface) {
- g_snprintf(string_buff, SUM_STR_MAX, "none");
+ add_string_to_table_sensitive(table, &row, "Capture", "", (global_capture_opts.ifaces->len>0));
+ scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(scrolled_window, -1, 120);
+
+ treeview = gtk_tree_view_new();
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Interface", renderer, "text", 0, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Dropped Packets", renderer, "text", 1, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Capture Filter", renderer, "text", 2, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Link type", renderer, "text", 3, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Packet size limit", renderer, "text", 4, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+
+ store = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+ for (i = 0; i < summary.ifaces->len; i++) {
+ iface = g_array_index(summary.ifaces, iface_options, i);
+ /* interface */
+ if (iface.descr) {
+ g_snprintf(string_buff, SUM_STR_MAX, "%s", iface.descr);
+ } else if (iface.name) {
+ g_snprintf(string_buff, SUM_STR_MAX, "%s", iface.name);
} else {
g_snprintf(string_buff, SUM_STR_MAX, "unknown");
}
- }
- add_string_to_table_sensitive(table, &row, "Capture filter:", string_buff, (summary.iface != NULL));
+ /* Dropped count */
+ if (iface.drops_known) {
+ g_snprintf(string_buff2, SUM_STR_MAX, "%" G_GINT64_MODIFIER "u", iface.drops);
+ } else {
+ g_snprintf(string_buff2, SUM_STR_MAX, "unknown");
+ }
+#ifdef HAVE_LIBPCAP
+ /* Capture filter */
+ if (iface.cfilter && iface.cfilter[0] != '\0') {
+ g_snprintf(string_buff3, SUM_STR_MAX, "%s", iface.cfilter);
+ } else {
+ if(iface.name) {
+ g_snprintf(string_buff3, SUM_STR_MAX, "none");
+ } else {
+ g_snprintf(string_buff3, SUM_STR_MAX, "unknown");
+ }
+ }
#endif
+ g_snprintf(string_buff4, SUM_STR_MAX, "%s", pcap_datalink_val_to_description(iface.linktype));
+ if (strcmp(string_buff4, "(null)") == 0) {
+ strcpy(string_buff4, "unknown");
+ }
+ if (iface.has_snap) {
+ g_snprintf(string_buff5, SUM_STR_MAX, "%u bytes", iface.snap);
+ } else {
+ g_snprintf(string_buff5, SUM_STR_MAX, "unknown");
+ }
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, 0, string_buff, 1, string_buff2, 2, string_buff3, 3, string_buff4, 4, string_buff5,-1);
+ }
+ gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(store));
+ g_object_unref (store);
+ gtk_container_add(GTK_CONTAINER(scrolled_window), treeview);
+ gtk_container_add(GTK_CONTAINER(main_vb),scrolled_window);
+ gtk_widget_show_all (scrolled_window);
+ table = gtk_table_new(1, 2, FALSE);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 3);
+ gtk_container_add(GTK_CONTAINER(main_vb), table);
+ row = 0;
/* Data */