iax2.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _IAX2_H
00024 #define _IAX2_H
00025
00026
00027 #define IAX_PROTO_VERSION 2
00028
00029
00030
00031
00032
00033
00034 #if defined(LOW_MEMORY)
00035 #define IAX_MAX_CALLS 2049
00036 #else
00037 #define IAX_MAX_CALLS 32768
00038 #endif
00039
00040 #define IAX_FLAG_FULL 0x8000
00041
00042 #define IAX_FLAG_RETRANS 0x8000
00043
00044 #define IAX_FLAG_SC_LOG 0x80
00045
00046 #define IAX_MAX_SHIFT 0x3F
00047
00048 #define IAX_WINDOW 64
00049
00050
00051 enum iax_frame_subclass {
00052 IAX_COMMAND_NEW = 1,
00053 IAX_COMMAND_PING = 2,
00054 IAX_COMMAND_PONG = 3,
00055 IAX_COMMAND_ACK = 4,
00056 IAX_COMMAND_HANGUP = 5,
00057 IAX_COMMAND_REJECT = 6,
00058 IAX_COMMAND_ACCEPT = 7,
00059 IAX_COMMAND_AUTHREQ = 8,
00060 IAX_COMMAND_AUTHREP = 9,
00061 IAX_COMMAND_INVAL = 10,
00062 IAX_COMMAND_LAGRQ = 11,
00063 IAX_COMMAND_LAGRP = 12,
00064
00065 IAX_COMMAND_REGREQ = 13,
00066
00067 IAX_COMMAND_REGAUTH = 14,
00068
00069 IAX_COMMAND_REGACK = 15,
00070
00071 IAX_COMMAND_REGREJ = 16,
00072
00073 IAX_COMMAND_REGREL = 17,
00074
00075 IAX_COMMAND_VNAK = 18,
00076
00077 IAX_COMMAND_DPREQ = 19,
00078
00079 IAX_COMMAND_DPREP = 20,
00080
00081 IAX_COMMAND_DIAL = 21,
00082
00083 IAX_COMMAND_TXREQ = 22,
00084
00085 IAX_COMMAND_TXCNT = 23,
00086
00087 IAX_COMMAND_TXACC = 24,
00088
00089 IAX_COMMAND_TXREADY = 25,
00090
00091 IAX_COMMAND_TXREL = 26,
00092
00093 IAX_COMMAND_TXREJ = 27,
00094
00095 IAX_COMMAND_QUELCH = 28,
00096
00097 IAX_COMMAND_UNQUELCH = 29,
00098
00099 IAX_COMMAND_POKE = 30,
00100
00101 IAX_COMMAND_PAGE = 31,
00102
00103 IAX_COMMAND_MWI = 32,
00104
00105 IAX_COMMAND_UNSUPPORT = 33,
00106
00107 IAX_COMMAND_TRANSFER = 34,
00108
00109 IAX_COMMAND_PROVISION = 35,
00110
00111 IAX_COMMAND_FWDOWNL = 36,
00112
00113 IAX_COMMAND_FWDATA = 37,
00114
00115 IAX_COMMAND_TXMEDIA = 38,
00116
00117 IAX_COMMAND_RTKEY = 39,
00118
00119 IAX_COMMAND_CALLTOKEN = 40,
00120 };
00121
00122
00123 #define IAX_DEFAULT_REG_EXPIRE 60
00124
00125
00126 #define IAX_LINGER_TIMEOUT 10
00127
00128 #define IAX_DEFAULT_PORTNO 4569
00129
00130
00131 #define IAX_IE_CALLED_NUMBER 1
00132 #define IAX_IE_CALLING_NUMBER 2
00133 #define IAX_IE_CALLING_ANI 3
00134 #define IAX_IE_CALLING_NAME 4
00135 #define IAX_IE_CALLED_CONTEXT 5
00136 #define IAX_IE_USERNAME 6
00137 #define IAX_IE_PASSWORD 7
00138 #define IAX_IE_CAPABILITY 8
00139 #define IAX_IE_FORMAT 9
00140 #define IAX_IE_LANGUAGE 10
00141 #define IAX_IE_VERSION 11
00142 #define IAX_IE_ADSICPE 12
00143 #define IAX_IE_DNID 13
00144 #define IAX_IE_AUTHMETHODS 14
00145 #define IAX_IE_CHALLENGE 15
00146 #define IAX_IE_MD5_RESULT 16
00147 #define IAX_IE_RSA_RESULT 17
00148 #define IAX_IE_APPARENT_ADDR 18
00149 #define IAX_IE_REFRESH 19
00150 #define IAX_IE_DPSTATUS 20
00151 #define IAX_IE_CALLNO 21
00152 #define IAX_IE_CAUSE 22
00153 #define IAX_IE_IAX_UNKNOWN 23
00154 #define IAX_IE_MSGCOUNT 24
00155 #define IAX_IE_AUTOANSWER 25
00156 #define IAX_IE_MUSICONHOLD 26
00157 #define IAX_IE_TRANSFERID 27
00158 #define IAX_IE_RDNIS 28
00159 #define IAX_IE_PROVISIONING 29
00160 #define IAX_IE_AESPROVISIONING 30
00161 #define IAX_IE_DATETIME 31
00162 #define IAX_IE_DEVICETYPE 32
00163 #define IAX_IE_SERVICEIDENT 33
00164 #define IAX_IE_FIRMWAREVER 34
00165 #define IAX_IE_FWBLOCKDESC 35
00166 #define IAX_IE_FWBLOCKDATA 36
00167 #define IAX_IE_PROVVER 37
00168 #define IAX_IE_CALLINGPRES 38
00169 #define IAX_IE_CALLINGTON 39
00170 #define IAX_IE_CALLINGTNS 40
00171 #define IAX_IE_SAMPLINGRATE 41
00172 #define IAX_IE_CAUSECODE 42
00173 #define IAX_IE_ENCRYPTION 43
00174 #define IAX_IE_ENCKEY 44
00175 #define IAX_IE_CODEC_PREFS 45
00176
00177 #define IAX_IE_RR_JITTER 46
00178 #define IAX_IE_RR_LOSS 47
00179 #define IAX_IE_RR_PKTS 48
00180 #define IAX_IE_RR_DELAY 49
00181 #define IAX_IE_RR_DROPPED 50
00182 #define IAX_IE_RR_OOO 51
00183 #define IAX_IE_VARIABLE 52
00184 #define IAX_IE_OSPTOKEN 53
00185 #define IAX_IE_CALLTOKEN 54
00186
00187 #define IAX_IE_CAPABILITY2 55
00188 #define IAX_IE_FORMAT2 56
00189
00190 #define IAX_MAX_OSPBLOCK_SIZE 254
00191 #define IAX_MAX_OSPBLOCK_NUM 4
00192 #define IAX_MAX_OSPTOKEN_SIZE (IAX_MAX_OSPBLOCK_SIZE * IAX_MAX_OSPBLOCK_NUM)
00193 #define IAX_MAX_OSPBUFF_SIZE (IAX_MAX_OSPTOKEN_SIZE + 16)
00194
00195 #define IAX_AUTH_PLAINTEXT (1 << 0)
00196 #define IAX_AUTH_MD5 (1 << 1)
00197 #define IAX_AUTH_RSA (1 << 2)
00198
00199 #define IAX_ENCRYPT_AES128 (1 << 0)
00200 #define IAX_ENCRYPT_KEYROTATE (1 << 15)
00201
00202 #define IAX_META_TRUNK 1
00203 #define IAX_META_VIDEO 2
00204
00205 #define IAX_META_TRUNK_SUPERMINI 0
00206 #define IAX_META_TRUNK_MINI 1
00207
00208 #define IAX_RATE_8KHZ (1 << 0)
00209 #define IAX_RATE_11KHZ (1 << 1)
00210 #define IAX_RATE_16KHZ (1 << 2)
00211 #define IAX_RATE_22KHZ (1 << 3)
00212 #define IAX_RATE_44KHZ (1 << 4)
00213 #define IAX_RATE_48KHZ (1 << 5)
00214
00215 #define IAX_DPSTATUS_EXISTS (1 << 0)
00216 #define IAX_DPSTATUS_CANEXIST (1 << 1)
00217 #define IAX_DPSTATUS_NONEXISTENT (1 << 2)
00218 #define IAX_DPSTATUS_IGNOREPAT (1 << 14)
00219 #define IAX_DPSTATUS_MATCHMORE (1 << 15)
00220
00221
00222 struct ast_iax2_full_hdr {
00223 unsigned short scallno;
00224 unsigned short dcallno;
00225 unsigned int ts;
00226 unsigned char oseqno;
00227 unsigned char iseqno;
00228 unsigned char type;
00229 unsigned char csub;
00230 unsigned char iedata[0];
00231 } __attribute__ ((__packed__));
00232
00233
00234 struct ast_iax2_full_enc_hdr {
00235 unsigned short scallno;
00236 unsigned short dcallno;
00237 unsigned char encdata[0];
00238 } __attribute__ ((__packed__));
00239
00240
00241 struct ast_iax2_mini_hdr {
00242 unsigned short callno;
00243 unsigned short ts;
00244
00245
00246 unsigned char data[0];
00247 } __attribute__ ((__packed__));
00248
00249
00250 struct ast_iax2_mini_enc_hdr {
00251 unsigned short callno;
00252 unsigned char encdata[0];
00253 } __attribute__ ((__packed__));
00254
00255 struct ast_iax2_meta_hdr {
00256 unsigned short zeros;
00257 unsigned char metacmd;
00258 unsigned char cmddata;
00259 unsigned char data[0];
00260 } __attribute__ ((__packed__));
00261
00262 struct ast_iax2_video_hdr {
00263 unsigned short zeros;
00264 unsigned short callno;
00265 unsigned short ts;
00266 unsigned char data[0];
00267 } __attribute__ ((__packed__));
00268
00269 struct ast_iax2_meta_trunk_hdr {
00270 unsigned int ts;
00271 unsigned char data[0];
00272 } __attribute__ ((__packed__));
00273
00274 struct ast_iax2_meta_trunk_entry {
00275 unsigned short callno;
00276 unsigned short len;
00277 } __attribute__ ((__packed__));
00278
00279
00280 struct ast_iax2_meta_trunk_mini {
00281 unsigned short len;
00282 struct ast_iax2_mini_hdr mini;
00283 } __attribute__ ((__packed__));
00284
00285 #define IAX_FIRMWARE_MAGIC 0x69617879
00286
00287 struct ast_iax2_firmware_header {
00288 unsigned int magic;
00289 unsigned short version;
00290 unsigned char devname[16];
00291 unsigned int datalen;
00292 unsigned char chksum[16];
00293 unsigned char data[0];
00294 } __attribute__ ((__packed__));
00295 #endif