From 130f1d11701ce1ca411ddc867600a7e64a397fd7 Mon Sep 17 00:00:00 2001 From: Jaap Keuter Date: Wed, 3 Mar 2010 20:35:50 +0000 Subject: [PATCH] Allow for other time presentations. svn path=/trunk/; revision=32099 --- gtk/voip_calls.c | 157 +++++++++++++++++++++---------------------- gtk/voip_calls.h | 13 ++-- gtk/voip_calls_dlg.c | 8 +-- 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_numframe_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);