/* voip_calls.h
- * VoIP calls summary addition for ethereal
+ * VoIP calls summary addition for Wireshark
*
* $Id$
*
* By Alejandro Vaquero, alejandro.vaquero@verso.com
* Copyright 2005, Verso Technologies Inc.
*
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifndef VOIP_CALLS_H_INCLUDED
-#define VOIP_CALLS_H_INCLUDED
+#ifndef __VOIP_CALLS_H__
+#define __VOIP_CALLS_H__
#include <glib.h>
#include <stdio.h>
#include <epan/address.h>
+#include <epan/guid-utils.h>
+#include <epan/tap-voip.h>
/****************************************************************************/
-/* defines voip call state */
-typedef enum _voip_call_state {
- VOIP_CALL_SETUP,
- VOIP_RINGING,
- VOIP_IN_CALL,
- VOIP_CANCELLED,
- VOIP_COMPLETED,
- VOIP_REJECTED,
- VOIP_UNKNOWN
-} voip_call_state;
-
-extern const char *voip_call_state_name[7];
-
-typedef enum _voip_call_active_state {
- VOIP_ACTIVE,
- VOIP_INACTIVE
-} voip_call_active_state;
+extern const char *voip_call_state_name[8];
typedef enum _voip_protocol {
VOIP_SIP,
VOIP_MGCP,
VOIP_AC_ISDN,
VOIP_AC_CAS,
- MEDIA_T38
+ MEDIA_T38,
+ TEL_H248,
+ TEL_SCCP,
+ TEL_BSSMAP,
+ TEL_RANAP,
+ VOIP_UNISTIM,
+ VOIP_SKINNY,
+ VOIP_IAX2,
+ VOIP_COMMON
} voip_protocol;
-extern const char *voip_protocol_name[7];
+extern const char *voip_protocol_name[];
/* defines specific SIP data */
/* defines specific H323 data */
typedef struct _h323_calls_info {
- guint8 *guid; /* Call ID to identify a H225 */
+ e_guid_t *guid; /* Call ID to identify a H225 */
GList* h245_list; /* list of H245 Address and ports for tunneling off calls*/
address h225SetupAddr; /* we use the SETUP H225 IP to determine if packets are forward or reverse */
gboolean is_h245;
int trunk;
} actrace_cas_calls_info_t;
+/* defines specific SKINNY data */
+typedef struct _skinny_calls_info {
+ guint32 callId;
+} skinny_calls_info_t;
+
/* defines a voip call */
typedef struct _voip_calls_info {
voip_call_state call_state;
voip_call_active_state call_active_state;
+ gchar *call_id;
gchar *from_identity;
gchar *to_identity;
gpointer prot_info;
+ void(*free_prot_info)(gpointer);
address initial_speaker;
guint32 npackets;
guint32 first_frame_num; /* frame number of first frame */
guint32 last_frame_num;
voip_protocol protocol;
+ 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;
typedef struct _voip_calls_tapinfo {
int ncalls; /* number of call */
- GList* strinfo_list; /* list with all calls */
+ GList* callsinfo_list; /* list with all calls */
int npackets; /* total number of packets of all calls */
voip_calls_info_t* filter_calls_fwd; /* used as filter in some tap modes */
guint32 launch_count; /* number of times the tap has been run */
int h225_dummy;
int h245dg_dummy;
int mtp3_dummy;
+ int m3ua_dummy;
int isup_dummy;
int q931_dummy;
int mgcp_dummy;
int actrace_dummy;
int t38_dummy;
+ int h248_dummy;
+ int sccp_dummy;
+ int sua_dummy;
+ int megaco_dummy;
+ int unistim_dummy;
+ int skinny_dummy;
+ int iax2_dummy;
+ int voip_dummy;
} voip_calls_tapinfo_t;
guint32 ssrc;
guint32 pt;
gchar *pt_str;
+ gboolean is_srtp;
guint32 npackets;
gboolean end_stream;
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;
* Registers the voip_calls tap listeners (if not already done).
* From that point on, the calls list will be updated with every redissection.
* This function is also the entry point for the initialization routine of the tap system.
-* So whenever voip_calls.c is added to the list of ETHEREAL_TAP_SRCs, the tap will be registered on startup.
+* So whenever voip_calls.c is added to the list of WIRESHARK_TAP_SRCs, the tap will be registered on startup.
* If not, it will be registered on demand by the voip_calls functions that need it.
*/
void sip_calls_init_tap(void);
void mgcp_calls_init_tap(void);
void actrace_calls_init_tap(void);
void t38_init_tap(void);
+void h248_calls_init_tap(void);
+void sccp_calls_init_tap(void);
+void unistim_calls_init_tap(void);
+void skinny_calls_init_tap(void);
+void iax2_calls_init_tap(void);
+void VoIPcalls_init_tap(void);
/*
* Removes the voip_calls tap listener (if not already done)
void remove_tap_listener_mgcp_calls(void);
void remove_tap_listener_actrace_calls(void);
void remove_tap_listener_t38(void);
+void remove_tap_listener_h248_calls(void);
+void remove_tap_listener_sccp_calls(void);
+void remove_tap_listener_unistim_calls(void);
+void remove_tap_listener_skinny_calls(void);
+void remove_tap_listener_iax2_calls(void);
+void remove_tap_listener_voip_calls(void);
/*
* Retrieves a constant reference to the unique info structure of the voip_calls tap listener.
/*
* Cleans up memory of voip calls tap.
*/
-void voip_calls_reset(voip_calls_tapinfo_t *tapinfo);
void isup_calls_reset(voip_calls_tapinfo_t *tapinfo);
void mtp3_calls_reset(voip_calls_tapinfo_t *tapinfo);
void q931_calls_reset(voip_calls_tapinfo_t *tapinfo);
+void voip_calls_reset(voip_calls_tapinfo_t *tapinfo);
void graph_analysis_data_init(void);
-#endif /*VOIP_CALLS_H_INCLUDED*/
+#endif /* __VOIP_CALLS_H__ */