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