diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 01:36:54 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 01:36:54 +0000 |
commit | 0696f30690862679b09ae85a5fc4414d86089630 (patch) | |
tree | e95426ee4a256efe2a3630dd92fde1fdad4743af | |
parent | a63de46dddd8edf52e6561f56fc8490cd5e4174f (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.rc | 1 | ||||
-rw-r--r-- | ui/gtk/capture_dlg.c | 19 | ||||
-rw-r--r-- | ui/gtk/capture_file_dlg.c | 11 | ||||
-rw-r--r-- | ui/gtk/main_menubar.c | 18 | ||||
-rw-r--r-- | ui/win32/file_dlg_win32.c | 5 | ||||
-rw-r--r-- | ui/win32/file_dlg_win32.h | 27 |
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 */ |