summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2009-02-10 03:54:55 +0000
committerUlf Lamping <ulf.lamping@web.de>2009-02-10 03:54:55 +0000
commitf904f42f9da356bcc70377046c7f6617e5bcba4b (patch)
tree3b043a447bd4dd271a3877bdbcd0773a3cde939c
parentba78d5f30e5a6f3873fcec88fc95ae3ce320a76a (diff)
downloadwireshark-f904f42f9da356bcc70377046c7f6617e5bcba4b.tar.gz
Remove an ugly hack:
There was an ugly hack while creating the menu, that tried to detect the stat_group a stats_tree belongs to by looking at the name string. That makes it unnecessarily hard to understand how the menu is really created. Fix: Add a new function stats_tree_register_with_group() that takes the stat_group as a parameter. Use this function where a stats_tree doesn't fit into the default "unsorted" group. svn path=/trunk/; revision=27407
-rw-r--r--epan/dissectors/packet-isup.c5
-rw-r--r--epan/dissectors/packet-smpp.c5
-rw-r--r--epan/dissectors/packet-ucp.c4
-rw-r--r--epan/libwireshark.def1
-rw-r--r--epan/stats_tree.c16
-rw-r--r--epan/stats_tree.h20
-rw-r--r--epan/stats_tree_priv.h1
-rw-r--r--gtk/stats_tree_stat.c11
-rw-r--r--plugins/stats_tree/pinfo_stats_tree.c2
9 files changed, 45 insertions, 20 deletions
diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c
index 8af1130a36..0633342488 100644
--- a/epan/dissectors/packet-isup.c
+++ b/epan/dissectors/packet-isup.c
@@ -8131,8 +8131,9 @@ proto_register_isup(void)
&isup_apm_desegment);
/* Register the stats_tree */
- stats_tree_register("isup", "isup_msg", "ISUP Messages",
- msg_stats_tree_packet, msg_stats_tree_init, NULL);
+ stats_tree_register_with_group("isup", "isup_msg", "ISUP Messages",
+ msg_stats_tree_packet, msg_stats_tree_init,
+ NULL, REGISTER_STAT_GROUP_TELEPHONY);
}
diff --git a/epan/dissectors/packet-smpp.c b/epan/dissectors/packet-smpp.c
index 29347c8730..598de9c000 100644
--- a/epan/dissectors/packet-smpp.c
+++ b/epan/dissectors/packet-smpp.c
@@ -3434,6 +3434,7 @@ proto_reg_handoff_smpp(void)
DISSECTOR_ASSERT(gsm_sms_handle);
/* Tapping setup */
- stats_tree_register("smpp","smpp_commands", st_str_smpp,
- smpp_stats_tree_per_packet, smpp_stats_tree_init, NULL);
+ stats_tree_register_with_group("smpp","smpp_commands", st_str_smpp,
+ smpp_stats_tree_per_packet, smpp_stats_tree_init,
+ NULL, REGISTER_STAT_GROUP_TELEPHONY);
}
diff --git a/epan/dissectors/packet-ucp.c b/epan/dissectors/packet-ucp.c
index 753bd041ca..49b2583fdc 100644
--- a/epan/dissectors/packet-ucp.c
+++ b/epan/dissectors/packet-ucp.c
@@ -2757,7 +2757,7 @@ proto_reg_handoff_ucp(void)
dissector_add_handle("tcp.port", ucp_handle);
/* Tapping setup */
- stats_tree_register("ucp", "ucp_messages", st_str_ucp,
+ stats_tree_register_with_group("ucp", "ucp_messages", st_str_ucp,
ucp_stats_tree_per_packet, ucp_stats_tree_init,
- NULL);
+ NULL, REGISTER_STAT_GROUP_TELEPHONY);
}
diff --git a/epan/libwireshark.def b/epan/libwireshark.def
index 5be53413e6..616bdf4bcb 100644
--- a/epan/libwireshark.def
+++ b/epan/libwireshark.def
@@ -877,6 +877,7 @@ stats_tree_parent_id_by_name
stats_tree_presentation
stats_tree_range_node_with_pname
stats_tree_register
+stats_tree_register_with_group
stats_tree_reinit
stats_tree_reset
stats_tree_tick_pivot
diff --git a/epan/stats_tree.c b/epan/stats_tree.c
index 57747dea68..ffdb0ae49c 100644
--- a/epan/stats_tree.c
+++ b/epan/stats_tree.c
@@ -261,9 +261,9 @@ stats_tree_reinit(void *p)
/* register a new stats_tree */
extern void
-stats_tree_register(const char *tapname, const char *abbr, const char *name,
+stats_tree_register_with_group(const char *tapname, const char *abbr, const char *name,
stat_tree_packet_cb packet, stat_tree_init_cb init,
- stat_tree_cleanup_cb cleanup)
+ stat_tree_cleanup_cb cleanup, register_stat_group_t stat_group)
{
stats_tree_cfg *cfg = g_malloc( sizeof(stats_tree_cfg) );
@@ -274,6 +274,7 @@ stats_tree_register(const char *tapname, const char *abbr, const char *name,
cfg->tapname = g_strdup(tapname);
cfg->abbr = g_strdup(abbr);
cfg->name = name ? g_strdup(name) : g_strdup(abbr);
+ cfg->stat_group = stat_group;
cfg->packet = packet;
cfg->init = init;
@@ -295,6 +296,17 @@ stats_tree_register(const char *tapname, const char *abbr, const char *name,
}
+/* register a new stats_tree with default group REGISTER_STAT_GROUP_UNSORTED */
+extern void
+stats_tree_register(const char *tapname, const char *abbr, const char *name,
+ stat_tree_packet_cb packet, stat_tree_init_cb init,
+ stat_tree_cleanup_cb cleanup)
+{
+ stats_tree_register_with_group(tapname, abbr, name,
+ packet, init,
+ cleanup, REGISTER_STAT_GROUP_UNSORTED);
+}
+
extern stats_tree*
stats_tree_new(stats_tree_cfg *cfg, tree_pres *pr, char *filter)
{
diff --git a/epan/stats_tree.h b/epan/stats_tree.h
index 207a0670cd..66a0c556cd 100644
--- a/epan/stats_tree.h
+++ b/epan/stats_tree.h
@@ -30,6 +30,7 @@
#include <epan/packet_info.h>
#include <epan/to_str.h>
#include <epan/tap.h>
+#include "../stat_menu.h"
#include "../register.h"
#define STAT_TREE_ROOT "root"
@@ -49,11 +50,12 @@ typedef void (*stat_tree_init_cb)(stats_tree*);
/* stats_tree cleanup callback */
typedef void (*stat_tree_cleanup_cb)(stats_tree*);
-/* registers a new stats tree
+/* registers a new stats tree with default group REGISTER_STAT_GROUP_UNSORTED
* abbr: protocol abbr
* name: protocol display name
* packet: per packet callback
* init: tree initialization callback
+ * cleanup: cleanup callback
*/
extern void stats_tree_register(const gchar *tapname,
const gchar *abbr,
@@ -62,6 +64,22 @@ extern void stats_tree_register(const gchar *tapname,
stat_tree_init_cb init,
stat_tree_cleanup_cb cleanup);
+/* registers a new stats tree
+ * abbr: protocol abbr
+ * name: protocol display name
+ * packet: per packet callback
+ * init: tree initialization callback
+ * cleanup: cleanup callback
+ * stat_group: the group this stat belongs to
+ */
+extern void stats_tree_register_with_group(const gchar *tapname,
+ const gchar *abbr,
+ const gchar *name,
+ stat_tree_packet_cb packet,
+ stat_tree_init_cb init,
+ stat_tree_cleanup_cb cleanup,
+ register_stat_group_t stat_group);
+
extern int stats_tree_parent_id_by_name(stats_tree *st, const gchar *parent_name);
/* Creates a node in the tree (to be used in the in init_cb)
diff --git a/epan/stats_tree_priv.h b/epan/stats_tree_priv.h
index 304746b322..7bfd9015bf 100644
--- a/epan/stats_tree_priv.h
+++ b/epan/stats_tree_priv.h
@@ -110,6 +110,7 @@ struct _stats_tree_cfg {
gchar* abbr;
gchar* name;
gchar* tapname;
+ register_stat_group_t stat_group;
gboolean in_use;
diff --git a/gtk/stats_tree_stat.c b/gtk/stats_tree_stat.c
index bdde934285..577034c91a 100644
--- a/gtk/stats_tree_stat.c
+++ b/gtk/stats_tree_stat.c
@@ -335,7 +335,6 @@ static void
register_gtk_stats_tree_tap (gpointer k _U_, gpointer v, gpointer p _U_)
{
stats_tree_cfg* cfg = v;
- register_stat_group_t stat_group = REGISTER_STAT_GROUP_UNSORTED;
cfg->pr = g_malloc(sizeof(tree_pres));
@@ -346,15 +345,7 @@ register_gtk_stats_tree_tap (gpointer k _U_, gpointer v, gpointer p _U_)
cfg->pr->stat_dlg->tap_init_cb = init_gtk_tree;
cfg->pr->stat_dlg->index = -1;
- /* XXX - maybe let the stats_tree stuff register their stat groups themself? */
- if(strcmp(cfg->abbr, "isup_msg") == 0 ||
- strcmp(cfg->abbr, "smpp_commands") == 0) {
- stat_group = REGISTER_STAT_GROUP_TELEPHONY;
- }
- if(strcmp(cfg->abbr, "plen") == 0) {
- stat_group = REGISTER_STAT_GROUP_GENERIC;
- }
- register_dfilter_stat(cfg->pr->stat_dlg, cfg->name, stat_group);
+ register_dfilter_stat(cfg->pr->stat_dlg, cfg->name, cfg->stat_group);
}
static void
diff --git a/plugins/stats_tree/pinfo_stats_tree.c b/plugins/stats_tree/pinfo_stats_tree.c
index f64987f17d..db5f06b545 100644
--- a/plugins/stats_tree/pinfo_stats_tree.c
+++ b/plugins/stats_tree/pinfo_stats_tree.c
@@ -139,7 +139,7 @@ static int dsts_stats_tree_packet(stats_tree* st, packet_info* pinfo, epan_disse
void register_pinfo_stat_trees(void) {
stats_tree_register("ip","ip_hosts",st_str_ip, ip_hosts_stats_tree_packet, ip_hosts_stats_tree_init, NULL );
stats_tree_register("ip","ptype",st_str_ptype, ptype_stats_tree_packet, ptype_stats_tree_init, NULL );
- stats_tree_register("frame","plen",st_str_plen, plen_stats_tree_packet, plen_stats_tree_init, NULL );
+ stats_tree_register_with_group("frame","plen",st_str_plen, plen_stats_tree_packet, plen_stats_tree_init, NULL, REGISTER_STAT_GROUP_GENERIC );
stats_tree_register("ip","dests",st_str_dsts, dsts_stats_tree_packet, dsts_stats_tree_init, NULL );
}