int calling_ton;
int calling_tns;
int calling_pres;
+ int calling_ani2;
int amaflags;
AST_LIST_HEAD_NOLOCK(, iax2_dpcache) dpentries;
/*! variables inherited from the user definition */
iax_ie_append_byte(&ied, IAX_IE_CALLINGTON, ast_channel_connected(c)->id.number.plan);
iax_ie_append_short(&ied, IAX_IE_CALLINGTNS, ast_channel_dialed(c)->transit_network_select);
+ iax_ie_append_int(&ied, IAX_IE_CALLINGANI2, ast_channel_connected(c)->ani2);
if (n)
iax_ie_append_str(&ied, IAX_IE_CALLING_NAME, n);
ast_channel_redirecting(tmp)->from.number.valid = 1;
ast_channel_redirecting(tmp)->from.number.str = ast_strdup(i->rdnis);
}
+ ast_channel_caller(tmp)->ani2 = i->calling_ani2;
ast_channel_caller(tmp)->id.name.presentation = i->calling_pres;
ast_channel_caller(tmp)->id.number.presentation = i->calling_pres;
ast_channel_caller(tmp)->id.number.plan = i->calling_ton;
iaxs[callno]->calling_tns = ies->calling_tns;
if (ies->calling_pres > -1)
iaxs[callno]->calling_pres = ies->calling_pres;
+ if (ies->calling_ani2 > -1)
+ iaxs[callno]->calling_ani2 = ies->calling_ani2;
if (ies->format)
iaxs[callno]->peerformat = ies->format;
if (ies->adsicpe)
#define IAX_IE_CAPABILITY2 55 /*!< Actual codec capability - u8 version + integer array */
#define IAX_IE_FORMAT2 56 /*!< Desired codec format - u8 version + integer array */
+#define IAX_IE_CALLINGANI2 57 /*!< Calling Originating Line Information (ANI2) digits */
+
#define IAX_MAX_OSPBLOCK_SIZE 254 /*!< Max OSP token block size, 255 bytes - 1 byte OSP token block index */
#define IAX_MAX_OSPBLOCK_NUM 4
#define IAX_MAX_OSPTOKEN_SIZE (IAX_MAX_OSPBLOCK_SIZE * IAX_MAX_OSPBLOCK_NUM)
int calling_ton;
int calling_tns;
int calling_pres;
+ int calling_ani2;
char *called_context;
char *username;
char *password;
{ IAX_IE_CALLINGPRES, "CALLING PRESNTN", dump_byte },
{ IAX_IE_CALLINGTON, "CALLING TYPEOFNUM", dump_byte },
{ IAX_IE_CALLINGTNS, "CALLING TRANSITNET", dump_short },
+ { IAX_IE_CALLINGANI2, "CALLING ANI2", dump_int },
{ IAX_IE_SAMPLINGRATE, "SAMPLINGRATE", dump_samprate },
{ IAX_IE_CAUSECODE, "CAUSE CODE", dump_byte },
{ IAX_IE_ENCRYPTION, "ENCRYPTION", dump_short },
ies->calling_ton = -1;
ies->calling_tns = -1;
ies->calling_pres = -1;
+ ies->calling_ani2 = -1;
ies->samprate = IAX_RATE_8KHZ;
while(datalen >= 2) {
ie = data[0];
errorf(tmp);
}
break;
+ case IAX_IE_CALLINGANI2:
+ if (len == (int)sizeof(unsigned int)) {
+ ies->calling_ani2 = ntohl(get_unaligned_uint32(data + 2));
+ } else {
+ snprintf(tmp, (int)sizeof(tmp), "callingani2 was %d long: %s\n", len, data + 2);
+ errorf(tmp);
+ }
+ break;
case IAX_IE_CALLINGTNS:
if (len != (int)sizeof(unsigned short)) {
snprintf(tmp, (int)sizeof(tmp), "Expecting callingtns to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len);
--- /dev/null
+Subject: chan_iax2
+
+ANI2 (OLI) is now transmitted over IAX2 calls
+as an information element.