&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);
}
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);
}
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);
}
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
/* 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) );
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;
}
+/* 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)
{
#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"
/* 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,
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)
gchar* abbr;
gchar* name;
gchar* tapname;
+ register_stat_group_t stat_group;
gboolean in_use;
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));
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
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 );
}