Wireshark
4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
epan
dissectors
packet-iax2.h
1
/* packet-iax2.h
2
*
3
* Copyright (C) 2003, Digium
4
* Mark Spencer <
[email protected]
>
5
*
6
* Wireshark - Network traffic analyzer
7
* By Gerald Combs <
[email protected]
>
8
* Copyright 1998 Gerald Combs
9
*
10
* SPDX-License-Identifier: GPL-2.0-or-later
11
*/
12
13
#ifndef __PACKET_IAX2_H__
14
#define __PACKET_IAX2_H__
15
16
#include <
epan/tap-voip.h
>
17
#include <
epan/conversation.h
>
18
19
/* Ref: format_compatibility.h from Asterisk source */
20
21
/* Data formats for capabilities and frames alike */
22
/* suitable for use in iax2.codec dissector table */
24
#define AST_FORMAT_G723_1 0
26
#define AST_FORMAT_GSM 1
28
#define AST_FORMAT_ULAW 2
30
#define AST_FORMAT_ALAW 3
32
#define AST_FORMAT_G726_AAL2 4
34
#define AST_FORMAT_ADPCM 5
36
#define AST_FORMAT_SLINEAR 6
38
#define AST_FORMAT_LPC10 7
40
#define AST_FORMAT_G729A 8
42
#define AST_FORMAT_SPEEX 9
44
#define AST_FORMAT_ILBC 10
46
#define AST_FORMAT_G726 11
48
#define AST_FORMAT_G722 12
50
#define AST_FORMAT_SIREN7 13
52
#define AST_FORMAT_SIREN14 14
54
#define AST_FORMAT_SLINEAR16 15
56
#define AST_FORMAT_JPEG 16
58
#define AST_FORMAT_PNG 17
60
#define AST_FORMAT_H261 18
62
#define AST_FORMAT_H263 19
64
#define AST_FORMAT_H263_PLUS 20
66
#define AST_FORMAT_H264 21
68
#define AST_FORMAT_MP4_VIDEO 22
70
#define AST_FORMAT_VP8 23
72
#define AST_FORMAT_T140_RED 26
74
#define AST_FORMAT_T140 27
76
#define AST_FORMAT_G719 32
78
#define AST_FORMAT_SPEEX16 33
80
#define AST_FORMAT_OPUS 34
82
#define AST_FORMAT_TESTLAW 47
83
84
/* Max version of IAX protocol we support */
85
#define IAX_PROTO_VERSION 2
86
87
#define IAX_MAX_CALLS 32768
88
89
#define IAX_FLAG_FULL 0x8000
90
91
#define IAX_FLAG_RETRANS 0x8000
92
93
#define IAX_FLAG_SC_LOG 0x80
94
95
#define IAX_MAX_SHIFT 0x1F
96
97
#define IAX_WINDOW 64
98
99
#define AST_FRAME_DTMF_END 1
/* A DTMF end event, subclass is the digit */
100
#define AST_FRAME_VOICE 2
/* Voice data, subclass is AST_FORMAT_* */
101
#define AST_FRAME_VIDEO 3
/* Video frame, maybe?? :) */
102
#define AST_FRAME_CONTROL 4
/* A control frame, subclass is AST_CONTROL_* */
103
#define AST_FRAME_NULL 5
/* An empty, useless frame */
104
#define AST_FRAME_IAX 6
/* Inter Aterisk Exchange private frame type */
105
#define AST_FRAME_TEXT 7
/* Text messages */
106
#define AST_FRAME_IMAGE 8
/* Image Frames */
107
#define AST_FRAME_HTML 9
/* HTML Frames */
108
#define AST_FRAME_CNG 10
/* Confort Noise Generation */
109
#define AST_FRAME_MODEM 11
/* Modem-over-IP datastream */
110
#define AST_FRAME_DTMF_BEGIN 12
/* A DTMF begin event, subclass is the digit */
111
112
113
114
/* Subclass for AST_FRAME_IAX */
115
#define IAX_COMMAND_NEW 1
116
#define IAX_COMMAND_PING 2
117
#define IAX_COMMAND_PONG 3
118
#define IAX_COMMAND_ACK 4
119
#define IAX_COMMAND_HANGUP 5
120
#define IAX_COMMAND_REJECT 6
121
#define IAX_COMMAND_ACCEPT 7
122
#define IAX_COMMAND_AUTHREQ 8
123
#define IAX_COMMAND_AUTHREP 9
124
#define IAX_COMMAND_INVAL 10
125
#define IAX_COMMAND_LAGRQ 11
126
#define IAX_COMMAND_LAGRP 12
127
#define IAX_COMMAND_REGREQ 13
/* Registration request */
128
#define IAX_COMMAND_REGAUTH 14
/* Registration authentication required */
129
#define IAX_COMMAND_REGACK 15
/* Registration accepted */
130
#define IAX_COMMAND_REGREJ 16
/* Registration rejected */
131
#define IAX_COMMAND_REGREL 17
/* Force release of registration */
132
#define IAX_COMMAND_VNAK 18
/* If we receive voice before valid first voice frame, send this */
133
#define IAX_COMMAND_DPREQ 19
/* Request status of a dialplan entry */
134
#define IAX_COMMAND_DPREP 20
/* Request status of a dialplan entry */
135
#define IAX_COMMAND_DIAL 21
/* Request a dial on channel brought up TBD */
136
#define IAX_COMMAND_TXREQ 22
/* Transfer Request */
137
#define IAX_COMMAND_TXCNT 23
/* Transfer Connect */
138
#define IAX_COMMAND_TXACC 24
/* Transfer Accepted */
139
#define IAX_COMMAND_TXREADY 25
/* Transfer ready */
140
#define IAX_COMMAND_TXREL 26
/* Transfer release */
141
#define IAX_COMMAND_TXREJ 27
/* Transfer reject */
142
#define IAX_COMMAND_QUELCH 28
/* Stop audio/video transmission */
143
#define IAX_COMMAND_UNQUELCH 29
/* Resume audio/video transmission */
144
#define IAX_COMMAND_POKE 30
/* Like ping, but does not require an open connection */
145
#define IAX_COMMAND_PAGE 31
/* Paging description */
146
#define IAX_COMMAND_MWI 32
/* Stand-alone message waiting indicator */
147
#define IAX_COMMAND_UNSUPPORT 33
/* Unsupported message received */
148
#define IAX_COMMAND_TRANSFER 34
/* Request remote transfer */
149
#define IAX_COMMAND_PROVISION 35
/* Provision device */
150
#define IAX_COMMAND_FWDOWNL 36
/* Download firmware */
151
#define IAX_COMMAND_FWDATA 37
/* Firmware Data */
152
#define IAX_COMMAND_TXMEDIA 38
/* Transfer Media */
153
#define IAX_COMMAND_RTKEY 39
/* Rotate key */
154
#define IAX_COMMAND_CALLTOKEN 40
/* Call token */
155
156
#define IAX_DEFAULT_REG_EXPIRE 60
/* By default require re-registration once per minute */
157
158
#define IAX_LINGER_TIMEOUT 10
/* How long to wait before closing bridged call */
159
160
#define IAX_DEFAULT_PORTNO 4569
161
162
/* IAX Information elements */
163
#define IAX_IE_CALLED_NUMBER 1
/* Number/extension being called - string */
164
#define IAX_IE_CALLING_NUMBER 2
/* Calling number - string */
165
#define IAX_IE_CALLING_ANI 3
/* Calling number ANI for billing - string */
166
#define IAX_IE_CALLING_NAME 4
/* Name of caller - string */
167
#define IAX_IE_CALLED_CONTEXT 5
/* Context for number - string */
168
#define IAX_IE_USERNAME 6
/* Username (peer or user) for authentication - string */
169
#define IAX_IE_PASSWORD 7
/* Password for authentication - string */
170
#define IAX_IE_CAPABILITY 8
/* Actual codec capability - unsigned int */
171
#define IAX_IE_FORMAT 9
/* Desired codec format - unsigned int */
172
#define IAX_IE_LANGUAGE 10
/* Desired language - string */
173
#define IAX_IE_VERSION 11
/* Protocol version - short */
174
#define IAX_IE_ADSICPE 12
/* CPE ADSI capability - short */
175
#define IAX_IE_DNID 13
/* Originally dialed DNID - string */
176
#define IAX_IE_AUTHMETHODS 14
/* Authentication method(s) - short */
177
#define IAX_IE_CHALLENGE 15
/* Challenge data for MD5/RSA - string */
178
#define IAX_IE_MD5_RESULT 16
/* MD5 challenge result - string */
179
#define IAX_IE_RSA_RESULT 17
/* RSA challenge result - string */
180
#define IAX_IE_APPARENT_ADDR 18
/* Apparent address of peer - struct sockaddr_in */
181
#define IAX_IE_REFRESH 19
/* When to refresh registration - short */
182
#define IAX_IE_DPSTATUS 20
/* Dialplan status - short */
183
#define IAX_IE_CALLNO 21
/* Call number of peer - short */
184
#define IAX_IE_CAUSE 22
/* Cause - string */
185
#define IAX_IE_IAX_UNKNOWN 23
/* Unknown IAX command - byte */
186
#define IAX_IE_MSGCOUNT 24
/* How many messages waiting - short */
187
#define IAX_IE_AUTOANSWER 25
/* Request auto-answering -- none */
188
#define IAX_IE_MUSICONHOLD 26
/* Request musiconhold with QUELCH -- none or string */
189
#define IAX_IE_TRANSFERID 27
/* Transfer Request Identifier -- int */
190
#define IAX_IE_RDNIS 28
/* Referring DNIS -- string */
191
#define IAX_IE_PROVISIONING 29
/* Provisioning info */
192
#define IAX_IE_AESPROVISIONING 30
/* AES Provisioning info */
193
#define IAX_IE_DATETIME 31
/* Date/Time -- unsigned int */
194
#define IAX_IE_DEVICETYPE 32
/* Device Type -- string */
195
#define IAX_IE_SERVICEIDENT 33
/* Service Identifier -- string */
196
#define IAX_IE_FIRMWAREVER 34
/* Firmware revision -- u16 */
197
#define IAX_IE_FWBLOCKDESC 35
/* Firmware block description -- u32 */
198
#define IAX_IE_FWBLOCKDATA 36
/* Firmware block of data -- raw */
199
#define IAX_IE_PROVVER 37
/* Provisioning Version (u32) */
200
#define IAX_IE_CALLINGPRES 38
/* Calling presentation (u8) */
201
#define IAX_IE_CALLINGTON 39
/* Calling type of number (u8) */
202
#define IAX_IE_CALLINGTNS 40
/* Calling transit network select (u16) */
203
#define IAX_IE_SAMPLINGRATE 41
/* Supported sampling rates (u16) */
204
#define IAX_IE_CAUSECODE 42
/* Hangup cause (u8) */
205
#define IAX_IE_ENCRYPTION 43
/* Encryption format (u16) */
206
#define IAX_IE_ENCKEY 44
/* Encryption key (raw) */
207
#define IAX_IE_CODEC_PREFS 45
/* Codec Negotiation */
208
#define IAX_IE_RR_JITTER 46
/* Received jitter (as in RFC1889) u32 */
209
#define IAX_IE_RR_LOSS 47
/* Received loss (high byte loss pct, low 24 bits loss count, as in rfc1889 */
210
#define IAX_IE_RR_PKTS 48
/* Received frames (total frames received) u32 */
211
#define IAX_IE_RR_DELAY 49
/* Max playout delay for received frames (in ms) u16 */
212
#define IAX_IE_RR_DROPPED 50
/* Dropped frames (presumably by jitterbuf) u32 */
213
#define IAX_IE_RR_OOO 51
/* Frames received Out of Order u32 */
214
#define IAX_IE_VARIABLE 52
/* IAX variable transmission */
215
#define IAX_IE_OSPTOKEN 53
/* OSP Token */
216
#define IAX_IE_CALLTOKEN 54
/* Call Token */
217
#define IAX_IE_CAPABILITY2 55
/* Codec capability */
218
#define IAX_IE_FORMAT2 56
/* Desired codec capability */
219
#define IAX_IE_DATAFORMAT 255
/* Data call format -- iax_dataformat_t */
220
221
/* hangup cause codes */
222
#define AST_CAUSE_UNALLOCATED 1
223
#define AST_CAUSE_NO_ROUTE_TRANSIT_NET 2
224
#define AST_CAUSE_NO_ROUTE_DESTINATION 3
225
#define AST_CAUSE_MISDIALLED_TRUNK_PREFIX 5
226
#define AST_CAUSE_CHANNEL_UNACCEPTABLE 6
227
#define AST_CAUSE_CALL_AWARDED_DELIVERED 7
228
#define AST_CAUSE_PRE_EMPTED 8
229
#define AST_CAUSE_NUMBER_PORTED_NOT_HERE 14
230
#define AST_CAUSE_NORMAL_CLEARING 16
231
#define AST_CAUSE_USER_BUSY 17
232
#define AST_CAUSE_NO_USER_RESPONSE 18
233
#define AST_CAUSE_NO_ANSWER 19
234
#define AST_CAUSE_SUBSCRIBER_ABSENT 20
235
#define AST_CAUSE_CALL_REJECTED 21
236
#define AST_CAUSE_NUMBER_CHANGED 22
237
#define AST_CAUSE_REDIRECTED_TO_NEW_DESTINATION 23
238
#define AST_CAUSE_ANSWERED_ELSEWHERE 26
239
#define AST_CAUSE_DESTINATION_OUT_OF_ORDER 27
240
#define AST_CAUSE_INVALID_NUMBER_FORMAT 28
241
#define AST_CAUSE_FACILITY_REJECTED 29
242
#define AST_CAUSE_RESPONSE_TO_STATUS_ENQUIRY 30
243
#define AST_CAUSE_NORMAL_UNSPECIFIED 31
244
#define AST_CAUSE_NORMAL_CIRCUIT_CONGESTION 34
245
#define AST_CAUSE_NETWORK_OUT_OF_ORDER 38
246
#define AST_CAUSE_NORMAL_TEMPORARY_FAILURE 41
247
#define AST_CAUSE_SWITCH_CONGESTION 42
248
#define AST_CAUSE_ACCESS_INFO_DISCARDED 43
249
#define AST_CAUSE_REQUESTED_CHAN_UNAVAIL 44
250
#define AST_CAUSE_FACILITY_NOT_SUBSCRIBED 50
251
#define AST_CAUSE_OUTGOING_CALL_BARRED 52
252
#define AST_CAUSE_INCOMING_CALL_BARRED 54
253
#define AST_CAUSE_BEARERCAPABILITY_NOTAUTH 57
254
#define AST_CAUSE_BEARERCAPABILITY_NOTAVAIL 58
255
#define AST_CAUSE_BEARERCAPABILITY_NOTIMPL 65
256
#define AST_CAUSE_CHAN_NOT_IMPLEMENTED 66
257
#define AST_CAUSE_FACILITY_NOT_IMPLEMENTED 69
258
#define AST_CAUSE_INVALID_CALL_REFERENCE 81
259
#define AST_CAUSE_INCOMPATIBLE_DESTINATION 88
260
#define AST_CAUSE_INVALID_MSG_UNSPECIFIED 95
261
#define AST_CAUSE_MANDATORY_IE_MISSING 96
262
#define AST_CAUSE_MESSAGE_TYPE_NONEXIST 97
263
#define AST_CAUSE_WRONG_MESSAGE 98
264
#define AST_CAUSE_IE_NONEXIST 99
265
#define AST_CAUSE_INVALID_IE_CONTENTS 100
266
#define AST_CAUSE_WRONG_CALL_STATE 101
267
#define AST_CAUSE_RECOVERY_ON_TIMER_EXPIRE 102
268
#define AST_CAUSE_MANDATORY_IE_LENGTH_ERROR 103
269
#define AST_CAUSE_PROTOCOL_ERROR 111
270
#define AST_CAUSE_INTERWORKING 127
271
272
#define IAX_AUTH_PLAINTEXT (1 << 0)
273
#define IAX_AUTH_MD5 (1 << 1)
274
#define IAX_AUTH_RSA (1 << 2)
275
276
#define IAX_META_TRUNK 1
/* Trunk meta-message */
277
#define IAX_META_VIDEO 2
/* Video frame */
278
279
#define IAX_DPSTATUS_EXISTS (1 << 0)
280
#define IAX_DPSTATUS_CANEXIST (1 << 1)
281
#define IAX_DPSTATUS_NONEXISTANT (1 << 2)
282
#define IAX_DPSTATUS_IGNOREPAT (1 << 14)
283
#define IAX_DPSTATUS_MATCHMORE (1 << 15)
284
285
typedef
enum
{
286
IAX2_MINI_VOICE_PACKET,
287
IAX2_FULL_PACKET,
288
IAX2_MINI_VIDEO_PACKET,
289
IAX2_TRUNK_PACKET
290
} packet_type;
291
292
/* Container for tapping relevant data */
293
typedef
struct
_iax2_info_t
294
{
295
packet_type ptype;
296
uint16_t scallno;
297
uint16_t dcallno;
298
uint8_t ftype;
299
uint8_t csub;
300
uint32_t timestamp;
301
unsigned
payload_len;
302
voip_call_state callState;
303
const
char
*messageName;
304
const
char
*callingParty;
305
const
char
*calledParty;
306
const
uint8_t *payload_data;
307
}
iax2_info_t
;
308
309
/* Container for passing data between dissectors */
310
typedef
struct
_iax2_dissector_info_t
311
{
312
conversation_type ctype;
313
uint32_t circuit_id;
314
}
iax2_dissector_info_t
;
315
316
/* data format for IAX_IE_DATAFORMAT ie */
317
/* suitable for use in iax2.dataformat dissector table */
318
typedef
enum
{
319
AST_DATAFORMAT_NULL,
/* N/A: analogue call etc */
320
AST_DATAFORMAT_V110,
/* ITU-T V.110 rate adaption */
321
AST_DATAFORMAT_H223_H245
/* ITU-T H.223/H.245 */
322
} iax_dataformat_t;
323
324
#endif
/* __PACKET_IAX2_H__ */
conversation.h
tap-voip.h
_iax2_dissector_info_t
Definition
packet-iax2.h:311
_iax2_info_t
Definition
packet-iax2.h:294
Generated by
1.9.8