diff options
-rw-r--r-- | epan/libethereal.def | 3 | ||||
-rw-r--r-- | epan/stats_tree.c | 14 | ||||
-rw-r--r-- | epan/stats_tree.h | 8 | ||||
-rw-r--r-- | epan/stats_tree_priv.h | 1 | ||||
-rw-r--r-- | plugins/stats_tree/http_stats_tree.c | 2 | ||||
-rw-r--r-- | plugins/stats_tree/pinfo_stats_tree.c | 8 |
6 files changed, 17 insertions, 19 deletions
diff --git a/epan/libethereal.def b/epan/libethereal.def index 1b9e94e012..f99d9901d8 100644 --- a/epan/libethereal.def +++ b/epan/libethereal.def @@ -494,7 +494,8 @@ stats_tree_branch_max_namelen stats_tree_branch_to_str stats_tree_create_node stats_tree_create_node_by_pname -stats_tree_create_pivot_node +stats_tree_create_pivot +stats_tree_create_pivot_by_pname stats_tree_create_range_node stats_tree_free stats_tree_get_abbr diff --git a/epan/stats_tree.c b/epan/stats_tree.c index 5bdafaf5ed..3feb5a7cdb 100644 --- a/epan/stats_tree.c +++ b/epan/stats_tree.c @@ -285,7 +285,8 @@ extern stats_tree* stats_tree_new(stats_tree_cfg* cfg, tree_pres* pr,char* filte st->start = -1.0; st->elapsed = 0.0; - + st->highest_seen = 0; + st->root.counter = 0; st->root.name = g_strdup(cfg->name); st->root.st = st; @@ -303,8 +304,13 @@ extern stats_tree* stats_tree_new(stats_tree_cfg* cfg, tree_pres* pr,char* filte /* will be the tap packet cb */ extern int stats_tree_packet(void* p, packet_info* pinfo, epan_dissect_t *edt, const void *pri) { stats_tree* st = p; + float now; + + if (st->highest_seen >= pinfo->fd->num) return 0; + + st->highest_seen = pinfo->fd->num; - float now = (((float)pinfo->fd->rel_secs) + (((float)pinfo->fd->rel_usecs)/1000000) ); + now = (((float)pinfo->fd->rel_secs) + (((float)pinfo->fd->rel_usecs)/1000000) ); if (st->start < 0.0) st->start = now; @@ -631,7 +637,7 @@ extern int stats_tree_tick_range(stats_tree* st, return node->id; } -extern int stats_tree_create_pivot_node(stats_tree* st, +extern int stats_tree_create_pivot(stats_tree* st, const gchar* name, int parent_id) { stat_node* node = new_stat_node(st,name,parent_id,TRUE,TRUE); @@ -642,7 +648,7 @@ extern int stats_tree_create_pivot_node(stats_tree* st, return 0; } -extern int create_pivot_node_with_parent_name(stats_tree* st, +extern int stats_tree_create_pivot_by_pname(stats_tree* st, const gchar* name, const gchar* parent_name) { int parent_id = stats_tree_parent_id_by_name(st,parent_name); diff --git a/epan/stats_tree.h b/epan/stats_tree.h index 74869e836e..872450cb70 100644 --- a/epan/stats_tree.h +++ b/epan/stats_tree.h @@ -114,14 +114,6 @@ extern int stats_tree_create_pivot_by_pname(stats_tree* st, const gchar* name, const gchar* parent_name); -extern int stats_tree_create_pivot_node(stats_tree* st, - const gchar* name, - int parent_id); - -extern int create_pivot_node_with_parent_name(stats_tree* st, - const gchar* name, - const gchar* parent_name); - extern int stats_tree_tick_pivot(stats_tree* st, int pivot_id, const gchar* pivot_value); diff --git a/epan/stats_tree_priv.h b/epan/stats_tree_priv.h index cbe40b30d6..a29ab8e5dc 100644 --- a/epan/stats_tree_priv.h +++ b/epan/stats_tree_priv.h @@ -82,6 +82,7 @@ struct _stats_tree { stats_tree_cfg* cfg; char* filter; + guint32 highest_seen; /* times */ float start; diff --git a/plugins/stats_tree/http_stats_tree.c b/plugins/stats_tree/http_stats_tree.c index 694fe06824..f25762ec08 100644 --- a/plugins/stats_tree/http_stats_tree.c +++ b/plugins/stats_tree/http_stats_tree.c @@ -198,7 +198,7 @@ static int st_node_other = -1; static void http_stats_tree_init(stats_tree* st) { st_node_packets = stats_tree_create_node(st, st_str_packets, 0, TRUE); - st_node_requests = stats_tree_create_pivot_node(st, st_str_requests, st_node_packets); + st_node_requests = stats_tree_create_pivot(st, st_str_requests, st_node_packets); st_node_responses = stats_tree_create_node(st, st_str_responses, st_node_packets, TRUE); st_node_resp_broken = stats_tree_create_node(st, st_str_resp_broken, st_node_responses, TRUE); st_node_resp_100 = stats_tree_create_node(st, st_str_resp_100, st_node_responses, TRUE); diff --git a/plugins/stats_tree/pinfo_stats_tree.c b/plugins/stats_tree/pinfo_stats_tree.c index 4a6a5570b0..70985958e6 100644 --- a/plugins/stats_tree/pinfo_stats_tree.c +++ b/plugins/stats_tree/pinfo_stats_tree.c @@ -61,7 +61,7 @@ extern void ip_hosts_stats_tree_init(stats_tree* st) { extern int ip_hosts_stats_tree_packet(stats_tree *st , packet_info *pinfo, epan_dissect_t *edt _U_, const void *p _U_) { static guint8 str[128]; - stats_tree_tick_node(st, st_str_ip, 0, FALSE); + tick_stat_node(st, st_str_ip, 0, FALSE); g_snprintf(str, sizeof(str),"%s",address_to_str(&pinfo->net_src)); tick_stat_node(st, str, st_node_ip, FALSE); @@ -72,7 +72,6 @@ extern int ip_hosts_stats_tree_packet(stats_tree *st , packet_info *pinfo, epan return 1; } - /* packet type stats_tree -- test pivot node */ static int st_node_ptype = -1; static gchar* st_str_ptype = "Port Type"; @@ -124,12 +123,12 @@ extern int dsts_stats_tree_packet(stats_tree* st, packet_info* pinfo, epan_disse int ip_dst_node; int proto_node; - stats_tree_tick_node(st, st_str_dsts, 0, FALSE); + tick_stat_node(st, st_str_dsts, 0, FALSE); g_snprintf(str, sizeof(str),"%s",address_to_str(&pinfo->net_src)); ip_dst_node = tick_stat_node(st, str, st_node_dsts, TRUE); - proto_node = stats_tree_tick_node(st,port_type_to_str(pinfo->ptype),ip_dst_node,TRUE); + proto_node = tick_stat_node(st,port_type_to_str(pinfo->ptype),ip_dst_node,TRUE); g_snprintf(str, sizeof(str),"%u",pinfo->destport); tick_stat_node(st,str,proto_node,TRUE); @@ -137,7 +136,6 @@ extern int dsts_stats_tree_packet(stats_tree* st, packet_info* pinfo, epan_disse return 1; } - /* register all pinfo trees */ extern 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 ); |