Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
voip_calls.h
Go to the documentation of this file.
1 /* voip_calls.h
2  * VoIP calls summary addition for Wireshark
3  *
4  * Copyright 2004, Ericsson , Spain
5  * By Francisco Alcoba <francisco.alcoba@ericsson.com>
6  *
7  * based on h323_calls.h
8  * Copyright 2004, Iskratel, Ltd, Kranj
9  * By Miha Jemec <m.jemec@iskratel.si>
10  *
11  * H323, RTP and Graph Support
12  * By Alejandro Vaquero, alejandro.vaquero@verso.com
13  * Copyright 2005, Verso Technologies Inc.
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * SPDX-License-Identifier: GPL-2.0-or-later
20  */
21 
22 #ifndef __VOIP_CALLS_H__
23 #define __VOIP_CALLS_H__
24 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif /* __cplusplus */
33 
34 #include <glib.h>
35 #include <stdio.h>
36 
37 #include "epan/address.h"
38 #include "epan/packet.h"
39 #include "epan/guid-utils.h"
40 #include "epan/tap.h"
41 #include "epan/tap-voip.h"
42 #include "epan/sequence_analysis.h"
43 
44 /****************************************************************************/
45 extern const char *voip_call_state_name[8];
46 
47 typedef enum _voip_protocol {
48  VOIP_SIP,
49  VOIP_ISUP,
50  VOIP_H323,
51  VOIP_MGCP,
52  VOIP_AC_ISDN,
53  VOIP_AC_CAS,
54  MEDIA_T38,
55  TEL_H248,
56  TEL_SCCP,
57  TEL_BSSMAP,
58  TEL_RANAP,
59  VOIP_UNISTIM,
60  VOIP_SKINNY,
61  VOIP_IAX2,
62  VOIP_COMMON
63 } voip_protocol;
64 
65 typedef enum _hash_indexes {
66  SIP_HASH=0
67 } hash_indexes;
68 
69 extern const char *voip_protocol_name[];
70 
71 typedef enum _flow_show_options
72 {
73  FLOW_ALL,
74  FLOW_ONLY_INVITES
75 } flow_show_options;
76 
79 typedef enum _sip_call_state {
80  SIP_INVITE_SENT,
81  SIP_200_REC,
82  SIP_CANCEL_SENT
84 
85 typedef struct _sip_calls_info {
86  gchar *call_identifier;
87  guint32 invite_cseq;
88  sip_call_state sip_state;
90 
92 typedef struct _isup_calls_info {
93  guint16 cic;
94  guint32 opc, dpc;
95  guint8 ni;
97 
98 /* defines specific H245 data */
99 typedef struct _h245_address {
100  address h245_address;
101  guint16 h245_port;
103 
105 typedef struct _h323_calls_info {
106  e_guid_t *guid; /* Call ID to identify a H225 */
107  GList* h245_list;
109  gboolean is_h245;
111  gboolean is_faststart_Proc;
112  gboolean is_h245Tunneling;
113  gint32 q931_crv;
114  gint32 q931_crv2;
115  guint requestSeqNum;
117 
119 typedef struct _mgcp_calls_info {
120  gchar *endpointId;
121  gboolean fromEndpoint;
123 
125 typedef struct _actrace_isdn_calls_info {
126  gint32 crv;
127  int trunk;
129 
131 typedef struct _actrace_cas_calls_info {
132  gint32 bchannel;
133  int trunk;
135 
137 typedef struct _skinny_calls_info {
138  guint32 callId;
140 
142 typedef struct _voip_calls_info {
143  voip_call_state call_state;
144  voip_call_active_state call_active_state;
145  gchar *call_id;
146  gchar *from_identity;
147  gchar *to_identity;
148  gpointer prot_info;
149  void (*free_prot_info)(gpointer);
150  address initial_speaker;
151  guint32 npackets;
152  voip_protocol protocol;
153  gchar *protocol_name;
154  gchar *call_comment;
155  guint16 call_num;
158  nstime_t start_rel_ts;
159  frame_data *stop_fd;
160  nstime_t stop_rel_ts;
162 
165 /* struct holding all information of the tap */
166 /*
167  * XXX Most of these are private to voip_calls.c. We might want to
168  * make them private.
169  */
170 struct _h245_labels;
171 typedef struct _voip_calls_tapinfo {
172  tap_reset_cb tap_reset;
173  tap_packet_cb tap_packet;
174  tap_draw_cb tap_draw;
175  void *tap_data;
176  int ncalls;
177  GQueue* callsinfos;
178  GHashTable* callsinfo_hashtable[1];
179  int npackets;
181  int start_packets;
182  int completed_calls;
183  int rejected_calls;
184  seq_analysis_info_t *graph_analysis;
188  guint32 rtp_evt_frame_num;
189  guint8 rtp_evt;
190  gboolean rtp_evt_end;
191  gchar *sdp_summary;
192  guint32 sdp_frame_num;
193  guint32 mtp3_opc;
194  guint32 mtp3_dpc;
195  guint8 mtp3_ni;
196  guint32 mtp3_frame_num;
198  gchar *q931_calling_number;
199  gchar *q931_called_number;
200  guint8 q931_cause_value;
201  gint32 q931_crv;
202  guint32 q931_frame_num;
203  guint32 h225_frame_num;
204  guint16 h225_call_num;
205  int h225_cstype; /* XXX actually an enum */
206  gboolean h225_is_faststart;
207  guint32 sip_frame_num;
208  guint32 actrace_frame_num;
209  gint32 actrace_trunk;
210  gint32 actrace_direction;
211  flow_show_options fs_option;
212  guint32 redraw;
214 
215 #if 0
216 #define VOIP_CALLS_DEBUG(...) { \
217  char *VOIP_CALLS_DEBUG_MSG = g_strdup_printf(__VA_ARGS__); \
218  g_warning("voip_calls: %s:%d %s", G_STRFUNC, __LINE__, VOIP_CALLS_DEBUG_MSG); \
219  g_free(VOIP_CALLS_DEBUG_MSG); \
220 }
221 #else
222 #define VOIP_CALLS_DEBUG(...)
223 #endif
224 
225 /****************************************************************************/
226 /* INTERFACE */
227 
236 
242 
247 
248 #ifdef __cplusplus
249 }
250 #endif /* __cplusplus */
251 
252 #endif /* __VOIP_CALLS_H__ */
253 
254 /*
255  * Editor modelines - https://www.wireshark.org/tools/modelines.html
256  *
257  * Local Variables:
258  * c-basic-offset: 4
259  * tab-width: 8
260  * indent-tabs-mode: nil
261  * End:
262  *
263  * ex: set shiftwidth=4 tabstop=8 expandtab:
264  * :indentSize=4:tabSize=8:noTabs=true:
265  */
voip_calls_info_t * filter_calls_fwd
Definition: voip_calls.h:180
Definition: voip_calls.h:142
gboolean fromEndpoint
Definition: voip_calls.h:121
void voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo)
Definition: voip_calls.c:259
frame_data * start_fd
Definition: voip_calls.h:157
Definition: voip_calls.h:171
epan_t * session
Definition: voip_calls.h:185
struct _actrace_isdn_calls_info actrace_isdn_calls_info_t
gboolean is_faststart_Setup
Definition: voip_calls.h:110
Definition: sequence_analysis.h:58
struct _isup_calls_info isup_calls_info_t
Definition: voip_calls.h:105
int nrtp_streams
Definition: voip_calls.h:186
GList * rtp_stream_list
Definition: voip_calls.h:187
struct _voip_calls_info voip_calls_info_t
Definition: nstime.h:27
Definition: voip_calls.h:137
struct _actrace_cas_calls_info actrace_cas_calls_info_t
_sip_call_state
Definition: voip_calls.h:79
address h225SetupAddr
Definition: voip_calls.h:108
struct _h323_calls_info h323_calls_info_t
enum _sip_call_state sip_call_state
Definition: guid-utils.h:21
tap_packet_cb tap_packet
Definition: voip_calls.h:173
tap_draw_cb tap_draw
Definition: voip_calls.h:174
void voip_calls_remove_all_tap_listeners(voip_calls_tapinfo_t *tap_id_base)
Definition: voip_calls.c:229
Definition: frame_data.h:53
int npackets
Definition: voip_calls.h:179
Definition: voip_calls.h:119
void * tap_data
Definition: voip_calls.h:175
GList * h245_list
Definition: voip_calls.h:107
Definition: voip_calls.h:125
gboolean is_faststart_Proc
Definition: voip_calls.h:111
Definition: voip_calls.c:157
void voip_calls_init_all_taps(voip_calls_tapinfo_t *tap_id_base)
Definition: voip_calls.c:183
GQueue * callsinfos
Definition: voip_calls.h:177
Definition: voip_calls.h:131
tap_reset_cb tap_reset
Definition: voip_calls.h:172
Definition: voip_calls.h:99
struct _h245_labels * h245_labels
Definition: voip_calls.h:197
int ncalls
Definition: voip_calls.h:176
Definition: voip_calls.h:85
Definition: address.h:47
struct _skinny_calls_info skinny_calls_info_t
Definition: epan.c:348
Definition: voip_calls.h:92