summaryrefslogtreecommitdiffstats
path: root/plugins/epan/stats_tree
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/epan/stats_tree')
-rw-r--r--plugins/epan/stats_tree/pinfo_stats_tree.c156
1 files changed, 79 insertions, 77 deletions
diff --git a/plugins/epan/stats_tree/pinfo_stats_tree.c b/plugins/epan/stats_tree/pinfo_stats_tree.c
index fd2a97d8..68d7322b 100644
--- a/plugins/epan/stats_tree/pinfo_stats_tree.c
+++ b/plugins/epan/stats_tree/pinfo_stats_tree.c
@@ -28,21 +28,9 @@ typedef struct {
range_t *packet_range;
} uat_plen_record_t;
-static range_t default_range[10] = {
- {1, {{0, 19}}},
- {1, {{20, 39}}},
- {1, {{40, 79}}},
- {1, {{80, 159}}},
- {1, {{160, 319}}},
- {1, {{320, 639}}},
- {1, {{640, 1279}}},
- {1, {{1280, 2559}}},
- {1, {{2560, 5119}}},
- {1, {{5120, 0xFFFFFFFF}}}
-};
-static uat_plen_record_t *uat_plen_records = NULL;
-static uat_t *plen_uat = NULL;
-static guint num_plen_uat = 0;
+static uat_plen_record_t *uat_plen_records;
+static uat_t *plen_uat;
+static unsigned num_plen_uat;
void register_tap_listener_pinfo_stat_tree(void);
@@ -62,11 +50,11 @@ uat_plen_record_update_cb(void *r, char **err)
uat_plen_record_t *rec = (uat_plen_record_t*)r;
if (rec->packet_range->nranges < 1) {
*err = g_strdup("Invalid range string");
- return FALSE;
+ return false;
}
*err = NULL;
- return TRUE;
+ return true;
}
static void uat_plen_record_free_cb(void*r) {
@@ -77,18 +65,31 @@ static void uat_plen_record_free_cb(void*r) {
}
static void uat_plen_record_post_update_cb(void) {
- guint i, num_default;
- uat_plen_record_t rec;
-
/* If there are no records, create default list */
if (num_plen_uat == 0) {
- num_default = sizeof(default_range)/sizeof(range_t);
+ static const char * const default_range[] = {
+ "0-19",
+ "20-39",
+ "40-79",
+ "80-159",
+ "160-319",
+ "320-639",
+ "640-1279",
+ "1280-2559",
+ "2560-5119",
+ "5120-0xFFFFFFFF"
+ };
+ unsigned i;
/* default values for packet lengths */
- for (i = 0; i < num_default; i++)
+ for (i = 0; i < array_length(default_range); i++)
{
- rec.packet_range = &default_range[i];
- uat_add_record(plen_uat, &rec, TRUE);
+ uat_plen_record_t rec;
+
+ convert_ret_t result = range_convert_str(NULL, &rec.packet_range, default_range[i], UINT32_MAX);
+ ws_assert(result == CVT_NO_ERROR);
+ uat_add_record(plen_uat, &rec, true);
+ wmem_free(NULL, rec.packet_range);
}
}
}
@@ -98,21 +99,21 @@ UAT_RANGE_CB_DEF(uat_plen_records, packet_range, uat_plen_record_t)
/* ip host stats_tree -- basic test */
static int st_node_ipv4 = -1;
static int st_node_ipv6 = -1;
-static const gchar *st_str_ipv4 = "IPv4 Statistics/All Addresses";
-static const gchar *st_str_ipv6 = "IPv6 Statistics/All Addresses";
+static const char *st_str_ipv4 = "IPv4 Statistics" STATS_TREE_MENU_SEPARATOR "All Addresses";
+static const char *st_str_ipv6 = "IPv6 Statistics" STATS_TREE_MENU_SEPARATOR "All Addresses";
static void ipv4_hosts_stats_tree_init(stats_tree *st) {
- st_node_ipv4 = stats_tree_create_node(st, st_str_ipv4, 0, STAT_DT_INT, TRUE);
+ st_node_ipv4 = stats_tree_create_node(st, st_str_ipv4, 0, STAT_DT_INT, true);
}
static void ipv6_hosts_stats_tree_init(stats_tree *st) {
- st_node_ipv6 = stats_tree_create_node(st, st_str_ipv6, 0, STAT_DT_INT, TRUE);
+ st_node_ipv6 = stats_tree_create_node(st, st_str_ipv6, 0, STAT_DT_INT, true);
}
-static tap_packet_status ip_hosts_stats_tree_packet(stats_tree *st, packet_info *pinfo, int st_node, const gchar *st_str) {
- tick_stat_node(st, st_str, 0, FALSE);
- tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node, FALSE);
- tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node, FALSE);
+static tap_packet_status ip_hosts_stats_tree_packet(stats_tree *st, packet_info *pinfo, int st_node, const char *st_str) {
+ tick_stat_node(st, st_str, 0, false);
+ tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node, false);
+ tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node, false);
return TAP_PACKET_REDRAW;
}
@@ -129,24 +130,24 @@ static int st_node_ipv4_src = -1;
static int st_node_ipv4_dst = -1;
static int st_node_ipv6_src = -1;
static int st_node_ipv6_dst = -1;
-static const gchar *st_str_ipv4_srcdst = "IPv4 Statistics/Source and Destination Addresses";
-static const gchar *st_str_ipv6_srcdst = "IPv6 Statistics/Source and Destination Addresses";
-static const gchar *st_str_ipv4_src = "Source IPv4 Addresses";
-static const gchar *st_str_ipv4_dst = "Destination IPv4 Addresses";
-static const gchar *st_str_ipv6_src = "Source IPv6 Addresses";
-static const gchar *st_str_ipv6_dst = "Destination IPv6 Addresses";
+static const char *st_str_ipv4_srcdst = "IPv4 Statistics" STATS_TREE_MENU_SEPARATOR "Source and Destination Addresses";
+static const char *st_str_ipv6_srcdst = "IPv6 Statistics" STATS_TREE_MENU_SEPARATOR "Source and Destination Addresses";
+static const char *st_str_ipv4_src = "Source IPv4 Addresses";
+static const char *st_str_ipv4_dst = "Destination IPv4 Addresses";
+static const char *st_str_ipv6_src = "Source IPv6 Addresses";
+static const char *st_str_ipv6_dst = "Destination IPv6 Addresses";
static void ip_srcdst_stats_tree_init(stats_tree *st,
- const gchar *st_str_src, int *st_node_src_ptr,
- const gchar *st_str_dst, int *st_node_dst_ptr) {
+ const char *st_str_src, int *st_node_src_ptr,
+ const char *st_str_dst, int *st_node_dst_ptr) {
/* create one tree branch for source */
- *st_node_src_ptr = stats_tree_create_node(st, st_str_src, 0, STAT_DT_INT, TRUE);
+ *st_node_src_ptr = stats_tree_create_node(st, st_str_src, 0, STAT_DT_INT, true);
/* set flag so this branch will always be sorted to top of tree */
- stat_node_set_flags(st, st_str_src, 0, FALSE, ST_FLG_SORT_TOP);
- /* creat another top level node for destination branch */
- *st_node_dst_ptr = stats_tree_create_node(st, st_str_dst, 0, STAT_DT_INT, TRUE);
+ stat_node_set_flags(st, st_str_src, 0, false, ST_FLG_SORT_TOP);
+ /* create another top level node for destination branch */
+ *st_node_dst_ptr = stats_tree_create_node(st, st_str_dst, 0, STAT_DT_INT, true);
/* set flag so this branch will not be expanded by default */
- stat_node_set_flags(st, st_str_dst, 0, FALSE, ST_FLG_DEF_NOEXPAND);
+ stat_node_set_flags(st, st_str_dst, 0, false, ST_FLG_DEF_NOEXPAND);
}
static void ipv4_srcdst_stats_tree_init(stats_tree *st) {
@@ -160,15 +161,15 @@ static void ipv6_srcdst_stats_tree_init(stats_tree *st) {
static tap_packet_status ip_srcdst_stats_tree_packet(stats_tree *st,
packet_info *pinfo,
int st_node_src,
- const gchar *st_str_src,
+ const char *st_str_src,
int st_node_dst,
- const gchar *st_str_dst) {
+ const char *st_str_dst) {
/* update source branch */
- tick_stat_node(st, st_str_src, 0, FALSE);
- tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node_src, FALSE);
+ tick_stat_node(st, st_str_src, 0, false);
+ tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node_src, false);
/* update destination branch */
- tick_stat_node(st, st_str_dst, 0, FALSE);
- tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node_dst, FALSE);
+ tick_stat_node(st, st_str_dst, 0, false);
+ tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node_dst, false);
return TAP_PACKET_REDRAW;
}
@@ -183,8 +184,8 @@ static tap_packet_status ipv6_srcdst_stats_tree_packet(stats_tree *st, packet_in
/* packet type stats_tree -- test pivot node */
static int st_node_ipv4_ptype = -1;
static int st_node_ipv6_ptype = -1;
-static const gchar *st_str_ipv4_ptype = "IPv4 Statistics/IP Protocol Types";
-static const gchar *st_str_ipv6_ptype = "IPv6 Statistics/IP Protocol Types";
+static const char *st_str_ipv4_ptype = "IPv4 Statistics" STATS_TREE_MENU_SEPARATOR "IP Protocol Types";
+static const char *st_str_ipv6_ptype = "IPv6 Statistics" STATS_TREE_MENU_SEPARATOR "IP Protocol Types";
static void ipv4_ptype_stats_tree_init(stats_tree *st) {
st_node_ipv4_ptype = stats_tree_create_pivot(st, st_str_ipv4_ptype, 0);
@@ -212,27 +213,27 @@ static tap_packet_status ipv6_ptype_stats_tree_packet(stats_tree *st, packet_inf
*/
static int st_node_ipv4_dsts = -1;
static int st_node_ipv6_dsts = -1;
-static const gchar *st_str_ipv4_dsts = "IPv4 Statistics/Destinations and Ports";
-static const gchar *st_str_ipv6_dsts = "IPv6 Statistics/Destinations and Ports";
+static const char *st_str_ipv4_dsts = "IPv4 Statistics" STATS_TREE_MENU_SEPARATOR "Destinations and Ports";
+static const char *st_str_ipv6_dsts = "IPv6 Statistics" STATS_TREE_MENU_SEPARATOR "Destinations and Ports";
static void ipv4_dsts_stats_tree_init(stats_tree *st) {
- st_node_ipv4_dsts = stats_tree_create_node(st, st_str_ipv4_dsts, 0, STAT_DT_INT, TRUE);
+ st_node_ipv4_dsts = stats_tree_create_node(st, st_str_ipv4_dsts, 0, STAT_DT_INT, true);
}
static void ipv6_dsts_stats_tree_init(stats_tree *st) {
- st_node_ipv6_dsts = stats_tree_create_node(st, st_str_ipv6_dsts, 0, STAT_DT_INT, TRUE);
+ st_node_ipv6_dsts = stats_tree_create_node(st, st_str_ipv6_dsts, 0, STAT_DT_INT, true);
}
-static tap_packet_status dsts_stats_tree_packet(stats_tree *st, packet_info *pinfo, int st_node, const gchar *st_str) {
- static gchar str[128];
+static tap_packet_status dsts_stats_tree_packet(stats_tree *st, packet_info *pinfo, int st_node, const char *st_str) {
+ static char str[128];
int ip_dst_node;
int protocol_node;
- tick_stat_node(st, st_str, 0, FALSE);
- ip_dst_node = tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node, TRUE);
- protocol_node = tick_stat_node(st, port_type_to_str(pinfo->ptype), ip_dst_node, TRUE);
+ tick_stat_node(st, st_str, 0, false);
+ ip_dst_node = tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), st_node, true);
+ protocol_node = tick_stat_node(st, port_type_to_str(pinfo->ptype), ip_dst_node, true);
snprintf(str, sizeof(str) - 1, "%u", pinfo->destport);
- tick_stat_node(st, str, protocol_node, TRUE);
+ tick_stat_node(st, str, protocol_node, true);
return TAP_PACKET_REDRAW;
}
@@ -246,27 +247,27 @@ static tap_packet_status ipv6_dsts_stats_tree_packet(stats_tree *st, packet_info
static int st_node_ipv4_src_ttls = -1;
static int st_node_ipv6_src_ttls = -1;
-static const gchar* st_str_ipv4_src_ttls = "IPv4 Statistics/Source TTLs";
-static const gchar* st_str_ipv6_src_ttls = "IPv6 Statistics/Source Hop Limits";
+static const char* st_str_ipv4_src_ttls = "IPv4 Statistics" STATS_TREE_MENU_SEPARATOR "Source TTLs";
+static const char* st_str_ipv6_src_ttls = "IPv6 Statistics" STATS_TREE_MENU_SEPARATOR "Source Hop Limits";
static void ipv4_src_ttl_stats_tree_init(stats_tree* st) {
- st_node_ipv4_src_ttls = stats_tree_create_node(st, st_str_ipv4_src_ttls, 0, STAT_DT_INT, TRUE);
+ st_node_ipv4_src_ttls = stats_tree_create_node(st, st_str_ipv4_src_ttls, 0, STAT_DT_INT, true);
}
static void ipv6_src_ttl_stats_tree_init(stats_tree* st) {
- st_node_ipv6_src_ttls = stats_tree_create_node(st, st_str_ipv6_src_ttls, 0, STAT_DT_INT, TRUE);
+ st_node_ipv6_src_ttls = stats_tree_create_node(st, st_str_ipv6_src_ttls, 0, STAT_DT_INT, true);
}
static tap_packet_status src_ttl_stats_tree_packet(stats_tree* st, packet_info* pinfo, int st_node, const char* st_str, uint8_t ttl) {
- static gchar str[128];
+ static char str[128];
int ip_src_node;
int ttl_node;
- tick_stat_node(st, st_str, 0, FALSE);
- ip_src_node = tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node, TRUE);
+ tick_stat_node(st, st_str, 0, false);
+ ip_src_node = tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_src), st_node, true);
snprintf(str, sizeof(str) - 1, "%u", ttl);
- ttl_node = tick_stat_node(st, str, ip_src_node, TRUE);
- tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), ttl_node, TRUE);
+ ttl_node = tick_stat_node(st, str, ip_src_node, true);
+ tick_stat_node(st, address_to_str(pinfo->pool, &pinfo->net_dst), ttl_node, true);
return TAP_PACKET_REDRAW;
}
@@ -284,10 +285,10 @@ static tap_packet_status ipv6_src_ttl_stats_tree_packet(stats_tree* st, packet_i
/* packet length stats_tree -- test range node */
static int st_node_plen = -1;
-static const gchar *st_str_plen = "Packet Lengths";
+static const char *st_str_plen = "Packet Lengths";
static void plen_stats_tree_init(stats_tree *st) {
- guint i;
+ unsigned i;
char **str_range_array = (char **)wmem_alloc(NULL, num_plen_uat*sizeof(char*));
/* Convert the ranges to strings for the stats tree API */
@@ -304,7 +305,7 @@ static void plen_stats_tree_init(stats_tree *st) {
}
static tap_packet_status plen_stats_tree_packet(stats_tree *st, packet_info *pinfo, epan_dissect_t *edt _U_, const void *p _U_, tap_flags_t flags _U_) {
- tick_stat_node(st, st_str_plen, 0, FALSE);
+ tick_stat_node(st, st_str_plen, 0, false);
stats_tree_tick_range(st, st_str_plen, 0, pinfo->fd->pkt_len);
@@ -334,14 +335,15 @@ void register_tap_listener_pinfo_stat_tree(void)
stats_tree_register_plugin("ipv6", "ipv6_hop", st_str_ipv6_src_ttls, 0, ipv6_src_ttl_stats_tree_packet, ipv6_src_ttl_stats_tree_init, NULL);
- stats_tree_register_with_group("frame", "plen", st_str_plen, 0, plen_stats_tree_packet, plen_stats_tree_init, NULL, REGISTER_STAT_GROUP_GENERIC);
+ stats_tree_cfg *st_config = stats_tree_register("frame", "plen", st_str_plen, 0, plen_stats_tree_packet, plen_stats_tree_init, NULL);
+ stats_tree_set_group(st_config, REGISTER_STAT_GROUP_GENERIC);
stat_module = prefs_register_stat("stat_tree", "Stats Tree", "Stats Tree", NULL);
plen_uat = uat_new("Packet Lengths",
sizeof(uat_plen_record_t), /* record size */
"packet_lengths", /* filename */
- TRUE, /* from_profile */
+ true, /* from_profile */
&uat_plen_records, /* data_ptr */
&num_plen_uat, /* numitems_ptr */
0, /* not a dissector, so affects neither dissection nor fields */