# include "config.h"
#endif
+#include <stdio.h>
+
#include "globals.h"
#include "proto_hier_stats.h"
#include "progress_dlg.h"
-#include "simple_dialog.h"
#include <epan/epan_dissect.h>
#include <wtap.h>
GNode *stat_node;
finfo = PNODE_FINFO(ptree_node);
- g_assert(finfo);
+ /* We don't fake protocol nodes we expect them to have a field_info */
+ g_assert(finfo && "dissection with faked proto tree?");
/* If the field info isn't related to a protocol but to a field,
* don't count them, as they don't belong to any protocol.
static gboolean
process_frame(frame_data *frame, column_info *cinfo, ph_stats_t* ps)
{
- epan_dissect_t *edt;
+ epan_dissect_t edt;
union wtap_pseudo_header phdr;
guint8 pd[WTAP_MAX_PACKET_SIZE];
- int err;
- gchar *err_info;
double cur_time;
/* Load the frame from the capture file */
- if (!wtap_seek_read(cfile.wth, frame->file_off, &phdr, pd,
- frame->cap_len, &err, &err_info)) {
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- cf_read_error_message(err, err_info), cfile.filename);
+ if (!cf_read_frame_r(&cfile, frame, &phdr, pd))
return FALSE; /* failure */
- }
/* Dissect the frame tree not visible */
- edt = epan_dissect_new(TRUE, FALSE);
- epan_dissect_run(edt, &phdr, pd, frame, cinfo);
+ epan_dissect_init(&edt, TRUE, FALSE);
+ /* Don't fake protocols. We need them for the protocol hierarchy */
+ epan_dissect_fake_protocols(&edt, FALSE);
+ epan_dissect_run(&edt, &phdr, pd, frame, cinfo);
/* Get stats from this protocol tree */
- process_tree(edt->tree, ps, frame->pkt_len);
+ process_tree(edt.tree, ps, frame->pkt_len);
/* Update times */
cur_time = nstime_to_sec(&frame->abs_ts);
}
/* Free our memory. */
- epan_dissect_free(edt);
+ epan_dissect_cleanup(&edt);
return TRUE; /* success */
}
tot_packets = 0;
tot_bytes = 0;
- for (frame = cfile.plist; frame != NULL; frame = frame->next) {
+ for (frame = cfile.plist_start; frame != NULL; frame = frame->next) {
/* Create the progress bar if necessary.
We check on every iteration of the loop, so that
it takes no longer than the standard time to create
to get to the next progress bar step). */
if (progbar == NULL)
progbar = delayed_create_progress_dlg(
- "Computing", "protocol hierarchy statistics",
+ "Computing", "protocol hierarchy statistics",
TRUE, &stop_flag, &start_time, progbar_val);
/* Update the progress bar, but do it only N_PROGBAR_UPDATES
ps->first_time = cur_time;
ps->last_time = cur_time;
}
-
+
/* we don't care about colinfo */
if (!process_frame(frame, NULL, ps)) {
/*
static gboolean
stat_node_free(GNode *node, gpointer data _U_)
{
- ph_stats_node_t *stats = node->data;
+ ph_stats_node_t *stats = (ph_stats_node_t *)node->data;
if (stats) {
g_free(stats);