Remove an ugly hack:
authorulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 10 Feb 2009 03:54:55 +0000 (03:54 +0000)
committerulfl <ulfl@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 10 Feb 2009 03:54:55 +0000 (03:54 +0000)
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.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@27407 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-isup.c
epan/dissectors/packet-smpp.c
epan/dissectors/packet-ucp.c
epan/libwireshark.def
epan/stats_tree.c
epan/stats_tree.h
epan/stats_tree_priv.h
gtk/stats_tree_stat.c
plugins/stats_tree/pinfo_stats_tree.c

index 8af1130a36af111830ac5a56a7c46ec5a3e52fc6..0633342488131a7ca1a64dfedcef6456aa729c15 100644 (file)
@@ -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);
 }
 
 
index 29347c87307ceae08830a0e4f061dedd3b8193b6..598de9c00029c7a86edf3c1e9eb83299eb0617a2 100644 (file)
@@ -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);
 }
index 753bd041ca5b1ba9ac908c4994f15ae4f9ee0259..49b2583fdcf05b82d05d0a3a59493563a6f15071 100644 (file)
@@ -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);
 }
index 5be53413e67694c07f94f35d847fe42630997f92..616bdf4bcbd8b668c58a71280119c8a70ad4436a 100644 (file)
@@ -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
index 57747dea68ff42a35f22a196c377c79c232749cc..ffdb0ae49c8097ad6d38c1cba33260c4d1a24828 100644 (file)
@@ -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)
 {
index 207a0670cdbc7c85d8bdc3f6cfdc5cc98b533d62..66a0c556cdc5d496a0a24ba09b18c79999e19d9b 100644 (file)
@@ -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)
index 304746b3221b197f6c07e129e223c9f286e6a6f7..7bfd9015bfe0fa1274586e4a872b7b7498dad5ba 100644 (file)
@@ -110,6 +110,7 @@ struct _stats_tree_cfg {
        gchar*                  abbr;
        gchar*                  name;
        gchar*                  tapname;
+    register_stat_group_t stat_group;
        
        gboolean in_use;
 
index bdde934285323e758bdd7e38c7a915fa47121903..577034c91a7f7bf82486e8d22242b0c105d14a51 100644 (file)
@@ -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
index f64987f17d836705392bc57216fc56ec1b2bc48f..db5f06b5457a57be247dabf0bd57c259752db3a9 100644 (file)
@@ -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 );
 }