Replace relative timestamp with reference frame number. Saves 16B per frame.

svn path=/trunk/; revision=50772
This commit is contained in:
Jakub Zawadzki 2013-07-21 23:07:33 +00:00
parent 74b6c59499
commit c702e92121
42 changed files with 221 additions and 137 deletions

View File

@ -189,7 +189,7 @@ VAL_PTR=&Data_Field_field_type_value
/* we use the first fragment's frame_number as fragment ID because the protocol doesn't provide it */ /* we use the first fragment's frame_number as fragment ID because the protocol doesn't provide it */
p_t38_conv_info->reass_ID = actx->pinfo->fd->num; p_t38_conv_info->reass_ID = actx->pinfo->fd->num;
p_t38_conv_info->reass_start_seqnum = seq_number; p_t38_conv_info->reass_start_seqnum = seq_number;
p_t38_conv_info->time_first_t4_data = nstime_to_sec(&actx->pinfo->fd->rel_ts); p_t38_conv_info->time_first_t4_data = nstime_to_sec(&actx->pinfo->rel_ts);
p_t38_conv_info->additional_hdlc_data_field_counter = 0; p_t38_conv_info->additional_hdlc_data_field_counter = 0;
p_t38_packet_conv_info->reass_ID = p_t38_conv_info->reass_ID; p_t38_packet_conv_info->reass_ID = p_t38_conv_info->reass_ID;
p_t38_packet_conv_info->reass_start_seqnum = p_t38_conv_info->reass_start_seqnum; p_t38_packet_conv_info->reass_start_seqnum = p_t38_conv_info->reass_start_seqnum;

View File

@ -971,20 +971,25 @@ set_time_hour_min_sec(const nstime_t *ts, gchar *buf)
static void static void
col_set_rel_time(const frame_data *fd, column_info *cinfo, const int col) col_set_rel_time(const frame_data *fd, column_info *cinfo, const int col)
{ {
nstime_t del_rel_ts;
if (!fd->flags.has_ts) { if (!fd->flags.has_ts) {
cinfo->col_buf[col][0] = '\0'; cinfo->col_buf[col][0] = '\0';
return; return;
} }
frame_delta_abs_time(cinfo->epan, fd, fd->frame_ref_num, &del_rel_ts);
switch (timestamp_get_seconds_type()) { switch (timestamp_get_seconds_type()) {
case TS_SECONDS_DEFAULT: case TS_SECONDS_DEFAULT:
set_time_seconds(&fd->rel_ts, cinfo->col_buf[col]); set_time_seconds(&del_rel_ts, cinfo->col_buf[col]);
cinfo->col_expr.col_expr[col] = "frame.time_relative"; cinfo->col_expr.col_expr[col] = "frame.time_relative";
g_strlcpy(cinfo->col_expr.col_expr_val[col],cinfo->col_buf[col],COL_MAX_LEN); g_strlcpy(cinfo->col_expr.col_expr_val[col],cinfo->col_buf[col],COL_MAX_LEN);
break; break;
case TS_SECONDS_HOUR_MIN_SEC: case TS_SECONDS_HOUR_MIN_SEC:
set_time_hour_min_sec(&fd->rel_ts, cinfo->col_buf[col]); set_time_hour_min_sec(&del_rel_ts, cinfo->col_buf[col]);
cinfo->col_expr.col_expr[col] = "frame.time_relative"; cinfo->col_expr.col_expr[col] = "frame.time_relative";
set_time_seconds(&fd->rel_ts, cinfo->col_expr.col_expr_val[col]); set_time_seconds(&del_rel_ts, cinfo->col_expr.col_expr_val[col]);
break; break;
default: default:
g_assert_not_reached(); g_assert_not_reached();
@ -1208,12 +1213,16 @@ set_fd_time(const epan_t *epan, frame_data *fd, gchar *buf)
case TS_RELATIVE: case TS_RELATIVE:
if (fd->flags.has_ts) { if (fd->flags.has_ts) {
nstime_t del_rel_ts;
frame_delta_abs_time(epan, fd, fd->frame_ref_num, &del_rel_ts);
switch (timestamp_get_seconds_type()) { switch (timestamp_get_seconds_type()) {
case TS_SECONDS_DEFAULT: case TS_SECONDS_DEFAULT:
set_time_seconds(&fd->rel_ts, buf); set_time_seconds(&del_rel_ts, buf);
break; break;
case TS_SECONDS_HOUR_MIN_SEC: case TS_SECONDS_HOUR_MIN_SEC:
set_time_seconds(&fd->rel_ts, buf); set_time_seconds(&del_rel_ts, buf);
break; break;
default: default:
g_assert_not_reached(); g_assert_not_reached();

View File

@ -352,7 +352,7 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
} }
item = proto_tree_add_time(fh_tree, hf_frame_time_relative, tvb, item = proto_tree_add_time(fh_tree, hf_frame_time_relative, tvb,
0, 0, &(pinfo->fd->rel_ts)); 0, 0, &(pinfo->rel_ts));
PROTO_ITEM_SET_GENERATED(item); PROTO_ITEM_SET_GENERATED(item);
if(pinfo->fd->flags.ref_time){ if(pinfo->fd->flags.ref_time){

View File

@ -715,7 +715,7 @@ dissect_t38_T_field_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
/* we use the first fragment's frame_number as fragment ID because the protocol doesn't provide it */ /* we use the first fragment's frame_number as fragment ID because the protocol doesn't provide it */
p_t38_conv_info->reass_ID = actx->pinfo->fd->num; p_t38_conv_info->reass_ID = actx->pinfo->fd->num;
p_t38_conv_info->reass_start_seqnum = seq_number; p_t38_conv_info->reass_start_seqnum = seq_number;
p_t38_conv_info->time_first_t4_data = nstime_to_sec(&actx->pinfo->fd->rel_ts); p_t38_conv_info->time_first_t4_data = nstime_to_sec(&actx->pinfo->rel_ts);
p_t38_conv_info->additional_hdlc_data_field_counter = 0; p_t38_conv_info->additional_hdlc_data_field_counter = 0;
p_t38_packet_conv_info->reass_ID = p_t38_conv_info->reass_ID; p_t38_packet_conv_info->reass_ID = p_t38_conv_info->reass_ID;
p_t38_packet_conv_info->reass_start_seqnum = p_t38_conv_info->reass_start_seqnum; p_t38_packet_conv_info->reass_start_seqnum = p_t38_conv_info->reass_start_seqnum;

View File

@ -179,6 +179,17 @@ frame_data_time_delta_compare(const struct epan_session *epan, const frame_data
return COMPARE_TS_REAL(del_cap_ts1, del_cap_ts2); return COMPARE_TS_REAL(del_cap_ts1, del_cap_ts2);
} }
static gint
frame_data_time_delta_rel_compare(const struct epan_session *epan, const frame_data *fdata1, const frame_data *fdata2)
{
nstime_t del_rel_ts1, del_rel_ts2;
frame_delta_abs_time(epan, fdata1, fdata1->frame_ref_num, &del_rel_ts1);
frame_delta_abs_time(epan, fdata2, fdata2->frame_ref_num, &del_rel_ts2);
return COMPARE_TS_REAL(del_rel_ts1, del_rel_ts2);
}
static gint static gint
frame_data_time_delta_dis_compare(const struct epan_session *epan, const frame_data *fdata1, const frame_data *fdata2) frame_data_time_delta_dis_compare(const struct epan_session *epan, const frame_data *fdata1, const frame_data *fdata2)
{ {
@ -207,7 +218,7 @@ frame_data_compare(const struct epan_session *epan, const frame_data *fdata1, co
return COMPARE_TS(abs_ts); return COMPARE_TS(abs_ts);
case TS_RELATIVE: case TS_RELATIVE:
return COMPARE_TS(rel_ts); return frame_data_time_delta_rel_compare(epan, fdata1, fdata2);
case TS_DELTA: case TS_DELTA:
return frame_data_time_delta_compare(epan, fdata1, fdata2); return frame_data_time_delta_compare(epan, fdata1, fdata2);
@ -227,7 +238,7 @@ frame_data_compare(const struct epan_session *epan, const frame_data *fdata1, co
return COMPARE_TS(abs_ts); return COMPARE_TS(abs_ts);
case COL_REL_TIME: case COL_REL_TIME:
return COMPARE_TS(rel_ts); return frame_data_time_delta_rel_compare(epan, fdata1, fdata2);
case COL_DELTA_TIME: case COL_DELTA_TIME:
return frame_data_time_delta_compare(epan, fdata1, fdata2); return frame_data_time_delta_compare(epan, fdata1, fdata2);
@ -277,8 +288,7 @@ frame_data_init(frame_data *fdata, guint32 num,
fdata->abs_ts.nsecs = phdr->ts.nsecs; fdata->abs_ts.nsecs = phdr->ts.nsecs;
fdata->shift_offset.secs = 0; fdata->shift_offset.secs = 0;
fdata->shift_offset.nsecs = 0; fdata->shift_offset.nsecs = 0;
fdata->rel_ts.secs = 0; fdata->frame_ref_num = 0;
fdata->rel_ts.nsecs = 0;
fdata->prev_dis_num = 0; fdata->prev_dis_num = 0;
fdata->opt_comment = phdr->opt_comment; fdata->opt_comment = phdr->opt_comment;
} }
@ -286,31 +296,32 @@ frame_data_init(frame_data *fdata, guint32 num,
void void
frame_data_set_before_dissect(frame_data *fdata, frame_data_set_before_dissect(frame_data *fdata,
nstime_t *elapsed_time, nstime_t *elapsed_time,
nstime_t *first_ts, const frame_data **frame_ref,
const frame_data *prev_dis) const frame_data *prev_dis)
{ {
/* If we don't have the time stamp of the first packet in the nstime_t rel_ts;
capture, it's because this is the first packet. Save the time
stamp of this packet as the time stamp of the first packet. */
if (nstime_is_unset(first_ts))
*first_ts = fdata->abs_ts;
/* if this frames is marked as a reference time frame, reset /* Don't have the reference frame, set to current */
firstsec and firstusec to this frame */ if (*frame_ref == NULL)
*frame_ref = fdata;
/* if this frames is marked as a reference time frame,
set reference frame this frame */
if(fdata->flags.ref_time) if(fdata->flags.ref_time)
*first_ts = fdata->abs_ts; *frame_ref = fdata;
/* Get the time elapsed between the first packet and this packet. */ /* Get the time elapsed between the first packet and this packet. */
nstime_delta(&fdata->rel_ts, &fdata->abs_ts, first_ts); nstime_delta(&rel_ts, &fdata->abs_ts, &(*frame_ref)->abs_ts);
/* If it's greater than the current elapsed time, set the elapsed time /* If it's greater than the current elapsed time, set the elapsed time
to it (we check for "greater than" so as not to be confused by to it (we check for "greater than" so as not to be confused by
time moving backwards). */ time moving backwards). */
if ((gint32)elapsed_time->secs < fdata->rel_ts.secs if ((gint32)elapsed_time->secs < rel_ts.secs
|| ((gint32)elapsed_time->secs == fdata->rel_ts.secs && (gint32)elapsed_time->nsecs < fdata->rel_ts.nsecs)) { || ((gint32)elapsed_time->secs == rel_ts.secs && (gint32)elapsed_time->nsecs < rel_ts.nsecs)) {
*elapsed_time = fdata->rel_ts; *elapsed_time = rel_ts;
} }
fdata->frame_ref_num = (*frame_ref != fdata) ? (*frame_ref)->num : 0;
fdata->prev_dis_num = (prev_dis) ? prev_dis->num : 0; fdata->prev_dis_num = (prev_dis) ? prev_dis->num : 0;
} }

View File

@ -83,7 +83,7 @@ typedef struct _frame_data {
nstime_t abs_ts; /**< Absolute timestamp */ nstime_t abs_ts; /**< Absolute timestamp */
nstime_t shift_offset; /**< How much the abs_tm of the frame is shifted */ nstime_t shift_offset; /**< How much the abs_tm of the frame is shifted */
nstime_t rel_ts; /**< Relative timestamp (yes, it can be negative) */ guint32 frame_ref_num; /**< Previous reference frame (0 if this is one) */
guint32 prev_dis_num; /**< Previous displayed frame (0 if first one) */ guint32 prev_dis_num; /**< Previous displayed frame (0 if first one) */
gchar *opt_comment; /**< NULL if not available */ gchar *opt_comment; /**< NULL if not available */
} frame_data; } frame_data;
@ -124,7 +124,7 @@ extern void frame_delta_abs_time(const struct epan_session *epan, const frame_da
*/ */
WS_DLL_PUBLIC void frame_data_set_before_dissect(frame_data *fdata, WS_DLL_PUBLIC void frame_data_set_before_dissect(frame_data *fdata,
nstime_t *elapsed_time, nstime_t *elapsed_time,
nstime_t *first_ts, const frame_data **frame_ref,
const frame_data *prev_dis); const frame_data *prev_dis);
WS_DLL_PUBLIC void frame_data_set_after_dissect(frame_data *fdata, WS_DLL_PUBLIC void frame_data_set_after_dissect(frame_data *fdata,

View File

@ -351,6 +351,8 @@ dissect_packet(epan_dissect_t *edt, struct wtap_pkthdr *phdr,
edt->pi.link_dir = LINK_DIR_UNKNOWN; edt->pi.link_dir = LINK_DIR_UNKNOWN;
edt->tvb = tvb; edt->tvb = tvb;
frame_delta_abs_time(edt->session, fd, fd->frame_ref_num, &edt->pi.rel_ts);
/* to enable decode as for ethertype=0x0000 (fix for bug 4721) */ /* to enable decode as for ethertype=0x0000 (fix for bug 4721) */
edt->pi.ethertype = G_MAXINT; edt->pi.ethertype = G_MAXINT;

View File

@ -226,6 +226,7 @@ typedef struct _packet_info {
struct _wmem_allocator_t *pool; /**< Memory pool scoped to the pinfo struct */ struct _wmem_allocator_t *pool; /**< Memory pool scoped to the pinfo struct */
struct epan_session *epan; struct epan_session *epan;
nstime_t rel_ts; /**< Relative timestamp (yes, it can be negative) */
} packet_info; } packet_info;
/**< For old code that hasn't yet been changed. */ /**< For old code that hasn't yet been changed. */

View File

@ -359,7 +359,7 @@ extern int
stats_tree_packet(void *p, packet_info *pinfo, epan_dissect_t *edt, const void *pri) stats_tree_packet(void *p, packet_info *pinfo, epan_dissect_t *edt, const void *pri)
{ {
stats_tree *st = (stats_tree *)p; stats_tree *st = (stats_tree *)p;
double now = nstime_to_msec(&pinfo->fd->rel_ts); double now = nstime_to_msec(&pinfo->rel_ts);
if (st->start < 0.0) st->start = now; if (st->start < 0.0) st->start = now;

View File

@ -1022,7 +1022,7 @@ PINFO_GET_NUMBER(Pinfo_number,pinfo->ws_pinfo->fd->num)
PINFO_GET_NUMBER(Pinfo_len,pinfo->ws_pinfo->fd->pkt_len) PINFO_GET_NUMBER(Pinfo_len,pinfo->ws_pinfo->fd->pkt_len)
PINFO_GET_NUMBER(Pinfo_caplen,pinfo->ws_pinfo->fd->cap_len) PINFO_GET_NUMBER(Pinfo_caplen,pinfo->ws_pinfo->fd->cap_len)
PINFO_GET_NUMBER(Pinfo_abs_ts,lua_nstime_to_sec(&pinfo->ws_pinfo->fd->abs_ts)) PINFO_GET_NUMBER(Pinfo_abs_ts,lua_nstime_to_sec(&pinfo->ws_pinfo->fd->abs_ts))
PINFO_GET_NUMBER(Pinfo_rel_ts,lua_nstime_to_sec(&pinfo->ws_pinfo->fd->rel_ts)) PINFO_GET_NUMBER(Pinfo_rel_ts,lua_nstime_to_sec(&pinfo->ws_pinfo->rel_ts))
PINFO_GET_NUMBER(Pinfo_delta_ts,lua_delta_nstime_to_sec(pinfo, pinfo->ws_pinfo->fd, pinfo->ws_pinfo->fd->num - 1)) PINFO_GET_NUMBER(Pinfo_delta_ts,lua_delta_nstime_to_sec(pinfo, pinfo->ws_pinfo->fd, pinfo->ws_pinfo->fd->num - 1))
PINFO_GET_NUMBER(Pinfo_delta_dis_ts,lua_delta_nstime_to_sec(pinfo, pinfo->ws_pinfo->fd, pinfo->ws_pinfo->fd->prev_dis_num)) PINFO_GET_NUMBER(Pinfo_delta_dis_ts,lua_delta_nstime_to_sec(pinfo, pinfo->ws_pinfo->fd, pinfo->ws_pinfo->fd->prev_dis_num))
PINFO_GET_NUMBER(Pinfo_ipproto,pinfo->ws_pinfo->ipproto) PINFO_GET_NUMBER(Pinfo_ipproto,pinfo->ws_pinfo->ipproto)

30
file.c
View File

@ -109,7 +109,7 @@ gboolean auto_scroll_live;
#endif #endif
static guint32 cum_bytes; static guint32 cum_bytes;
static nstime_t first_ts; const static frame_data *ref;
static frame_data *prev_dis; static frame_data *prev_dis;
static frame_data *prev_cap; static frame_data *prev_cap;
@ -397,7 +397,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
cf->frames = new_frame_data_sequence(); cf->frames = new_frame_data_sequence();
nstime_set_zero(&cf->elapsed_time); nstime_set_zero(&cf->elapsed_time);
nstime_set_unset(&first_ts); ref = NULL;
prev_dis = NULL; prev_dis = NULL;
prev_cap = NULL; prev_cap = NULL;
cum_bytes = 0; cum_bytes = 0;
@ -1155,7 +1155,7 @@ add_packet_to_packet_list(frame_data *fdata, capture_file *cf,
gint row = -1; gint row = -1;
frame_data_set_before_dissect(fdata, &cf->elapsed_time, frame_data_set_before_dissect(fdata, &cf->elapsed_time,
&first_ts, prev_dis); &ref, prev_dis);
prev_cap = fdata; prev_cap = fdata;
/* Dissect the frame. */ /* Dissect the frame. */
@ -1871,7 +1871,7 @@ rescan_packets(capture_file *cf, const char *action, const char *action_item, gb
/* Iterate through the list of frames. Call a routine for each frame /* Iterate through the list of frames. Call a routine for each frame
to check whether it should be displayed and, if so, add it to to check whether it should be displayed and, if so, add it to
the display list. */ the display list. */
nstime_set_unset(&first_ts); ref = NULL;
prev_dis = NULL; prev_dis = NULL;
prev_cap = NULL; prev_cap = NULL;
cum_bytes = 0; cum_bytes = 0;
@ -2108,8 +2108,9 @@ ref_time_packets(capture_file *cf)
{ {
guint32 framenum; guint32 framenum;
frame_data *fdata; frame_data *fdata;
nstime_t rel_ts;
nstime_set_unset(&first_ts); ref = NULL;
prev_dis = NULL; prev_dis = NULL;
cum_bytes = 0; cum_bytes = 0;
@ -2126,14 +2127,12 @@ ref_time_packets(capture_file *cf)
/* If we don't have the time stamp of the first packet in the /* If we don't have the time stamp of the first packet in the
capture, it's because this is the first packet. Save the time capture, it's because this is the first packet. Save the time
stamp of this packet as the time stamp of the first packet. */ stamp of this packet as the time stamp of the first packet. */
if (nstime_is_unset(&first_ts)) { if (ref == NULL)
first_ts = fdata->abs_ts; ref = fdata;
}
/* if this frames is marked as a reference time frame, reset /* if this frames is marked as a reference time frame, reset
firstsec and firstusec to this frame */ firstsec and firstusec to this frame */
if (fdata->flags.ref_time) { if (fdata->flags.ref_time)
first_ts = fdata->abs_ts; ref = fdata;
}
/* If we don't have the time stamp of the previous displayed packet, /* If we don't have the time stamp of the previous displayed packet,
it's because this is the first displayed packet. Save the time it's because this is the first displayed packet. Save the time
@ -2144,14 +2143,15 @@ ref_time_packets(capture_file *cf)
} }
/* Get the time elapsed between the first packet and this packet. */ /* Get the time elapsed between the first packet and this packet. */
nstime_delta(&fdata->rel_ts, &fdata->abs_ts, &first_ts); fdata->frame_ref_num = (fdata != ref) ? ref->num : 0;
nstime_delta(&rel_ts, &fdata->abs_ts, &ref->abs_ts);
/* If it's greater than the current elapsed time, set the elapsed time /* If it's greater than the current elapsed time, set the elapsed time
to it (we check for "greater than" so as not to be confused by to it (we check for "greater than" so as not to be confused by
time moving backwards). */ time moving backwards). */
if ((gint32)cf->elapsed_time.secs < fdata->rel_ts.secs if ((gint32)cf->elapsed_time.secs < rel_ts.secs
|| ((gint32)cf->elapsed_time.secs == fdata->rel_ts.secs && (gint32)cf->elapsed_time.nsecs < fdata->rel_ts.nsecs)) { || ((gint32)cf->elapsed_time.secs == rel_ts.secs && (gint32)cf->elapsed_time.nsecs < rel_ts.nsecs)) {
cf->elapsed_time = fdata->rel_ts; cf->elapsed_time = rel_ts;
} }
/* If this frame is displayed, get the time elapsed between the /* If this frame is displayed, get the time elapsed between the

View File

@ -121,7 +121,8 @@
static const gchar decode_as_arg_template[] = "<layer_type>==<selector>,<decode_as_protocol>"; static const gchar decode_as_arg_template[] = "<layer_type>==<selector>,<decode_as_protocol>";
static guint32 cum_bytes; static guint32 cum_bytes;
static nstime_t first_ts; static const frame_data *ref;
static frame_data ref_frame;
static frame_data *prev_dis; static frame_data *prev_dis;
static frame_data prev_dis_frame; static frame_data prev_dis_frame;
static frame_data *prev_cap; static frame_data *prev_cap;
@ -1074,7 +1075,12 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
printf("%lu", (unsigned long int) cf->count); printf("%lu", (unsigned long int) cf->count);
frame_data_set_before_dissect(&fdata, &cf->elapsed_time, frame_data_set_before_dissect(&fdata, &cf->elapsed_time,
&first_ts, prev_dis); &ref, prev_dis);
if (ref == &fdata) {
ref_frame = fdata;
ref = &ref_frame;
}
/* We only need the columns if we're printing packet info but we're /* We only need the columns if we're printing packet info but we're
*not* verbose; in verbose mode, we print the protocol tree, not *not* verbose; in verbose mode, we print the protocol tree, not
@ -1569,6 +1575,9 @@ open_failure_message(const char *filename, int err, gboolean for_writing)
const nstime_t * const nstime_t *
raw_get_frame_ts(void *data _U_, guint32 frame_num) raw_get_frame_ts(void *data _U_, guint32 frame_num)
{ {
if (ref && ref->num == frame_num)
return &ref->abs_ts;
if (prev_dis && prev_dis->num == frame_num) if (prev_dis && prev_dis->num == frame_num)
return &prev_dis->abs_ts; return &prev_dis->abs_ts;
@ -1622,7 +1631,7 @@ raw_cf_open(capture_file *cf, const char *fname)
cf->has_snap = FALSE; cf->has_snap = FALSE;
cf->snap = WTAP_MAX_PACKET_SIZE; cf->snap = WTAP_MAX_PACKET_SIZE;
nstime_set_zero(&cf->elapsed_time); nstime_set_zero(&cf->elapsed_time);
nstime_set_unset(&first_ts); ref = NULL;
prev_dis = NULL; prev_dis = NULL;
prev_cap = NULL; prev_cap = NULL;

View File

@ -105,7 +105,8 @@
static const gchar decode_as_arg_template[] = "<layer_type>==<selector>,<decode_as_protocol>"; static const gchar decode_as_arg_template[] = "<layer_type>==<selector>,<decode_as_protocol>";
static guint32 cum_bytes; static guint32 cum_bytes;
static nstime_t first_ts; static const frame_data *ref;
static frame_data ref_frame;
static frame_data *prev_dis; static frame_data *prev_dis;
static frame_data prev_dis_frame; static frame_data prev_dis_frame;
static frame_data *prev_cap; static frame_data *prev_cap;
@ -2163,6 +2164,9 @@ tshark_get_frame_ts(void *data, guint32 frame_num)
{ {
capture_file *cf = (capture_file *) data; capture_file *cf = (capture_file *) data;
if (ref && ref->num == frame_num)
return &ref->abs_ts;
if (prev_dis && prev_dis->num == frame_num) if (prev_dis && prev_dis->num == frame_num)
return &prev_dis->abs_ts; return &prev_dis->abs_ts;
@ -2725,7 +2729,11 @@ process_packet_first_pass(capture_file *cf,
epan_dissect_prime_dfilter(&edt, cf->rfcode); epan_dissect_prime_dfilter(&edt, cf->rfcode);
frame_data_set_before_dissect(&fdlocal, &cf->elapsed_time, frame_data_set_before_dissect(&fdlocal, &cf->elapsed_time,
&first_ts, prev_dis); &ref, prev_dis);
if (ref == &fdlocal) {
ref_frame = fdlocal;
ref = &ref_frame;
}
epan_dissect_run(&edt, whdr, frame_tvbuff_new(&fdlocal, pd), &fdlocal, NULL); epan_dissect_run(&edt, whdr, frame_tvbuff_new(&fdlocal, pd), &fdlocal, NULL);
@ -2814,7 +2822,11 @@ process_packet_second_pass(capture_file *cf, frame_data *fdata,
cinfo = NULL; cinfo = NULL;
frame_data_set_before_dissect(fdata, &cf->elapsed_time, frame_data_set_before_dissect(fdata, &cf->elapsed_time,
&first_ts, prev_dis); &ref, prev_dis);
if (ref == fdata) {
ref_frame = *fdata;
ref = &ref_frame;
}
epan_dissect_run_with_taps(&edt, phdr, frame_tvbuff_new_buffer(fdata, buf), fdata, cinfo); epan_dissect_run_with_taps(&edt, phdr, frame_tvbuff_new_buffer(fdata, buf), fdata, cinfo);
@ -3276,7 +3288,11 @@ process_packet(capture_file *cf, gint64 offset, struct wtap_pkthdr *whdr,
cinfo = NULL; cinfo = NULL;
frame_data_set_before_dissect(&fdata, &cf->elapsed_time, frame_data_set_before_dissect(&fdata, &cf->elapsed_time,
&first_ts, prev_dis); &ref, prev_dis);
if (ref == &fdata) {
ref_frame = fdata;
ref = &ref_frame;
}
epan_dissect_run_with_taps(&edt, whdr, frame_tvbuff_new(&fdata, pd), &fdata, cinfo); epan_dissect_run_with_taps(&edt, whdr, frame_tvbuff_new(&fdata, pd), &fdata, cinfo);
@ -3766,7 +3782,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
} else } else
cf->has_snap = TRUE; cf->has_snap = TRUE;
nstime_set_zero(&cf->elapsed_time); nstime_set_zero(&cf->elapsed_time);
nstime_set_unset(&first_ts); ref = NULL;
prev_dis = NULL; prev_dis = NULL;
prev_cap = NULL; prev_cap = NULL;

View File

@ -105,10 +105,10 @@ iostat_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt, const void *du
mit = (io_stat_item_t *) arg; mit = (io_stat_item_t *) arg;
parent = mit->parent; parent = mit->parent;
relative_time = ((guint64)pinfo->fd->rel_ts.secs * 1000000ULL) + relative_time = ((guint64)pinfo->rel_ts.secs * 1000000ULL) +
((guint64)((pinfo->fd->rel_ts.nsecs+500)/1000)); ((guint64)((pinfo->rel_ts.nsecs+500)/1000));
if (mit->parent->start_time == 0) { if (mit->parent->start_time == 0) {
mit->parent->start_time = pinfo->fd->abs_ts.secs - pinfo->fd->rel_ts.secs; mit->parent->start_time = pinfo->fd->abs_ts.secs - pinfo->rel_ts.secs;
} }
/* The prev item before the main one is always the last interval we saw packets for */ /* The prev item before the main one is always the last interval we saw packets for */

View File

@ -206,7 +206,7 @@ iousers_udpip_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, con
g_snprintf(name1,256,"%s:%s",ep_address_to_str(&udph->ip_dst),get_udp_port(udph->uh_dport)); g_snprintf(name1,256,"%s:%s",ep_address_to_str(&udph->ip_dst),get_udp_port(udph->uh_dport));
} }
iousers_process_name_packet(iu, name1, name2, direction, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, &pinfo->fd->abs_ts); iousers_process_name_packet(iu, name1, name2, direction, pinfo->fd->pkt_len, &pinfo->rel_ts, &pinfo->fd->abs_ts);
return 1; return 1;
} }
@ -237,7 +237,7 @@ iousers_sctp_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, cons
g_snprintf(name2,256,"%s:%s",ep_address_to_str(&sctph->ip_dst),s_dport); g_snprintf(name2,256,"%s:%s",ep_address_to_str(&sctph->ip_dst),s_dport);
} }
iousers_process_name_packet(iu, name1, name2, direction, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, &pinfo->fd->abs_ts); iousers_process_name_packet(iu, name1, name2, direction, pinfo->fd->pkt_len, &pinfo->rel_ts, &pinfo->fd->abs_ts);
return 1; return 1;
} }
@ -269,7 +269,7 @@ iousers_tcpip_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, con
g_snprintf(name1,256,"%s:%s",ep_address_to_str(&tcph->ip_dst),get_tcp_port(tcph->th_dport)); g_snprintf(name1,256,"%s:%s",ep_address_to_str(&tcph->ip_dst),get_tcp_port(tcph->th_dport));
} }
iousers_process_name_packet_with_conv_id(iu, name1, name2, tcph->th_stream, direction, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, &pinfo->fd->abs_ts); iousers_process_name_packet_with_conv_id(iu, name1, name2, tcph->th_stream, direction, pinfo->fd->pkt_len, &pinfo->rel_ts, &pinfo->fd->abs_ts);
return 1; return 1;
} }
@ -281,7 +281,7 @@ iousers_ip_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const ws_ip *iph=(const ws_ip *)vip; const ws_ip *iph=(const ws_ip *)vip;
iousers_process_address_packet(iu, &iph->ip_src, &iph->ip_dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &iph->ip_src, &iph->ip_dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -299,7 +299,7 @@ iousers_ipv6_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, cons
src.data = &ip6h->ip6_src; src.data = &ip6h->ip6_src;
dst.data = &ip6h->ip6_dst; dst.data = &ip6h->ip6_dst;
iousers_process_address_packet(iu, &src, &dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &src, &dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -310,7 +310,7 @@ iousers_ipx_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const ipxhdr_t *ipxh=(const ipxhdr_t *)vipx; const ipxhdr_t *ipxh=(const ipxhdr_t *)vipx;
iousers_process_address_packet(iu, &ipxh->ipx_src, &ipxh->ipx_dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &ipxh->ipx_src, &ipxh->ipx_dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -321,7 +321,7 @@ iousers_fc_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const fc_hdr *fchdr=(const fc_hdr *)vfc; const fc_hdr *fchdr=(const fc_hdr *)vfc;
iousers_process_address_packet(iu, &fchdr->s_id, &fchdr->d_id, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &fchdr->s_id, &fchdr->d_id, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -332,7 +332,7 @@ iousers_eth_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const eth_hdr *ehdr=(const eth_hdr *)veth; const eth_hdr *ehdr=(const eth_hdr *)veth;
iousers_process_address_packet(iu, &ehdr->src, &ehdr->dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &ehdr->src, &ehdr->dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -343,7 +343,7 @@ iousers_fddi_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, cons
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const fddi_hdr *ehdr=(const fddi_hdr *)veth; const fddi_hdr *ehdr=(const fddi_hdr *)veth;
iousers_process_address_packet(iu, &ehdr->src, &ehdr->dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &ehdr->src, &ehdr->dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }
@ -354,7 +354,7 @@ iousers_tr_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
io_users_t *iu=(io_users_t *)arg; io_users_t *iu=(io_users_t *)arg;
const tr_hdr *trhdr=(const tr_hdr *)vtr; const tr_hdr *trhdr=(const tr_hdr *)vtr;
iousers_process_address_packet(iu, &trhdr->src, &trhdr->dst, pinfo->fd->pkt_len, &pinfo->fd->rel_ts); iousers_process_address_packet(iu, &trhdr->src, &trhdr->dst, pinfo->fd->pkt_len, &pinfo->rel_ts);
return 1; return 1;
} }

View File

@ -40,7 +40,7 @@ sv_packet(void *prs _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const void
int i; int i;
const sv_frame_data * sv_data = (const sv_frame_data *)pri; const sv_frame_data * sv_data = (const sv_frame_data *)pri;
printf("%f %u ", nstime_to_sec(&pinfo->fd->rel_ts), sv_data->smpCnt); printf("%f %u ", nstime_to_sec(&pinfo->rel_ts), sv_data->smpCnt);
for(i = 0; i < sv_data->num_phsMeas; i++) { for(i = 0; i < sv_data->num_phsMeas; i++) {
printf("%d ", sv_data->phsMeas[i].value); printf("%d ", sv_data->phsMeas[i].value);

View File

@ -43,7 +43,7 @@ eth_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
{ {
const eth_hdr *ehdr=(eth_hdr *)vip; const eth_hdr *ehdr=(eth_hdr *)vip;
add_conversation_table_data((conversations_table *)pct, &ehdr->src, &ehdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_ETHER, PT_NONE); add_conversation_table_data((conversations_table *)pct, &ehdr->src, &ehdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_ETHER, PT_NONE);
return 1; return 1;
} }

View File

@ -46,7 +46,7 @@ fc_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, c
{ {
const fc_hdr *fchdr=(fc_hdr *)vip; const fc_hdr *fchdr=(fc_hdr *)vip;
add_conversation_table_data((conversations_table *)pct, &fchdr->s_id, &fchdr->d_id, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); add_conversation_table_data((conversations_table *)pct, &fchdr->s_id, &fchdr->d_id, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -43,7 +43,7 @@ fddi_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
{ {
const fddi_hdr *ehdr=(fddi_hdr *)vip; const fddi_hdr *ehdr=(fddi_hdr *)vip;
add_conversation_table_data((conversations_table *)pct, &ehdr->src, &ehdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_FDDI, PT_NONE); add_conversation_table_data((conversations_table *)pct, &ehdr->src, &ehdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_FDDI, PT_NONE);
return 1; return 1;
} }

View File

@ -43,7 +43,7 @@ ip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, c
{ {
const ws_ip *iph=(ws_ip *)vip; const ws_ip *iph=(ws_ip *)vip;
add_conversation_table_data((conversations_table *)pct, &iph->ip_src, &iph->ip_dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); add_conversation_table_data((conversations_table *)pct, &iph->ip_src, &iph->ip_dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -51,7 +51,7 @@ ipv6_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
src.data = &ip6h->ip6_src; src.data = &ip6h->ip6_src;
dst.data = &ip6h->ip6_dst; dst.data = &ip6h->ip6_dst;
add_conversation_table_data((conversations_table *)pct, &src, &dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); add_conversation_table_data((conversations_table *)pct, &src, &dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -44,7 +44,7 @@ ipx_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
{ {
const ipxhdr_t *ipxh=(ipxhdr_t *)vip; const ipxhdr_t *ipxh=(ipxhdr_t *)vip;
add_conversation_table_data((conversations_table *)pct, &ipxh->ipx_src, &ipxh->ipx_dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); add_conversation_table_data((conversations_table *)pct, &ipxh->ipx_src, &ipxh->ipx_dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -46,7 +46,7 @@ ncp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
connection = (ncph->conn_high * 256)+ncph->conn_low; connection = (ncph->conn_high * 256)+ncph->conn_low;
if (connection < 65535) { if (connection < 65535) {
add_conversation_table_data((conversations_table *)pct, &pinfo->src, &pinfo->dst, connection, connection, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NCP); add_conversation_table_data((conversations_table *)pct, &pinfo->src, &pinfo->dst, connection, connection, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NCP);
} }
return 1; return 1;

View File

@ -45,7 +45,7 @@ rsvp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
add_conversation_table_data((conversations_table *)pct, add_conversation_table_data((conversations_table *)pct,
&rsvph->source, &rsvph->destination, 0, 0, 1, &rsvph->source, &rsvph->destination, 0, 0, 1,
pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -50,7 +50,7 @@ sctp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
sctphdr->dport, sctphdr->dport,
1, 1,
pinfo->fd->pkt_len, pinfo->fd->pkt_len,
&pinfo->fd->rel_ts, &pinfo->rel_ts,
SAT_NONE, SAT_NONE,
PT_SCTP); PT_SCTP);

View File

@ -43,7 +43,7 @@ tcpip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_
{ {
const struct tcpheader *tcphdr=(struct tcpheader *)vip; const struct tcpheader *tcphdr=(struct tcpheader *)vip;
add_conversation_table_data_with_conv_id((conversations_table *)pct, &tcphdr->ip_src, &tcphdr->ip_dst, tcphdr->th_sport, tcphdr->th_dport, (conv_id_t) tcphdr->th_stream, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_TCP); add_conversation_table_data_with_conv_id((conversations_table *)pct, &tcphdr->ip_src, &tcphdr->ip_dst, tcphdr->th_sport, tcphdr->th_dport, (conv_id_t) tcphdr->th_stream, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_TCP);
return 1; return 1;
} }

View File

@ -43,7 +43,7 @@ tr_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, c
{ {
const tr_hdr *trhdr=(tr_hdr *)vip; const tr_hdr *trhdr=(tr_hdr *)vip;
add_conversation_table_data((conversations_table *)pct, &trhdr->src, &trhdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_TOKENRING, PT_NONE); add_conversation_table_data((conversations_table *)pct, &trhdr->src, &trhdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_TOKENRING, PT_NONE);
return 1; return 1;
} }

View File

@ -43,7 +43,7 @@ udpip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_
{ {
const e_udphdr *udphdr=(e_udphdr *)vip; const e_udphdr *udphdr=(e_udphdr *)vip;
add_conversation_table_data((conversations_table *)pct, &udphdr->ip_src, &udphdr->ip_dst, udphdr->uh_sport, udphdr->uh_dport, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_UDP); add_conversation_table_data((conversations_table *)pct, &udphdr->ip_src, &udphdr->ip_dst, udphdr->uh_sport, udphdr->uh_dport, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_UDP);
return 1; return 1;
} }

View File

@ -40,7 +40,7 @@
static int static int
usb_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip _U_) usb_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip _U_)
{ {
add_conversation_table_data((conversations_table *)pct, &pinfo->src, &pinfo->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_NONE, PT_NONE); add_conversation_table_data((conversations_table *)pct, &pinfo->src, &pinfo->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_NONE, PT_NONE);
return 1; return 1;
} }

View File

@ -43,7 +43,7 @@ wlan_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_,
{ {
const wlan_hdr *whdr=(wlan_hdr *)vip; const wlan_hdr *whdr=(wlan_hdr *)vip;
add_conversation_table_data((conversations_table *)pct, &whdr->src, &whdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->fd->rel_ts, SAT_WLAN, PT_NONE); add_conversation_table_data((conversations_table *)pct, &whdr->src, &whdr->dst, 0, 0, 1, pinfo->fd->pkt_len, &pinfo->rel_ts, SAT_WLAN, PT_NONE);
return 1; return 1;
} }

View File

@ -385,7 +385,7 @@ iax2_packet_add_graph(dialog_graph_graph_t *dgg, tap_iax2_stat_t *statinfo, pack
if (dgg->ud->dlg.dialog_graph.start_time == -1) { /* it is the first */ if (dgg->ud->dlg.dialog_graph.start_time == -1) { /* it is the first */
dgg->ud->dlg.dialog_graph.start_time = statinfo->start_time; dgg->ud->dlg.dialog_graph.start_time = statinfo->start_time;
} }
rtp_time = nstime_to_msec(&pinfo->fd->rel_ts) - dgg->ud->dlg.dialog_graph.start_time; rtp_time = nstime_to_msec(&pinfo->rel_ts) - dgg->ud->dlg.dialog_graph.start_time;
if (rtp_time < 0) { if (rtp_time < 0) {
return FALSE; return FALSE;
} }
@ -521,7 +521,7 @@ int iax2_packet_analyse(tap_iax2_stat_t *statinfo,
} }
/* store the current time and calculate the current jitter */ /* store the current time and calculate the current jitter */
current_time = nstime_to_sec(&pinfo->fd->rel_ts); current_time = nstime_to_sec(&pinfo->rel_ts);
current_diff = fabs (current_time - statinfo->time - (((double)iax2info->timestamp - (double)statinfo->timestamp)/1000)); current_diff = fabs (current_time - statinfo->time - (((double)iax2info->timestamp - (double)statinfo->timestamp)/1000));
current_jitter = statinfo->jitter + ( current_diff - statinfo->jitter)/16; current_jitter = statinfo->jitter + ( current_diff - statinfo->jitter)/16;
statinfo->delta = current_time - (statinfo->time); statinfo->delta = current_time - (statinfo->time);

View File

@ -290,7 +290,7 @@ tap_iostat_packet(void *g, packet_info *pinfo, epan_dissect_t *edt, const void *
/* /*
* Find in which interval this is supposed to go and store the interval index as idx * Find in which interval this is supposed to go and store the interval index as idx
*/ */
time_delta = pinfo->fd->rel_ts; time_delta = pinfo->rel_ts;
if (time_delta.nsecs<0) { if (time_delta.nsecs<0) {
time_delta.secs--; time_delta.secs--;
time_delta.nsecs += 1000000000; time_delta.nsecs += 1000000000;
@ -313,7 +313,7 @@ tap_iostat_packet(void *g, packet_info *pinfo, epan_dissect_t *edt, const void *
/* set start time */ /* set start time */
if ((io->start_time.secs == 0) && (io->start_time.nsecs == 0)) { if ((io->start_time.secs == 0) && (io->start_time.nsecs == 0)) {
nstime_delta(&io->start_time, &pinfo->fd->abs_ts, &pinfo->fd->rel_ts); nstime_delta(&io->start_time, &pinfo->fd->abs_ts, &pinfo->rel_ts);
} }
/* Point to the appropriate io_item_t struct */ /* Point to the appropriate io_item_t struct */
@ -425,7 +425,7 @@ tap_iostat_packet(void *g, packet_info *pinfo, epan_dissect_t *edt, const void *
j = idx; j = idx;
/* /*
* Handle current interval */ * Handle current interval */
pt = pinfo->fd->rel_ts.secs * 1000000 + pinfo->fd->rel_ts.nsecs / 1000; pt = pinfo->rel_ts.secs * 1000000 + pinfo->rel_ts.nsecs / 1000;
pt = pt % (io->interval * 1000); pt = pt % (io->interval * 1000);
if (pt > t) { if (pt > t) {
pt = t; pt = t;

View File

@ -200,8 +200,8 @@ mcaststream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
tmp_strinfo.first_frame_num = pinfo->fd->num; tmp_strinfo.first_frame_num = pinfo->fd->num;
tmp_strinfo.start_sec = (guint32) pinfo->fd->abs_ts.secs; tmp_strinfo.start_sec = (guint32) pinfo->fd->abs_ts.secs;
tmp_strinfo.start_usec = pinfo->fd->abs_ts.nsecs/1000; tmp_strinfo.start_usec = pinfo->fd->abs_ts.nsecs/1000;
tmp_strinfo.start_rel_sec = (guint32) pinfo->fd->rel_ts.secs; tmp_strinfo.start_rel_sec = (guint32) pinfo->rel_ts.secs;
tmp_strinfo.start_rel_usec = pinfo->fd->rel_ts.nsecs/1000; tmp_strinfo.start_rel_usec = pinfo->rel_ts.nsecs/1000;
tmp_strinfo.vlan_id = 0; tmp_strinfo.vlan_id = 0;
/* reset Mcast stats */ /* reset Mcast stats */
@ -233,8 +233,8 @@ mcaststream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
tapinfo->allstreams = (mcast_stream_info_t *)g_malloc(sizeof(mcast_stream_info_t)); tapinfo->allstreams = (mcast_stream_info_t *)g_malloc(sizeof(mcast_stream_info_t));
tapinfo->allstreams->element.buff = tapinfo->allstreams->element.buff =
(struct timeval *)g_malloc(buffsize * sizeof(struct timeval)); (struct timeval *)g_malloc(buffsize * sizeof(struct timeval));
tapinfo->allstreams->start_rel_sec = (guint32) pinfo->fd->rel_ts.secs; tapinfo->allstreams->start_rel_sec = (guint32) pinfo->rel_ts.secs;
tapinfo->allstreams->start_rel_usec = pinfo->fd->rel_ts.nsecs/1000; tapinfo->allstreams->start_rel_usec = pinfo->rel_ts.nsecs/1000;
tapinfo->allstreams->total_bytes = 0; tapinfo->allstreams->total_bytes = 0;
tapinfo->allstreams->element.first=0; tapinfo->allstreams->element.first=0;
tapinfo->allstreams->element.last=0; tapinfo->allstreams->element.last=0;
@ -252,8 +252,8 @@ mcaststream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
} }
/* time between first and last packet in the group */ /* time between first and last packet in the group */
strinfo->stop_rel_sec = (guint32) pinfo->fd->rel_ts.secs; strinfo->stop_rel_sec = (guint32) pinfo->rel_ts.secs;
strinfo->stop_rel_usec = pinfo->fd->rel_ts.nsecs/1000; strinfo->stop_rel_usec = pinfo->rel_ts.nsecs/1000;
deltatime = ((float)((strinfo->stop_rel_sec * 1000000 + strinfo->stop_rel_usec) deltatime = ((float)((strinfo->stop_rel_sec * 1000000 + strinfo->stop_rel_usec)
- (strinfo->start_rel_sec*1000000 + strinfo->start_rel_usec)))/1000000; - (strinfo->start_rel_sec*1000000 + strinfo->start_rel_usec)))/1000000;
@ -267,8 +267,8 @@ mcaststream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const
strinfo->apackets = (guint32) (strinfo->npackets / deltatime); strinfo->apackets = (guint32) (strinfo->npackets / deltatime);
/* time between first and last packet in any group */ /* time between first and last packet in any group */
tapinfo->allstreams->stop_rel_sec = (guint32) pinfo->fd->rel_ts.secs; tapinfo->allstreams->stop_rel_sec = (guint32) pinfo->rel_ts.secs;
tapinfo->allstreams->stop_rel_usec = pinfo->fd->rel_ts.nsecs/1000; tapinfo->allstreams->stop_rel_usec = pinfo->rel_ts.nsecs/1000;
deltatime = ((float)((tapinfo->allstreams->stop_rel_sec * 1000000 + tapinfo->allstreams->stop_rel_usec) deltatime = ((float)((tapinfo->allstreams->stop_rel_sec * 1000000 + tapinfo->allstreams->stop_rel_usec)
- (tapinfo->allstreams->start_rel_sec*1000000 + tapinfo->allstreams->start_rel_usec)))/1000000; - (tapinfo->allstreams->start_rel_sec*1000000 + tapinfo->allstreams->start_rel_usec)))/1000000;
@ -433,8 +433,8 @@ slidingwindow(mcast_stream_info_t *strinfo, packet_info *pinfo)
} }
/* burst count */ /* burst count */
buffer[strinfo->element.last].tv_sec = (guint32) pinfo->fd->rel_ts.secs; buffer[strinfo->element.last].tv_sec = (guint32) pinfo->rel_ts.secs;
buffer[strinfo->element.last].tv_usec = pinfo->fd->rel_ts.nsecs/1000; buffer[strinfo->element.last].tv_usec = pinfo->rel_ts.nsecs/1000;
while(comparetimes((struct timeval *)&(buffer[strinfo->element.first]), while(comparetimes((struct timeval *)&(buffer[strinfo->element.first]),
(struct timeval *)&(buffer[strinfo->element.last]), mcast_stream_burstint)){ (struct timeval *)&(buffer[strinfo->element.last]), mcast_stream_burstint)){
strinfo->element.first++; strinfo->element.first++;

View File

@ -749,8 +749,8 @@ tapall_rlc_lte_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, co
/* It matches. Add to end of segment list */ /* It matches. Add to end of segment list */
segment->next = NULL; segment->next = NULL;
segment->num = pinfo->fd->num; segment->num = pinfo->fd->num;
segment->rel_secs = (guint32) pinfo->fd->rel_ts.secs; segment->rel_secs = (guint32) pinfo->rel_ts.secs;
segment->rel_usecs = pinfo->fd->rel_ts.nsecs/1000; segment->rel_usecs = pinfo->rel_ts.nsecs/1000;
segment->abs_secs = (guint32) pinfo->fd->abs_ts.secs; segment->abs_secs = (guint32) pinfo->fd->abs_ts.secs;
segment->abs_usecs = pinfo->fd->abs_ts.nsecs/1000; segment->abs_usecs = pinfo->fd->abs_ts.nsecs/1000;
@ -887,6 +887,7 @@ static rlc_lte_tap_info *select_rlc_lte_session(capture_file *cf, struct segment
epan_dissect_t edt; epan_dissect_t edt;
dfilter_t *sfcode; dfilter_t *sfcode;
GString *error_string; GString *error_string;
nstime_t rel_ts;
th_t th = {0, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}}; th_t th = {0, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}};
if (cf->state == FILE_CLOSED) { if (cf->state == FILE_CLOSED) {
@ -917,6 +918,7 @@ static rlc_lte_tap_info *select_rlc_lte_session(capture_file *cf, struct segment
epan_dissect_init(&edt, cf->epan, TRUE, FALSE); epan_dissect_init(&edt, cf->epan, TRUE, FALSE);
epan_dissect_prime_dfilter(&edt, sfcode); epan_dissect_prime_dfilter(&edt, sfcode);
epan_dissect_run_with_taps(&edt, &cf->phdr, frame_tvbuff_new_buffer(fdata, &cf->buf), fdata, NULL); epan_dissect_run_with_taps(&edt, &cf->phdr, frame_tvbuff_new_buffer(fdata, &cf->buf), fdata, NULL);
rel_ts = edt.pi.rel_ts;
epan_dissect_cleanup(&edt); epan_dissect_cleanup(&edt);
remove_tap_listener(&th); remove_tap_listener(&th);
@ -942,8 +944,8 @@ static rlc_lte_tap_info *select_rlc_lte_session(capture_file *cf, struct segment
/* For now, still always choose the first/only one */ /* For now, still always choose the first/only one */
hdrs->num = fdata->num; hdrs->num = fdata->num;
hdrs->rel_secs = (guint32) fdata->rel_ts.secs; hdrs->rel_secs = (guint32) rel_ts.secs;
hdrs->rel_usecs = fdata->rel_ts.nsecs/1000; hdrs->rel_usecs = rel_ts.nsecs/1000;
hdrs->abs_secs = (guint32) fdata->abs_ts.secs; hdrs->abs_secs = (guint32) fdata->abs_ts.secs;
hdrs->abs_usecs = fdata->abs_ts.nsecs/1000; hdrs->abs_usecs = fdata->abs_ts.nsecs/1000;

View File

@ -426,7 +426,7 @@ rtp_packet_add_graph(dialog_graph_graph_t *dgg, tap_rtp_stat_t *statinfo, packet
if (dgg->ud->dlg.dialog_graph.start_time == -1) { /* it is the first */ if (dgg->ud->dlg.dialog_graph.start_time == -1) { /* it is the first */
dgg->ud->dlg.dialog_graph.start_time = statinfo->start_time; dgg->ud->dlg.dialog_graph.start_time = statinfo->start_time;
} }
rtp_time = nstime_to_msec(&pinfo->fd->rel_ts) - dgg->ud->dlg.dialog_graph.start_time; rtp_time = nstime_to_msec(&pinfo->rel_ts) - dgg->ud->dlg.dialog_graph.start_time;
if (rtp_time < 0) { if (rtp_time < 0) {
return FALSE; return FALSE;
} }

View File

@ -709,8 +709,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
addr = (guint8 *)g_malloc(tmp_info.dst.len); addr = (guint8 *)g_malloc(tmp_info.dst.len);
memcpy(addr, tmp_info.dst.data, tmp_info.dst.len); memcpy(addr, tmp_info.dst.data, tmp_info.dst.len);
sack->dst.data = addr; sack->dst.data = addr;
sack->secs=tsn->secs = (guint32)pinfo->fd->rel_ts.secs; sack->secs=tsn->secs = (guint32)pinfo->rel_ts.secs;
sack->usecs=tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; sack->usecs=tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
if (((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_DATA_CHUNK_ID) || if (((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_DATA_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_SACK_CHUNK_ID) || ((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_SACK_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_NR_SACK_CHUNK_ID) || ((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_NR_SACK_CHUNK_ID) ||
@ -854,8 +854,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
tsn->tsns = g_list_append(tsn->tsns, t_s_n); tsn->tsns = g_list_append(tsn->tsns, t_s_n);
tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort)); tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort));
tsn_s->tsnumber = tsnumber; tsn_s->tsnumber = tsnumber;
tsn_s->secs = tsn->secs = (guint32)pinfo->fd->rel_ts.secs; tsn_s->secs = tsn->secs = (guint32)pinfo->rel_ts.secs;
tsn_s->usecs = tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; tsn_s->usecs = tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
tsn_s->offset = 0; tsn_s->offset = 0;
tsn_s->framenumber = framenumber; tsn_s->framenumber = framenumber;
if (datachunk) if (datachunk)
@ -897,8 +897,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
sackchunk = TRUE; sackchunk = TRUE;
tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort)); tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort));
tsn_s->tsnumber = tsnumber; tsn_s->tsnumber = tsnumber;
tsn_s->secs = tsn->secs = (guint32)pinfo->fd->rel_ts.secs; tsn_s->secs = tsn->secs = (guint32)pinfo->rel_ts.secs;
tsn_s->usecs = tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; tsn_s->usecs = tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
tsn_s->offset = 0; tsn_s->offset = 0;
tsn_s->framenumber = framenumber; tsn_s->framenumber = framenumber;
tsn_s->length = tvb_get_ntohl(sctp_info->tvb[chunk_number], SACK_CHUNK_ADV_REC_WINDOW_CREDIT_OFFSET); tsn_s->length = tvb_get_ntohl(sctp_info->tvb[chunk_number], SACK_CHUNK_ADV_REC_WINDOW_CREDIT_OFFSET);
@ -994,8 +994,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
addr = (guint8 *)g_malloc(tmp_info.dst.len); addr = (guint8 *)g_malloc(tmp_info.dst.len);
memcpy(addr, tmp_info.dst.data, tmp_info.dst.len); memcpy(addr, tmp_info.dst.data, tmp_info.dst.len);
sack->dst.data = addr; sack->dst.data = addr;
sack->secs=tsn->secs = (guint32)pinfo->fd->rel_ts.secs; sack->secs=tsn->secs = (guint32)pinfo->rel_ts.secs;
sack->usecs=tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; sack->usecs=tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
if (((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_DATA_CHUNK_ID) || if (((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_DATA_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_SACK_CHUNK_ID) || ((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_SACK_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_NR_SACK_CHUNK_ID) || ((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_NR_SACK_CHUNK_ID) ||
@ -1171,8 +1171,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort)); tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort));
tsn_s->tsnumber = tsnumber; tsn_s->tsnumber = tsnumber;
tsn_s->secs = tsn->secs = (guint32)pinfo->fd->rel_ts.secs; tsn_s->secs = tsn->secs = (guint32)pinfo->rel_ts.secs;
tsn_s->usecs = tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; tsn_s->usecs = tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
tsn_s->offset = 0; tsn_s->offset = 0;
tsn_s->framenumber = framenumber; tsn_s->framenumber = framenumber;
tsn_s->length = length; tsn_s->length = length;
@ -1291,8 +1291,8 @@ packet(void *tapdata _U_, packet_info *pinfo , epan_dissect_t *edt _U_ , const v
sackchunk = TRUE; sackchunk = TRUE;
tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort)); tsn_s = (struct tsn_sort *)g_malloc(sizeof(struct tsn_sort));
tsn_s->tsnumber = tsnumber; tsn_s->tsnumber = tsnumber;
tsn_s->secs = tsn->secs = (guint32)pinfo->fd->rel_ts.secs; tsn_s->secs = tsn->secs = (guint32)pinfo->rel_ts.secs;
tsn_s->usecs = tsn->usecs = (guint32)pinfo->fd->rel_ts.nsecs/1000; tsn_s->usecs = tsn->usecs = (guint32)pinfo->rel_ts.nsecs/1000;
tsn_s->offset = 0; tsn_s->offset = 0;
tsn_s->framenumber = framenumber; tsn_s->framenumber = framenumber;
tsn_s->length = tvb_get_ntohl(sctp_info->tvb[chunk_number], SACK_CHUNK_ADV_REC_WINDOW_CREDIT_OFFSET); tsn_s->length = tvb_get_ntohl(sctp_info->tvb[chunk_number], SACK_CHUNK_ADV_REC_WINDOW_CREDIT_OFFSET);

View File

@ -1832,8 +1832,8 @@ tapall_tcpip_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, cons
struct segment *segment = (struct segment *)g_malloc(sizeof(struct segment)); struct segment *segment = (struct segment *)g_malloc(sizeof(struct segment));
segment->next = NULL; segment->next = NULL;
segment->num = pinfo->fd->num; segment->num = pinfo->fd->num;
segment->rel_secs = (guint32)pinfo->fd->rel_ts.secs; segment->rel_secs = (guint32)pinfo->rel_ts.secs;
segment->rel_usecs = pinfo->fd->rel_ts.nsecs/1000; segment->rel_usecs = pinfo->rel_ts.nsecs/1000;
segment->abs_secs = (guint32)pinfo->fd->abs_ts.secs; segment->abs_secs = (guint32)pinfo->fd->abs_ts.secs;
segment->abs_usecs = pinfo->fd->abs_ts.nsecs/1000; segment->abs_usecs = pinfo->fd->abs_ts.nsecs/1000;
segment->th_seq = tcphdr->th_seq; segment->th_seq = tcphdr->th_seq;
@ -1964,6 +1964,7 @@ static struct tcpheader *select_tcpip_session(capture_file *cf, struct segment *
epan_dissect_t edt; epan_dissect_t edt;
dfilter_t *sfcode; dfilter_t *sfcode;
GString *error_string; GString *error_string;
nstime_t rel_ts;
th_t th = {0, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}}; th_t th = {0, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}};
fdata = cf->current_frame; fdata = cf->current_frame;
@ -1990,6 +1991,7 @@ static struct tcpheader *select_tcpip_session(capture_file *cf, struct segment *
epan_dissect_init(&edt, cf->epan, TRUE, FALSE); epan_dissect_init(&edt, cf->epan, TRUE, FALSE);
epan_dissect_prime_dfilter(&edt, sfcode); epan_dissect_prime_dfilter(&edt, sfcode);
epan_dissect_run_with_taps(&edt, &cf->phdr, frame_tvbuff_new_buffer(fdata, &cf->buf), fdata, NULL); epan_dissect_run_with_taps(&edt, &cf->phdr, frame_tvbuff_new_buffer(fdata, &cf->buf), fdata, NULL);
rel_ts = edt.pi.rel_ts;
epan_dissect_cleanup(&edt); epan_dissect_cleanup(&edt);
remove_tap_listener(&th); remove_tap_listener(&th);
@ -2015,8 +2017,8 @@ static struct tcpheader *select_tcpip_session(capture_file *cf, struct segment *
/* For now, still always choose the first/only one */ /* For now, still always choose the first/only one */
hdrs->num = fdata->num; hdrs->num = fdata->num;
hdrs->rel_secs = (guint32) fdata->rel_ts.secs; hdrs->rel_secs = (guint32) rel_ts.secs;
hdrs->rel_usecs = fdata->rel_ts.nsecs/1000; hdrs->rel_usecs = rel_ts.nsecs/1000;
hdrs->abs_secs = (guint32) fdata->abs_ts.secs; hdrs->abs_secs = (guint32) fdata->abs_ts.secs;
hdrs->abs_usecs = fdata->abs_ts.nsecs/1000; hdrs->abs_usecs = fdata->abs_ts.nsecs/1000;
hdrs->th_seq = th.tcphdrs[0]->th_seq; hdrs->th_seq = th.tcphdrs[0]->th_seq;

View File

@ -138,7 +138,9 @@ typedef struct _voip_rtp_stream_info {
guint32 setup_frame_number; /* frame number of setup message */ guint32 setup_frame_number; /* frame number of setup message */
/* The frame_data struct holds the frame number and timing information needed. */ /* The frame_data struct holds the frame number and timing information needed. */
frame_data *start_fd; frame_data *start_fd;
nstime_t start_rel_ts;
frame_data *stop_fd; frame_data *stop_fd;
nstime_t stop_rel_ts;
gint32 rtp_event; gint32 rtp_event;
} voip_rtp_stream_info_t; } voip_rtp_stream_info_t;
@ -564,6 +566,7 @@ RTP_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, void cons
if (!strinfo->pt_str) strinfo->pt_str = g_strdup(val_to_str_ext(strinfo->pt, &rtp_payload_type_short_vals_ext, "%u")); if (!strinfo->pt_str) strinfo->pt_str = g_strdup(val_to_str_ext(strinfo->pt, &rtp_payload_type_short_vals_ext, "%u"));
strinfo->npackets = 0; strinfo->npackets = 0;
strinfo->start_fd = pinfo->fd; strinfo->start_fd = pinfo->fd;
strinfo->start_rel_ts = pinfo->rel_ts;
strinfo->setup_frame_number = pi->info_setup_frame_num; strinfo->setup_frame_number = pi->info_setup_frame_num;
strinfo->rtp_event = -1; strinfo->rtp_event = -1;
tapinfo->list = g_list_prepend(tapinfo->list, strinfo); tapinfo->list = g_list_prepend(tapinfo->list, strinfo);
@ -572,6 +575,7 @@ RTP_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, void cons
/* Add the info to the existing RTP stream */ /* Add the info to the existing RTP stream */
strinfo->npackets++; strinfo->npackets++;
strinfo->stop_fd = pinfo->fd; strinfo->stop_fd = pinfo->fd;
strinfo->stop_rel_ts = pinfo->rel_ts;
/* process RTP Event */ /* process RTP Event */
if (rtp_evt_frame_num == pinfo->fd->num) { if (rtp_evt_frame_num == pinfo->fd->num) {
@ -615,7 +619,7 @@ static void RTP_packet_draw(void *prs _U_)
/* if RTP was already in the Graph, just update the comment information */ /* if RTP was already in the Graph, just update the comment information */
gai = (graph_analysis_item_t *)g_hash_table_lookup(the_tapinfo_struct.graph_analysis->ht, &rtp_listinfo->start_fd->num); gai = (graph_analysis_item_t *)g_hash_table_lookup(the_tapinfo_struct.graph_analysis->ht, &rtp_listinfo->start_fd->num);
if(gai != NULL) { if(gai != NULL) {
duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_fd->rel_ts) - nstime_to_msec(&rtp_listinfo->start_fd->rel_ts)); duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_rel_ts) - nstime_to_msec(&rtp_listinfo->start_rel_ts));
g_free(gai->comment); g_free(gai->comment);
gai->comment = g_strdup_printf("%s Num packets:%u Duration:%u.%03us SSRC:0x%X", gai->comment = g_strdup_printf("%s Num packets:%u Duration:%u.%03us SSRC:0x%X",
(rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->npackets, (rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->npackets,
@ -627,7 +631,7 @@ static void RTP_packet_draw(void *prs _U_)
COPY_ADDRESS(&(new_gai->dst_addr),&(rtp_listinfo->dest_addr)); COPY_ADDRESS(&(new_gai->dst_addr),&(rtp_listinfo->dest_addr));
new_gai->port_src = rtp_listinfo->src_port; new_gai->port_src = rtp_listinfo->src_port;
new_gai->port_dst = rtp_listinfo->dest_port; new_gai->port_dst = rtp_listinfo->dest_port;
duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_fd->rel_ts) - nstime_to_msec(&rtp_listinfo->start_fd->rel_ts)); duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_rel_ts) - nstime_to_msec(&rtp_listinfo->start_rel_ts));
new_gai->frame_label = g_strdup_printf("%s (%s) %s", new_gai->frame_label = g_strdup_printf("%s (%s) %s",
(rtp_listinfo->is_srtp)?"SRTP":"RTP", (rtp_listinfo->is_srtp)?"SRTP":"RTP",
rtp_listinfo->pt_str, rtp_listinfo->pt_str,
@ -827,6 +831,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd = pinfo->fd; callsinfo->start_fd = pinfo->fd;
callsinfo->start_rel_ts = pinfo->rel_ts;
callsinfo->protocol=MEDIA_T38; callsinfo->protocol=MEDIA_T38;
callsinfo->prot_info=NULL; callsinfo->prot_info=NULL;
callsinfo->free_prot_info = NULL; callsinfo->free_prot_info = NULL;
@ -835,6 +840,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo
tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo);
} }
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -867,7 +873,7 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo
comment = g_strdup_printf("WARNING: received t38:%s:HDLC:%s", val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)"), pi->Data_Field_field_type_value == 3 ? "fcs-BAD" : "fcs-BAD-sig-end"); comment = g_strdup_printf("WARNING: received t38:%s:HDLC:%s", val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)"), pi->Data_Field_field_type_value == 3 ? "fcs-BAD" : "fcs-BAD-sig-end");
break; break;
case 7: /* t4-non-ecm-sig-end */ case 7: /* t4-non-ecm-sig-end */
duration = nstime_to_sec(&pinfo->fd->rel_ts) - pi->time_first_t4_data; duration = nstime_to_sec(&pinfo->rel_ts) - pi->time_first_t4_data;
frame_label = g_strdup_printf("t4-non-ecm-data:%s",val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)") ); frame_label = g_strdup_printf("t4-non-ecm-data:%s",val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)") );
comment = g_strdup_printf("t38:t4-non-ecm-data:%s Duration: %.2fs %s",val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)"), duration, pi->desc_comment ); comment = g_strdup_printf("t38:t4-non-ecm-data:%s Duration: %.2fs %s",val_to_str(pi->data_value, t38_T30_data_vals, "Ukn (0x%02X)"), duration, pi->desc_comment );
insert_to_graph_t38(tapinfo, pinfo, frame_label, comment, (guint16)conv_num, &(pinfo->src), &(pinfo->dst), line_style, pi->frame_num_first_t4_data); insert_to_graph_t38(tapinfo, pinfo, frame_label, comment, (guint16)conv_num, &(pinfo->src), &(pinfo->dst), line_style, pi->frame_num_first_t4_data);
@ -984,6 +990,7 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_SIP; callsinfo->protocol=VOIP_SIP;
callsinfo->prot_info=g_malloc(sizeof(sip_calls_info_t)); callsinfo->prot_info=g_malloc(sizeof(sip_calls_info_t));
callsinfo->free_prot_info = free_sip_info; callsinfo->free_prot_info = free_sip_info;
@ -1053,6 +1060,7 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
} }
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -1202,6 +1210,7 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_ISUP; callsinfo->protocol=VOIP_ISUP;
if (pi->calling_number!=NULL) { if (pi->calling_number!=NULL) {
callsinfo->from_identity=g_strdup(pi->calling_number); callsinfo->from_identity=g_strdup(pi->calling_number);
@ -1224,6 +1233,7 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
if (callsinfo!=NULL) { if (callsinfo!=NULL) {
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* Let's analyze the call state */ /* Let's analyze the call state */
@ -1632,6 +1642,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
COPY_ADDRESS(&(callsinfo->initial_speaker),actrace_direction?&pstn_add:&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),actrace_direction?&pstn_add:&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_AC_ISDN; callsinfo->protocol=VOIP_AC_ISDN;
callsinfo->prot_info=g_malloc(sizeof(actrace_isdn_calls_info_t)); callsinfo->prot_info=g_malloc(sizeof(actrace_isdn_calls_info_t));
callsinfo->free_prot_info = g_free; callsinfo->free_prot_info = g_free;
@ -1644,6 +1655,7 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
} }
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -1841,6 +1853,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_H323; callsinfo->protocol=VOIP_H323;
callsinfo->prot_info=g_malloc(sizeof(h323_calls_info_t)); callsinfo->prot_info=g_malloc(sizeof(h323_calls_info_t));
callsinfo->free_prot_info = free_h225_info; callsinfo->free_prot_info = free_h225_info;
@ -1872,6 +1885,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
/* let's analyze the call state */ /* let's analyze the call state */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -2397,7 +2411,7 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
check first if it is an ended call. We can still match packets to this Endpoint 2 seconds check first if it is an ended call. We can still match packets to this Endpoint 2 seconds
after the call has been released after the call has been released
*/ */
diff_time = nstime_to_sec(&pinfo->fd->rel_ts) - nstime_to_sec(&tmp_listinfo->stop_fd->rel_ts); diff_time = nstime_to_sec(&pinfo->rel_ts) - nstime_to_sec(&tmp_listinfo->stop_rel_ts);
if ( ((tmp_listinfo->call_state == VOIP_CANCELLED) || if ( ((tmp_listinfo->call_state == VOIP_CANCELLED) ||
(tmp_listinfo->call_state == VOIP_COMPLETED) || (tmp_listinfo->call_state == VOIP_COMPLETED) ||
(tmp_listinfo->call_state == VOIP_REJECTED)) && (tmp_listinfo->call_state == VOIP_REJECTED)) &&
@ -2473,6 +2487,7 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_MGCP; callsinfo->protocol=VOIP_MGCP;
callsinfo->prot_info=g_malloc(sizeof(mgcp_calls_info_t)); callsinfo->prot_info=g_malloc(sizeof(mgcp_calls_info_t));
callsinfo->free_prot_info = g_free; callsinfo->free_prot_info = g_free;
@ -2560,6 +2575,7 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
comment = g_strdup_printf("MGCP %s %s%s", tmp_mgcpinfo->endpointId, (pi->mgcp_type == MGCP_REQUEST)?"Request":"Response", pi->is_duplicate?" Duplicate":""); comment = g_strdup_printf("MGCP %s %s%s", tmp_mgcpinfo->endpointId, (pi->mgcp_type == MGCP_REQUEST)?"Request":"Response", pi->is_duplicate?" Duplicate":"");
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -2681,6 +2697,7 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
COPY_ADDRESS(&(callsinfo->initial_speaker),actrace_direction?&pstn_add:&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),actrace_direction?&pstn_add:&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_AC_CAS; callsinfo->protocol=VOIP_AC_CAS;
callsinfo->prot_info=g_malloc(sizeof(actrace_cas_calls_info_t)); callsinfo->prot_info=g_malloc(sizeof(actrace_cas_calls_info_t));
callsinfo->free_prot_info = g_free; callsinfo->free_prot_info = g_free;
@ -2694,6 +2711,7 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
} }
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
/* increment the packets counter of all calls */ /* increment the packets counter of all calls */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -2820,7 +2838,9 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *
callsinfo->protocol = TEL_H248; callsinfo->protocol = TEL_H248;
callsinfo->call_num = tapinfo->ncalls++; callsinfo->call_num = tapinfo->ncalls++;
callsinfo->start_fd = pinfo->fd; callsinfo->start_fd = pinfo->fd;
callsinfo->start_rel_ts = pinfo->rel_ts;
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
callsinfo->selected = FALSE; callsinfo->selected = FALSE;
@ -2847,6 +2867,7 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *
g_string_free(s,FALSE); g_string_free(s,FALSE);
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
} }
@ -2974,7 +2995,9 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) {
callsinfo->protocol = SP2VP(assoc->payload); callsinfo->protocol = SP2VP(assoc->payload);
/* Store frame data which holds time and frame number */ /* Store frame data which holds time and frame number */
callsinfo->start_fd = pinfo->fd; callsinfo->start_fd = pinfo->fd;
callsinfo->start_rel_ts = pinfo->rel_ts;
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
callsinfo->selected = FALSE; callsinfo->selected = FALSE;
callsinfo->call_num = tapinfo->ncalls++; callsinfo->call_num = tapinfo->ncalls++;
@ -2995,6 +3018,7 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) {
callsinfo->protocol = SP2VP(assoc->payload); callsinfo->protocol = SP2VP(assoc->payload);
/* Store frame data which holds stop time and frame number */ /* Store frame data which holds stop time and frame number */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
switch (msg->type) { switch (msg->type) {
@ -3188,6 +3212,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */ /* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */
/* Store frame data which holds time and frame number */ /* Store frame data which holds time and frame number */
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_UNISTIM; callsinfo->protocol=VOIP_UNISTIM;
callsinfo->prot_info=g_malloc(sizeof(unistim_info_t)); callsinfo->prot_info=g_malloc(sizeof(unistim_info_t));
@ -3227,6 +3252,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Each packet COULD BE OUR LAST!!!! */ /* Each packet COULD BE OUR LAST!!!! */
/* Store frame data which holds time and frame number */ /* Store frame data which holds time and frame number */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
/* This is a valid packet so increment counter */ /* This is a valid packet so increment counter */
++(callsinfo->npackets); ++(callsinfo->npackets);
@ -3391,9 +3417,11 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Signifies the start of the call so set start_sec & start_usec */ /* Signifies the start of the call so set start_sec & start_usec */
/* Frame data holds the time info */ /* Frame data holds the time info */
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
/* Each packet COULD BE OUR LAST!!!! */ /* Each packet COULD BE OUR LAST!!!! */
/* Store frame data which holds time and frame number */ /* Store frame data which holds time and frame number */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
/* Local packets too */ /* Local packets too */
++(callsinfo->npackets); ++(callsinfo->npackets);
@ -3440,6 +3468,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Set this on init of struct so in case the call doesn't complete, we'll have a ref. */ /* Set this on init of struct so in case the call doesn't complete, we'll have a ref. */
/* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */ /* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_UNISTIM; callsinfo->protocol=VOIP_UNISTIM;
callsinfo->prot_info=g_malloc(sizeof(unistim_info_t)); callsinfo->prot_info=g_malloc(sizeof(unistim_info_t));
@ -3473,6 +3502,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Each packet COULD BE OUR LAST!!!! */ /* Each packet COULD BE OUR LAST!!!! */
/* Store frame data which holds time and frame number */ /* Store frame data which holds time and frame number */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
/* Local packets too */ /* Local packets too */
++(callsinfo->npackets); ++(callsinfo->npackets);
@ -3506,6 +3536,7 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Set stop seconds + usec */ /* Set stop seconds + usec */
/* frame_data holds the time info */ /* frame_data holds the time info */
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
tmp_unistim_info->sequence = pi->sequence; tmp_unistim_info->sequence = pi->sequence;
@ -3673,7 +3704,9 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
callsinfo->protocol = VOIP_SKINNY; callsinfo->protocol = VOIP_SKINNY;
callsinfo->call_num = tapinfo->ncalls++; callsinfo->call_num = tapinfo->ncalls++;
callsinfo->start_fd = pinfo->fd; callsinfo->start_fd = pinfo->fd;
callsinfo->start_rel_ts = pinfo->rel_ts;
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
callsinfo->selected = FALSE; callsinfo->selected = FALSE;
tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo);
@ -3690,6 +3723,7 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
callsinfo->call_state = skinny_tap_voip_state[si->callState]; callsinfo->call_state = skinny_tap_voip_state[si->callState];
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
} }
@ -3826,7 +3860,9 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c
callsinfo->protocol = VOIP_IAX2; callsinfo->protocol = VOIP_IAX2;
callsinfo->call_num = tapinfo->ncalls++; callsinfo->call_num = tapinfo->ncalls++;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
callsinfo->selected = FALSE; callsinfo->selected = FALSE;
tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo); tapinfo->callsinfo_list = g_list_prepend(tapinfo->callsinfo_list, callsinfo);
@ -3835,6 +3871,7 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c
callsinfo->call_state = ii->callState; callsinfo->call_state = ii->callState;
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
} }
@ -3931,6 +3968,7 @@ VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src)); COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE; callsinfo->selected=FALSE;
callsinfo->start_fd=pinfo->fd; callsinfo->start_fd=pinfo->fd;
callsinfo->start_rel_ts=pinfo->rel_ts;
callsinfo->protocol=VOIP_COMMON; callsinfo->protocol=VOIP_COMMON;
callsinfo->protocol_name=g_strdup((pi->protocol_name)?pi->protocol_name:""); callsinfo->protocol_name=g_strdup((pi->protocol_name)?pi->protocol_name:"");
callsinfo->call_comment=g_strdup((pi->call_comment)?pi->call_comment:""); callsinfo->call_comment=g_strdup((pi->call_comment)?pi->call_comment:"");
@ -3953,6 +3991,7 @@ VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
callsinfo->call_comment=g_strdup(pi->call_comment); callsinfo->call_comment=g_strdup(pi->call_comment);
} }
callsinfo->stop_fd = pinfo->fd; callsinfo->stop_fd = pinfo->fd;
callsinfo->stop_rel_ts = pinfo->rel_ts;
++(callsinfo->npackets); ++(callsinfo->npackets);
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -4013,7 +4052,7 @@ prot_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct;
if (callsinfo!=NULL) { if (callsinfo!=NULL) {
callsinfo->stop_abs = pinfo->fd->abs_ts; callsinfo->stop_abs = pinfo->fd->abs_ts;
callsinfo->stop_rel = pinfo->fd->rel_ts; callsinfo->stop_rel = pinfo->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num; callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets); ++(callsinfo->npackets);
++(tapinfo->npackets); ++(tapinfo->npackets);

View File

@ -150,7 +150,9 @@ typedef struct _voip_calls_info {
guint16 call_num; guint16 call_num;
/**> The frame_data struct holds the frame number and timing information needed. */ /**> The frame_data struct holds the frame number and timing information needed. */
frame_data *start_fd; frame_data *start_fd;
nstime_t start_rel_ts;
frame_data *stop_fd; frame_data *stop_fd;
nstime_t stop_rel_ts;
gboolean selected; gboolean selected;
} voip_calls_info_t; } voip_calls_info_t;

View File

@ -477,8 +477,8 @@ add_to_list_store(voip_calls_info_t* strinfo)
/* Fill the new row */ /* Fill the new row */
gtk_list_store_set(list_store, &list_iter, gtk_list_store_set(list_store, &list_iter,
CALL_COL_START_TIME, nstime_to_sec(&strinfo->start_fd->rel_ts), CALL_COL_START_TIME, nstime_to_sec(&strinfo->start_rel_ts),
CALL_COL_STOP_TIME, nstime_to_sec(&strinfo->stop_fd->rel_ts), CALL_COL_STOP_TIME, nstime_to_sec(&strinfo->stop_rel_ts),
CALL_COL_INITIAL_SPEAKER, &field[CALL_COL_INITIAL_SPEAKER][0], CALL_COL_INITIAL_SPEAKER, &field[CALL_COL_INITIAL_SPEAKER][0],
CALL_COL_FROM, &field[CALL_COL_FROM][0], CALL_COL_FROM, &field[CALL_COL_FROM][0],
CALL_COL_TO, &field[CALL_COL_TO][0], CALL_COL_TO, &field[CALL_COL_TO][0],

View File

@ -223,8 +223,8 @@ int rtpstream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, con
tmp_strinfo.first_frame_num = pinfo->fd->num; tmp_strinfo.first_frame_num = pinfo->fd->num;
tmp_strinfo.start_sec = (guint32) pinfo->fd->abs_ts.secs; tmp_strinfo.start_sec = (guint32) pinfo->fd->abs_ts.secs;
tmp_strinfo.start_usec = pinfo->fd->abs_ts.nsecs/1000; tmp_strinfo.start_usec = pinfo->fd->abs_ts.nsecs/1000;
tmp_strinfo.start_rel_sec = (guint32) pinfo->fd->rel_ts.secs; tmp_strinfo.start_rel_sec = (guint32) pinfo->rel_ts.secs;
tmp_strinfo.start_rel_usec = pinfo->fd->rel_ts.nsecs/1000; tmp_strinfo.start_rel_usec = pinfo->rel_ts.nsecs/1000;
tmp_strinfo.tag_vlan_error = 0; tmp_strinfo.tag_vlan_error = 0;
tmp_strinfo.tag_diffserv_error = 0; tmp_strinfo.tag_diffserv_error = 0;
tmp_strinfo.vlan_id = 0; tmp_strinfo.vlan_id = 0;
@ -275,8 +275,8 @@ int rtpstream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, con
/* increment the packets counter for this stream */ /* increment the packets counter for this stream */
++(strinfo->npackets); ++(strinfo->npackets);
strinfo->stop_rel_sec = (guint32) pinfo->fd->rel_ts.secs; strinfo->stop_rel_sec = (guint32) pinfo->rel_ts.secs;
strinfo->stop_rel_usec = pinfo->fd->rel_ts.nsecs/1000; strinfo->stop_rel_usec = pinfo->rel_ts.nsecs/1000;
/* increment the packets counter of all streams */ /* increment the packets counter of all streams */
++(tapinfo->npackets); ++(tapinfo->npackets);
@ -446,7 +446,7 @@ int rtp_packet_analyse(tap_rtp_stat_t *statinfo,
guint32 clock_rate; guint32 clock_rate;
/* Store the current time */ /* Store the current time */
current_time = nstime_to_msec(&pinfo->fd->rel_ts); current_time = nstime_to_msec(&pinfo->rel_ts);
/* Is this the first packet we got in this direction? */ /* Is this the first packet we got in this direction? */
if (statinfo->first_packet) { if (statinfo->first_packet) {

View File

@ -114,15 +114,6 @@ modify_time_perform(frame_data *fd, int neg, nstime_t *offset, int settozero)
} else { } else {
fprintf(stderr, "Modify_time_perform: neg = %d?\n", neg); fprintf(stderr, "Modify_time_perform: neg = %d?\n", neg);
} }
/*
* rel_ts - Relative timestamp to first packet
*/
if (first_packet != NULL) {
nstime_copy(&(fd->rel_ts), &(fd->abs_ts));
nstime_subtract(&(fd->rel_ts), &(first_packet->abs_ts));
} else
nstime_copy(&(fd->rel_ts), &nulltime);
} }
/* /*