Wireshark  4.3.0
The Wireshark network protocol analyzer
voip_calls.h
Go to the documentation of this file.
1 
23 #ifndef __VOIP_CALLS_H__
24 #define __VOIP_CALLS_H__
25 
26 #include <glib.h>
27 
28 #include <stdio.h>
29 
30 #include "epan/address.h"
31 #include "epan/packet.h"
32 #include "epan/guid-utils.h"
33 #include "epan/tap.h"
34 #include "epan/tap-voip.h"
35 #include "epan/sequence_analysis.h"
36 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif /* __cplusplus */
45 
46 /****************************************************************************/
47 extern const char *voip_call_state_name[8];
48 
49 typedef enum _voip_protocol {
50  VOIP_SIP,
51  VOIP_ISUP,
52  VOIP_H323,
53  VOIP_MGCP,
54  VOIP_AC_ISDN,
55  VOIP_AC_CAS,
56  MEDIA_T38,
57  TEL_H248,
58  TEL_SCCP,
59  TEL_BSSMAP,
60  TEL_RANAP,
61  VOIP_UNISTIM,
62  VOIP_SKINNY,
63  VOIP_IAX2,
64  VOIP_COMMON
65 } voip_protocol;
66 
67 typedef enum _hash_indexes {
68  SIP_HASH=0
69 } hash_indexes;
70 
71 extern const char *voip_protocol_name[];
72 
73 typedef enum _flow_show_options
74 {
75  FLOW_ALL,
76  FLOW_ONLY_INVITES
77 } flow_show_options;
78 
81 typedef enum _sip_call_state {
82  SIP_INVITE_SENT,
83  SIP_200_REC,
84  SIP_CANCEL_SENT
86 
87 typedef struct _sip_calls_info {
88  gchar *call_identifier;
89  guint32 invite_cseq;
90  sip_call_state sip_state;
92 
94 typedef struct _isup_calls_info {
95  guint16 cic;
96  guint32 opc, dpc;
97  guint8 ni;
99 
100 /* defines specific H245 data */
101 typedef struct _h245_address {
102  address h245_address;
103  guint16 h245_port;
105 
107 typedef struct _h323_calls_info {
108  e_guid_t *guid; /* Call ID to identify a H225 */
109  GList* h245_list;
111  gboolean is_h245;
113  gboolean is_faststart_Proc;
114  gboolean is_h245Tunneling;
115  gint32 q931_crv;
116  gint32 q931_crv2;
117  guint requestSeqNum;
119 
121 typedef struct _mgcp_calls_info {
122  gchar *endpointId;
123  gboolean fromEndpoint;
125 
127 typedef struct _actrace_isdn_calls_info {
128  gint32 crv;
129  int trunk;
131 
133 typedef struct _actrace_cas_calls_info {
134  gint32 bchannel;
135  int trunk;
137 
139 typedef struct _skinny_calls_info {
140  guint32 callId;
142 
144 typedef struct _voip_calls_info {
145  voip_call_state call_state;
146  voip_call_active_state call_active_state;
147  gchar *call_id;
148  gchar *from_identity;
149  gchar *to_identity;
150  gpointer prot_info;
151  void (*free_prot_info)(gpointer);
152  address initial_speaker;
153  guint32 npackets;
154  voip_protocol protocol;
155  gchar *protocol_name;
156  gchar *call_comment;
157  guint16 call_num;
159  frame_data *start_fd;
160  nstime_t start_rel_ts;
161  frame_data *stop_fd;
162  nstime_t stop_rel_ts;
164 
167 /* struct holding all information of the tap */
168 /*
169  * XXX Most of these are private to voip_calls.c. We might want to
170  * make them private.
171  */
172 struct _h245_labels;
173 typedef struct _voip_calls_tapinfo {
174  tap_reset_cb tap_reset;
175  tap_packet_cb tap_packet;
176  tap_draw_cb tap_draw;
177  void *tap_data;
178  int ncalls;
179  GQueue* callsinfos;
180  GHashTable* callsinfo_hashtable[1];
181  int npackets;
183  int start_packets;
184  int completed_calls;
185  int rejected_calls;
186  seq_analysis_info_t *graph_analysis;
189  GList* rtpstream_list;
190  guint32 rtp_evt_frame_num;
191  guint8 rtp_evt;
192  gboolean rtp_evt_end;
193  gchar *sdp_summary;
194  guint32 sdp_frame_num;
195  guint32 mtp3_opc;
196  guint32 mtp3_dpc;
197  guint8 mtp3_ni;
198  guint32 mtp3_frame_num;
200  gchar *q931_calling_number;
201  gchar *q931_called_number;
202  guint8 q931_cause_value;
203  gint32 q931_crv;
204  guint32 q931_frame_num;
205  guint32 h225_frame_num;
206  guint16 h225_call_num;
207  int h225_cstype; /* XXX actually an enum */
208  gboolean h225_is_faststart;
209  guint32 sip_frame_num;
210  guint32 actrace_frame_num;
211  gint32 actrace_trunk;
212  gint32 actrace_direction;
213  flow_show_options fs_option;
214  guint32 redraw;
215  gboolean apply_display_filter;
217 
218 #if 0
219 #define VOIP_CALLS_DEBUG(...) { \
220  char *VOIP_CALLS_DEBUG_MSG = ws_strdup_printf(__VA_ARGS__); \
221  ws_warning("voip_calls: %s:%d %s", G_STRFUNC, __LINE__, VOIP_CALLS_DEBUG_MSG); \
222  g_free(VOIP_CALLS_DEBUG_MSG); \
223 }
224 #else
225 #define VOIP_CALLS_DEBUG(...)
226 #endif
227 
228 /****************************************************************************/
229 /* INTERFACE */
230 
239 
245 
250 
254 void
256 
257 #ifdef __cplusplus
258 }
259 #endif /* __cplusplus */
260 
261 #endif /* __VOIP_CALLS_H__ */
Definition: voip_calls.h:133
Definition: voip_calls.h:127
Definition: address.h:55
Definition: guid-utils.h:22
Definition: voip_calls.h:101
Definition: voip_calls.c:161
Definition: voip_calls.h:107
address h225SetupAddr
Definition: voip_calls.h:110
GList * h245_list
Definition: voip_calls.h:109
gboolean is_faststart_Setup
Definition: voip_calls.h:112
gboolean is_faststart_Proc
Definition: voip_calls.h:113
Definition: voip_calls.h:94
Definition: voip_calls.h:121
gboolean fromEndpoint
Definition: voip_calls.h:123
Definition: sequence_analysis.h:66
Definition: voip_calls.h:87
Definition: voip_calls.h:139
Definition: voip_calls.h:144
frame_data * start_fd
Definition: voip_calls.h:159
Definition: voip_calls.h:173
struct _h245_labels * h245_labels
Definition: voip_calls.h:199
voip_calls_info_t * filter_calls_fwd
Definition: voip_calls.h:182
tap_reset_cb tap_reset
Definition: voip_calls.h:174
tap_draw_cb tap_draw
Definition: voip_calls.h:176
GList * rtpstream_list
Definition: voip_calls.h:189
epan_t * session
Definition: voip_calls.h:187
GQueue * callsinfos
Definition: voip_calls.h:179
int npackets
Definition: voip_calls.h:181
int nrtpstreams
Definition: voip_calls.h:188
GHashTable * callsinfo_hashtable[1]
Definition: voip_calls.h:180
int ncalls
Definition: voip_calls.h:178
void * tap_data
Definition: voip_calls.h:177
tap_packet_cb tap_packet
Definition: voip_calls.h:175
Definition: epan.c:460
Definition: nstime.h:26
void voip_calls_init_all_taps(voip_calls_tapinfo_t *tap_id_base)
Definition: voip_calls.c:187
_sip_call_state
Definition: voip_calls.h:81
enum _sip_call_state sip_call_state
struct _isup_calls_info isup_calls_info_t
struct _actrace_cas_calls_info actrace_cas_calls_info_t
void voip_calls_free_callsinfo(voip_calls_info_t *callsinfo)
Definition: voip_calls.c:316
struct _actrace_isdn_calls_info actrace_isdn_calls_info_t
struct _h323_calls_info h323_calls_info_t
void voip_calls_remove_all_tap_listeners(voip_calls_tapinfo_t *tap_id_base)
Definition: voip_calls.c:233
struct _skinny_calls_info skinny_calls_info_t
void voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo)
Definition: voip_calls.c:263
struct _voip_calls_info voip_calls_info_t