diff options
author | Guy Harris <guy@alum.mit.edu> | 2000-09-15 05:32:49 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2000-09-15 05:32:49 +0000 |
commit | 00b4224ee0665561e4237e30caf3197c605201cf (patch) | |
tree | 76e449cda3b0a28bd8068623718c23dc64c36859 /gtk | |
parent | f30b84ce2321a6071a2d254953befc75b14e4b6b (diff) |
Add a "-p" command-line option, and a checkbox in the "Capture
Preferences" dialog box, to control whether to put the interface in
promiscuous mode or not; Debian bug #34376 asked for this.
svn path=/trunk/; revision=2439
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/capture_dlg.c | 19 | ||||
-rw-r--r-- | gtk/main.c | 14 |
2 files changed, 26 insertions, 7 deletions
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c index 1b9dd13d14..f7f25cc9c1 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.32 2000/08/23 20:55:44 deniel Exp $ + * $Id: capture_dlg.c,v 1.33 2000/09/15 05:32:48 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -61,6 +61,7 @@ #define E_CAP_FILE_TE_KEY "cap_file_te" #define E_CAP_COUNT_KEY "cap_count" #define E_CAP_SNAP_KEY "cap_snap" +#define E_CAP_PROMISC_KEY "cap_promisc" #define E_CAP_SYNC_KEY "cap_sync" #define E_CAP_AUTO_SCROLL_KEY "cap_auto_scroll" #define E_CAP_RESOLVE_KEY "cap_resolve" @@ -106,7 +107,7 @@ capture_prep_cb(GtkWidget *w, gpointer d) *file_bt, *file_te, *caplen_hb, *table, *bbox, *ok_bt, *cancel_bt, *snap_lb, - *snap_sb, *sync_cb, *auto_scroll_cb, *resolv_cb; + *snap_sb, *promisc_cb, *sync_cb, *auto_scroll_cb, *resolv_cb; GtkAccelGroup *accel_group; GtkAdjustment *adj; GList *if_list, *count_list = NULL; @@ -231,6 +232,12 @@ capture_prep_cb(GtkWidget *w, gpointer d) gtk_box_pack_start (GTK_BOX(caplen_hb), snap_sb, FALSE, FALSE, 3); gtk_widget_show(snap_sb); + 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_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); @@ -277,6 +284,7 @@ capture_prep_cb(GtkWidget *w, gpointer d) gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_FILE_TE_KEY, file_te); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_COUNT_KEY, count_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_SNAP_KEY, snap_sb); + gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_PROMISC_KEY, promisc_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_SYNC_KEY, sync_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_AUTO_SCROLL_KEY, auto_scroll_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_RESOLVE_KEY, resolv_cb); @@ -400,8 +408,8 @@ cap_prep_fs_destroy_cb(GtkWidget *win, gpointer data) static void capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) { - GtkWidget *if_cb, *filter_te, *file_te, *count_cb, *snap_sb, *sync_cb, - *auto_scroll_cb, *resolv_cb; + GtkWidget *if_cb, *filter_te, *file_te, *count_cb, *snap_sb, *promisc_cb, + *sync_cb, *auto_scroll_cb, *resolv_cb; gchar *if_text; gchar *if_name; gchar *filter_text; @@ -412,6 +420,7 @@ capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) { file_te = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_FILE_TE_KEY); count_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_COUNT_KEY); snap_sb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_SNAP_KEY); + promisc_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_PROMISC_KEY); sync_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_SYNC_KEY); auto_scroll_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_AUTO_SCROLL_KEY); resolv_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_RESOLVE_KEY); @@ -461,6 +470,8 @@ 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; + sync_mode = GTK_TOGGLE_BUTTON (sync_cb)->active; auto_scroll_live = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active; diff --git a/gtk/main.c b/gtk/main.c index bb6ac0ea18..ca7da46fbf 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1,6 +1,6 @@ /* main.c * - * $Id: main.c,v 1.157 2000/09/14 22:59:08 grahamb Exp $ + * $Id: main.c,v 1.158 2000/09/15 05:32:49 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -788,7 +788,7 @@ print_usage(void) { fprintf(stderr, "This is GNU " PACKAGE " " VERSION ", compiled with %s\n", comp_info_str); #ifdef HAVE_LIBPCAP - fprintf(stderr, "%s [ -vh ] [ -kQS ] [ -B <byte view height> ] [ -c count ]\n", + fprintf(stderr, "%s [ -vh ] [ -kpQS ] [ -B <byte view height> ] [ -c count ]\n", PACKAGE); fprintf(stderr, "\t[ -f <capture filter> ] [ -i interface ] [ -m <medium font> ] \n"); fprintf(stderr, "\t[ -n ] [ -o <preference setting> ] ... [ -P <packet list height> ]\n"); @@ -964,7 +964,7 @@ main(int argc, char *argv[]) ); /* Now get our args */ - while ((opt = getopt(argc, argv, "B:c:Df:hi:km:no:P:Qr:R:Ss:t:T:w:W:vZ:")) != EOF) { + while ((opt = getopt(argc, argv, "B:c:Df:hi:km:no:pP:Qr:R:Ss:t:T:w:W:vZ:")) != EOF) { switch (opt) { case 'B': /* Byte view pane height */ bv_size = atoi(optarg); @@ -1030,6 +1030,14 @@ main(int argc, char *argv[]) break; } break; + case 'p': /* Don't capture in promiscuous mode */ +#ifdef HAVE_LIBPCAP + promisc_mode = 0; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; case 'P': /* Packet list pane height */ pl_size = atoi(optarg); break; |