Trivial warning fixes
[obnox/wireshark/wip.git] / epan / dissectors / packet-iax2.h
1 /* packet-iax2.h
2  *
3  * Copyright (C) 2003, Digium
4  * Mark Spencer <markster@digium.com>
5  *
6  * $Id$
7  *
8  * Wireshark - Network traffic analyzer
9  * By Gerald Combs <gerald@wireshark.org>
10  * Copyright 1998 Gerald Combs
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version 2
15  * of the License, or (at your option) any later version.
16  * 
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  * 
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25  */
26  
27 #ifndef _PACKET_IAX2_H
28 #define _PACKET_IAX2_H
29
30 /* Max version of IAX protocol we support */
31 #define IAX_PROTO_VERSION       2
32
33 #define IAX_MAX_CALLS           32768
34
35 #define IAX_FLAG_FULL           0x8000
36
37 #define IAX_FLAG_RETRANS        0x8000
38
39 #define IAX_FLAG_SC_LOG         0x80
40
41 #define IAX_MAX_SHIFT           0x1F
42
43 #define IAX_WINDOW              64
44
45 #define AST_FRAME_DTMF_END  1       /* A DTMF end event, subclass is the digit */
46 #define AST_FRAME_VOICE     2       /* Voice data, subclass is AST_FORMAT_* */
47 #define AST_FRAME_VIDEO     3       /* Video frame, maybe?? :) */
48 #define AST_FRAME_CONTROL   4       /* A control frame, subclass is AST_CONTROL_* */
49 #define AST_FRAME_NULL      5       /* An empty, useless frame */
50 #define AST_FRAME_IAX       6       /* Inter Aterisk Exchange private frame type */
51 #define AST_FRAME_TEXT      7       /* Text messages */
52 #define AST_FRAME_IMAGE     8       /* Image Frames */
53 #define AST_FRAME_HTML      9       /* HTML Frames */
54 #define AST_FRAME_CNG      10       /* Confort Noise Generation */
55 #define AST_FRAME_MODEM    11       /* Modem-over-IP datastream */
56 #define AST_FRAME_DTMF_BEGIN 12     /* A DTMF begin event, subclass is the digit */
57
58
59
60 /* Subclass for AST_FRAME_IAX */
61 #define IAX_COMMAND_NEW         1
62 #define IAX_COMMAND_PING        2
63 #define IAX_COMMAND_PONG        3
64 #define IAX_COMMAND_ACK         4
65 #define IAX_COMMAND_HANGUP      5
66 #define IAX_COMMAND_REJECT      6
67 #define IAX_COMMAND_ACCEPT      7
68 #define IAX_COMMAND_AUTHREQ     8
69 #define IAX_COMMAND_AUTHREP     9
70 #define IAX_COMMAND_INVAL       10
71 #define IAX_COMMAND_LAGRQ       11
72 #define IAX_COMMAND_LAGRP       12
73 #define IAX_COMMAND_REGREQ      13      /* Registration request */
74 #define IAX_COMMAND_REGAUTH     14      /* Registration authentication required */
75 #define IAX_COMMAND_REGACK      15      /* Registration accepted */
76 #define IAX_COMMAND_REGREJ      16      /* Registration rejected */
77 #define IAX_COMMAND_REGREL      17      /* Force release of registration */
78 #define IAX_COMMAND_VNAK        18      /* If we receive voice before valid first voice frame, send this */
79 #define IAX_COMMAND_DPREQ       19      /* Request status of a dialplan entry */
80 #define IAX_COMMAND_DPREP       20      /* Request status of a dialplan entry */
81 #define IAX_COMMAND_DIAL        21      /* Request a dial on channel brought up TBD */
82 #define IAX_COMMAND_TXREQ       22      /* Transfer Request */
83 #define IAX_COMMAND_TXCNT       23      /* Transfer Connect */
84 #define IAX_COMMAND_TXACC       24      /* Transfer Accepted */
85 #define IAX_COMMAND_TXREADY     25      /* Transfer ready */
86 #define IAX_COMMAND_TXREL       26      /* Transfer release */
87 #define IAX_COMMAND_TXREJ       27      /* Transfer reject */
88 #define IAX_COMMAND_QUELCH      28      /* Stop audio/video transmission */
89 #define IAX_COMMAND_UNQUELCH    29      /* Resume audio/video transmission */
90 #define IAX_COMMAND_POKE        30      /* Like ping, but does not require an open connection */
91 #define IAX_COMMAND_PAGE        31      /* Paging description */
92 #define IAX_COMMAND_MWI         32      /* Stand-alone message waiting indicator */
93 #define IAX_COMMAND_UNSUPPORT   33      /* Unsupported message received */
94 #define IAX_COMMAND_TRANSFER    34      /* Request remote transfer */
95 #define IAX_COMMAND_PROVISION   35      /* Provision device */
96 #define IAX_COMMAND_FWDOWNL     36      /* Download firmware */
97 #define IAX_COMMAND_FWDATA      37      /* Firmware Data */
98
99 #define IAX_DEFAULT_REG_EXPIRE  60      /* By default require re-registration once per minute */
100
101 #define IAX_LINGER_TIMEOUT      10      /* How long to wait before closing bridged call */
102
103 #define IAX_DEFAULT_PORTNO      4569
104
105 /* IAX Information elements */
106 #define IAX_IE_CALLED_NUMBER            1               /* Number/extension being called - string */
107 #define IAX_IE_CALLING_NUMBER           2               /* Calling number - string */
108 #define IAX_IE_CALLING_ANI              3               /* Calling number ANI for billing  - string */
109 #define IAX_IE_CALLING_NAME             4               /* Name of caller - string */
110 #define IAX_IE_CALLED_CONTEXT           5               /* Context for number - string */
111 #define IAX_IE_USERNAME                 6               /* Username (peer or user) for authentication - string */
112 #define IAX_IE_PASSWORD                 7               /* Password for authentication - string */
113 #define IAX_IE_CAPABILITY               8               /* Actual codec capability - unsigned int */
114 #define IAX_IE_FORMAT                   9               /* Desired codec format - unsigned int */
115 #define IAX_IE_LANGUAGE                 10              /* Desired language - string */
116 #define IAX_IE_VERSION                  11              /* Protocol version - short */
117 #define IAX_IE_ADSICPE                  12              /* CPE ADSI capability - short */
118 #define IAX_IE_DNID                     13              /* Originally dialed DNID - string */
119 #define IAX_IE_AUTHMETHODS              14              /* Authentication method(s) - short */
120 #define IAX_IE_CHALLENGE                15              /* Challenge data for MD5/RSA - string */
121 #define IAX_IE_MD5_RESULT               16              /* MD5 challenge result - string */
122 #define IAX_IE_RSA_RESULT               17              /* RSA challenge result - string */
123 #define IAX_IE_APPARENT_ADDR            18              /* Apparent address of peer - struct sockaddr_in */
124 #define IAX_IE_REFRESH                  19              /* When to refresh registration - short */
125 #define IAX_IE_DPSTATUS                 20              /* Dialplan status - short */
126 #define IAX_IE_CALLNO                   21              /* Call number of peer - short */
127 #define IAX_IE_CAUSE                    22              /* Cause - string */
128 #define IAX_IE_IAX_UNKNOWN              23              /* Unknown IAX command - byte */
129 #define IAX_IE_MSGCOUNT                 24              /* How many messages waiting - short */
130 #define IAX_IE_AUTOANSWER               25              /* Request auto-answering -- none */
131 #define IAX_IE_MUSICONHOLD              26              /* Request musiconhold with QUELCH -- none or string */
132 #define IAX_IE_TRANSFERID               27              /* Transfer Request Identifier -- int */
133 #define IAX_IE_RDNIS                    28              /* Referring DNIS -- string */
134 #define IAX_IE_PROVISIONING             29              /* Provisioning info */
135 #define IAX_IE_AESPROVISIONING          30              /* AES Provisioning info */
136 #define IAX_IE_DATETIME                 31              /* Date/Time -- unsigned int */
137 #define IAX_IE_DEVICETYPE               32              /* Device Type -- string */
138 #define IAX_IE_SERVICEIDENT             33              /* Service Identifier -- string */
139 #define IAX_IE_FIRMWAREVER              34              /* Firmware revision -- u16 */
140 #define IAX_IE_FWBLOCKDESC              35              /* Firmware block description -- u32 */
141 #define IAX_IE_FWBLOCKDATA              36              /* Firmware block of data -- raw */
142 #define IAX_IE_PROVVER                  37              /* Provisioning Version (u32) */
143 #define IAX_IE_CALLINGPRES              38              /* Calling presentation (u8) */
144 #define IAX_IE_CALLINGTON               39              /* Calling type of number (u8) */
145 #define IAX_IE_CALLINGTNS               40              /* Calling transit network select (u16) */
146 #define IAX_IE_SAMPLINGRATE             41              /* Supported sampling rates (u16) */
147 #define IAX_IE_CAUSECODE                42              /* Hangup cause (u8) */
148 #define IAX_IE_ENCRYPTION               43              /* Encryption format (u16) */
149 #define IAX_IE_ENCKEY                   44              /* Encryption key (raw) */
150 #define IAX_IE_CODEC_PREFS              45              /* Codec Negotiation */
151 #define IAX_IE_RR_JITTER                46              /* Received jitter (as in RFC1889) u32 */
152 #define IAX_IE_RR_LOSS                  47              /* Received loss (high byte loss pct, low 24 bits loss count, as in rfc1889 */
153 #define IAX_IE_RR_PKTS                  48              /* Received frames (total frames received) u32 */
154 #define IAX_IE_RR_DELAY                 49              /* Max playout delay for received frames (in ms) u16 */
155 #define IAX_IE_RR_DROPPED               50              /* Dropped frames (presumably by jitterbuf) u32 */
156 #define IAX_IE_RR_OOO                   51              /* Frames received Out of Order u32 */
157 #define IAX_IE_DATAFORMAT               255             /* Data call format -- iax_dataformat_t */
158
159 /* hangup cause codes */
160 #define AST_CAUSE_UNALLOCATED                           1
161 #define AST_CAUSE_NO_ROUTE_TRANSIT_NET                  2
162 #define AST_CAUSE_NO_ROUTE_DESTINATION                  3
163 #define AST_CAUSE_CHANNEL_UNACCEPTABLE                  6
164 #define AST_CAUSE_CALL_AWARDED_DELIVERED                7
165 #define AST_CAUSE_NORMAL_CLEARING                       16
166 #define AST_CAUSE_USER_BUSY                             17
167 #define AST_CAUSE_NO_USER_RESPONSE                      18
168 #define AST_CAUSE_NO_ANSWER                             19
169 #define AST_CAUSE_CALL_REJECTED                         21
170 #define AST_CAUSE_NUMBER_CHANGED                        22
171 #define AST_CAUSE_DESTINATION_OUT_OF_ORDER              27
172 #define AST_CAUSE_INVALID_NUMBER_FORMAT                 28
173 #define AST_CAUSE_FACILITY_REJECTED                     29
174 #define AST_CAUSE_RESPONSE_TO_STATUS_ENQUIRY            30
175 #define AST_CAUSE_NORMAL_UNSPECIFIED                    31
176 #define AST_CAUSE_NORMAL_CIRCUIT_CONGESTION             34
177 #define AST_CAUSE_NETWORK_OUT_OF_ORDER                  38
178 #define AST_CAUSE_NORMAL_TEMPORARY_FAILURE              41
179 #define AST_CAUSE_SWITCH_CONGESTION                     42
180 #define AST_CAUSE_ACCESS_INFO_DISCARDED                 43
181 #define AST_CAUSE_REQUESTED_CHAN_UNAVAIL                44
182 #define AST_CAUSE_PRE_EMPTED                            45
183 #define AST_CAUSE_FACILITY_NOT_SUBSCRIBED               50
184 #define AST_CAUSE_OUTGOING_CALL_BARRED                  52
185 #define AST_CAUSE_INCOMING_CALL_BARRED                  54
186 #define AST_CAUSE_BEARERCAPABILITY_NOTAUTH              57
187 #define AST_CAUSE_BEARERCAPABILITY_NOTAVAIL             58
188 #define AST_CAUSE_BEARERCAPABILITY_NOTIMPL              65
189 #define AST_CAUSE_CHAN_NOT_IMPLEMENTED                  66
190 #define AST_CAUSE_FACILITY_NOT_IMPLEMENTED              69
191 #define AST_CAUSE_INVALID_CALL_REFERENCE                81
192 #define AST_CAUSE_INCOMPATIBLE_DESTINATION              88
193 #define AST_CAUSE_INVALID_MSG_UNSPECIFIED               95
194 #define AST_CAUSE_MANDATORY_IE_MISSING                  96
195 #define AST_CAUSE_MESSAGE_TYPE_NONEXIST                 97
196 #define AST_CAUSE_WRONG_MESSAGE                         98
197 #define AST_CAUSE_IE_NONEXIST                           99
198 #define AST_CAUSE_INVALID_IE_CONTENTS                   100
199 #define AST_CAUSE_WRONG_CALL_STATE                      101
200 #define AST_CAUSE_RECOVERY_ON_TIMER_EXPIRE              102
201 #define AST_CAUSE_MANDATORY_IE_LENGTH_ERROR             103
202 #define AST_CAUSE_PROTOCOL_ERROR                        111
203 #define AST_CAUSE_INTERWORKING                          127
204
205 #define IAX_AUTH_PLAINTEXT                      (1 << 0)
206 #define IAX_AUTH_MD5                            (1 << 1)
207 #define IAX_AUTH_RSA                            (1 << 2)
208
209 #define IAX_META_TRUNK                          1               /* Trunk meta-message */
210 #define IAX_META_VIDEO                          2               /* Video frame */
211
212 #define IAX_DPSTATUS_EXISTS             (1 << 0)
213 #define IAX_DPSTATUS_CANEXIST           (1 << 1)
214 #define IAX_DPSTATUS_NONEXISTANT        (1 << 2)
215 #define IAX_DPSTATUS_IGNOREPAT          (1 << 14)
216 #define IAX_DPSTATUS_MATCHMORE          (1 << 15)
217
218 #endif