Ethereal-dev: Re: [Ethereal-dev] VoIP call analysis: ISUP messages listed several times

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Alejandro Vaquero <alejandrovaquero@xxxxxxxxx>
Date: Wed, 02 Mar 2005 14:26:30 -0700
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)