aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2010-03-03 20:35:50 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2010-03-03 20:35:50 +0000
commit130f1d11701ce1ca411ddc867600a7e64a397fd7 (patch)
tree216f7d9778dfbb2c524a28b60112c76a293eac09
parent5a445218f110d9eef30c6f859044c7ad3ec5735e (diff)
downloadwireshark-130f1d11701ce1ca411ddc867600a7e64a397fd7.tar.gz
wireshark-130f1d11701ce1ca411ddc867600a7e64a397fd7.tar.bz2
wireshark-130f1d11701ce1ca411ddc867600a7e64a397fd7.zip
Allow for other time presentations.
svn path=/trunk/; revision=32099
-rw-r--r--gtk/voip_calls.c157
-rw-r--r--gtk/voip_calls.h13
-rw-r--r--gtk/voip_calls_dlg.c8
3 files changed, 90 insertions, 88 deletions
diff --git a/gtk/voip_calls.c b/gtk/voip_calls.c
index cd0f2e4f75..a60ad48c84 100644
--- a/gtk/voip_calls.c
+++ b/gtk/voip_calls.c
@@ -196,7 +196,6 @@ void voip_calls_reset(voip_calls_tapinfo_t *tapinfo)
strinfo = list->data;
g_free(strinfo->pt_str);
list = g_list_next(list);
-
}
g_list_free(rtp_tapinfo->list);
rtp_tapinfo->list = NULL;
@@ -545,8 +544,8 @@ 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(strinfo->pt, rtp_payload_type_short_vals, "%u"));
strinfo->npackets = 0;
strinfo->first_frame_num = pinfo->fd->num;
- strinfo->start_rel_sec = (guint32) (pinfo->fd->rel_ts.secs);
- strinfo->start_rel_usec = pinfo->fd->rel_ts.nsecs/1000;
+ strinfo->start_abs = pinfo->fd->abs_ts;
+ strinfo->start_rel = pinfo->fd->rel_ts;
strinfo->setup_frame_number = pi->info_setup_frame_num;
strinfo->rtp_event = -1;
tapinfo->list = g_list_append(tapinfo->list, strinfo);
@@ -555,8 +554,8 @@ RTP_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, void cons
if (strinfo!=NULL){
/* Add the info to the existing RTP stream */
strinfo->npackets++;
- strinfo->stop_rel_sec = (guint32) (pinfo->fd->rel_ts.secs);
- strinfo->stop_rel_usec = pinfo->fd->rel_ts.nsecs/1000;
+ strinfo->stop_abs = pinfo->fd->abs_ts;
+ strinfo->stop_rel = pinfo->fd->rel_ts;
/* process RTP Event */
if (rtp_evt_frame_num == pinfo->fd->num) {
@@ -607,11 +606,11 @@ static void RTP_packet_draw(void *prs _U_)
gai = voip_calls_graph_list->data;
/* if RTP was already in the Graph, just update the comment information */
if (rtp_listinfo->first_frame_num == gai->frame_num){
- duration = (rtp_listinfo->stop_rel_sec*1000000 + rtp_listinfo->stop_rel_usec) - (rtp_listinfo->start_rel_sec*1000000 + rtp_listinfo->start_rel_usec);
+ duration = nstime_to_msec(&rtp_listinfo->stop_rel) - nstime_to_msec(&rtp_listinfo->start_rel);
g_free(gai->comment);
gai->comment = g_strdup_printf("%s Num packets:%u Duration:%u.%03us SSRC:0x%X",
(rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->npackets,
- duration/1000000,(duration%1000000)/1000, rtp_listinfo->ssrc);
+ duration/1000,(duration%1000), rtp_listinfo->ssrc);
break;
}
@@ -623,16 +622,16 @@ static void RTP_packet_draw(void *prs _U_)
if (rtp_listinfo->first_frame_num<gai->frame_num || !voip_calls_graph_list){
new_gai = g_malloc(sizeof(graph_analysis_item_t));
new_gai->frame_num = rtp_listinfo->first_frame_num;
- new_gai->time = (double)rtp_listinfo->start_rel_sec + (double)rtp_listinfo->start_rel_usec/1000000;
+ new_gai->time = nstime_to_sec(&rtp_listinfo->start_rel);
COPY_ADDRESS(&(new_gai->src_addr),&(rtp_listinfo->src_addr));
COPY_ADDRESS(&(new_gai->dst_addr),&(rtp_listinfo->dest_addr));
new_gai->port_src = rtp_listinfo->src_port;
new_gai->port_dst = rtp_listinfo->dest_port;
- duration = (rtp_listinfo->stop_rel_sec*1000000 + rtp_listinfo->stop_rel_usec) - (rtp_listinfo->start_rel_sec*1000000 + rtp_listinfo->start_rel_usec);
+ duration = nstime_to_msec(&rtp_listinfo->stop_rel) - nstime_to_msec(&rtp_listinfo->start_rel);
new_gai->frame_label = g_strdup_printf("%s (%s) %s", (rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->pt_str, (rtp_listinfo->rtp_event == -1)?"":val_to_str(rtp_listinfo->rtp_event, rtp_event_type_values, "Unknown RTP Event"));
new_gai->comment = g_strdup_printf("%s Num packets:%u Duration:%u.%03us SSRC:0x%X",
(rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->npackets,
- duration/1000000,(duration%1000000)/1000, rtp_listinfo->ssrc);
+ duration/1000,(duration%1000), rtp_listinfo->ssrc);
new_gai->conv_num = conv_num;
new_gai->display=FALSE;
new_gai->line_style = 2; /* the arrow line will be 2 pixels width */
@@ -753,8 +752,8 @@ T38_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const vo
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->first_frame_num=pinfo->fd->num;
callsinfo->selected=FALSE;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs = pinfo->fd->abs_ts;
+ callsinfo->start_rel = pinfo->fd->rel_ts;
callsinfo->protocol=MEDIA_T38;
callsinfo->prot_info=NULL;
callsinfo->free_prot_info = NULL;
@@ -918,8 +917,8 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->first_frame_num=pinfo->fd->num;
callsinfo->selected=FALSE;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_SIP;
callsinfo->prot_info=g_malloc(sizeof(sip_calls_info_t));
callsinfo->free_prot_info = free_sip_info;
@@ -984,8 +983,8 @@ SIPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
}
}
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
/* increment the packets counter of all calls */
@@ -1140,8 +1139,8 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE;
callsinfo->first_frame_num=pinfo->fd->num;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_ISUP;
if (pi->calling_number!=NULL){
callsinfo->from_identity=g_strdup(pi->calling_number);
@@ -1163,8 +1162,8 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
if (callsinfo!=NULL){
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
@@ -1588,8 +1587,8 @@ 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));
callsinfo->first_frame_num=pinfo->fd->num;
callsinfo->selected=FALSE;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_AC_ISDN;
callsinfo->prot_info=g_malloc(sizeof(actrace_isdn_calls_info_t));
callsinfo->free_prot_info = g_free;
@@ -1601,8 +1600,8 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
tapinfo->callsinfo_list = g_list_append(tapinfo->callsinfo_list, callsinfo);
}
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
/* increment the packets counter of all calls */
@@ -1801,8 +1800,8 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE;
callsinfo->first_frame_num=pinfo->fd->num;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_H323;
callsinfo->prot_info=g_malloc(sizeof(h323_calls_info_t));
callsinfo->free_prot_info = free_h225_info;
@@ -1833,8 +1832,8 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
/* let's analyze the call state */
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
/* increment the packets counter of all calls */
@@ -2358,7 +2357,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
after the call has been released
*/
- diff_time = nstime_to_sec(&pinfo->fd->rel_ts) - tmp_listinfo->stop_sec - (double)tmp_listinfo->stop_usec/1000000;
+ diff_time = nstime_to_sec(&pinfo->fd->rel_ts) - nstime_to_sec(&tmp_listinfo->stop_rel);
if ( ((tmp_listinfo->call_state == VOIP_CANCELLED) ||
(tmp_listinfo->call_state == VOIP_COMPLETED) ||
(tmp_listinfo->call_state == VOIP_REJECTED)) &&
@@ -2434,8 +2433,8 @@ MGCPcalls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->first_frame_num=pinfo->fd->num;
callsinfo->selected=FALSE;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_MGCP;
callsinfo->prot_info=g_malloc(sizeof(mgcp_calls_info_t));
callsinfo->free_prot_info = g_free;
@@ -2522,8 +2521,8 @@ 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":"");
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
/* increment the packets counter of all calls */
@@ -2641,8 +2640,8 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
COPY_ADDRESS(&(callsinfo->initial_speaker),actrace_direction?&pstn_add:&(pinfo->src));
callsinfo->first_frame_num=pinfo->fd->num;
callsinfo->selected=FALSE;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_AC_CAS;
callsinfo->prot_info=g_malloc(sizeof(actrace_cas_calls_info_t));
callsinfo->free_prot_info = g_free;
@@ -2655,8 +2654,8 @@ ACTRACEcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
tapinfo->callsinfo_list = g_list_append(tapinfo->callsinfo_list, callsinfo);
}
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
/* increment the packets counter of all calls */
@@ -2787,10 +2786,10 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *
callsinfo->protocol = TEL_H248;
callsinfo->call_num = tapinfo->ncalls++;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs;
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->start_abs = pinfo->fd->abs_ts;
+ callsinfo->start_rel = pinfo->fd->rel_ts;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->selected = FALSE;
@@ -2816,8 +2815,8 @@ static int h248_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *
callsinfo->to_identity = s->str;
g_string_free(s,FALSE);
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
}
@@ -2948,10 +2947,10 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) {
COPY_ADDRESS(&(callsinfo->initial_speaker), &(pinfo->src));
callsinfo->protocol = SP2VP(assoc->payload);
- callsinfo->start_sec=(gint32) pinfo->fd->rel_ts.secs;
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs;
- callsinfo->stop_sec=(gint32) pinfo->fd->rel_ts.secs;
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->start_abs = pinfo->fd->abs_ts;
+ callsinfo->start_rel = pinfo->fd->rel_ts;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->selected = FALSE;
callsinfo->call_num = tapinfo->ncalls++;
@@ -2970,8 +2969,8 @@ static int sccp_calls(packet_info *pinfo, const void *prot_info) {
}
callsinfo->protocol = SP2VP(assoc->payload);
- callsinfo->stop_sec=(gint32) pinfo->fd->rel_ts.secs;
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
@@ -3167,8 +3166,8 @@ 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. */
/* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_UNISTIM;
callsinfo->prot_info=g_malloc(sizeof(unistim_info_t));
@@ -3206,8 +3205,8 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
}
/* Each packet COULD BE OUR LAST!!!! */
- callsinfo->stop_sec=(gint32)(pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
/* This is a valid packet so increment counter */
@@ -3371,8 +3370,8 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Open stream */
/* Signifies the start of the call so set start_sec & start_usec */
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
/* Local packets too */
++(callsinfo->npackets);
@@ -3419,8 +3418,8 @@ 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. */
/* Otherwise if the call is completed we'll have the open/close streams to ref actual call duration */
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_UNISTIM;
callsinfo->prot_info=g_malloc(sizeof(unistim_info_t));
@@ -3452,8 +3451,8 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Open stream */
/* Signifies the start of the call so set start_sec & start_usec */
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
/* Local packets too */
++(callsinfo->npackets);
@@ -3486,8 +3485,8 @@ unistim_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Close Stream */
/* Set stop seconds + usec */
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
tmp_unistim_info->sequence = pi->sequence;
@@ -3659,10 +3658,10 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
callsinfo->protocol = VOIP_SKINNY;
callsinfo->call_num = tapinfo->ncalls++;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs;
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->start_abs = pinfo->fd->abs_ts;
+ callsinfo->start_rel = pinfo->fd->rel_ts;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->selected = FALSE;
tapinfo->callsinfo_list = g_list_append(tapinfo->callsinfo_list, callsinfo);
@@ -3678,8 +3677,8 @@ skinny_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_,
if ((si->callState > 0) && (si->callState < (sizeof(skinny_tap_voip_state)/sizeof(skinny_tap_voip_state[0]))))
callsinfo->call_state = skinny_tap_voip_state[si->callState];
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
}
@@ -3856,10 +3855,10 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c
callsinfo->protocol = VOIP_IAX2;
callsinfo->call_num = tapinfo->ncalls++;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs;
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->selected = FALSE;
tapinfo->callsinfo_list = g_list_append(tapinfo->callsinfo_list, callsinfo);
@@ -3868,8 +3867,8 @@ iax2_calls_packet( void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, c
if ((ii->callState > 0) && (ii->callState < (sizeof(tap_iax_voip_state)/sizeof(tap_iax_voip_state[0]))))
callsinfo->call_state = tap_iax_voip_state[ii->callState];
- callsinfo->stop_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
}
@@ -3961,8 +3960,8 @@ VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
COPY_ADDRESS(&(callsinfo->initial_speaker),&(pinfo->src));
callsinfo->selected=FALSE;
callsinfo->first_frame_num=pinfo->fd->num;
- callsinfo->start_sec=(gint32) (pinfo->fd->rel_ts.secs);
- callsinfo->start_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->start_abs=pinfo->fd->abs_ts;
+ callsinfo->start_rel=pinfo->fd->rel_ts;
callsinfo->protocol=VOIP_COMMON;
callsinfo->protocol_name=g_strdup((pi->protocol_name)?pi->protocol_name:"");
callsinfo->call_comment=g_strdup((pi->call_comment)?pi->call_comment:"");
@@ -3985,8 +3984,8 @@ VoIPcalls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
g_free(callsinfo->call_comment);
callsinfo->call_comment=g_strdup(pi->call_comment);
}
- callsinfo->stop_sec=(gint32)(pinfo->fd->rel_ts.secs);
- callsinfo->stop_usec=pinfo->fd->rel_ts.nsecs/1000;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
++(tapinfo->npackets);
@@ -4050,8 +4049,8 @@ prot_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
{
voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct;
if (callsinfo!=NULL){
- callsinfo->stop_sec=pinfo->fd->rel_secs;
- callsinfo->stop_usec=pinfo->fd->rel_usecs;
+ callsinfo->stop_abs = pinfo->fd->abs_ts;
+ callsinfo->stop_rel = pinfo->fd->rel_ts;
callsinfo->last_frame_num=pinfo->fd->num;
++(callsinfo->npackets);
++(tapinfo->npackets);
diff --git a/gtk/voip_calls.h b/gtk/voip_calls.h
index bbcf960b35..74f1538133 100644
--- a/gtk/voip_calls.h
+++ b/gtk/voip_calls.h
@@ -146,7 +146,10 @@ typedef struct _voip_calls_info {
gchar *protocol_name;
gchar *call_comment;
guint16 call_num;
- gint32 start_sec, start_usec, stop_sec, stop_usec;
+ nstime_t start_abs;
+ nstime_t stop_abs;
+ nstime_t start_rel;
+ nstime_t stop_rel;
gboolean selected;
} voip_calls_info_t;
@@ -207,10 +210,10 @@ typedef struct _voip_rtp_stream_info {
guint32 first_frame_num; /* frame number of first frame */
guint32 setup_frame_number; /* frame number of setup message */
/* start of recording (GMT) of this stream */
- guint32 start_rel_sec; /* start stream rel seconds */
- guint32 start_rel_usec; /* start stream rel microseconds */
- guint32 stop_rel_sec; /* stop stream rel seconds */
- guint32 stop_rel_usec; /* stop stream rel microseconds */
+ nstime_t start_abs;
+ nstime_t stop_abs;
+ nstime_t start_rel;
+ nstime_t stop_rel;
gint32 rtp_event;
} voip_rtp_stream_info_t;
diff --git a/gtk/voip_calls_dlg.c b/gtk/voip_calls_dlg.c
index 5483f986bd..c31da3f099 100644
--- a/gtk/voip_calls_dlg.c
+++ b/gtk/voip_calls_dlg.c
@@ -137,10 +137,10 @@ static void add_to_clist(voip_calls_info_t* strinfo)
/* strinfo->selected = FALSE;*/
- g_snprintf(field[CALL_COL_START_TIME], 15, "%i.%03i", strinfo->start_sec, strinfo->start_usec/1000);
- g_snprintf(field[CALL_COL_STOP_TIME], 15, "%i.%03i", strinfo->stop_sec, strinfo->stop_usec/1000);
-/* xxx display_signed_time(data[0], sizeof(field[CALL_COL_START_TIME]), strinfo->start_sec, strinfo->start_usec, TO_STR_TIME_RES_T_USECS); */
-/* display_signed_time(data[1], sizeof(field[CALL_COL_STOP_TIME]), strinfo->stop_sec, strinfo->stop_usec, TO_STR_TIME_RES_T_USECS); */
+ g_snprintf(field[CALL_COL_START_TIME], 15, "%.3f", nstime_to_sec(&strinfo->start_rel));
+ g_snprintf(field[CALL_COL_STOP_TIME], 15, "%3f", nstime_to_sec(&strinfo->stop_rel));
+/* XXX display_signed_time(data[0], sizeof(field[CALL_COL_START_TIME]), strinfo->start_rel.secs, strinfo->start_rel.nsecs, TO_STR_TIME_RES_T_NSECS); */
+/* display_signed_time(data[1], sizeof(field[CALL_COL_STOP_TIME]), strinfo->stop_rel.secs, strinfo->stop_rel.nsecs, TO_STR_TIME_RES_T_NSECS); */
g_snprintf(field[CALL_COL_INITIAL_SPEAKER], 30, "%s", get_addr_name(&(strinfo->initial_speaker)));
g_snprintf(field[CALL_COL_FROM], 50, "%s", strinfo->from_identity);
g_snprintf(field[CALL_COL_TO], 50, "%s", strinfo->to_identity);