Ethereal-dev: Re: [Ethereal-dev] VoIP call analysis: ISUP messages listed several times
Hi List,
Attached is a small patch to fix this problem. The issue is that
TCAP also uses MTP3 layer, so the MTP3 tap was called also for TCAP
packets, and there was not checking if the upper layer was ISUP or TCAP.
I made this matching using the frame number (not sure if this is the
clearest way to do it).
Regards
Alejandro
Jacques, Olivier (OCBU-Test Infra) wrote:
Hello,
Using VoIP call analysis, I encountered one issue:
if the capture contains a mix of TCAP+ISUP protocol, then all packets
following an ISUP message are seen as being duplicate of the last ISUP
messages (like in the picture attached), this is both in the voip dialog
and in the graph.
Btw, I cannot thanks enough everybody who worked on this feature. This
is just a fantastic one.
Olivier.
------------------------------------------------------------------------
------------------------------------------------------------------------
_______________________________________________
Ethereal-dev mailing list
Ethereal-dev@xxxxxxxxxxxx
http://www.ethereal.com/mailman/listinfo/ethereal-dev
Index: gtk/voip_calls.c
===================================================================
--- gtk/voip_calls.c (revision 13572)
+++ gtk/voip_calls.c (working copy)
@@ -650,6 +650,7 @@
static guint16 isup_cic;
static guint8 isup_message_type;
static guint8 isup_cause_value;
+static guint32 isup_frame_num;
/****************************************************************************/
/* whenever a isup_ packet is seen by the tap listener */
@@ -668,7 +669,7 @@
isup_message_type = pi->message_type;
isup_cause_value = pi->cause_value;
isup_cic = pinfo->circuit_id;
-
+ isup_frame_num = pinfo->fd->num;
return 0;
}
@@ -738,6 +739,9 @@
const mtp3_tap_rec_t *pi = mtp3_info;
+ /* check if the upper layer is ISUP matching the frame number */
+ if (isup_frame_num != pinfo->fd->num) return 0;
+
/* check wether we already have a call with these parameters in the list */
list = g_list_first(tapinfo->strinfo_list);
while (list)