diff options
Diffstat (limited to 'gtk')
42 files changed, 425 insertions, 434 deletions
diff --git a/gtk/Makefile.common b/gtk/Makefile.common index 4da46466f0..c3d5bb88aa 100644 --- a/gtk/Makefile.common +++ b/gtk/Makefile.common @@ -3,7 +3,7 @@ # a) common to both files and # b) portable between both files # -# $Id: Makefile.common,v 1.6 2004/02/20 09:09:11 guy Exp $ +# $Id: Makefile.common,v 1.7 2004/02/22 18:44:02 ulfl Exp $ # # Ethereal - Network traffic analyzer # By Gerald Combs <gerald@ethereal.com> @@ -46,7 +46,6 @@ ETHEREAL_GTK_SRC = \ file_dlg.c \ filter_prefs.c \ find_dlg.c \ - follow_dlg.c \ goto_dlg.c \ gtk_stat_util.c \ gui_prefs.c \ @@ -73,7 +72,6 @@ ETHEREAL_GTK_SRC = \ summary_dlg.c \ supported_protos_dlg.c \ tap_dfilter_dlg.c \ - tcp_graph.c \ toolbar.c \ ui_util.c @@ -92,6 +90,7 @@ ETHEREAL_TAP_SRC = \ endpoint_talkers_tr.c \ endpoint_talkers_udpip.c \ fc_stat.c \ + follow_dlg.c \ gsm_a_stat.c \ gsm_map_stat.c \ h225_counter.c \ @@ -113,5 +112,6 @@ ETHEREAL_TAP_SRC = \ rpc_stat.c \ rtp_analysis.c \ rtp_stream_dlg.c \ + tcp_graph.c \ smb_stat.c \ wsp_stat.c diff --git a/gtk/ansi_a_stat.c b/gtk/ansi_a_stat.c index 51249f0e03..78f5157753 100644 --- a/gtk/ansi_a_stat.c +++ b/gtk/ansi_a_stat.c @@ -5,7 +5,7 @@ * * MUCH code modified from service_response_time_table.c. * - * $Id: ansi_a_stat.c,v 1.13 2004/02/11 04:28:47 guy Exp $ + * $Id: ansi_a_stat.c,v 1.14 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -534,12 +534,9 @@ register_tap_listener_gtkansi_a_stat(void) exit(1); } -} - -void -register_tap_menu_gtkansi_a_stat(void) -{ - register_tap_menu_item("_Statistics/ANSI A-Interface/BSMAP", ansi_a_stat_gtk_bsmap_cb, NULL, NULL ,NULL); - register_tap_menu_item("_Statistics/ANSI A-Interface/DTAP", ansi_a_stat_gtk_dtap_cb, NULL, NULL ,NULL); + register_tap_menu_item("ANSI/A-Interface BSMAP", REGISTER_TAP_LAYER_APPLICATION, + ansi_a_stat_gtk_bsmap_cb, NULL, NULL ,NULL); + register_tap_menu_item("ANSI/A-Interface DTAP", REGISTER_TAP_LAYER_APPLICATION, + ansi_a_stat_gtk_dtap_cb, NULL, NULL ,NULL); } diff --git a/gtk/ansi_map_stat.c b/gtk/ansi_map_stat.c index 2c7832f750..b2965723b4 100644 --- a/gtk/ansi_map_stat.c +++ b/gtk/ansi_map_stat.c @@ -5,7 +5,7 @@ * * MUCH code modified from service_response_time_table.c. * - * $Id: ansi_map_stat.c,v 1.16 2004/02/11 04:28:47 guy Exp $ + * $Id: ansi_map_stat.c,v 1.17 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -467,11 +467,7 @@ register_tap_listener_gtkansi_map_stat(void) exit(1); } -} - -void -register_tap_menu_gtkansi_map_stat(void) -{ - register_tap_menu_item("_Statistics/ANSI MAP Operation", ansi_map_stat_gtk_cb, NULL, NULL, NULL); + register_tap_menu_item("ANSI/MAP Operation", REGISTER_TAP_LAYER_APPLICATION, + ansi_map_stat_gtk_cb, NULL, NULL, NULL); } diff --git a/gtk/bootp_stat.c b/gtk/bootp_stat.c index 2a99210795..5b11b5ffd2 100644 --- a/gtk/bootp_stat.c +++ b/gtk/bootp_stat.c @@ -1,7 +1,7 @@ /* bootp_stat.c * boop_stat 2003 Jean-Michel FAYARD * - * $Id: bootp_stat.c,v 1.18 2004/02/13 00:53:34 guy Exp $ + * $Id: bootp_stat.c,v 1.19 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -357,11 +357,7 @@ void register_tap_listener_gtkdhcpstat(void) { register_ethereal_tap("bootp,stat,", gtk_dhcpstat_init); -} -void -register_tap_menu_gtkdhcpstat(void) -{ - register_tap_menu_item("_Statistics/Watch protocol/BOOTP-DHCP...", + register_tap_menu_item("BOOTP-DHCP (Watch Protocol)", REGISTER_TAP_LAYER_NETWORK, gtk_dhcpstat_cb, NULL, NULL, NULL); } diff --git a/gtk/dcerpc_stat.c b/gtk/dcerpc_stat.c index 8345fe0504..3b08c7d1e3 100644 --- a/gtk/dcerpc_stat.c +++ b/gtk/dcerpc_stat.c @@ -1,7 +1,7 @@ /* dcerpc_stat.c * dcerpc_stat 2002 Ronnie Sahlberg * - * $Id: dcerpc_stat.c,v 1.49 2004/02/13 00:53:34 guy Exp $ + * $Id: dcerpc_stat.c,v 1.50 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -676,11 +676,7 @@ void register_tap_listener_gtkdcerpcstat(void) { register_ethereal_tap("dcerpc,srt,", gtk_dcerpcstat_init); -} -void -register_tap_menu_gtkdcerpcstat(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/DCE-RPC...", + register_tap_menu_item("DCE-RPC (Service Response Time...)", REGISTER_TAP_LAYER_APPLICATION, gtk_dcerpcstat_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_eth.c b/gtk/endpoint_talkers_eth.c index 447faf5f08..0ee33796c9 100644 --- a/gtk/endpoint_talkers_eth.c +++ b/gtk/endpoint_talkers_eth.c @@ -1,7 +1,7 @@ /* endpoint_talkers_eth.c * endpoint_talkers_eth 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_eth.c,v 1.22 2004/02/11 04:28:47 guy Exp $ + * $Id: endpoint_talkers_eth.c,v 1.23 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_eth_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_eth_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/Ethernet", - gtk_eth_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_eth_talkers(void) { register_ethereal_tap("conv,eth", gtk_eth_talkers_init); + + register_tap_menu_item("Ethernet/Conversation List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_eth_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_fc.c b/gtk/endpoint_talkers_fc.c index b3b081ac03..098e3d09d7 100644 --- a/gtk/endpoint_talkers_fc.c +++ b/gtk/endpoint_talkers_fc.c @@ -1,7 +1,7 @@ /* endpoint_talkers_fc.c * endpoint_talkers_fc 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_fc.c,v 1.22 2004/02/11 04:28:47 guy Exp $ + * $Id: endpoint_talkers_fc.c,v 1.23 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_fc_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_fc_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/Fibre Channel", - gtk_fc_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_fc_talkers(void) { register_ethereal_tap("conv,fc", gtk_fc_talkers_init); + + register_tap_menu_item("Fibre Channel/Conversation List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_fc_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_fddi.c b/gtk/endpoint_talkers_fddi.c index 3ccc31e389..4bdab82a76 100644 --- a/gtk/endpoint_talkers_fddi.c +++ b/gtk/endpoint_talkers_fddi.c @@ -1,7 +1,7 @@ /* endpoint_talkers_fddi.c * endpoint_talkers_fddi 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_fddi.c,v 1.17 2004/02/11 04:28:47 guy Exp $ + * $Id: endpoint_talkers_fddi.c,v 1.18 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_fddi_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_fddi_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/FDDI", - gtk_fddi_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_fddi_talkers(void) { register_ethereal_tap("conv,fddi", gtk_fddi_talkers_init); + + register_tap_menu_item("FDDI/Conversation List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_fddi_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_ip.c b/gtk/endpoint_talkers_ip.c index 713f81c1bb..15448964be 100644 --- a/gtk/endpoint_talkers_ip.c +++ b/gtk/endpoint_talkers_ip.c @@ -1,7 +1,7 @@ /* endpoint_talkers_ip.c * endpoint_talkers_ip 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_ip.c,v 1.23 2004/02/11 04:28:47 guy Exp $ + * $Id: endpoint_talkers_ip.c,v 1.24 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -75,18 +75,11 @@ gtk_ip_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_ip_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/IPv4", - gtk_ip_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_ip_talkers(void) { register_ethereal_tap("conv,ip", gtk_ip_talkers_init); + + register_tap_menu_item("IP/Conversation List (IPv4)", REGISTER_TAP_LAYER_NETWORK, + gtk_ip_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_ipx.c b/gtk/endpoint_talkers_ipx.c index abbe845c69..d1034ced86 100644 --- a/gtk/endpoint_talkers_ipx.c +++ b/gtk/endpoint_talkers_ipx.c @@ -1,7 +1,7 @@ /* endpoint_talkers_ipx.c * endpoint_talkers_ipx 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_ipx.c,v 1.21 2004/02/11 04:28:47 guy Exp $ + * $Id: endpoint_talkers_ipx.c,v 1.22 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_ipx_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_ipx_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/IPX", - gtk_ipx_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_ipx_talkers(void) { register_ethereal_tap("conv,ipx", gtk_ipx_talkers_init); + + register_tap_menu_item("IPX/Conversation List", REGISTER_TAP_LAYER_NETWORK, + gtk_ipx_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_tcpip.c b/gtk/endpoint_talkers_tcpip.c index 967deaed6a..5b5c596ee7 100644 --- a/gtk/endpoint_talkers_tcpip.c +++ b/gtk/endpoint_talkers_tcpip.c @@ -1,7 +1,7 @@ /* endpoint_talkers_tcpip.c * endpoint_talkers_tcpip 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_tcpip.c,v 1.24 2004/02/11 04:28:48 guy Exp $ + * $Id: endpoint_talkers_tcpip.c,v 1.25 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_tcpip_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_tcpip_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/TCP (IPv4 IPv6)", - gtk_tcpip_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_tcpip_talkers(void) { register_ethereal_tap("conv,tcp", gtk_tcpip_talkers_init); + + register_tap_menu_item("TCP/Conversation List (IPv4 & IPv6)", REGISTER_TAP_LAYER_TRANSPORT, + gtk_tcpip_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_tr.c b/gtk/endpoint_talkers_tr.c index c37a150872..01e9efa2b6 100644 --- a/gtk/endpoint_talkers_tr.c +++ b/gtk/endpoint_talkers_tr.c @@ -1,7 +1,7 @@ /* endpoint_talkers_tr.c * endpoint_talkers_tr 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_tr.c,v 1.23 2004/02/11 04:28:48 guy Exp $ + * $Id: endpoint_talkers_tr.c,v 1.24 2004/02/22 18:44:00 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_tr_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_tr_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/Token Ring", - gtk_tr_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_tr_talkers(void) { register_ethereal_tap("conv,tr", gtk_tr_talkers_init); + + register_tap_menu_item("Token Ring/Conversation List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_tr_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/endpoint_talkers_udpip.c b/gtk/endpoint_talkers_udpip.c index 5140326a10..9507d257fa 100644 --- a/gtk/endpoint_talkers_udpip.c +++ b/gtk/endpoint_talkers_udpip.c @@ -1,7 +1,7 @@ /* endpoint_talkers_udpip.c * endpoint_talkers_udpip 2003 Ronnie Sahlberg * - * $Id: endpoint_talkers_udpip.c,v 1.24 2004/02/11 04:28:48 guy Exp $ + * $Id: endpoint_talkers_udpip.c,v 1.25 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,18 +77,11 @@ gtk_udpip_endpoints_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_udpip_talkers(void) -{ - register_tap_menu_item("_Statistics/Conversation List/UDP (IPv4 IPv6)", - gtk_udpip_endpoints_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_udpip_talkers(void) { register_ethereal_tap("conv,udp", gtk_udpip_talkers_init); + + register_tap_menu_item("UDP/Conversation List (IPv4 & IPv6)", REGISTER_TAP_LAYER_TRANSPORT, + gtk_udpip_endpoints_cb, NULL, NULL, NULL); } diff --git a/gtk/fc_stat.c b/gtk/fc_stat.c index 3129aa98eb..2a703783f7 100644 --- a/gtk/fc_stat.c +++ b/gtk/fc_stat.c @@ -1,7 +1,7 @@ /* fc_stat.c * fc_stat 2003 Ronnie Sahlberg * - * $Id: fc_stat.c,v 1.25 2004/02/13 00:53:35 guy Exp $ + * $Id: fc_stat.c,v 1.26 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -312,11 +312,7 @@ void register_tap_listener_gtkfcstat(void) { register_ethereal_tap("fc,srt", gtk_fcstat_init); -} -void -register_tap_menu_gtkfcstat(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/Fibre Channel...", + register_tap_menu_item("Fibre Channel/Service Response Time...", REGISTER_TAP_LAYER_DATA_LINK, gtk_fcstat_cb, NULL, NULL, NULL); } diff --git a/gtk/follow_dlg.c b/gtk/follow_dlg.c index a04f9376d7..724ad85040 100644 --- a/gtk/follow_dlg.c +++ b/gtk/follow_dlg.c @@ -1,6 +1,6 @@ /* follow_dlg.c * - * $Id: follow_dlg.c,v 1.46 2004/02/13 00:53:35 guy Exp $ + * $Id: follow_dlg.c,v 1.47 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -64,6 +64,8 @@ #include <epan/epan_dissect.h> #include <epan/filesystem.h> #include "compat_macros.h" +#include "ipproto.h" +#include "tap_menu.h" /* Show Stream */ typedef enum { @@ -1014,3 +1016,20 @@ follow_save_as_destroy_cb(GtkWidget * win _U_, gpointer data) /* Note that we no longer have a dialog box. */ follow_info->follow_save_as_w = NULL; } + + + +gboolean follow_stream_selected_packet_enabled(frame_data *current_frame, epan_dissect_t *edt) +{ + return current_frame != NULL ? (edt->pi.ipproto == IP_PROTO_TCP) : FALSE; +} + + +void +register_tap_listener_follow_stream(void) +{ + register_tap_menu_item("TCP/Follow Stream", REGISTER_TAP_LAYER_TRANSPORT, + follow_stream_cb, follow_stream_selected_packet_enabled, NULL, NULL); +} + + diff --git a/gtk/gsm_a_stat.c b/gtk/gsm_a_stat.c index cd69b1d787..6dc40385b7 100644 --- a/gtk/gsm_a_stat.c +++ b/gtk/gsm_a_stat.c @@ -5,7 +5,7 @@ * * MUCH code modified from service_response_time_table.c. * - * $Id: gsm_a_stat.c,v 1.13 2004/02/11 04:28:48 guy Exp $ + * $Id: gsm_a_stat.c,v 1.14 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -690,33 +690,28 @@ register_tap_listener_gtkgsm_a_stat(void) exit(1); } -} - -void -register_tap_menu_gtkgsm_a_stat(void) -{ - register_tap_menu_item("_Statistics/GSM A-Interface/BSSMAP", + register_tap_menu_item("GSM/A-Interface BSSMAP", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_bssmap_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/Mobility Management", + register_tap_menu_item("GSM/A-Interface DTAP/Mobility Management", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_mm_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/Radio Resource Management", + register_tap_menu_item("GSM/A-Interface DTAP/Radio Resource Management", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_rr_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/Call Control", + register_tap_menu_item("GSM/A-Interface DTAP/Call Control", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_cc_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/GPRS Mobility Management", + register_tap_menu_item("GSM/A-Interface DTAP/GPRS Mobility Management", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_gmm_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/Short Message Service", + register_tap_menu_item("GSM/A-Interface DTAP/Short Message Service", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_sms_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/GPRS Session Management", + register_tap_menu_item("GSM/A-Interface DTAP/GPRS Session Management", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_sm_cb, NULL, NULL, NULL); - register_tap_menu_item("_Statistics/GSM A-Interface/DTAP/Supplementary Services", + register_tap_menu_item("GSM/A-Interface DTAP/Supplementary Services", REGISTER_TAP_LAYER_APPLICATION, gsm_a_stat_gtk_dtap_ss_cb, NULL, NULL, NULL); } diff --git a/gtk/gsm_map_stat.c b/gtk/gsm_map_stat.c index 52c73040f1..f02d6a8fa9 100644 --- a/gtk/gsm_map_stat.c +++ b/gtk/gsm_map_stat.c @@ -5,7 +5,7 @@ * * MUCH code modified from service_response_time_table.c. * - * $Id: gsm_map_stat.c,v 1.2 2004/02/18 04:11:42 jmayer Exp $ + * $Id: gsm_map_stat.c,v 1.3 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -478,11 +478,7 @@ register_tap_listener_gtkgsm_map_stat(void) exit(1); } -} - -void -register_tap_menu_gtkgsm_map_stat(void) -{ - register_tap_menu_item("_Statistics/GSM MAP Operation", gsm_map_stat_gtk_cb, NULL, NULL, NULL); + register_tap_menu_item("GSM/MAP Operation", REGISTER_TAP_LAYER_APPLICATION, + gsm_map_stat_gtk_cb, NULL, NULL, NULL); } diff --git a/gtk/h225_counter.c b/gtk/h225_counter.c index a338f79ce1..ef257f1307 100644 --- a/gtk/h225_counter.c +++ b/gtk/h225_counter.c @@ -2,7 +2,7 @@ * h225 message counter for ethereal * Copyright 2003 Lars Roland * - * $Id: h225_counter.c,v 1.12 2004/02/13 00:53:35 guy Exp $ + * $Id: h225_counter.c,v 1.13 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -519,11 +519,7 @@ void register_tap_listener_gtk_h225counter(void) { register_ethereal_tap("h225,counter", gtk_h225counter_init); -} -void -register_tap_menu_gtk_h225counter(void) -{ - register_tap_menu_item("_Statistics/Watch protocol/ITU-T H.225...", + register_tap_menu_item("ITU-T H.225/Watch Protocol...", REGISTER_TAP_LAYER_APPLICATION, gtk_tap_dfilter_dlg_cb, NULL, NULL, &(h225_counter_dlg)); } diff --git a/gtk/h225_ras_srt.c b/gtk/h225_ras_srt.c index 331c0a26f2..479d2f7fc0 100644 --- a/gtk/h225_ras_srt.c +++ b/gtk/h225_ras_srt.c @@ -2,7 +2,7 @@ * h225 RAS Service Response Time statistics for ethereal * Copyright 2003 Lars Roland * - * $Id: h225_ras_srt.c,v 1.11 2004/02/13 00:53:35 guy Exp $ + * $Id: h225_ras_srt.c,v 1.12 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -316,11 +316,7 @@ void register_tap_listener_gtk_h225rassrt(void) { register_ethereal_tap("h225,srt", gtk_h225rassrt_init); -} -void -register_tap_menu_gtk_h225rassrt(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/ITU-T H.225 RAS ...", + register_tap_menu_item("ITU-T H.225/RAS (Service Response Time ...)", REGISTER_TAP_LAYER_APPLICATION, gtk_tap_dfilter_dlg_cb, NULL, NULL, &(h225_rassrt_dlg)); } diff --git a/gtk/hostlist_eth.c b/gtk/hostlist_eth.c index 57810f68a6..c374c17bc0 100644 --- a/gtk/hostlist_eth.c +++ b/gtk/hostlist_eth.c @@ -1,7 +1,7 @@ /* hostlist_eth.c 2004 Ian Schorr * modified from endpoint_talkers_eth.c 2003 Ronnie Sahlberg * - * $Id: hostlist_eth.c,v 1.1 2004/02/20 09:09:11 guy Exp $ + * $Id: hostlist_eth.c,v 1.2 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_eth_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_eth_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/Ethernet", - gtk_eth_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_eth_hostlist(void) { register_ethereal_tap("conv,eth", gtk_eth_hostlist_init); + + register_tap_menu_item("Ethernet/Host List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_eth_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_fc.c b/gtk/hostlist_fc.c index 1c43e5812f..e64e2ac73f 100644 --- a/gtk/hostlist_fc.c +++ b/gtk/hostlist_fc.c @@ -1,7 +1,7 @@ /* hostlist_fc.c 2004 Ian Schorr * modified from endpoint_talkers_fc.c 2003 Ronnie Sahlberg * - * $Id: hostlist_fc.c,v 1.1 2004/02/20 09:09:11 guy Exp $ + * $Id: hostlist_fc.c,v 1.2 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_fc_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_fc_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/Fibre Channel", - gtk_fc_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_fc_hostlist(void) { register_ethereal_tap("conv,fc", gtk_fc_hostlist_init); + + register_tap_menu_item("Fibre Channel/Host List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_fc_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_fddi.c b/gtk/hostlist_fddi.c index 419f828a00..463d57421b 100644 --- a/gtk/hostlist_fddi.c +++ b/gtk/hostlist_fddi.c @@ -1,7 +1,7 @@ /* hostlist_fddi.c 2004 Ian Schorr * modified from endpoint_talkers_fddi.c 2003 Ronnie Sahlberg * - * $Id: hostlist_fddi.c,v 1.1 2004/02/20 09:09:11 guy Exp $ + * $Id: hostlist_fddi.c,v 1.2 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_fddi_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_fddi_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/FDDI", - gtk_fddi_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_fddi_hostlist(void) { register_ethereal_tap("conv,fddi", gtk_fddi_hostlist_init); + + register_tap_menu_item("FDDI/Host List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_fddi_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_ip.c b/gtk/hostlist_ip.c index 26f83ba3b4..d845dd8e79 100644 --- a/gtk/hostlist_ip.c +++ b/gtk/hostlist_ip.c @@ -1,7 +1,7 @@ /* hostlist_ip.c 2004 Ian Schorr * modified from endpoint_talkers_ip.c 2003 Ronnie Sahlberg * - * $Id: hostlist_ip.c,v 1.1 2004/02/20 09:09:11 guy Exp $ + * $Id: hostlist_ip.c,v 1.2 2004/02/22 18:44:01 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -80,16 +80,11 @@ gtk_ip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_ip_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/IPv4", - gtk_ip_hostlist_cb, NULL, NULL, NULL); -} - - -void register_tap_listener_ip_hostlist(void) { register_ethereal_tap("conv,ip", gtk_ip_hostlist_init); + + register_tap_menu_item("IP/Host List (IPv4)", REGISTER_TAP_LAYER_NETWORK, + gtk_ip_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_ipx.c b/gtk/hostlist_ipx.c index a167408433..79cb79a087 100644 --- a/gtk/hostlist_ipx.c +++ b/gtk/hostlist_ipx.c @@ -1,7 +1,7 @@ /* hostlist_ipx.c 2004 Ian Schorr * modified from endpoint_talkers_ipx.c 2003 Ronnie Sahlberg * - * $Id: hostlist_ipx.c,v 1.1 2004/02/20 09:09:11 guy Exp $ + * $Id: hostlist_ipx.c,v 1.2 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_ipx_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_ipx_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/IPX", - gtk_ipx_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_ipx_hostlist(void) { register_ethereal_tap("conv,ipx", gtk_ipx_hostlist_init); + + register_tap_menu_item("IPX/Host List", REGISTER_TAP_LAYER_NETWORK, + gtk_ipx_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_tcpip.c b/gtk/hostlist_tcpip.c index 8349d453fe..13b312ba29 100644 --- a/gtk/hostlist_tcpip.c +++ b/gtk/hostlist_tcpip.c @@ -1,7 +1,7 @@ /* hostlist_tcpip.c 2004 Ian Schorr * modified from endpoint_talkers_tcpip.c 2003 Ronnie Sahlberg * - * $Id: hostlist_tcpip.c,v 1.1 2004/02/20 09:09:12 guy Exp $ + * $Id: hostlist_tcpip.c,v 1.2 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_tcpip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_tcpip_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/TCP (IPv4 IPv6)", - gtk_tcpip_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_tcpip_hostlist(void) { register_ethereal_tap("conv,tcp", gtk_tcpip_hostlist_init); + + register_tap_menu_item("TCP/Host List (IPv4 & IPv6)", REGISTER_TAP_LAYER_TRANSPORT, + gtk_tcpip_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_tr.c b/gtk/hostlist_tr.c index 44de1a7caf..5149f77f69 100644 --- a/gtk/hostlist_tr.c +++ b/gtk/hostlist_tr.c @@ -1,7 +1,7 @@ /* hostlist_tr.c 2004 Ian Schorr * modified from endpoint_talkers_tr.c 2003 Ronnie Sahlberg * - * $Id: hostlist_tr.c,v 1.1 2004/02/20 09:09:12 guy Exp $ + * $Id: hostlist_tr.c,v 1.2 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_tr_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_tr_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/Token Ring", - gtk_tr_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_tr_hostlist(void) { register_ethereal_tap("conv,tr", gtk_tr_hostlist_init); + + register_tap_menu_item("Token Ring/Host List", REGISTER_TAP_LAYER_DATA_LINK, + gtk_tr_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/hostlist_udpip.c b/gtk/hostlist_udpip.c index f4d8ec537b..cc5c4383bc 100644 --- a/gtk/hostlist_udpip.c +++ b/gtk/hostlist_udpip.c @@ -1,7 +1,7 @@ /* hostlist_udpip.c 2004 Ian Schorr * modified from endpoint_talkers_udpip.c 2003 Ronnie Sahlberg * - * $Id: hostlist_udpip.c,v 1.1 2004/02/20 09:09:12 guy Exp $ + * $Id: hostlist_udpip.c,v 1.2 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -81,18 +81,11 @@ gtk_udpip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_) void -register_tap_menu_udpip_hostlist(void) -{ - register_tap_menu_item("_Statistics/Host List/UDP (IPv4 IPv6)", - gtk_udpip_hostlist_cb, NULL, NULL, NULL); -} - - - - -void register_tap_listener_udpip_hostlist(void) { register_ethereal_tap("conv,udp", gtk_udpip_hostlist_init); + + register_tap_menu_item("UDP/Host List (IPv4 & IPv6)", REGISTER_TAP_LAYER_TRANSPORT, + gtk_udpip_hostlist_cb, NULL, NULL, NULL); } diff --git a/gtk/http_stat.c b/gtk/http_stat.c index 3fe78e75a8..3e93a9e372 100644 --- a/gtk/http_stat.c +++ b/gtk/http_stat.c @@ -1,7 +1,7 @@ /* http_stat.c * http_stat 2003 Jean-Michel FAYARD * - * $Id: http_stat.c,v 1.20 2004/02/13 00:53:35 guy Exp $ + * $Id: http_stat.c,v 1.21 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -603,11 +603,7 @@ void register_tap_listener_gtkhttpstat(void) { register_ethereal_tap("http,stat,", gtk_httpstat_init); -} -void -register_tap_menu_gtkhttpstat(void) -{ - register_tap_menu_item("_Statistics/Watch protocol/HTTP...", + register_tap_menu_item("HTTP (Watch Protocol)", REGISTER_TAP_LAYER_APPLICATION, gtk_httpstat_cb, NULL, NULL, NULL); } diff --git a/gtk/io_stat.c b/gtk/io_stat.c index 7063d0b0f2..c3feaf0189 100644 --- a/gtk/io_stat.c +++ b/gtk/io_stat.c @@ -1,7 +1,7 @@ /* io_stat.c * io_stat 2002 Ronnie Sahlberg * - * $Id: io_stat.c,v 1.63 2004/02/13 00:53:35 guy Exp $ + * $Id: io_stat.c,v 1.64 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -1791,11 +1791,7 @@ void register_tap_listener_gtk_iostat(void) { register_ethereal_tap("io,stat", gtk_iostat_init); -} -void -register_tap_menu_gtkiostat(void) -{ - register_tap_menu_item("_Statistics/IO/IO-Stat", gtk_iostat_cb, NULL, - NULL, NULL); + register_tap_menu_item("IO Statistics", REGISTER_TAP_LAYER_GENERIC, + gtk_iostat_cb, NULL, NULL, NULL); } diff --git a/gtk/isup_stat.c b/gtk/isup_stat.c index 827302297f..b22f6eb7cc 100644 --- a/gtk/isup_stat.c +++ b/gtk/isup_stat.c @@ -5,7 +5,7 @@ * * MUCH code modified from service_response_time_table.c. * - * $Id: isup_stat.c,v 1.17 2004/02/18 04:11:42 jmayer Exp $ + * $Id: isup_stat.c,v 1.18 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -472,11 +472,7 @@ register_tap_listener_gtkisup_stat(void) exit(1); } -} - -void -register_tap_menu_gtkisup_stat(void) -{ - register_tap_menu_item("_Statistics/ISUP Message Type", isup_stat_gtk_cb, NULL, NULL, NULL); + register_tap_menu_item("ISUP (Message Types)", REGISTER_TAP_LAYER_APPLICATION, + isup_stat_gtk_cb, NULL, NULL, NULL); } diff --git a/gtk/ldap_stat.c b/gtk/ldap_stat.c index a09a1d70a3..23f1f44084 100644 --- a/gtk/ldap_stat.c +++ b/gtk/ldap_stat.c @@ -1,7 +1,7 @@ /* ldap_stat.c * ldap_stat 2003 Ronnie Sahlberg * - * $Id: ldap_stat.c,v 1.13 2004/02/13 00:53:35 guy Exp $ + * $Id: ldap_stat.c,v 1.14 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -347,11 +347,7 @@ void register_tap_listener_gtkldapstat(void) { register_ethereal_tap("ldap,srt", gtk_ldapstat_init); -} -void -register_tap_menu_gtkldapstat(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/LDAP...", + register_tap_menu_item("LDAP (Service Response Time...)", REGISTER_TAP_LAYER_APPLICATION, gtk_ldapstat_cb, NULL, NULL, NULL); } diff --git a/gtk/main.c b/gtk/main.c index f0fc60feb6..52cced8933 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1,6 +1,6 @@ /* main.c * - * $Id: main.c,v 1.403 2004/02/21 13:40:06 ulfl Exp $ + * $Id: main.c,v 1.404 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -3787,7 +3787,7 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs) set_menu_object_data("/File/Open...", E_DFILTER_TE_KEY, filter_te); set_menu_object_data("/Analyze/Display Filters...", E_FILT_TE_PTR_KEY, filter_te); - set_menu_object_data("/Analyze/Follow TCP Stream", E_DFILTER_TE_KEY, + set_menu_object_data("/Analyze/TCP/Follow Stream", E_DFILTER_TE_KEY, filter_te); set_menu_object_data("/Analyze/Match/Selected", E_DFILTER_TE_KEY, filter_te); @@ -3814,6 +3814,9 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs) set_menu_object_data("/Analyze/Prepare/Or Not Selected", E_DFILTER_TE_KEY, filter_te); set_toolbar_object_data(E_DFILTER_TE_KEY, filter_te); + /* XXX: why does the popup menues depend on this? */ + set_menu_object_data("/Follow TCP Stream", E_DFILTER_TE_KEY, + filter_te); OBJECT_SET_DATA(popup_menu_object, E_DFILTER_TE_KEY, filter_te); OBJECT_SET_DATA(popup_menu_object, E_MPACKET_LIST_KEY, packet_list); diff --git a/gtk/menu.c b/gtk/menu.c index 781cb665b7..0d947f30a5 100644 --- a/gtk/menu.c +++ b/gtk/menu.c @@ -1,7 +1,7 @@ /* menu.c * Menu routines * - * $Id: menu.c,v 1.166 2004/02/20 18:43:59 ulfl Exp $ + * $Id: menu.c,v 1.167 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -77,6 +77,22 @@ extern void savehex_cb(GtkWidget * w, gpointer data _U_); static void clear_menu_recent_capture_file_cmd_cb(GtkWidget *w, gpointer unused _U_); +typedef struct _menu_item { + char *name; + gint layer; + gboolean enabled; + GtkItemFactoryCallback callback; + gpointer callback_data; + gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *); + gboolean (*selected_tree_row_enabled)(field_info *); + GList *children; +} menu_item_t; + +static GList *tap_menu_tree_root = NULL; + +static void +merge_all_tap_menus(GList *node); + #define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a)) static void menus_init(void); @@ -276,20 +292,6 @@ static GtkItemFactoryEntry menu_items[] = ITEM_FACTORY_ENTRY("/Analyze/_User Specified Decodes...", NULL, decode_show_cb, 0, NULL, NULL), ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL), - ITEM_FACTORY_ENTRY("/Analyze/_Follow TCP Stream", NULL, follow_stream_cb, - 0, NULL, NULL), -/* {"/Analyze/Graph", NULL, NULL, 0, NULL}, future use */ - ITEM_FACTORY_ENTRY("/Analyze/_TCP Stream Analysis", NULL, NULL, - 0, "<Branch>", NULL), - ITEM_FACTORY_ENTRY("/Analyze/TCP Stream Analysis/Time-Sequence Graph (Stevens)", - NULL, tcp_graph_cb, 0, NULL, NULL), - ITEM_FACTORY_ENTRY("/Analyze/TCP Stream Analysis/Time-Sequence Graph (tcptrace)", - NULL, tcp_graph_cb, 1, NULL, NULL), - ITEM_FACTORY_ENTRY("/Analyze/TCP Stream Analysis/Throughput Graph", NULL, - tcp_graph_cb, 2, NULL, NULL), - ITEM_FACTORY_ENTRY("/Analyze/TCP Stream Analysis/Round Trip Time Graph", NULL, - tcp_graph_cb, 3, NULL, NULL), - ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL), ITEM_FACTORY_ENTRY("/Analyze/Summar_y", NULL, summary_open_cb, 0, NULL, NULL), ITEM_FACTORY_ENTRY("/Analyze/Protocol _Hierarchy Statistics", NULL, proto_hier_stats_cb, 0, NULL, NULL), @@ -442,7 +444,6 @@ main_menu_new(GtkAccelGroup ** table) { static void menus_init(void) { - if (initialize) { initialize = FALSE; @@ -469,7 +470,8 @@ menus_init(void) { /* main */ main_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", grp); gtk_item_factory_create_items_ac(main_menu_factory, nmenu_items, menu_items, NULL, 2); - register_all_tap_menus(); /* must be done after creating the main menu */ + + merge_all_tap_menus(tap_menu_tree_root); /* Initialize enabled/disabled state of menu items */ set_menus_for_unsaved_capture_file(FALSE); @@ -491,17 +493,47 @@ menus_init(void) { } } -typedef struct _menu_item { - char *name; - gboolean enabled; - gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *); - gboolean (*selected_tree_row_enabled)(field_info *); - struct _menu_item *parent; - struct _menu_item *children; - struct _menu_item *next; -} menu_item_t; -static menu_item_t tap_menu_tree_root; +gint tap_menu_item_add_compare(gconstpointer a, gconstpointer b) +{ + return strcmp( + ((const menu_item_t *) a)->name, + ((const menu_item_t *) b)->name); +} + + +/* add a menuitem below the current node */ +GList * tap_menu_item_add( + gint layer, + char *name, + GtkItemFactoryCallback callback, + gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *), + gboolean (*selected_tree_row_enabled)(field_info *), + gpointer callback_data, + GList *curnode) +{ + menu_item_t *curr; + menu_item_t *child; + + + child = g_malloc(sizeof (menu_item_t)); + child->layer = layer; + child->name = name; + child->callback = callback; + child->selected_packet_enabled = selected_packet_enabled; + child->selected_tree_row_enabled = selected_tree_row_enabled; + child->callback_data = callback_data; + child->enabled = FALSE; + child->children = NULL; + + /* insert the new child node into the parent */ + curr = curnode->data; + curr->children = g_list_insert_sorted(curr->children, child, tap_menu_item_add_compare); + + /* return the new node */ + /* XXX: improve this */ + return g_list_find(curr->children, child); +} /* * Add a new menu item for a tap. @@ -525,27 +557,53 @@ static menu_item_t tap_menu_tree_root; * is selected and, if one is, on the tree row) and FALSE if not. */ void -register_tap_menu_item(char *name, GtkItemFactoryCallback callback, +register_tap_menu_item( + char *name, + gint layer, + GtkItemFactoryCallback callback, gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *), gboolean (*selected_tree_row_enabled)(field_info *), gpointer callback_data) { static const char toolspath[] = "/Analyze/"; + /*char *toolspath; */ char *p; char *menupath; size_t menupathlen; - GtkItemFactoryEntry *entry; - menu_item_t *curnode, *child; + menu_item_t *child; + GList *curnode; + GList *childnode; /* * The menu path must be relative. */ g_assert(*name != '/'); +#if 0 + switch(layer) { + case(REGISTER_TAP_LAYER_GENERIC): toolspath = "/Analyze/"; break; + case(REGISTER_TAP_LAYER_PHYSICAL): toolspath = "/Physical/"; break; + case(REGISTER_TAP_LAYER_DATA_LINK): toolspath = "/Link/"; break; + case(REGISTER_TAP_LAYER_NETWORK): toolspath = "/Network/"; break; + case(REGISTER_TAP_LAYER_TRANSPORT): toolspath = "/Transport/"; break; + case(REGISTER_TAP_LAYER_SESSION): toolspath = "/Session/"; break; + case(REGISTER_TAP_LAYER_PRESENTATION): toolspath = "/Presentation/"; break; + case(REGISTER_TAP_LAYER_APPLICATION): toolspath = "/Application/"; break; + default: + g_assert(0); + } +#endif + + /* add the (empty) root node, if not already done */ + if(tap_menu_tree_root == NULL) { + child = g_malloc0(sizeof (menu_item_t)); + tap_menu_tree_root = g_list_append(NULL, child); + } + /* * Create any submenus required. */ - curnode = &tap_menu_tree_root; + curnode = tap_menu_tree_root; p = name; while ((p = strchr(p, '/')) != NULL) { /* @@ -555,7 +613,7 @@ register_tap_menu_item(char *name, GtkItemFactoryCallback callback, * * Construct the absolute path name of that subtree. */ - menupathlen = sizeof toolspath + (p - name); + menupathlen = strlen(toolspath) + 1 + (p - name); menupath = g_malloc(menupathlen); strcpy(menupath, toolspath); strncat(menupath, name, p - name); @@ -564,39 +622,26 @@ register_tap_menu_item(char *name, GtkItemFactoryCallback callback, * Does there exist an entry with that path at this * level of the Analyze menu tree? */ - for (child = curnode->children; child != NULL; - child = child->next) { + child = curnode->data; + for (childnode = child->children; childnode != NULL; childnode = childnode->next) { + child = childnode->data; if (strcmp(child->name, menupath) == 0) break; } - if (child == NULL) { + if (childnode == NULL) { /* * No. Create such an item as a subtree, and * add it to the Tools menu tree. */ - entry = g_malloc0(sizeof (GtkItemFactoryEntry)); - entry->path = menupath; - entry->item_type = "<Branch>"; - gtk_item_factory_create_item(main_menu_factory, entry, - NULL, 2); - set_menu_sensitivity(main_menu_factory, menupath, - FALSE); /* no children yet */ - child = g_malloc(sizeof (menu_item_t)); - child->name = menupath; - child->selected_packet_enabled = NULL; - child->selected_tree_row_enabled = NULL; - child->enabled = FALSE; /* no children yet */ - child->parent = curnode; - child->children = NULL; - child->next = curnode->children; - curnode->children = child; + childnode = tap_menu_item_add( + layer, menupath, NULL, NULL ,NULL, NULL, curnode); } else { /* - * Yes. We don't need "menupath" any more. + * Yes. We don't need this "menupath" any longer. */ g_free(menupath); } - curnode = child; + curnode = childnode; /* * Skip over the '/' we found. @@ -606,12 +651,8 @@ register_tap_menu_item(char *name, GtkItemFactoryCallback callback, /* * Construct the main menu path for the menu item. - * - * "sizeof toolspath" includes the trailing '\0', so the sum - * of that and the length of "name" is enough to hold a string - * containing their concatenation. - */ - menupathlen = sizeof toolspath + strlen(name); + */ + menupathlen = strlen(toolspath) + 1 + strlen(name); menupath = g_malloc(menupathlen); strcpy(menupath, toolspath); strcat(menupath, name); @@ -620,22 +661,101 @@ register_tap_menu_item(char *name, GtkItemFactoryCallback callback, * Construct an item factory entry for the item, and add it to * the main menu. */ - entry = g_malloc0(sizeof (GtkItemFactoryEntry)); - entry->path = menupath; - entry->callback = callback; - gtk_item_factory_create_item(main_menu_factory, entry, callback_data, 2); - set_menu_sensitivity(main_menu_factory, menupath, FALSE); /* no capture file yet */ - child = g_malloc(sizeof (menu_item_t)); - child->name = menupath; - child->enabled = FALSE; /* no capture file yet, hence no taps yet */ - child->selected_packet_enabled = selected_packet_enabled; - child->selected_tree_row_enabled = selected_tree_row_enabled; - child->parent = curnode; - child->children = NULL; - child->next = curnode->children; - curnode->children = child; + tap_menu_item_add( + layer, menupath, callback, + selected_packet_enabled, selected_tree_row_enabled, + callback_data, curnode); } + +guint merge_tap_menus_layered(GList *node, gint layer) { + GtkItemFactoryEntry *entry; + GList *child; + guint added = 0; + menu_item_t *node_data = node->data; + + /* + * Is this a leaf node or an interior node? + */ + if (node_data->children == NULL) { + /* + * It's a leaf node. + */ + + /* + * The root node doesn't correspond to a menu tree item; it + * has a null name pointer. + */ + if (node_data->name != NULL && layer == node_data->layer) { + entry = g_malloc0(sizeof (GtkItemFactoryEntry)); + entry->path = node_data->name; + entry->callback = node_data->callback; + gtk_item_factory_create_item(main_menu_factory, entry, node_data->callback_data, 2); + set_menu_sensitivity(main_menu_factory, node_data->name, FALSE); /* no capture file yet */ + added++; + } + } else { + /* + * It's an interior node; call + * "merge_tap_menus_layered()" on all its children + */ + + /* + * The root node doesn't correspond to a menu tree item; it + * has a null name pointer. + */ + if (node_data->name != NULL && layer == node_data->layer) { + entry = g_malloc0(sizeof (GtkItemFactoryEntry)); + entry->path = node_data->name; + entry->item_type = "<Branch>"; + gtk_item_factory_create_item(main_menu_factory, entry, + NULL, 2); + set_menu_sensitivity(main_menu_factory, node_data->name, + FALSE); /* no children yet */ + added++; + } + + for (child = node_data->children; child != NULL; child = + child->next) { + added += merge_tap_menus_layered(child, layer); + } + } + + return added; +} + + +void merge_all_tap_menus(GList *node) { + GtkItemFactoryEntry *entry; + static char toolspath[] = "/Analyze/"; + + entry = g_malloc0(sizeof (GtkItemFactoryEntry)); + entry->path = toolspath; + entry->item_type = "<Separator>"; + + /* + * merge only the menu items of the specific layer, + * and then append a seperator + */ + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_GENERIC)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_PHYSICAL)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_DATA_LINK)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_NETWORK)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_TRANSPORT)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_SESSION)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + if (merge_tap_menus_layered(node, REGISTER_TAP_LAYER_PRESENTATION)) + gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2); + merge_tap_menus_layered(node, REGISTER_TAP_LAYER_APPLICATION); +} + + + /* * Enable/disable menu sensitivity. */ @@ -1323,16 +1443,17 @@ set_menus_for_capture_in_progress(gboolean capture_in_progress) /* Enable or disable menu items based on whether you have some captured packets. */ static gboolean -walk_menu_tree_for_captured_packets(menu_item_t *node, +walk_menu_tree_for_captured_packets(GList *node, gboolean have_captured_packets) { - gboolean is_enabled; - menu_item_t *child; + gboolean is_enabled; + GList *child; + menu_item_t *node_data = node->data; /* * Is this a leaf node or an interior node? */ - if (node->children == NULL) { + if (node_data->children == NULL) { /* * It's a leaf node. * @@ -1355,11 +1476,11 @@ walk_menu_tree_for_captured_packets(menu_item_t *node, * selected, that's OK. * XXX - that should be done better. */ - if (node->selected_packet_enabled == NULL && - node->selected_tree_row_enabled == NULL) - node->enabled = TRUE; + if (node_data->selected_packet_enabled == NULL && + node_data->selected_tree_row_enabled == NULL) + node_data->enabled = TRUE; else - node->enabled = FALSE; + node_data->enabled = FALSE; } else { /* * It's an interior node; call @@ -1371,24 +1492,24 @@ walk_menu_tree_for_captured_packets(menu_item_t *node, * Which is a better UI choice? */ is_enabled = FALSE; - for (child = node->children; child != NULL; child = + for (child = node_data->children; child != NULL; child = child->next) { if (walk_menu_tree_for_captured_packets(child, have_captured_packets)) is_enabled = TRUE; } - node->enabled = is_enabled; + node_data->enabled = is_enabled; } /* * The root node doesn't correspond to a menu tree item; it * has a null name pointer. */ - if (node->name != NULL) { - set_menu_sensitivity(main_menu_factory, node->name, - node->enabled); + if (node_data->name != NULL) { + set_menu_sensitivity(main_menu_factory, node_data->name, + node_data->enabled); } - return node->enabled; + return node_data->enabled; } void @@ -1425,7 +1546,7 @@ set_menus_for_captured_packets(gboolean have_captured_packets) set_menu_sensitivity(main_menu_factory, "/Analyze/Protocol Hierarchy Statistics", have_captured_packets); - walk_menu_tree_for_captured_packets(&tap_menu_tree_root, + walk_menu_tree_for_captured_packets(tap_menu_tree_root, have_captured_packets); set_toolbar_for_captured_packets(have_captured_packets); packets_bar_update(); @@ -1434,16 +1555,17 @@ set_menus_for_captured_packets(gboolean have_captured_packets) /* Enable or disable menu items based on whether a packet is selected and, if so, on the properties of the packet. */ static gboolean -walk_menu_tree_for_selected_packet(menu_item_t *node, frame_data *fd, +walk_menu_tree_for_selected_packet(GList *node, frame_data *fd, epan_dissect_t *edt) { gboolean is_enabled; - menu_item_t *child; + GList *child; + menu_item_t *node_data = node->data; /* * Is this a leaf node or an interior node? */ - if (node->children == NULL) { + if (node_data->children == NULL) { /* * It's a leaf node. * @@ -1456,8 +1578,8 @@ walk_menu_tree_for_selected_packet(menu_item_t *node, frame_data *fd, * call it and set the item's enabled/disabled status * based on its return value. */ - if (node->selected_packet_enabled != NULL) - node->enabled = node->selected_packet_enabled(fd, edt); + if (node_data->selected_packet_enabled != NULL) + node_data->enabled = node_data->selected_packet_enabled(fd, edt); } else { /* * It's an interior node; call @@ -1469,23 +1591,23 @@ walk_menu_tree_for_selected_packet(menu_item_t *node, frame_data *fd, * Which is a better UI choice? */ is_enabled = FALSE; - for (child = node->children; child != NULL; child = + for (child = node_data->children; child != NULL; child = child->next) { if (walk_menu_tree_for_selected_packet(child, fd, edt)) is_enabled = TRUE; } - node->enabled = is_enabled; + node_data->enabled = is_enabled; } /* * The root node doesn't correspond to a menu tree item; it * has a null name pointer. */ - if (node->name != NULL) { - set_menu_sensitivity(main_menu_factory, node->name, - node->enabled); + if (node_data->name != NULL) { + set_menu_sensitivity(main_menu_factory, node_data->name, + node_data->enabled); } - return node->enabled; + return node_data->enabled; } void @@ -1515,8 +1637,6 @@ set_menus_for_selected_packet(capture_file *cf) cf->current_frame != NULL); set_menu_sensitivity(packet_list_menu_factory, "/Show Packet In New Window", cf->current_frame != NULL); - set_menu_sensitivity(main_menu_factory, "/Analyze/Follow TCP Stream", - cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE); set_menu_sensitivity(NULL, "/Follow TCP Stream", cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE); set_menu_sensitivity(main_menu_factory, "/Analyze/Decode As...", @@ -1525,14 +1645,12 @@ set_menus_for_selected_packet(capture_file *cf) cf->current_frame != NULL && decode_as_ok()); set_menu_sensitivity(tree_view_menu_factory, "/Resolve Name", cf->current_frame != NULL && (g_resolv_flags & RESOLV_ALL_ADDRS) != RESOLV_ALL_ADDRS); - set_menu_sensitivity(main_menu_factory, "/Analyze/TCP Stream Analysis", - cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE); set_menu_sensitivity(packet_list_menu_factory, "/Match", cf->current_frame != NULL); set_menu_sensitivity(packet_list_menu_factory, "/Prepare", cf->current_frame != NULL); - walk_menu_tree_for_selected_packet(&tap_menu_tree_root, cf->current_frame, + walk_menu_tree_for_selected_packet(tap_menu_tree_root, cf->current_frame, cf->edt); packets_bar_update(); } @@ -1540,15 +1658,16 @@ set_menus_for_selected_packet(capture_file *cf) /* Enable or disable menu items based on whether a tree row is selected and, if so, on the properties of the tree row. */ static gboolean -walk_menu_tree_for_selected_tree_row(menu_item_t *node, field_info *fi) +walk_menu_tree_for_selected_tree_row(GList *node, field_info *fi) { gboolean is_enabled; - menu_item_t *child; + GList *child; + menu_item_t *node_data = node->data; /* * Is this a leaf node or an interior node? */ - if (node->children == NULL) { + if (node_data->children == NULL) { /* * It's a leaf node. * @@ -1561,8 +1680,8 @@ walk_menu_tree_for_selected_tree_row(menu_item_t *node, field_info *fi) * call it and set the item's enabled/disabled status * based on its return value. */ - if (node->selected_tree_row_enabled != NULL) - node->enabled = node->selected_tree_row_enabled(fi); + if (node_data->selected_tree_row_enabled != NULL) + node_data->enabled = node_data->selected_tree_row_enabled(fi); } else { /* * It's an interior node; call @@ -1574,23 +1693,23 @@ walk_menu_tree_for_selected_tree_row(menu_item_t *node, field_info *fi) * Which is a better UI choice? */ is_enabled = FALSE; - for (child = node->children; child != NULL; child = + for (child = node_data->children; child != NULL; child = child->next) { if (walk_menu_tree_for_selected_tree_row(child, fi)) is_enabled = TRUE; } - node->enabled = is_enabled; + node_data->enabled = is_enabled; } /* * The root node doesn't correspond to a menu tree item; it * has a null name pointer. */ - if (node->name != NULL) { - set_menu_sensitivity(main_menu_factory, node->name, - node->enabled); + if (node_data->name != NULL) { + set_menu_sensitivity(main_menu_factory, node_data->name, + node_data->enabled); } - return node->enabled; + return node_data->enabled; } void @@ -1640,5 +1759,5 @@ set_menus_for_selected_tree_row(capture_file *cf) FALSE); } - walk_menu_tree_for_selected_tree_row(&tap_menu_tree_root, cf->finfo_selected); + walk_menu_tree_for_selected_tree_row(tap_menu_tree_root, cf->finfo_selected); } diff --git a/gtk/mgcp_stat.c b/gtk/mgcp_stat.c index a9dd4cdbec..c6e5bd0d03 100644 --- a/gtk/mgcp_stat.c +++ b/gtk/mgcp_stat.c @@ -2,7 +2,7 @@ * mgcp-statistics for ethereal * Copyright 2003 Lars Roland * - * $Id: mgcp_stat.c,v 1.28 2004/02/13 00:53:35 guy Exp $ + * $Id: mgcp_stat.c,v 1.29 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -310,13 +310,8 @@ void register_tap_listener_gtkmgcpstat(void) { register_ethereal_tap("mgcp,srt", gtk_mgcpstat_init); -} -void -register_tap_menu_gtkmgcpstat(void) -{ if (find_tap_id("mgcp")) - register_tap_menu_item("_Statistics/Service Response Time/MGCP...", + register_tap_menu_item("MGCP (Service Response Time...)", REGISTER_TAP_LAYER_APPLICATION, gtk_tap_dfilter_dlg_cb, NULL, NULL, &(mgcp_srt_dlg)); } - diff --git a/gtk/rpc_progs.c b/gtk/rpc_progs.c index cfd117a27b..55b703ce4d 100644 --- a/gtk/rpc_progs.c +++ b/gtk/rpc_progs.c @@ -1,7 +1,7 @@ /* rpc_progs.c * rpc_progs 2002 Ronnie Sahlberg * - * $Id: rpc_progs.c,v 1.19 2004/02/13 00:53:36 guy Exp $ + * $Id: rpc_progs.c,v 1.20 2004/02/22 18:44:02 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -403,12 +403,7 @@ void register_tap_listener_gtkrpcprogs(void) { register_ethereal_tap("rpc,programs", gtk_rpcprogs_init); -} -void -register_tap_menu_gtkrpcprogs(void) -{ - register_tap_menu_item("_Statistics/ONC-RPC/Programs", gtk_rpcprogs_cb, - NULL, NULL, NULL); + register_tap_menu_item("ONC-RPC/Programs", REGISTER_TAP_LAYER_APPLICATION, + gtk_rpcprogs_cb, NULL, NULL, NULL); } - diff --git a/gtk/rpc_stat.c b/gtk/rpc_stat.c index c87fd747a4..910226372e 100644 --- a/gtk/rpc_stat.c +++ b/gtk/rpc_stat.c @@ -1,7 +1,7 @@ /* rpc_stat.c * rpc_stat 2002 Ronnie Sahlberg * - * $Id: rpc_stat.c,v 1.38 2004/02/13 00:53:36 guy Exp $ + * $Id: rpc_stat.c,v 1.39 2004/02/22 18:44:03 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -522,11 +522,8 @@ void register_tap_listener_gtkrpcstat(void) { register_ethereal_tap("rpc,srt,", gtk_rpcstat_init); -} -void -register_tap_menu_gtkrpcstat(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/ONC-RPC...", + register_tap_menu_item("ONC-RPC/Service Response Time...", REGISTER_TAP_LAYER_APPLICATION, gtk_rpcstat_cb, NULL, NULL, NULL); } + diff --git a/gtk/rtp_analysis.c b/gtk/rtp_analysis.c index 0293080f84..7ee792692f 100644 --- a/gtk/rtp_analysis.c +++ b/gtk/rtp_analysis.c @@ -1,7 +1,7 @@ /* rtp_analysis.c * RTP analysis addition for ethereal * - * $Id: rtp_analysis.c,v 1.37 2004/02/13 00:53:36 guy Exp $ + * $Id: rtp_analysis.c,v 1.38 2004/02/22 18:44:03 ulfl Exp $ * * Copyright 2003, Alcatel Business Systems * By Lars Ruoff <lars.ruoff@gmx.net> @@ -2344,11 +2344,7 @@ void register_tap_listener_rtp_analysis(void) { register_ethereal_tap("rtp", rtp_analysis_init); -} -void -register_tap_menu_rtp_analysis(void) -{ - register_tap_menu_item("_Statistics/RTP Streams/Analyse...", + register_tap_menu_item("RTP/Stream Analysis...", REGISTER_TAP_LAYER_APPLICATION, rtp_analysis_cb, NULL, NULL, NULL); } diff --git a/gtk/rtp_stream_dlg.c b/gtk/rtp_stream_dlg.c index d310ab7aaa..eef1e40bd1 100644 --- a/gtk/rtp_stream_dlg.c +++ b/gtk/rtp_stream_dlg.c @@ -1,7 +1,7 @@ /* rtp_stream_dlg.c * RTP streams summary addition for ethereal * - * $Id: rtp_stream_dlg.c,v 1.14 2004/02/11 04:17:04 guy Exp $ + * $Id: rtp_stream_dlg.c,v 1.15 2004/02/22 18:44:03 ulfl Exp $ * * Copyright 2003, Alcatel Business Systems * By Lars Ruoff <lars.ruoff@gmx.net> @@ -824,8 +824,8 @@ void rtpstream_launch(GtkWidget *w _U_, gpointer data _U_) /****************************************************************************/ void -register_tap_menu_rtp_stream(void) +register_tap_listener_rtp_stream_dlg(void) { - register_tap_menu_item("_Statistics/RTP Streams/Show All...", + register_tap_menu_item("RTP/Show All Streams...", REGISTER_TAP_LAYER_APPLICATION, rtpstream_launch, NULL, NULL, NULL); } diff --git a/gtk/smb_stat.c b/gtk/smb_stat.c index 515788bc68..110b0d25a6 100644 --- a/gtk/smb_stat.c +++ b/gtk/smb_stat.c @@ -1,7 +1,7 @@ /* smb_stat.c * smb_stat 2003 Ronnie Sahlberg * - * $Id: smb_stat.c,v 1.36 2004/02/13 00:53:36 guy Exp $ + * $Id: smb_stat.c,v 1.37 2004/02/22 18:44:03 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -352,11 +352,7 @@ void register_tap_listener_gtksmbstat(void) { register_ethereal_tap("smb,srt", gtk_smbstat_init); -} -void -register_tap_menu_gtksmbstat(void) -{ - register_tap_menu_item("_Statistics/Service Response Time/SMB...", + register_tap_menu_item("SMB (Service Response Time...)", REGISTER_TAP_LAYER_APPLICATION, gtk_smbstat_cb, NULL, NULL, NULL); } diff --git a/gtk/tap_menu.h b/gtk/tap_menu.h index 7d4b42faab..4836e67c47 100644 --- a/gtk/tap_menu.h +++ b/gtk/tap_menu.h @@ -1,7 +1,7 @@ /* tap_menu.h * Menu definitions for use by taps * - * $Id: tap_menu.h,v 1.1 2004/02/11 04:17:05 guy Exp $ + * $Id: tap_menu.h,v 1.2 2004/02/22 18:44:03 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -51,11 +51,24 @@ extern "C" { * whether a tree row is selected and, if one is, on the tree row) and * FALSE if not. */ -extern void register_tap_menu_item(char *name, GtkItemFactoryCallback callback, +extern void register_tap_menu_item( + char *name, + gint layer, + GtkItemFactoryCallback callback, gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *), gboolean (*selected_tree_row_enabled)(field_info *), gpointer callback_data); +/* XXX: would it better to use an enum here? */ +#define REGISTER_TAP_LAYER_GENERIC 0 +#define REGISTER_TAP_LAYER_PHYSICAL 1 /* currently unused */ +#define REGISTER_TAP_LAYER_DATA_LINK 2 +#define REGISTER_TAP_LAYER_NETWORK 3 +#define REGISTER_TAP_LAYER_TRANSPORT 4 +#define REGISTER_TAP_LAYER_SESSION 5 /* currently unused */ +#define REGISTER_TAP_LAYER_PRESENTATION 6 /* currently unused */ +#define REGISTER_TAP_LAYER_APPLICATION 7 + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/gtk/tcp_graph.c b/gtk/tcp_graph.c index 33ad54cbb4..2f485247b4 100644 --- a/gtk/tcp_graph.c +++ b/gtk/tcp_graph.c @@ -3,7 +3,7 @@ * By Pavel Mores <pvl@uh.cz> * Win32 port: rwh@unifiedtech.com * - * $Id: tcp_graph.c,v 1.51 2004/02/13 00:53:36 guy Exp $ + * $Id: tcp_graph.c,v 1.52 2004/02/22 18:44:03 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -49,6 +49,8 @@ #include "etypes.h" #include "ppptypes.h" #include "dlg_utils.h" +#include <epan/epan_dissect.h> +#include "tap_menu.h" /* from <net/ethernet.h> */ struct ether_header { @@ -539,10 +541,11 @@ static char helptext[] = "; #endif -void tcp_graph_cb (GtkWidget *w _U_, gpointer data _U_, guint graph_type) +void tcp_graph_cb (GtkWidget *w _U_, gpointer data, guint callback_action /*graph_type*/ _U_) { struct segment current; struct graph *g; + guint graph_type = GPOINTER_TO_INT(data); debug(DBS_FENTRY) puts ("tcp_graph_cb()"); @@ -3961,3 +3964,24 @@ static int rint (double x) return(i); } #endif + + +gboolean tcp_graph_selected_packet_enabled(frame_data *current_frame, epan_dissect_t *edt) +{ + return current_frame != NULL ? (edt->pi.ipproto == IP_PROTO_TCP) : FALSE; +} + + +void +register_tap_listener_tcp_graph(void) +{ + register_tap_menu_item("TCP/Stream Analysis/Time-Sequence Graph (Stevens)", REGISTER_TAP_LAYER_TRANSPORT, + tcp_graph_cb, tcp_graph_selected_packet_enabled, NULL, GINT_TO_POINTER(0)); + register_tap_menu_item("TCP/Stream Analysis/Time-Sequence Graph (tcptrace)", REGISTER_TAP_LAYER_TRANSPORT, + tcp_graph_cb, tcp_graph_selected_packet_enabled, NULL, GINT_TO_POINTER(1)); + register_tap_menu_item("TCP/Stream Analysis/Throughput Graph", REGISTER_TAP_LAYER_TRANSPORT, + tcp_graph_cb, tcp_graph_selected_packet_enabled, NULL, GINT_TO_POINTER(2)); + register_tap_menu_item("TCP/Stream Analysis/Round Trip Time Graph", REGISTER_TAP_LAYER_TRANSPORT, + tcp_graph_cb, tcp_graph_selected_packet_enabled, NULL, GINT_TO_POINTER(3)); +} + diff --git a/gtk/wsp_stat.c b/gtk/wsp_stat.c index b21d1701ab..6f2cef7e92 100644 --- a/gtk/wsp_stat.c +++ b/gtk/wsp_stat.c @@ -1,7 +1,7 @@ /* wsp_stat.c * wsp_stat 2003 Jean-Michel FAYARD * - * $Id: wsp_stat.c,v 1.18 2004/02/13 00:53:37 guy Exp $ + * $Id: wsp_stat.c,v 1.19 2004/02/22 18:44:03 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -507,11 +507,7 @@ void register_tap_listener_gtkwspstat(void) { register_ethereal_tap("wsp,stat,", gtk_wspstat_init); -} -void -register_tap_menu_gtkwspstat(void) -{ - register_tap_menu_item("_Statistics/Watch protocol/WAP-WSP...", + register_tap_menu_item("WAP-WSP (Watch Protocol...)", REGISTER_TAP_LAYER_APPLICATION, gtk_wspstat_cb, NULL, NULL, NULL); } |