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  char *call_identifier;
89  uint32_t invite_cseq;
90  sip_call_state sip_state;
92 
94 typedef struct _isup_calls_info {
95  uint16_t cic;
96  uint32_t opc, dpc;
97  uint8_t ni;
99 
100 /* defines specific H245 data */
101 typedef struct _h245_address {
102  address h245_address;
103  uint16_t 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  bool is_h245;
114  bool is_h245Tunneling;
115  int32_t q931_crv;
116  int32_t q931_crv2;
117  unsigned requestSeqNum;
119 
121 typedef struct _mgcp_calls_info {
122  char *endpointId;
125 
127 typedef struct _actrace_isdn_calls_info {
128  int32_t crv;
129  int trunk;
131 
133 typedef struct _actrace_cas_calls_info {
134  int32_t bchannel;
135  int trunk;
137 
139 typedef struct _skinny_calls_info {
140  uint32_t callId;
142 
144 typedef struct _voip_calls_info {
145  voip_call_state call_state;
146  voip_call_active_state call_active_state;
147  char *call_id;
148  char *from_identity;
149  char *to_identity;
150  void * prot_info;
151  void (*free_prot_info)(void *);
152  address initial_speaker;
153  uint32_t npackets;
154  voip_protocol protocol;
155  char *protocol_name;
156  char *call_comment;
157  uint16_t 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  uint32_t rtp_evt_frame_num;
191  uint8_t rtp_evt;
192  bool rtp_evt_end;
193  char *sdp_summary;
194  uint32_t sdp_frame_num;
195  uint32_t mtp3_opc;
196  uint32_t mtp3_dpc;
197  uint8_t mtp3_ni;
198  uint32_t mtp3_frame_num;
200  char *q931_calling_number;
201  char *q931_called_number;
202  uint8_t q931_cause_value;
203  int32_t q931_crv;
204  uint32_t q931_frame_num;
205  uint32_t h225_frame_num;
206  uint16_t h225_call_num;
207  int h225_cstype; /* XXX actually an enum */
208  bool h225_is_faststart;
209  uint32_t sip_frame_num;
210  uint32_t actrace_frame_num;
211  int32_t actrace_trunk;
212  int32_t actrace_direction;
213  flow_show_options fs_option;
214  uint32_t redraw;
215  bool 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:56
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
bool is_faststart_Setup
Definition: voip_calls.h:112
bool is_faststart_Proc
Definition: voip_calls.h:113
Definition: voip_calls.h:94
Definition: voip_calls.h:121
bool 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:465
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