/ui/gtk/main_menubar.c
C | 5722 lines | 4541 code | 715 blank | 466 comment | 475 complexity | fbd6208c3ec2216cd908c85ba63afb34 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause
Large files files are truncated, but you can click here to view the full file
- /* main_menubar.c
- * Menu routines
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
- #include "config.h"
- #include <gtk/gtk.h>
- #include <stdio.h>
- #include <string.h>
- #include <wsutil/u3.h>
- #include <epan/packet.h>
- #include <epan/addr_resolv.h>
- #include <epan/prefs.h>
- #include <epan/prefs-int.h>
- #include <epan/tap.h>
- #include <epan/timestamp.h>
- #include <epan/etypes.h>
- #include <epan/ipproto.h>
- #include <epan/dissector_filters.h>
- #include <epan/strutil.h>
- #include <epan/plugins.h>
- #include <epan/epan_dissect.h>
- #include <epan/column.h>
- #include <epan/stats_tree_priv.h>
- #include <epan/filesystem.h>
- #include <epan/print.h>
- #include "cfile.h"
- #include "globals.h"
- #include "color_filters.h"
- #include "stat_menu.h"
- #include "ui/iface_lists.h"
- #include "ui/main_statusbar.h"
- #include "ui/preference_utils.h"
- #include "ui/recent.h"
- #include "ui/recent_utils.h"
- #include "ui/simple_dialog.h"
- #include "ui/software_update.h"
- #include "ui/ui_util.h"
- #include "ui/utf8_entities.h"
- #include "ui/gtk/about_dlg.h"
- #include "ui/gtk/capture_dlg.h"
- #include "ui/gtk/capture_if_dlg.h"
- #include "ui/gtk/color_dlg.h"
- #include "ui/gtk/export_object_dlg.h"
- #include "ui/gtk/filter_dlg.h"
- #include "ui/gtk/profile_dlg.h"
- #include "ui/gtk/dlg_utils.h"
- #include "ui/gtk/capture_file_dlg.h"
- #include "ui/gtk/fileset_dlg.h"
- #include "ui/gtk/file_import_dlg.h"
- #include "ui/gtk/find_dlg.h"
- #include "ui/gtk/goto_dlg.h"
- #include "ui/gtk/summary_dlg.h"
- #include "ui/gtk/prefs_dlg.h"
- #include "ui/gtk/packet_win.h"
- #include "ui/gtk/follow_tcp.h"
- #include "ui/gtk/follow_udp.h"
- #include "ui/gtk/follow_ssl.h"
- #include "ui/gtk/decode_as_dlg.h"
- #include "ui/gtk/help_dlg.h"
- #include "ui/gtk/supported_protos_dlg.h"
- #include "ui/gtk/proto_dlg.h"
- #include "ui/gtk/proto_hier_stats_dlg.h"
- #include "ui/gtk/keys.h"
- #include "ui/gtk/stock_icons.h"
- #include "ui/gtk/gtkglobals.h"
- #include "ui/gtk/packet_panes.h"
- #include "ui/gtk/conversations_table.h"
- #include "ui/gtk/hostlist_table.h"
- #include "ui/gtk/packet_history.h"
- #include "ui/gtk/sctp_stat.h"
- #include "ui/gtk/firewall_dlg.h"
- #include "ui/gtk/macros_dlg.h"
- #include "epan/dissectors/packet-ssl-utils.h"
- #include "ui/gtk/export_sslkeys.h"
- #include "ui/gtk/gui_stat_menu.h"
- #include "ui/gtk/main.h"
- #include "ui/gtk/menus.h"
- #include "ui/gtk/main_menubar_private.h"
- #include "ui/gtk/main_toolbar.h"
- #include "ui/gtk/main_welcome.h"
- #include "ui/gtk/uat_gui.h"
- #include "ui/gtk/gui_utils.h"
- #include "ui/gtk/manual_addr_resolv.h"
- #include "ui/gtk/proto_help.h"
- #include "ui/gtk/dissector_tables_dlg.h"
- #include "ui/gtk/expert_comp_dlg.h"
- #include "ui/gtk/time_shift_dlg.h"
- #include "ui/gtk/edit_packet_comment_dlg.h"
- #include "ui/gtk/addr_resolution_dlg.h"
- #include "ui/gtk/export_pdu_dlg.h"
- #include "ui/gtk/packet_list.h"
- #ifdef HAVE_LIBPCAP
- #include "capture_opts.h"
- #include "ui/capture_globals.h"
- #endif
- #ifdef HAVE_IGE_MAC_INTEGRATION
- #include <ige-mac-menu.h>
- #endif
- #ifdef HAVE_GTKOSXAPPLICATION
- #include <gtkmacintegration/gtkosxapplication.h>
- #endif
- static int initialize = TRUE;
- GtkActionGroup *main_menu_bar_action_group;
- static GtkUIManager *ui_manager_main_menubar = NULL;
- static GtkUIManager *ui_manager_packet_list_heading = NULL;
- static GtkUIManager *ui_manager_packet_list_menu = NULL;
- static GtkUIManager *ui_manager_tree_view_menu = NULL;
- static GtkUIManager *ui_manager_bytes_menu = NULL;
- static GtkUIManager *ui_manager_statusbar_profiles_menu = NULL;
- static GSList *popup_menu_list = NULL;
- static GtkAccelGroup *grp;
- static GList *merge_menu_items_list = NULL;
- static GList *build_menubar_items_callback_list = NULL;
- GtkWidget *popup_menu_object;
- static void menu_open_recent_file_cmd_cb(GtkAction *action, gpointer data _U_ );
- static void add_recent_items (guint merge_id, GtkUIManager *ui_manager);
- static void add_tap_plugins (guint merge_id, GtkUIManager *ui_manager);
- static void menus_init(void);
- static void merge_menu_items(GList *node);
- static void ws_menubar_build_external_menus(void);
- static void set_menu_sensitivity (GtkUIManager *ui_manager, const gchar *, gint);
- static void menu_name_resolution_update_cb(GtkAction *action, gpointer data);
- static void name_resolution_cb(GtkWidget *w, gpointer d, gboolean* res_flag);
- static void colorize_cb(GtkWidget *w, gpointer d);
- static void rebuild_protocol_prefs_menu (module_t *prefs_module_p, gboolean preferences,
- GtkUIManager *ui_menu, const char *path);
- /* As a general GUI guideline, we try to follow the Gnome Human Interface Guidelines, which can be found at:
- http://developer.gnome.org/projects/gup/hig/1.0/index.html
- Please note: there are some differences between the Gnome HIG menu suggestions and our implementation:
- File/Open Recent: the Gnome HIG suggests putting the list of recently used files as elements into the File menuitem.
- As this is ok for only a few items, this will become unhandy for 10 or even more list entries.
- For this reason, we use a submenu for this.
- File/Close: the Gnome HIG suggests putting this item just above the Quit item.
- This results in unintuitive behaviour as both Close and Quit items are very near together.
- By putting the Close item near the open item(s), it better suggests that it will close the
- currently opened/captured file only.
- */
- typedef enum {
- CONV_ETHER = 1,
- CONV_IP,
- CONV_TCP,
- CONV_UDP,
- CONV_CBA
- } conv_values_e;
- static char *
- build_conversation_filter(int action, gboolean show_dialog)
- {
- packet_info *pi = &cfile.edt->pi;
- char *buf;
- switch(action) {
- case(CONV_CBA):
- if (pi->profinet_type == 0) {
- if (show_dialog) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error filtering conversation. Please make\n"
- "sure you have a PROFINET CBA packet selected.");
- }
- return NULL;
- }
- if( pi->net_src.type == AT_IPv4 && pi->net_dst.type == AT_IPv4
- && pi->ipproto == IP_PROTO_TCP ) {
- /* IPv4 */
- switch(pi->profinet_type) {
- case(1):
- buf = g_strdup_printf("(ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 0)",
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data));
- break;
- case(2):
- buf = g_strdup_printf("(ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 0)",
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_src.data));
- break;
- case(3):
- buf = g_strdup_printf("(ip.src eq %s and ip.dst eq %s and cba.acco.srt == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 0)",
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data));
- break;
- case(4):
- buf = g_strdup_printf("(ip.src eq %s and ip.dst eq %s and cba.acco.srt == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 0)",
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- ip_to_str( (const guint8 *)pi->net_src.data));
- break;
- default:
- return NULL;
- }
- } else {
- return NULL;
- }
- break;
- case(CONV_TCP):
- if (pi->ipproto != IP_PROTO_TCP) {
- if (show_dialog) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error filtering conversation. Please make\n"
- "sure you have a TCP packet selected.");
- }
- return NULL;
- }
- if( pi->net_src.type == AT_IPv4 && pi->net_dst.type == AT_IPv4 ) {
- /* TCP over IPv4 */
- buf = g_strdup_printf("(ip.addr eq %s and ip.addr eq %s) and (tcp.port eq %d and tcp.port eq %d)",
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- pi->srcport, pi->destport );
- } else if( pi->net_src.type == AT_IPv6 && pi->net_dst.type == AT_IPv6 ) {
- /* TCP over IPv6 */
- buf = g_strdup_printf("(ipv6.addr eq %s and ipv6.addr eq %s) and (tcp.port eq %d and tcp.port eq %d)",
- ip6_to_str((const struct e_in6_addr *)pi->net_src.data),
- ip6_to_str((const struct e_in6_addr *)pi->net_dst.data),
- pi->srcport, pi->destport );
- } else {
- return NULL;
- }
- break;
- case(CONV_UDP):
- if (pi->ipproto != IP_PROTO_UDP) {
- if (show_dialog) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error filtering conversation. Please make\n"
- "sure you have a UDP packet selected.");
- }
- return NULL;
- }
- if( pi->net_src.type == AT_IPv4 && pi->net_dst.type == AT_IPv4 ) {
- /* UDP over IPv4 */
- buf = g_strdup_printf("(ip.addr eq %s and ip.addr eq %s) and (udp.port eq %d and udp.port eq %d)",
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data),
- pi->srcport, pi->destport );
- } else if( pi->net_src.type == AT_IPv6 && pi->net_dst.type == AT_IPv6 ) {
- /* UDP over IPv6 */
- buf = g_strdup_printf("(ipv6.addr eq %s and ipv6.addr eq %s) and (udp.port eq %d and udp.port eq %d)",
- ip6_to_str((const struct e_in6_addr *)pi->net_src.data),
- ip6_to_str((const struct e_in6_addr *)pi->net_dst.data),
- pi->srcport, pi->destport );
- } else {
- return NULL;
- }
- break;
- case(CONV_IP):
- if ((pi->ethertype != ETHERTYPE_IP) && (pi->ethertype != ETHERTYPE_IPv6)) {
- if (show_dialog) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error filtering conversation. Please make\n"
- "sure you have a IP packet selected.");
- }
- return NULL;
- }
- if( pi->net_src.type == AT_IPv4 && pi->net_dst.type == AT_IPv4 ) {
- /* IPv4 */
- buf = g_strdup_printf("ip.addr eq %s and ip.addr eq %s",
- ip_to_str( (const guint8 *)pi->net_src.data),
- ip_to_str( (const guint8 *)pi->net_dst.data));
- } else if( pi->net_src.type == AT_IPv6 && pi->net_dst.type == AT_IPv6 ) {
- /* IPv6 */
- buf = g_strdup_printf("ipv6.addr eq %s and ipv6.addr eq %s",
- ip6_to_str((const struct e_in6_addr *)pi->net_src.data),
- ip6_to_str((const struct e_in6_addr *)pi->net_dst.data));
- } else {
- return NULL;
- }
- break;
- case(CONV_ETHER):
- /* XXX - is this the right way to check for Ethernet? */
- /* check for the data link address type */
- /* (ethertype will be 0 when used as length field) */
- if (pi->dl_src.type != AT_ETHER) {
- if (show_dialog) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error filtering conversation. Please make\n"
- "sure you have a Ethernet packet selected.");
- }
- return NULL;
- }
- if( pi->dl_src.type == AT_ETHER && pi->dl_dst.type == AT_ETHER ) {
- /* Ethernet */
- buf = g_strdup_printf("eth.addr eq %s and eth.addr eq %s",
- ether_to_str( (const guint8 *)pi->dl_src.data),
- ether_to_str( (const guint8 *)pi->dl_dst.data));
- } else {
- return NULL;
- }
- break;
- default:
- return NULL;
- }
- return buf;
- }
- static void
- new_window_cb(GtkWidget *widget)
- {
- new_packet_window(widget, FALSE, FALSE);
- }
- static void
- new_window_cb_ref(GtkWidget *widget)
- {
- new_packet_window(widget, TRUE, FALSE);
- }
- #ifdef WANT_PACKET_EDITOR
- static void
- edit_window_cb(GtkWidget *widget _U_)
- {
- new_packet_window(widget, FALSE, TRUE);
- }
- #endif
- static void
- conversation_cb(GtkAction *a _U_, gpointer data _U_, int action)
- {
- gchar *filter;
- GtkWidget *filter_te;
- if (cfile.current_frame) {
- /* create a filter-string based on the selected packet and action */
- filter = build_conversation_filter(action, TRUE);
- /* Run the display filter so it goes in effect - even if it's the
- same as the previous display filter. */
- filter_te = gtk_bin_get_child(GTK_BIN(g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY)));
- gtk_entry_set_text(GTK_ENTRY(filter_te), filter);
- main_filter_packets(&cfile, filter, TRUE);
- g_free(filter);
- }
- }
- static void
- colorize_conversation_cb(GtkAction *action _U_, gpointer data _U_, int action_num)
- {
- gchar *filter = NULL;
- if( (action_num>>8) == 255 ) {
- color_filters_reset_tmp();
- packet_list_colorize_packets();
- } else if (cfile.current_frame) {
- if( (action_num&0xff) == 0 ) {
- /* colorize_conversation_cb was called from the window-menu
- * or through an accelerator key. Try to build a conversation
- * filter in the order TCP, UDP, IP, Ethernet and apply the
- * coloring */
- filter = build_conversation_filter(CONV_TCP,FALSE);
- if( filter == NULL )
- filter = build_conversation_filter(CONV_UDP,FALSE);
- if( filter == NULL )
- filter = build_conversation_filter(CONV_IP,FALSE);
- if( filter == NULL )
- filter = build_conversation_filter(CONV_ETHER,FALSE);
- if( filter == NULL ) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Unable to build conversation filter.");
- return;
- }
- } else {
- /* create a filter-string based on the selected packet and action_num */
- filter = build_conversation_filter(action_num&0xff, TRUE);
- }
- if( (action_num>>8) == 0) {
- /* Open the "new coloring filter" dialog with the filter */
- color_display_with_filter(filter);
- } else {
- /* Set one of the temporary coloring filters */
- color_filters_set_tmp((guint8)(action_num>>8),filter,FALSE);
- packet_list_colorize_packets();
- }
- g_free(filter);
- }
- }
- static void
- goto_conversation_frame(gboolean dir)
- {
- gchar *filter;
- dfilter_t *dfcode = NULL;
- gboolean found_packet = FALSE;
- filter = build_conversation_filter(CONV_TCP,FALSE);
- if( filter == NULL )
- filter = build_conversation_filter(CONV_UDP,FALSE);
- if( filter == NULL )
- filter = build_conversation_filter(CONV_IP,FALSE);
- if( filter == NULL ) {
- statusbar_push_temporary_msg("Unable to build conversation filter.");
- g_free(filter);
- return;
- }
- if (!dfilter_compile(filter, &dfcode)) {
- /* The attempt failed; report an error. */
- statusbar_push_temporary_msg("Error compiling filter for this conversation.");
- g_free(filter);
- return;
- }
- found_packet = cf_find_packet_dfilter(&cfile, dfcode, dir?SD_BACKWARD:SD_FORWARD);
- if (!found_packet) {
- /* We didn't find a packet */
- statusbar_push_temporary_msg("No previous/next packet in conversation.");
- }
- dfilter_free(dfcode);
- g_free(filter);
- }
- static void
- goto_next_frame_conversation_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- goto_conversation_frame(FALSE);
- }
- static void
- goto_previous_frame_conversation_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- goto_conversation_frame(TRUE);
- }
- static void
- copy_description_cb(GtkAction *action _U_, gpointer user_data)
- {
- copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_DESCRIPTION);
- }
- static void
- copy_fieldname_cb(GtkAction *action _U_, gpointer user_data)
- {
- copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_FIELDNAME);
- }
- static void
- copy_value_cb(GtkAction *action _U_, gpointer user_data)
- {
- copy_selected_plist_cb( NULL /* widget _U_ */ , user_data, COPY_SELECTED_VALUE);
- }
- static void
- copy_as_filter_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- /* match_selected_ptree_cb needs the popup_menu_object to get the right object E_DFILTER_TE_KEY */
- match_selected_ptree_cb( popup_menu_object, (MATCH_SELECTED_E)(MATCH_SELECTED_REPLACE|MATCH_SELECTED_COPY_ONLY));
- }
- static void
- set_reftime_cb(GtkAction *action _U_, gpointer user_data)
- {
- reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_TOGGLE);
- }
- static void
- find_next_ref_time_cb(GtkAction *action _U_, gpointer user_data)
- {
- reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_FIND_NEXT);
- }
- static void
- find_previous_ref_time_cb(GtkAction *action _U_, gpointer user_data)
- {
- reftime_frame_cb( NULL /* widget _U_ */ , user_data, REFTIME_FIND_PREV);
- }
- static void
- menus_prefs_cb(GtkAction *action _U_, gpointer user_data)
- {
- prefs_page_cb( NULL /* widget _U_ */ , user_data, PREFS_PAGE_USER_INTERFACE);
- }
- static void
- main_toolbar_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/MainToolbar");
- recent.main_toolbar_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- filter_toolbar_show_hide_cb(GtkAction * action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/FilterToolbar");
- recent.filter_toolbar_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- wireless_toolbar_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/WirelessToolbar");
- if(widget) {
- recent.wireless_toolbar_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- } else {
- recent.wireless_toolbar_show = FALSE;
- }
- main_widgets_show_or_hide();
- }
- static void
- status_bar_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/StatusBar");
- recent.statusbar_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- packet_list_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/PacketList");
- recent.packet_list_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- packet_details_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/PacketDetails");
- recent.tree_view_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- packet_bytes_show_hide_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/PacketBytes");
- recent.byte_view_show = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
- main_widgets_show_or_hide();
- }
- static void
- timestamp_seconds_time_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes");
- if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
- recent.gui_seconds_format = TS_SECONDS_HOUR_MIN_SEC;
- } else {
- recent.gui_seconds_format = TS_SECONDS_DEFAULT;
- }
- timestamp_set_seconds_type (recent.gui_seconds_format);
- /* This call adjusts column width */
- cf_timestamp_auto_precision(&cfile);
- packet_list_queue_draw();
- }
- static void
- timestamp_format_new_cb (GtkRadioAction *action, GtkRadioAction *current _U_, gpointer user_data _U_)
- {
- ts_type value;
- value = (ts_type) gtk_radio_action_get_current_value (action);
- if (recent.gui_time_format != value) {
- timestamp_set_type(value);
- recent.gui_time_format = value;
- /* This call adjusts column width */
- cf_timestamp_auto_precision(&cfile);
- packet_list_queue_draw();
- }
- }
- static void
- timestamp_precision_new_cb (GtkRadioAction *action, GtkRadioAction *current _U_, gpointer user_data _U_)
- {
- gint value;
- value = gtk_radio_action_get_current_value (action);
- if (recent.gui_time_precision != value) {
- /* the actual precision will be set in packet_list_queue_draw() below */
- if (value == TS_PREC_AUTO) {
- timestamp_set_precision(TS_PREC_AUTO_SEC);
- } else {
- timestamp_set_precision(value);
- }
- recent.gui_time_precision = value;
- /* This call adjusts column width */
- cf_timestamp_auto_precision(&cfile);
- packet_list_queue_draw();
- }
- }
- static void
- view_menu_en_for_MAC_cb(GtkAction *action _U_, gpointer user_data)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/EnableforMACLayer");
- if (!widget){
- g_warning("view_menu_en_for_MAC_cb: No widget found");
- }else{
- name_resolution_cb( widget , user_data, &gbl_resolv_flags.mac_name);
- }
- }
- static void
- view_menu_en_for_network_cb(GtkAction *action _U_, gpointer user_data)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/EnableforNetworkLayer");
- if (!widget){
- g_warning("view_menu_en_for_network_cb: No widget found");
- }else{
- name_resolution_cb( widget , user_data, &gbl_resolv_flags.network_name);
- }
- }
- static void
- view_menu_en_for_transport_cb(GtkAction *action _U_, gpointer user_data)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/EnableforTransportLayer");
- if (!widget){
- g_warning("view_menu_en_for_transport_cb: No widget found");
- }else{
- name_resolution_cb( widget , user_data, &gbl_resolv_flags.transport_name);
- }
- }
- 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");
- if (!widget){
- g_warning("view_menu_colorize_pkt_lst_cb: No widget found");
- }else{
- colorize_cb( widget , user_data);
- }
- }
- #ifdef HAVE_LIBPCAP
- static void
- view_menu_auto_scroll_live_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager_main_menubar, "/Menubar/ViewMenu/AutoScrollinLiveCapture");
- if (!widget){
- g_warning("view_menu_auto_scroll_live_cb: No widget found");
- }else{
- main_auto_scroll_live_changed(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
- }
- }
- #endif
- static void
- view_menu_color_conv_color1_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 1*256);
- }
- static void
- view_menu_color_conv_color2_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 2*256);
- }
- static void
- view_menu_color_conv_color3_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 3*256);
- }
- static void
- view_menu_color_conv_color4_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 4*256);
- }
- static void
- view_menu_color_conv_color5_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 5*256);
- }
- static void
- view_menu_color_conv_color6_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 6*256);
- }
- static void
- view_menu_color_conv_color7_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 7*256);
- }
- static void
- view_menu_color_conv_color8_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 8*256);
- }
- static void
- view_menu_color_conv_color9_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 9*256);
- }
- static void
- view_menu_color_conv_color10_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 10*256);
- }
- static void
- view_menu_color_conv_new_rule_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 0);
- }
- static void
- view_menu_reset_coloring_cb(GtkAction *action, gpointer user_data)
- {
- colorize_conversation_cb(action, user_data, 255*256);
- }
- /*
- * TODO Move this menu to capture_if_dlg.c ?
- */
- #ifdef HAVE_LIBPCAP
- static void
- capture_if_action_cb(GtkAction *action _U_, gpointer user_data)
- {
- capture_if_cb(NULL /* GtkWidget *w _U_ */, user_data);
- }
- static void
- capture_prep_action_cb(GtkAction *action _U_, gpointer user_data)
- {
- capture_prep_cb(NULL /* GtkWidget *w _U_ */, user_data);
- }
- static void
- capture_start_action_cb(GtkAction *action _U_, gpointer user_data)
- {
- capture_start_cb(NULL /* GtkWidget *w _U_ */, user_data);
- }
- static void
- capture_stop_action_cb(GtkAction *action _U_, gpointer user_data)
- {
- capture_stop_cb(NULL /* GtkWidget *w _U_ */, user_data);
- }
- static void
- capture_restart_action_cb(GtkAction *action _U_, gpointer user_data)
- {
- capture_restart_cb(NULL /* GtkWidget *w _U_ */, user_data);
- }
- static void
- capture_filters_action_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- cfilter_dialog_cb(NULL /* GtkWidget *w _U_ */);
- }
- static void
- refresh_interfaces_action_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- refresh_local_interface_lists();
- }
- #endif /* HAVE_LIBPCAP */
- static void
- help_menu_cont_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(HELP_CONTENT));
- }
- static void
- help_menu_faq_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_FAQ));
- }
- static void
- help_menu_ask_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_ASK));
- }
- static void
- help_menu_wireshark_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_WIRESHARK));
- }
- static void
- help_menu_wireshark_flt_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_WIRESHARK_FILTER));
- }
- static void
- help_menu_Capinfos_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_CAPINFOS));
- }
- static void
- help_menu_Dumpcap_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_DUMPCAP));
- }
- static void
- help_menu_Editcap_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/* widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_EDITCAP));
- }
- static void
- help_menu_Mergecap_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_MERGECAP));
- }
- static void
- help_menu_RawShark_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_RAWSHARK));
- }
- static void
- help_menu_Reorder_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_REORDERCAP));
- }
- static void
- help_menu_Text2pcap_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/* widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_TEXT2PCAP));
- }
- static void
- help_menu_TShark_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/*widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(LOCALPAGE_MAN_TSHARK));
- }
- static void
- help_menu_Website_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/* widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_HOME));
- }
- static void
- help_menu_Wiki_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/* widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_WIKI));
- }
- static void
- help_menu_Downloads_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb(NULL/* widget _U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_DOWNLOAD));
- }
- static void
- help_menu_SampleCaptures_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- topic_menu_cb( NULL/* widget_U_ */, NULL /*GdkEventButton *event _U_*/, GINT_TO_POINTER(ONLINEPAGE_SAMPLE_FILES));
- }
- #ifdef HAVE_SOFTWARE_UPDATE
- static void
- check_for_updates_cb(GtkAction *action _U_, gpointer user_data _U_)
- {
- software_update_check();
- }
- #endif /* HAVE_SOFTWARE_UPDATE */
- static const char *ui_desc_menubar =
- "<ui>\n"
- " <menubar name ='Menubar'>\n"
- " <menu name= 'FileMenu' action='/File'>\n"
- " <menuitem name='Open' action='/File/Open'/>\n"
- " <menu name='OpenRecent' action='/File/OpenRecent'>\n"
- " <placeholder name='RecentFiles'/>\n"
- " </menu>\n"
- " <menuitem name='Merge' action='/File/Merge'/>\n"
- " <menuitem name='ImportFromHexDump' action='/File/ImportFromHexDump'/>\n"
- " <menuitem name='Close' action='/File/Close'/>\n"
- " <separator/>\n"
- " <menuitem name='Save' action='/File/Save'/>\n"
- " <menuitem name='SaveAs' action='/File/SaveAs'/>\n"
- " <separator/>\n"
- " <menu name= 'Set' action='/File/Set'>\n"
- " <menuitem name='ListFiles' action='/File/Set/ListFiles'/>\n"
- " <menuitem name='NextFile' action='/File/Set/NextFile'/>\n"
- " <menuitem name='PreviousFile' action='/File/Set/PreviousFile'/>\n"
- " </menu>\n"
- " <separator/>\n"
- " <menuitem name='ExportSpecifiedPackets' action='/File/ExportSpecifiedPackets'/>\n"
- " <menu name= 'ExportPacketDissections' action='/File/ExportPacketDissections'>\n"
- " <menuitem name='AsTxt' action='/File/ExportPacketDissections/Text'/>\n"
- " <menuitem name='AsPostScript' action='/File/ExportPacketDissections/PostScript'/>\n"
- " <menuitem name='AsCSV' action='/File/ExportPacketDissections/CSV'/>\n"
- " <menuitem name='AsCArrays' action='/File/ExportPacketDissections/CArrays'/>\n"
- " <separator/>\n"
- " <menuitem name='AsPSML' action='/File/ExportPacketDissections/PSML'/>\n"
- " <menuitem name='AsPDML' action='/File/ExportPacketDissections/PDML'/>\n"
- " <separator/>\n"
- " </menu>\n"
- " <menuitem name='ExportSelectedPacketBytes' action='/File/ExportSelectedPacketBytes'/>\n"
- " <menuitem name='ExportPDUs' action='/File/ExportPDUs'/>\n"
- " <menuitem name='ExportSSLSessionKeys' action='/File/ExportSSLSessionKeys'/>\n"
- " <menu name= 'ExportObjects' action='/File/ExportObjects'>\n"
- " <menuitem name='HTTP' action='/File/ExportObjects/HTTP'/>\n"
- " <menuitem name='DICOM' action='/File/ExportObjects/DICOM'/>\n"
- " <menuitem name='SMB' action='/File/ExportObjects/SMB'/>\n"
- " </menu>\n"
- " <separator/>\n"
- " <menuitem name='Print' action='/File/Print'/>\n"
- " <separator/>\n"
- " <menuitem name='Quit' action='/File/Quit'/>\n"
- " </menu>\n"
- " <menu name= 'EditMenu' action='/Edit'>\n"
- " <menu name= 'Copy' action='/Edit/Copy'>\n"
- " <menuitem name='Description' action='/Edit/Copy/Description'/>\n"
- " <menuitem name='Fieldname' action='/Edit/Copy/Fieldname'/>\n"
- " <menuitem name='Value' action='/Edit/Copy/Value'/>\n"
- " <separator/>\n"
- " <menuitem name='AsFilter' action='/Edit/Copy/AsFilter'/>\n"
- " </menu>\n"
- " <menuitem name='FindPacket' action='/Edit/FindPacket'/>\n"
- " <menuitem name='FindNext' action='/Edit/FindNext'/>\n"
- " <menuitem name='FindPrevious' action='/Edit/FindPrevious'/>\n"
- " <separator/>\n"
- " <menuitem name='MarkPacket' action='/Edit/MarkPacket'/>\n"
- " <menuitem name='MarkAllDisplayedPackets' action='/Edit/MarkAllDisplayedPackets'/>\n"
- " <menuitem name='UnmarkAllDisplayedPackets' action='/Edit/UnmarkAllDisplayedPackets'/>\n"
- " <menuitem name='FindNextMark' action='/Edit/FindNextMark'/>\n"
- " <menuitem name='FindPreviousMark' action='/Edit/FindPreviousMark'/>\n"
- " <separator/>\n"
- " <menuitem name='IgnorePacket' action='/Edit/IgnorePacket'/>\n"
- " <menuitem name='IgnoreAllDisplayedPackets' action='/Edit/IgnoreAllDisplayedPackets'/>\n"
- " <menuitem name='Un-IgnoreAllPackets' action='/Edit/Un-IgnoreAllPackets'/>\n"
- " <separator/>\n"
- " <menuitem name='SetTimeReference' action='/Edit/SetTimeReference'/>\n"
- " <menuitem name='Un-TimeReferenceAllPackets' action='/Edit/Un-TimeReferenceAllPackets'/>\n"
- " <menuitem name='FindNextTimeReference' action='/Edit/FindNextTimeReference'/>\n"
- " <menuitem name='FindPreviousTimeReference' action='/Edit/FindPreviousTimeReference'/>\n"
- " <separator/>\n"
- " <menuitem name='TimeShift' action='/Edit/TimeShift'/>\n"
- " <separator/>\n"
- #ifdef WANT_PACKET_EDITOR
- " <menuitem name='EditPacket' action='/Edit/EditPacket'/>\n"
- #endif
- " <menuitem name='AddEditPktComment' action='/Edit/AddEditPktComment'/>\n"
- " <separator/>\n"
- " <menuitem name='ConfigurationProfiles' action='/Edit/ConfigurationProfiles'/>\n"
- " <menuitem name='Preferences' action='/Edit/Preferences'/>\n"
- " </menu>\n"
- " <menu name= 'ViewMenu' action='/View'>\n"
- " <menuitem name='MainToolbar' action='/View/MainToolbar'/>\n"
- " <menuitem name='FilterToolbar' action='/View/FilterToolbar'/>\n"
- " <menuitem name='WirelessToolbar' action='/View/WirelessToolbar'/>\n"
- " <menuitem name='StatusBar' action='/View/StatusBar'/>\n"
- " <separator/>\n"
- " <menuitem name='PacketList' action='/View/PacketList'/>\n"
- " <menuitem name='PacketDetails' action='/View/PacketDetails'/>\n"
- " <menuitem name='PacketBytes' action='/View/PacketBytes'/>\n"
- " <separator/>\n"
- " <menu name= 'TimeDisplayFormat' action='/View/TimeDisplayFormat'>\n"
- " <menuitem name='DateandTimeofDay' action='/View/TimeDisplayFormat/DateandTimeofDay'/>\n"
- " <menuitem name='TimeofDay' action='/View/TimeDisplayFormat/TimeofDay'/>\n"
- " <menuitem name='SecondsSinceEpoch' action='/View/TimeDisplayFormat/SecondsSinceEpoch'/>\n"
- " <menuitem name='SecondsSinceBeginningofCapture' action='/View/TimeDisplayFormat/SecondsSinceBeginningofCapture'/>\n"
- " <menuitem name='SecondsSincePreviousCapturedPacket' action='/View/TimeDisplayFormat/SecondsSincePreviousCapturedPacket'/>\n"
- " <menuitem name='SecondsSincePreviousDisplayedPacket' action='/View/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket'/>\n"
- " <menuitem name='UTCDateandTimeofDay' action='/View/TimeDisplayFormat/UTCDateandTimeofDay'/>\n"
- " <menuitem name='UTCTimeofDay' action='/View/TimeDisplayFormat/UTCTimeofDay'/>\n"
- " <separator/>\n"
- " <menuitem name='FileFormatPrecision-Automatic' action='/View/TimeDisplayFormat/FileFormatPrecision-Automatic'/>\n"
- " <menuitem name='FileFormatPrecision-Seconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Seconds'/>\n"
- " <menuitem name='FileFormatPrecision-Deciseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Deciseconds'/>\n"
- " <menuitem name='FileFormatPrecision-Centiseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Centiseconds'/>\n"
- " <menuitem name='FileFormatPrecision-Milliseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Milliseconds'/>\n"
- " <menuitem name='FileFormatPrecision-Microseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Microseconds'/>\n"
- " <menuitem name='FileFormatPrecision-Nanoseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Nanoseconds'/>\n"
- " <separator/>\n"
- " <menuitem name='DisplaySecondsWithHoursAndMinutes' action='/View/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes'/>\n"
- " </menu>\n"
- " <menu name= 'NameResolution' action='/View/NameResolution'>\n"
- " <menuitem name='ResolveName' action='/View/NameResolution/ResolveName'/>\n"
- " <menuitem name='ManuallyResolveName' action='/View/NameResolution/ManuallyResolveName'/>\n"
- " <separator/>\n"
- " <menuitem name='EnableforMACLayer' action='/View/NameResolution/EnableforMACLayer'/>\n"
- " <menuitem name='EnableforTransportLayer' action='/View/NameResolution/EnableforTransportLayer'/>\n"
- " <menuitem name='EnableforNetworkLayer' action='/View/NameResolution/EnableforNetworkLayer'/>\n"
- " <menuitem name='UseExternalNetworkNameResolver' action='/View/NameResolution/UseExternalNetworkNameResolver'/>\n"
- " </menu>\n"
- " <menuitem name='ColorizePacketList' action='/View/ColorizePacketList'/>\n"
- #ifdef HAVE_LIBPCAP
- " <menuitem name='AutoScrollinLiveCapture' action='/View/AutoScrollinLiveCapture'/>\n"
- #endif
- " <separator/>\n"
- " <menuitem name='ZoomIn' action='/View/ZoomIn'/>\n"
- " <menuitem name='ZoomOut' action='/View/ZoomOut'/>\n"
- " <menuitem name='NormalSize' action='/View/NormalSize'/>\n"
- " <separator/>\n"
- " <menuitem name='ResizeAllColumns' action='/View/ResizeAllColumns'/>\n"
- " <menuitem name='DisplayedColumns' action='/View/DisplayedColumns'/>\n"
- " <separator/>\n"
- " <menuitem name='ExpandSubtrees' action='/View/ExpandSubtrees'/>\n"
- " <menuitem name='ExpandAll' action='/View/ExpandAll'/>\n"
- " <menuitem name='CollapseAll' action='/View/CollapseAll'/>\n"
- " <separator/>\n"
- " <menu name= 'ColorizeConversation' action='/View/ColorizeConversation'>\n"
- " <menuitem name='Color1' action='/View/ColorizeConversation/Color 1'/>\n"
- " <menuitem name='Color2' action='/View/ColorizeConversation/Color 2'/>\n"
- " <menuitem name='Color3' action='/View/ColorizeConversation/Color 3'/>\n"
- " <menuitem name='Color4' action='/View/ColorizeConversation/Color 4'/>\n"
- " <menuitem name='Color5' action='/View/ColorizeConversation/Color 5'/>\n"
- " <menuitem name='Color6' action='/View/ColorizeConversation/Color 6'/>\n"
- " <menuitem name='Color7' action='/View/ColorizeConversation/Color 7'/>\n"
- " <menuitem name='Color8' action='/View/ColorizeConversation/Color 8'/>\n"
- " <menuitem name='Color9' action='/View/ColorizeConversation/Color 9'/>\n"
- " <menuitem name='Color10' action='/View/ColorizeConversation/Color 10'/>\n"
- " <menuitem name='NewColoringRule' action='/View/ColorizeConversation/NewColoringRule'/>\n"
- " </menu>\n"
- " <separator/>\n"
- " <menuitem name='ResetColoring1-10' action='/View/ResetColoring1-10'/>\n"
- " <menuitem name='ColoringRules' action='/View/ColoringRules'/>\n"
- " <separator/>\n"
- " <menuitem name='ShowPacketinNewWindow' action='/View/ShowPacketinNewWindow'/>\n"
- " <menuitem name='Reload' action='/View/Reload'/>\n"
- " </menu>\n"
- " <menu name= 'GoMenu' action='/Go'>\n"
- " <menuitem name='Back' action='/Go/Back'/>\n"
- " <menuitem name='Forward' action='/Go/Forward'/>\n"
- " <menuitem name='Goto' action='/Go/Goto'/>\n"
- " <menuitem name='GotoCorrespondingPacket' action='/Go/GotoCorrespondingPacket'/>\n"
- " <separator/>\n"
- " <menuitem name='PreviousPacket' action='/Go/PreviousPacket'/>\n"
- " <menuitem name='NextPacket' action='/Go/NextPacket'/>\n"
- " <menuitem name='FirstPacket' action='/Go/FirstPacket'/>\n"
- " <menuitem name='LastPacket' action='/Go/LastPacket'/>\n"
- " <menuitem name='PreviousPacketInConversation' action='/Go/PreviousPacketInConversation'/>\n"
- " <menuitem name='NextPacketInConversation' action='/Go/NextPacketInConversation'/>\n"
- " </menu>\n"
- #ifdef HAVE_LIBPCAP
- " <menu name= 'CaptureMenu' action='/Capture'>\n"
- " <menuitem name='Interfaces' action='/Capture/Interfaces'/>\n"
- " <menuitem name='Options' action='/Capture/Options'/>\n"
- " <menuitem name='Start' action='/Capture/Start'/>\n"
- " <menuitem name='Stop' action='/Capture/Stop'/>\n"
- " <menuitem name='Restart' action='/Capture/Restart'/>\n"
- " <menuitem name='CaptureFilters' action='/Capture/CaptureFilters'/>\n"
- " <menuitem name='RefreshInterfaces' action='/Capture/RefreshInterfaces'/>\n"
- " </menu>\n"
- #endif
- " <menu name= 'AnalyzeMenu' action='/Analyze'>\n"
- " <menuitem name='DisplayFilters' action='/Analyze/DisplayFilters'/>\n"
- " <menuitem name='DisplayFilterMacros' action='/Analyze/DisplayFilterMacros'/>\n"
- " <separator/>\n"
- " <menuitem name='ApplyasColumn' action='/Analyze/ApplyasColumn'/>\n"
- " <menu name= 'ApplyAsFilter' action='/ApplyasFilter'>\n"
- " <menuitem name='Selected' action='/ApplyasFilter/Selected'/>\n"
- " <menuitem name='NotSelected' action='/ApplyasFilter/Not Selected'/>\n"
- " <menuitem name='AndSelected' action='/ApplyasFilter/AndSelected'/>\n"
- " <menuitem name='OrSelected' action='/ApplyasFilter/OrSelected'/>\n"
- " <menuitem name='AndNotSelected' action='/ApplyasFilter/AndNotSelected'/>\n"
- " <menuitem name='OrNotSelected' action='/ApplyasFilter/OrNotSelected'/>\n"
- " </menu>\n"
- " <menu name= 'PrepareaFilter' action='/PrepareaFilter'>\n"
- " <menuitem name='Selected' action='/PrepareaFilter/Selected'/>\n"
- " <menuitem name='NotSelected' action='/PrepareaFilter/Not Selected'/>\n"
- " <menuitem name='AndSelected' action='/PrepareaFilter/AndSelected'/>\n"
- " <menuitem name='OrSelected' action='/PrepareaFilter/OrSelected'/>\n"
- " <menuitem name='AndNotSelected' action='/PrepareaFilter/AndNotSelected'/>\n"
- " <menuitem name='OrNotSelected' action='/PrepareaFilter/OrNotSelected'/>\n"
- " </menu>\n"
- " <separator/>\n"
- " <menuitem name='EnabledProtocols' action='/Analyze/EnabledProtocols'/>\n"
- " <menuitem name='DecodeAs' action='/Analyze/DecodeAs'/>\n"
- " <menuitem name='UserSpecifiedDecodes' action='/Analyze/UserSpecifiedDecodes'/>\n"
- " <separator/>\n"
- " <menuitem name='FollowTCPStream' action='/Analyze/FollowTCPStream'/>\n"
- " <menuitem name='FollowUDPStream' action='/Analyze/FollowUDPStream'/>\n"
- " <menuitem name='FollowSSLStream' action='/Analyze/FollowSSLStream'/>\n"
- " <menuitem name='ExpertInfo' action='/Analyze/ExpertInfo'/>\n"
- " <menu name= 'ConversationFilterMenu' action='/Analyze/ConversationFilter'>\n"
- " <placeholder name='Filters'/>\n"
- " </menu>\n"
- " </menu>\n"
- " <menu name= 'StatisticsMenu' action='/Statistics'>\n"
- " <menuitem name='Summary' action='/Statistics/Summary'/>\n"
- " <menuitem name='ShowCommentsSummary' action='/Statistics/CommentsSummary'/>\n"
- " <menuitem name='ShowAddreRes' action='/Statistics/ShowAddreRes'/>\n"
- " <menuitem name='ProtocolHierarchy' action='/Statistics/ProtocolHierarchy'/>\n"
- " <menuitem name='Conversations' action='/Statistics/Conversations'/>\n"
- " <menuitem name='Endpoints' action='/Statistics/Endpoints'/>\n"
- " <menuitem name='PacketLengths' action='/Statistics/plen'/>\n"
- " <menuitem name='IOGraphs' action='/Statistics/IOGraphs'/>\n"
- " <separator/>\n"
- " <menu name= 'ConversationListMenu' action='/Statistics/ConversationList'>\n"
- " <menuitem name='Ethernet' action='/Statistics/ConversationList/Ethernet'/>\n"
- " <menuitem name='FibreChannel' action='/Statistics/ConversationList/FibreChannel'/>\n"
- " <menuitem name='FDDI' action='/Statistics/ConversationList/FDDI'/>\n"
- " <menuitem name='IP' action='/Statistics/ConversationList/IP'/>\n"
- " <menuitem name='IPv6' action='/Statistics/ConversationList/IPv6'/>\n"
- " <menuitem name='IPX' action='/Statistics/ConversationList/IPX'/>\n"
- " <menuitem name='JXTA' action='/Statistics/ConversationList/JXTA'/>\n"
- " <menuitem name='NCP' action='/Statistics/ConversationList/NCP'/>\n"
- " <menuitem name='RSVP' action='/Statistics/ConversationList/RSVP'/>\n"
- " <menuitem name='SCTP' action='/Statistics/ConversationList/SCTP'/>\n"
- " <menuitem name='TCPIP' action='/Statistics/ConversationList/TCPIP'/>\n"
- " <menuitem name='TR' action='/Statistics/ConversationList/TR'/>\n"
- " <menuitem name='UDPIP' action='/Statistics/ConversationList/UDPIP'/>\n"
- " <menuitem name='USB' action='/Statistics/ConversationList/USB'/>\n"
- " <menuitem name='WLAN' action='/Statistics/ConversationList/WLAN'/>\n"
- " </menu>\n"
- " <menu name= 'EndpointListMenu' action='/Statistics/EndpointList'>\n"
- " <menuitem name='Ethernet' action='/Statistics/EndpointList/Ethernet'/>\n"
- " <menuitem name='FibreChannel' action='/Statistics/EndpointList/FibreChannel'/>\n"
- " <menuitem name='FDDI' action='/Statistics/EndpointList/FDDI'/>\n"
- " <menuitem name='IP' action='/Statistics/EndpointList/IP'/>\n"
- " <menuitem name='IPv6' action='/Statistics/EndpointList/IPv6'/>\n"
- " <menuitem name='IPX' action='/Statistics/EndpointList/IPX'/>\n"
- " <menuitem name='JXTA' action='/Statistics/EndpointList/JXTA'/>\n"
- " <menuitem name='NCP' action='/Statistics/EndpointList/NCP'/>\n"
- " <menuitem name='RSVP' action='/Statistics/EndpointList/RSVP'/>\n"
- " <menuitem name='SCTP' action='/Statistics/EndpointList/SCTP'/>\n"
- " <menuitem name='TCPIP' action='/Statistics/EndpointList/TCPIP'/>\n"
- " <menuitem name='TR' action='/Statistics/EndpointList/TR'/>\n"
- " <menuitem name='UDPIP' action='/Statistics/EndpointList/UDPIP'/>\n"
- " <menuitem name='USB' action='/Statistics/EndpointList/USB'/>\n"
- " <menuitem name='WLAN' action='/Statistics/EndpointList/WLAN'/>\n"
- " </menu>\n"
- " <menu name='ServiceResponseTimeMenu' action='/Statistics/ServiceResponseTime'>\n"
- " <menuitem name='DCE-RPC' action='/Statistics/ServiceResponseTime/DCE-RPC'/>\n"
- " <menuitem name='ONC-RPC' action='/Statistics/ServiceResponseTime/ONC-RPC'/>\n"
- " </menu>\n"
- " <separator/>\n"
- " <menuitem name='ANCP' action='/Statistics/ancp'/>\n"
- " <menu name= 'BACnetMenu' action='/Statistics/BACnet'>\n"
- " <menuitem name='bacapp_instanceid' action='/Statistics/BACnet/bacapp_instanceid'/>\n"
- " <menuitem name='bacapp_ip' action='/Statistics/BACnet/bacapp_ip'/>\n"
- " <menuitem name='bacapp_objectid' action='/Statistics/BACnet/bacapp_objectid'/>\n"
- " <menuitem name='bacapp_service' action='/Statistics/BACnet/bacapp_service'/>\n"
- " </menu>\n"
- " <menuitem name='Collectd' action='/Statistics/collectd'/>\n"
- " <menuitem name='Compare' action='/Statistics/compare'/>\n"
- " <menuitem name='FlowGraph' action='/Statistics/FlowGraph'/>\n"
- " <menuitem name='HART-IP' action='/Statistics/hart_ip'/>\n"
- " <menu name= 'HTTPMenu' action='/Statistics/HTTP'>\n"
- " <menuitem name='http' action='/Statistics/HTTP/http'/>\n"
- " <menuitem name='http_req' action='/Statistics/HTTP/http_req'/>\n"
- " <menuitem name='htt…
Large files files are truncated, but you can click here to view the full file