aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/Makefile.common6
-rw-r--r--gtk/ansi_a_stat.c13
-rw-r--r--gtk/ansi_map_stat.c10
-rw-r--r--gtk/bootp_stat.c8
-rw-r--r--gtk/dcerpc_stat.c8
-rw-r--r--gtk/endpoint_talkers_eth.c15
-rw-r--r--gtk/endpoint_talkers_fc.c15
-rw-r--r--gtk/endpoint_talkers_fddi.c15
-rw-r--r--gtk/endpoint_talkers_ip.c15
-rw-r--r--gtk/endpoint_talkers_ipx.c15
-rw-r--r--gtk/endpoint_talkers_tcpip.c15
-rw-r--r--gtk/endpoint_talkers_tr.c15
-rw-r--r--gtk/endpoint_talkers_udpip.c15
-rw-r--r--gtk/fc_stat.c8
-rw-r--r--gtk/follow_dlg.c21
-rw-r--r--gtk/gsm_a_stat.c23
-rw-r--r--gtk/gsm_map_stat.c10
-rw-r--r--gtk/h225_counter.c8
-rw-r--r--gtk/h225_ras_srt.c8
-rw-r--r--gtk/hostlist_eth.c15
-rw-r--r--gtk/hostlist_fc.c15
-rw-r--r--gtk/hostlist_fddi.c15
-rw-r--r--gtk/hostlist_ip.c13
-rw-r--r--gtk/hostlist_ipx.c15
-rw-r--r--gtk/hostlist_tcpip.c15
-rw-r--r--gtk/hostlist_tr.c15
-rw-r--r--gtk/hostlist_udpip.c15
-rw-r--r--gtk/http_stat.c8
-rw-r--r--gtk/io_stat.c10
-rw-r--r--gtk/isup_stat.c10
-rw-r--r--gtk/ldap_stat.c8
-rw-r--r--gtk/main.c7
-rw-r--r--gtk/menu.c351
-rw-r--r--gtk/mgcp_stat.c9
-rw-r--r--gtk/rpc_progs.c11
-rw-r--r--gtk/rpc_stat.c9
-rw-r--r--gtk/rtp_analysis.c8
-rw-r--r--gtk/rtp_stream_dlg.c6
-rw-r--r--gtk/smb_stat.c8
-rw-r--r--gtk/tap_menu.h17
-rw-r--r--gtk/tcp_graph.c28
-rw-r--r--gtk/wsp_stat.c8
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);
}