aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-07-09 01:36:54 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-07-09 01:36:54 +0000
commit0696f30690862679b09ae85a5fc4414d86089630 (patch)
treee95426ee4a256efe2a3630dd92fde1fdad4743af
parenta63de46dddd8edf52e6561f56fc8490cd5e4174f (diff)
From Michael Mann:
GUI use external name resolver proliferation https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7380 svn path=/trunk/; revision=43615
-rw-r--r--image/file_dlg_win32.rc1
-rw-r--r--ui/gtk/capture_dlg.c19
-rw-r--r--ui/gtk/capture_file_dlg.c11
-rw-r--r--ui/gtk/main_menubar.c18
-rw-r--r--ui/win32/file_dlg_win32.c5
-rw-r--r--ui/win32/file_dlg_win32.h27
6 files changed, 65 insertions, 16 deletions
diff --git a/image/file_dlg_win32.rc b/image/file_dlg_win32.rc
index 31903a61b3..a78cfb8337 100644
--- a/image/file_dlg_win32.rc
+++ b/image/file_dlg_win32.rc
@@ -14,6 +14,7 @@ FONT 8, "MS Shell Dlg"
CHECKBOX "MAC name resolution", EWFD_MAC_NR_CB, 7, 32, 100, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Network name resolution", EWFD_NET_NR_CB, 7, 47, 100, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Transport name resolution", EWFD_TRANS_NR_CB, 7, 62, 100, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Use external network name resolver", EWFD_EXTERNAL_NR_CB, 7, 77, 135, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
LTEXT "Filename:", EWFD_PT_FILENAME, 164, 4, 40, 8
LTEXT "-", EWFD_PTX_FILENAME, 211, 4, 150, 8
diff --git a/ui/gtk/capture_dlg.c b/ui/gtk/capture_dlg.c
index d99dbfae04..04a89b9715 100644
--- a/ui/gtk/capture_dlg.c
+++ b/ui/gtk/capture_dlg.c
@@ -147,6 +147,7 @@ enum
#define E_CAP_M_RESOLVE_KEY "cap_m_resolve"
#define E_CAP_N_RESOLVE_KEY "cap_n_resolve"
#define E_CAP_T_RESOLVE_KEY "cap_t_resolve"
+#define E_CAP_E_RESOLVE_KEY "cap_e_resolve"
#define E_CAP_IFTYPE_CBX_KEY "cap_iftype_cbx"
#ifdef HAVE_PCAP_REMOTE
@@ -3584,7 +3585,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
*display_fr, *display_vb,
*sync_cb, *auto_scroll_cb, *hide_info_cb,
*resolv_fr, *resolv_vb,
- *m_resolv_cb, *n_resolv_cb, *t_resolv_cb,
+ *m_resolv_cb, *n_resolv_cb, *t_resolv_cb, *e_resolv_cb,
*bbox, *close_bt,
*help_bt;
#ifdef HAVE_AIRPCAP
@@ -4091,6 +4092,14 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
"Perform transport layer name resolution while capturing.");
gtk_container_add(GTK_CONTAINER(resolv_vb), t_resolv_cb);
+ e_resolv_cb = gtk_check_button_new_with_mnemonic(
+ "Use _external network name resolver");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e_resolv_cb),
+ gbl_resolv_flags.use_external_net_name_resolver);
+ gtk_widget_set_tooltip_text(e_resolv_cb,
+ "Use the (system's) configured name resolver (e.g., DNS) to resolve network names.");
+ gtk_container_add(GTK_CONTAINER(resolv_vb), e_resolv_cb);
+
/* Button row: "Start", "Cancel" and "Help" buttons */
bbox = dlg_button_row_new(WIRESHARK_STOCK_CAPTURE_START, GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
@@ -4150,6 +4159,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
g_object_set_data(G_OBJECT(cap_open_w), E_CAP_M_RESOLVE_KEY, m_resolv_cb);
g_object_set_data(G_OBJECT(cap_open_w), E_CAP_N_RESOLVE_KEY, n_resolv_cb);
g_object_set_data(G_OBJECT(cap_open_w), E_CAP_T_RESOLVE_KEY, t_resolv_cb);
+ g_object_set_data(G_OBJECT(cap_open_w), E_CAP_E_RESOLVE_KEY, e_resolv_cb);
/* Set the sensitivity of various widgets as per the settings of other
widgets. */
@@ -4304,7 +4314,7 @@ capture_dlg_prep(gpointer parent_w) {
*ring_filesize_cb, *ring_filesize_sb, *ring_filesize_cbx,
*file_duration_cb, *file_duration_sb, *file_duration_cbx,
*stop_files_cb, *stop_files_sb,
- *m_resolv_cb, *n_resolv_cb, *t_resolv_cb;
+ *m_resolv_cb, *n_resolv_cb, *t_resolv_cb, *e_resolv_cb;
const gchar *g_save_file;
gchar *cf_name;
gchar *dirname;
@@ -4337,6 +4347,7 @@ capture_dlg_prep(gpointer parent_w) {
m_resolv_cb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_M_RESOLVE_KEY);
n_resolv_cb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_N_RESOLVE_KEY);
t_resolv_cb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_T_RESOLVE_KEY);
+ e_resolv_cb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_E_RESOLVE_KEY);
if (global_capture_opts.num_selected == 0) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
@@ -4397,6 +4408,10 @@ capture_dlg_prep(gpointer parent_w) {
gbl_resolv_flags.transport_name = TRUE;
else
gbl_resolv_flags.transport_name = FALSE;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(e_resolv_cb)))
+ gbl_resolv_flags.use_external_net_name_resolver = TRUE;
+ else
+ gbl_resolv_flags.use_external_net_name_resolver = FALSE;
global_capture_opts.has_ring_num_files =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb));
diff --git a/ui/gtk/capture_file_dlg.c b/ui/gtk/capture_file_dlg.c
index 5a10bb7f8d..f48b136750 100644
--- a/ui/gtk/capture_file_dlg.c
+++ b/ui/gtk/capture_file_dlg.c
@@ -430,7 +430,7 @@ file_open_cmd(GtkWidget *w)
#else /* USE_WIN32_FILE_DIALOGS */
GtkWidget *file_open_w;
GtkWidget *main_hb, *main_vb, *filter_hbox, *filter_bt, *filter_te,
- *m_resolv_cb, *n_resolv_cb, *t_resolv_cb, *prev;
+ *m_resolv_cb, *n_resolv_cb, *t_resolv_cb, *e_resolv_cb, *prev;
/* No Apply button, and "OK" just sets our text widget, it doesn't
activate it (i.e., it doesn't cause us to try to open the file). */
static construct_args_t args = {
@@ -526,6 +526,11 @@ file_open_cmd(GtkWidget *w)
gbl_resolv_flags.transport_name);
gtk_box_pack_start(GTK_BOX(main_vb), t_resolv_cb, FALSE, FALSE, 0);
gtk_widget_show(t_resolv_cb);
+ e_resolv_cb = gtk_check_button_new_with_mnemonic("Use _external network name resolver");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e_resolv_cb),
+ gbl_resolv_flags.use_external_net_name_resolver);
+ gtk_box_pack_start(GTK_BOX(main_vb), e_resolv_cb, FALSE, FALSE, 0);
+ gtk_widget_show(e_resolv_cb);
/* preview widget */
prev = preview_new();
@@ -590,6 +595,10 @@ file_open_cmd(GtkWidget *w)
gbl_resolv_flags.transport_name = TRUE;
else
gbl_resolv_flags.transport_name = FALSE;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(e_resolv_cb)))
+ gbl_resolv_flags.use_external_net_name_resolver = TRUE;
+ else
+ gbl_resolv_flags.use_external_net_name_resolver = FALSE;
/* We've crossed the Rubicon; get rid of the file selection box. */
window_destroy(GTK_WIDGET(file_open_w));
diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c
index 96807797ab..546b729a06 100644
--- a/ui/gtk/main_menubar.c
+++ b/ui/gtk/main_menubar.c
@@ -754,6 +754,17 @@ view_menu_en_for_transport_cb(GtkAction *action _U_, gpointer user_data)
}
static void
+view_menu_en_use_external_resolver_cb(GtkAction *action _U_, gpointer user_data)
+{
+ GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/UseExternalNetworkNameResolver");
+ if (!widget){
+ g_warning("view_menu_en_use_external_resolver_cb: No widget found");
+ }else{
+ name_resolution_cb( widget , user_data, &gbl_resolv_flags.use_external_net_name_resolver);
+ }
+}
+
+static void
view_menu_colorize_pkt_lst_cb(GtkAction *action _U_, gpointer user_data)
{
GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/ColorizePacketList");
@@ -1093,6 +1104,7 @@ static const char *ui_desc_menubar =
" <menuitem name='EnableforMACLayer' action='/View/NameResolution/EnableforMACLayer'/>\n"
" <menuitem name='EnableforNetworkLayer' action='/View/NameResolution/EnableforNetworkLayer'/>\n"
" <menuitem name='EnableforTransportLayer' action='/View/NameResolution/EnableforTransportLayer'/>\n"
+" <menuitem name='UseExternalNetworkNameResolver' action='/View/NameResolution/UseExternalNetworkNameResolver'/>\n"
" </menu>\n"
" <menuitem name='ColorizePacketList' action='/View/ColorizePacketList'/>\n"
" <menuitem name='AutoScrollinLiveCapture' action='/View/AutoScrollinLiveCapture'/>\n"
@@ -1834,6 +1846,7 @@ static const GtkToggleActionEntry main_menu_bar_toggle_action_entries[] =
{"/View/NameResolution/EnableforMACLayer", NULL, "Enable for _MAC Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_MAC_cb), TRUE},
{"/View/NameResolution/EnableforNetworkLayer", NULL, "Enable for _Network Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_network_cb), TRUE },
{"/View/NameResolution/EnableforTransportLayer", NULL, "Enable for _Transport Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_transport_cb), TRUE },
+ {"/View/NameResolution/UseExternalNetworkNameResolver", NULL, "Use _External Network Name Resolver", NULL, NULL, G_CALLBACK(view_menu_en_use_external_resolver_cb), TRUE },
{"/View/ColorizePacketList", NULL, "Colorize Packet List", NULL, NULL, G_CALLBACK(view_menu_colorize_pkt_lst_cb), TRUE },
{"/View/AutoScrollinLiveCapture", NULL, "Auto Scroll in Li_ve Capture", NULL, NULL, G_CALLBACK(view_menu_auto_scroll_live_cb), TRUE },
};
@@ -4315,6 +4328,11 @@ menu_name_resolution_changed(void)
}
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), gbl_resolv_flags.transport_name);
+ menu = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/UseExternalNetworkNameResolver");
+ if(!menu){
+ g_warning("menu_name_resolution_changed: No menu found, path= /Menubar/ViewMenu/NameResolution/UseExternalNetworkNameResolver");
+ }
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), gbl_resolv_flags.use_external_net_name_resolver);
}
static void
diff --git a/ui/win32/file_dlg_win32.c b/ui/win32/file_dlg_win32.c
index 8f2d9dbb94..d3e975cd39 100644
--- a/ui/win32/file_dlg_win32.c
+++ b/ui/win32/file_dlg_win32.c
@@ -1617,6 +1617,8 @@ open_file_hook_proc(HWND of_hwnd, UINT msg, WPARAM w_param, LPARAM l_param) {
SendMessage(cur_ctrl, BM_SETCHECK, gbl_resolv_flags.network_name, 0);
cur_ctrl = GetDlgItem(of_hwnd, EWFD_TRANS_NR_CB);
SendMessage(cur_ctrl, BM_SETCHECK, gbl_resolv_flags.transport_name, 0);
+ cur_ctrl = GetDlgItem(of_hwnd, EWFD_EXTERNAL_NR_CB);
+ SendMessage(cur_ctrl, BM_SETCHECK, gbl_resolv_flags.use_external_net_name_resolver, 0);
preview_set_filename(of_hwnd, NULL);
break;
@@ -1639,6 +1641,9 @@ open_file_hook_proc(HWND of_hwnd, UINT msg, WPARAM w_param, LPARAM l_param) {
cur_ctrl = GetDlgItem(of_hwnd, EWFD_TRANS_NR_CB);
if (SendMessage(cur_ctrl, BM_GETCHECK, 0, 0) == BST_CHECKED)
gbl_resolv_flags.transport_name = TRUE;
+ cur_ctrl = GetDlgItem(of_hwnd, EWFD_EXTERNAL_NR_CB);
+ if (SendMessage(cur_ctrl, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ gbl_resolv_flags.use_external_net_name_resolver = TRUE;
break;
case CDN_SELCHANGE:
/* This _almost_ works correctly. We need to handle directory
diff --git a/ui/win32/file_dlg_win32.h b/ui/win32/file_dlg_win32.h
index 8292bd02c7..4e782d596e 100644
--- a/ui/win32/file_dlg_win32.h
+++ b/ui/win32/file_dlg_win32.h
@@ -110,23 +110,24 @@ void file_set_save_marked_sensitive();
#define EWFD_MAC_NR_CB 1002
#define EWFD_NET_NR_CB 1003
#define EWFD_TRANS_NR_CB 1004
+#define EWFD_EXTERNAL_NR_CB 1005
/* Note: The preview title (PT) and text (PTX) MUST have sequential IDs;
they're used in a for loop. EWFD_PT_FILENAME MUST be first, and
EWFD_PTX_ELAPSED MUST be last. (so why don't we just use an enum? */
-#define EWFD_PT_FILENAME 1005
-#define EWFD_PT_FORMAT 1006
-#define EWFD_PT_SIZE 1007
-#define EWFD_PT_PACKETS 1008
-#define EWFD_PT_FIRST_PKT 1009
-#define EWFD_PT_ELAPSED 1010
-
-#define EWFD_PTX_FILENAME 1011
-#define EWFD_PTX_FORMAT 1012
-#define EWFD_PTX_SIZE 1013
-#define EWFD_PTX_PACKETS 1014
-#define EWFD_PTX_FIRST_PKT 1015
-#define EWFD_PTX_ELAPSED 1016
+#define EWFD_PT_FILENAME 1006
+#define EWFD_PT_FORMAT 1007
+#define EWFD_PT_SIZE 1008
+#define EWFD_PT_PACKETS 1009
+#define EWFD_PT_FIRST_PKT 1010
+#define EWFD_PT_ELAPSED 1011
+
+#define EWFD_PTX_FILENAME 1012
+#define EWFD_PTX_FORMAT 1013
+#define EWFD_PTX_SIZE 1014
+#define EWFD_PTX_PACKETS 1015
+#define EWFD_PTX_FIRST_PKT 1016
+#define EWFD_PTX_ELAPSED 1017
/* Save dialog defines */