aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--capture.c10
-rw-r--r--capture.h4
-rw-r--r--gtk/capture_dlg.c19
-rw-r--r--gtk/display_opts.c11
-rw-r--r--gtk/main.c15
-rw-r--r--gtk/menu.c4
-rw-r--r--prefs.c51
-rw-r--r--prefs.h7
8 files changed, 87 insertions, 34 deletions
diff --git a/capture.c b/capture.c
index c0a2332261..73dc289882 100644
--- a/capture.c
+++ b/capture.c
@@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
- * $Id: capture.c,v 1.147 2001/04/11 05:24:08 guy Exp $
+ * $Id: capture.c,v 1.148 2001/04/13 14:59:28 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -160,8 +160,6 @@
#include "packet-ieee80211.h"
#include "packet-chdlc.h"
-int promisc_mode = TRUE; /* capture in promiscuous mode */
-int sync_mode; /* fork a child to do the capture, and sync between them */
static int sync_pipe[2]; /* used to sync father */
enum PIPES { READ, WRITE }; /* Constants 0 and 1 for READ and WRITE */
int quit_after_cap; /* Makes a "capture only mode". Implies -k */
@@ -305,7 +303,7 @@ do_capture(char *capfile_name)
g_assert(cfile.save_file == NULL);
cfile.save_file = capfile_name;
- if (sync_mode) { /* do the capture in a child process */
+ if (prefs.capture_auto_scroll) { /* do the capture in a child process */
char ssnap[24];
char scount[24]; /* need a constant for len of numbers */
char save_file_fd[24];
@@ -346,7 +344,7 @@ do_capture(char *capfile_name)
sprintf(ssnap,"%d",cfile.snap);
argv = add_arg(argv, &argc, ssnap);
- if (!promisc_mode)
+ if (!prefs.capture_prom_mode)
argv = add_arg(argv, &argc, "-p");
#ifdef _WIN32
@@ -1283,7 +1281,7 @@ capture(gboolean *stats_known, struct pcap_stat *stats)
*stats_known = FALSE;
/* Open the network interface to capture from it. */
- pch = pcap_open_live(cfile.iface, cfile.snap, promisc_mode,
+ pch = pcap_open_live(cfile.iface, cfile.snap, prefs.capture_prom_mode,
CAP_READ_TIMEOUT, err_str);
if (pch == NULL) {
diff --git a/capture.h b/capture.h
index ec173e75bd..b755dc285a 100644
--- a/capture.h
+++ b/capture.h
@@ -1,7 +1,7 @@
/* capture.h
* Definitions for packet capture windows
*
- * $Id: capture.h,v 1.25 2001/02/11 09:28:15 guy Exp $
+ * $Id: capture.h,v 1.26 2001/04/13 14:59:28 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -31,8 +31,6 @@
/* Name we give to the child process when doing a "-S" capture. */
#define CHILD_NAME "ethereal-capture"
-extern int promisc_mode; /* capture in promiscuous mode */
-extern int sync_mode; /* fork a child to do the capture, and sync between them */
extern int sync_pipe[2]; /* used to sync father */
extern int quit_after_cap; /* Makes a "capture only mode". Implies -k */
extern gboolean capture_child; /* if this is the child for "-S" */
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c
index 126f3c8f72..0cdc223de3 100644
--- a/gtk/capture_dlg.c
+++ b/gtk/capture_dlg.c
@@ -1,7 +1,7 @@
/* capture_dlg.c
* Routines for packet capture windows
*
- * $Id: capture_dlg.c,v 1.39 2001/04/05 05:58:05 gram Exp $
+ * $Id: capture_dlg.c,v 1.40 2001/04/13 14:59:30 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -57,6 +57,7 @@
#include "simple_dialog.h"
#include "dlg_utils.h"
#include "util.h"
+#include "prefs.h"
#ifdef _WIN32
#include "capture-wpcap.h"
@@ -259,25 +260,25 @@ capture_prep_cb(GtkWidget *w, gpointer d)
promisc_cb = dlg_check_button_new_with_label_with_mnemonic(
"Capture packets in _promiscuous mode", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(promisc_cb), promisc_mode);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(promisc_cb), prefs.capture_prom_mode);
gtk_container_add(GTK_CONTAINER(main_vb), promisc_cb);
gtk_widget_show(promisc_cb);
sync_cb = dlg_check_button_new_with_label_with_mnemonic(
"_Update list of packets in real time", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sync_cb), sync_mode);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sync_cb), prefs.capture_real_time);
gtk_container_add(GTK_CONTAINER(main_vb), sync_cb);
gtk_widget_show(sync_cb);
auto_scroll_cb = dlg_check_button_new_with_label_with_mnemonic(
"_Automatic scrolling in live capture", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(auto_scroll_cb), auto_scroll_live);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(auto_scroll_cb), prefs.capture_auto_scroll);
gtk_container_add(GTK_CONTAINER(main_vb), auto_scroll_cb);
gtk_widget_show(auto_scroll_cb);
resolv_cb = dlg_check_button_new_with_label_with_mnemonic(
"Enable _name resolution", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), g_resolving_actif);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.capture_name_resolve);
gtk_container_add(GTK_CONTAINER(main_vb), resolv_cb);
gtk_widget_show(resolv_cb);
@@ -495,13 +496,13 @@ capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) {
else if (cfile.snap < MIN_PACKET_SIZE)
cfile.snap = MIN_PACKET_SIZE;
- promisc_mode = GTK_TOGGLE_BUTTON (promisc_cb)->active;
+ prefs.capture_prom_mode = GTK_TOGGLE_BUTTON (promisc_cb)->active;
- sync_mode = GTK_TOGGLE_BUTTON (sync_cb)->active;
+ prefs.capture_real_time = GTK_TOGGLE_BUTTON (sync_cb)->active;
- auto_scroll_live = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active;
+ prefs.capture_auto_scroll = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active;
- g_resolving_actif = GTK_TOGGLE_BUTTON (resolv_cb)->active;
+ prefs.capture_name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active;
gtk_widget_destroy(GTK_WIDGET(parent_w));
diff --git a/gtk/display_opts.c b/gtk/display_opts.c
index e75462d276..8a293543fd 100644
--- a/gtk/display_opts.c
+++ b/gtk/display_opts.c
@@ -1,7 +1,7 @@
/* display_opts.c
* Routines for packet display windows
*
- * $Id: display_opts.c,v 1.18 2000/11/01 08:31:35 guy Exp $
+ * $Id: display_opts.c,v 1.19 2001/04/13 14:59:30 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -60,6 +60,7 @@
#include "display_opts.h"
#include "ui_util.h"
#include "dlg_utils.h"
+#include "prefs.h"
extern capture_file cfile;
extern GtkWidget *packet_list;
@@ -170,7 +171,7 @@ display_opt_cb(GtkWidget *w, gpointer d) {
button = dlg_check_button_new_with_label_with_mnemonic(
"_Automatic scrolling in live capture", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), auto_scroll_live);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), prefs.capture_auto_scroll);
gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_AUTO_SCROLL_KEY,
button);
gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0);
@@ -178,7 +179,7 @@ display_opt_cb(GtkWidget *w, gpointer d) {
button = dlg_check_button_new_with_label_with_mnemonic(
"Enable _name resolution", accel_group);
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), g_resolving_actif);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), prefs.capture_name_resolve);
gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_NAME_RESOLUTION_KEY,
button);
gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0);
@@ -264,11 +265,11 @@ get_display_options(GtkWidget *parent_w)
button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w),
E_DISPLAY_AUTO_SCROLL_KEY);
- auto_scroll_live = (GTK_TOGGLE_BUTTON (button)->active);
+ prefs.capture_auto_scroll = (GTK_TOGGLE_BUTTON (button)->active);
button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w),
E_DISPLAY_NAME_RESOLUTION_KEY);
- g_resolving_actif = (GTK_TOGGLE_BUTTON (button)->active);
+ prefs.capture_name_resolve = (GTK_TOGGLE_BUTTON (button)->active);
}
diff --git a/gtk/main.c b/gtk/main.c
index 85dd94e0ba..a18182654a 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.191 2001/04/10 12:07:39 gram Exp $
+ * $Id: main.c,v 1.192 2001/04/13 14:59:30 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -136,6 +136,7 @@
#include "colors.h"
#include "strutil.h"
#include "register.h"
+#include "prefs.h"
#ifdef WIN32
#include "capture-wpcap.h"
@@ -519,11 +520,11 @@ void expand_all_cb(GtkWidget *widget, gpointer data) {
void resolve_name_cb(GtkWidget *widget, gpointer data) {
if (cfile.protocol_tree) {
- int tmp = g_resolving_actif;
- g_resolving_actif = 1;
+ int tmp = prefs.capture_name_resolve;
+ prefs.capture_name_resolve = 1;
gtk_clist_clear ( GTK_CLIST(tree_view) );
proto_tree_draw(cfile.protocol_tree, tree_view);
- g_resolving_actif = tmp;
+ prefs.capture_name_resolve = tmp;
}
}
@@ -987,7 +988,7 @@ main(int argc, char *argv[])
prefs->gui_font_name = g_strdup(optarg);
break;
case 'n': /* No name resolution */
- g_resolving_actif = 0;
+ prefs->capture_name_resolve = 0;
break;
case 'o': /* Override preference from command line */
switch (prefs_set_pref(optarg)) {
@@ -1006,7 +1007,7 @@ main(int argc, char *argv[])
break;
case 'p': /* Don't capture in promiscuous mode */
#ifdef HAVE_LIBPCAP
- promisc_mode = 0;
+ prefs->capture_prom_mode = 0;
#else
capture_option_specified = TRUE;
arg_error = TRUE;
@@ -1043,7 +1044,7 @@ main(int argc, char *argv[])
break;
case 'S': /* "Sync" mode: used for following file ala tail -f */
#ifdef HAVE_LIBPCAP
- sync_mode = TRUE;
+ prefs->capture_auto_scroll = TRUE;
#else
capture_option_specified = TRUE;
arg_error = TRUE;
diff --git a/gtk/menu.c b/gtk/menu.c
index 2083b29845..b0a695f521 100644
--- a/gtk/menu.c
+++ b/gtk/menu.c
@@ -1,7 +1,7 @@
/* menu.c
* Menu routines
*
- * $Id: menu.c,v 1.50 2001/03/22 23:54:47 gram Exp $
+ * $Id: menu.c,v 1.51 2001/04/13 14:59:30 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -400,7 +400,7 @@ set_menus_for_selected_packet(gboolean have_selected_packet)
set_menu_sensitivity("/Tools/Decode As...",
have_selected_packet && decode_as_ok());
set_menu_sensitivity("/Resolve Name",
- have_selected_packet && !g_resolving_actif);
+ have_selected_packet && !prefs.capture_name_resolve);
}
/* Enable or disable menu items based on whether a tree row is selected. */
diff --git a/prefs.c b/prefs.c
index 7102753887..ce77fe2625 100644
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
/* prefs.c
* Routines for handling preferences
*
- * $Id: prefs.c,v 1.48 2001/04/02 09:53:42 guy Exp $
+ * $Id: prefs.c,v 1.49 2001/04/13 14:59:28 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -611,6 +611,12 @@ read_prefs(int *gpf_errno_return, char **gpf_path_return,
prefs.gui_marked_bg.green = 0;
prefs.gui_marked_bg.blue = 0;
+/* set the default values for the capture dialog box */
+ prefs.capture_prom_mode = 0;
+ prefs.capture_real_time = 0;
+ prefs.capture_auto_scroll = 0;
+ prefs.capture_name_resolve= 1;
+
}
/* Read the global preferences file, if it exists. */
@@ -845,6 +851,12 @@ prefs_set_pref(char *prefarg)
#define PRS_GUI_MARKED_FG "gui.marked_frame.fg"
#define PRS_GUI_MARKED_BG "gui.marked_frame.bg"
+/* values for the capture dialog box */
+#define PRS_CAP_REAL_TIME "capture.real_time_update"
+#define PRS_CAP_PROM_MODE "capture.prom_mode"
+#define PRS_CAP_AUTO_SCROLL "capture.auto_scroll"
+#define PRS_CAP_NAME_RESOLVE "capture.name_resolve"
+
#define RED_COMPONENT(x) ((((x) >> 16) & 0xff) * 65535 / 255)
#define GREEN_COMPONENT(x) ((((x) >> 8) & 0xff) * 65535 / 255)
#define BLUE_COMPONENT(x) (((x) & 0xff) * 65535 / 255)
@@ -977,6 +989,20 @@ set_pref(gchar *pref_name, gchar *value)
prefs.gui_marked_bg.red = RED_COMPONENT(cval);
prefs.gui_marked_bg.green = GREEN_COMPONENT(cval);
prefs.gui_marked_bg.blue = BLUE_COMPONENT(cval);
+
+/* handle the capture options */
+ } else if (strcmp(pref_name, PRS_CAP_PROM_MODE) == 0) {
+ prefs.capture_prom_mode = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
+
+ } else if (strcmp(pref_name, PRS_CAP_REAL_TIME) == 0) {
+ prefs.capture_real_time = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
+
+ } else if (strcmp(pref_name, PRS_CAP_AUTO_SCROLL) == 0) {
+ prefs.capture_auto_scroll = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
+
+ } else if (strcmp(pref_name, PRS_CAP_NAME_RESOLVE) == 0) {
+ prefs.capture_name_resolve = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
+
} else {
/* To which module does this preference belong? */
dotp = strchr(pref_name, '.');
@@ -1301,6 +1327,23 @@ write_prefs(char **pf_path_return)
(prefs.gui_marked_bg.green * 255 / 65535),
(prefs.gui_marked_bg.blue * 255 / 65535));
+/* write the capture options */
+ fprintf(pf, "\n# Capture in promiscuous mode? TRUE/FALSE\n");
+ fprintf(pf, PRS_CAP_PROM_MODE ": %s\n",
+ prefs.capture_prom_mode == TRUE ? "TRUE" : "FALSE");
+
+ fprintf(pf, "\n# Update packet list in real time during capture? TRUE/FALSE\n");
+ fprintf(pf, PRS_CAP_REAL_TIME ": %s\n",
+ prefs.capture_real_time == TRUE ? "TRUE" : "FALSE");
+
+ fprintf(pf, "\n# scroll packet list during capture? TRUE/FALSE\n");
+ fprintf(pf, PRS_CAP_AUTO_SCROLL ": %s\n",
+ prefs.capture_auto_scroll == TRUE ? "TRUE" : "FALSE");
+
+ fprintf(pf, "\n# resolve names during capture? TRUE/FALSE\n");
+ fprintf(pf, PRS_CAP_NAME_RESOLVE ": %s\n",
+ prefs.capture_name_resolve == TRUE ? "TRUE" : "FALSE");
+
g_list_foreach(modules, write_module_prefs, pf);
fclose(pf);
@@ -1345,6 +1388,12 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_font_name = g_strdup(src->gui_font_name);
dest->gui_marked_fg = src->gui_marked_fg;
dest->gui_marked_bg = src->gui_marked_bg;
+/* values for the capture dialog box */
+ dest->capture_prom_mode = src->capture_prom_mode;
+ dest->capture_real_time = src->capture_real_time;
+ dest->capture_auto_scroll = src->capture_auto_scroll;
+ dest->capture_name_resolve = src->capture_name_resolve;
+
}
/* Free a set of preferences. */
diff --git a/prefs.h b/prefs.h
index 4e25be8288..e03dbf2a90 100644
--- a/prefs.h
+++ b/prefs.h
@@ -1,7 +1,7 @@
/* prefs.h
* Definitions for preference handling routines
*
- * $Id: prefs.h,v 1.27 2001/01/03 07:53:44 guy Exp $
+ * $Id: prefs.h,v 1.28 2001/04/13 14:59:28 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -50,6 +50,11 @@ typedef struct _e_prefs {
gchar *gui_font_name;
color_t gui_marked_fg;
color_t gui_marked_bg;
+ gboolean capture_prom_mode;
+ gboolean capture_real_time;
+ gboolean capture_auto_scroll;
+ gboolean capture_name_resolve;
+
} e_prefs;
extern e_prefs prefs;