aboutsummaryrefslogtreecommitdiffstats
path: root/gtk2/capture_prefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2/capture_prefs.c')
-rw-r--r--gtk2/capture_prefs.c167
1 files changed, 167 insertions, 0 deletions
diff --git a/gtk2/capture_prefs.c b/gtk2/capture_prefs.c
new file mode 100644
index 0000000000..fca8cd0527
--- /dev/null
+++ b/gtk2/capture_prefs.c
@@ -0,0 +1,167 @@
+/* capture_prefs.c
+ * Dialog box for capture preferences
+ *
+ * $Id: capture_prefs.c,v 1.1 2002/08/31 09:55:21 oabad Exp $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_LIBPCAP
+
+#include <string.h>
+#include <errno.h>
+#include <gtk/gtk.h>
+
+#include <pcap.h>
+
+#include "globals.h"
+#include "capture_prefs.h"
+#include "gtkglobals.h"
+#include "prefs.h"
+#include "prefs_dlg.h"
+#include "ui_util.h"
+#include "pcap-util.h"
+#include "main.h"
+
+#define DEVICE_KEY "device"
+#define PROM_MODE_KEY "prom_mode"
+#define CAPTURE_REAL_TIME_KEY "capture_real_time"
+#define AUTO_SCROLL_KEY "auto_scroll"
+
+#define CAPTURE_TABLE_ROWS 4
+GtkWidget*
+capture_prefs_show(void)
+{
+ GtkWidget *main_tb, *main_vb;
+ GtkWidget *if_cb, *if_lb, *promisc_cb, *sync_cb, *auto_scroll_cb;
+ GList *if_list;
+ int err;
+ char err_str[PCAP_ERRBUF_SIZE];
+
+ /* Main vertical box */
+ main_vb = gtk_vbox_new(FALSE, 7);
+ gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
+
+ /* Main table */
+ main_tb = gtk_table_new(CAPTURE_TABLE_ROWS, 2, FALSE);
+ gtk_box_pack_start(GTK_BOX(main_vb), main_tb, FALSE, FALSE, 0);
+ gtk_table_set_row_spacings(GTK_TABLE(main_tb), 10);
+ gtk_table_set_col_spacings(GTK_TABLE(main_tb), 15);
+ gtk_widget_show(main_tb);
+
+ /* Default device */
+ if_lb = gtk_label_new("Interface:");
+ gtk_table_attach_defaults(GTK_TABLE(main_tb), if_lb, 0, 1, 0, 1);
+ gtk_misc_set_alignment(GTK_MISC(if_lb), 1.0, 0.5);
+ gtk_widget_show(if_lb);
+
+ if_cb = gtk_combo_new();
+ /*
+ * XXX - what if we can't get the list?
+ */
+ if_list = get_interface_list(&err, err_str);
+ if (if_list != NULL)
+ gtk_combo_set_popdown_strings(GTK_COMBO(if_cb), if_list);
+ if (prefs.capture_device)
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry),
+ prefs.capture_device);
+ gtk_table_attach_defaults(GTK_TABLE(main_tb), if_cb, 1, 2, 0, 1);
+ gtk_widget_show(if_cb);
+ gtk_object_set_data(GTK_OBJECT(main_vb), DEVICE_KEY, if_cb);
+
+ free_interface_list(if_list);
+
+ /* Promiscuous mode */
+ promisc_cb = create_preference_check_button(main_tb, 1,
+ "Capture packets in promiscuous mode:", NULL,
+ prefs.capture_prom_mode);
+ gtk_object_set_data(GTK_OBJECT(main_vb), PROM_MODE_KEY, promisc_cb);
+
+ /* Real-time capture */
+ sync_cb = create_preference_check_button(main_tb, 2,
+ "Update list of packets in real time:", NULL,
+ prefs.capture_real_time);
+ gtk_object_set_data(GTK_OBJECT(main_vb), CAPTURE_REAL_TIME_KEY,
+ sync_cb);
+
+ /* Auto-scroll real-time capture */
+ auto_scroll_cb = create_preference_check_button(main_tb, 3,
+ "Automatic scrolling in live capture:", NULL,
+ prefs.capture_auto_scroll);
+ gtk_object_set_data(GTK_OBJECT(main_vb), AUTO_SCROLL_KEY,
+ auto_scroll_cb);
+
+ /* Show 'em what we got */
+ gtk_widget_show_all(main_vb);
+
+ return(main_vb);
+}
+
+void
+capture_prefs_fetch(GtkWidget *w)
+{
+ GtkWidget *if_cb, *promisc_cb, *sync_cb, *auto_scroll_cb;
+ gchar *if_text;
+
+ if_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(w), DEVICE_KEY);
+ promisc_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(w),
+ PROM_MODE_KEY);
+ sync_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(w),
+ CAPTURE_REAL_TIME_KEY);
+ auto_scroll_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(w),
+ AUTO_SCROLL_KEY);
+
+ if (prefs.capture_device != NULL) {
+ g_free(prefs.capture_device);
+ prefs.capture_device = NULL;
+ }
+ if_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry)));
+ /* Strip out white space */
+ g_strstrip(if_text);
+ /* If there was nothing but white space, treat that as an
+ indication that the user doesn't want to wire in a default
+ device, and just wants the first device in the list chosen. */
+ if (*if_text == '\0') {
+ g_free(if_text);
+ if_text = NULL;
+ }
+ prefs.capture_device = if_text;
+
+ prefs.capture_prom_mode = GTK_TOGGLE_BUTTON (promisc_cb)->active;
+
+ prefs.capture_real_time = GTK_TOGGLE_BUTTON (sync_cb)->active;
+
+ prefs.capture_auto_scroll = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active;
+}
+
+void
+capture_prefs_apply(GtkWidget *w _U_)
+{
+}
+
+void
+capture_prefs_destroy(GtkWidget *w _U_)
+{
+}
+
+#endif /* HAVE_LIBPCAP */