dect
/
asterisk
Archived
13
0
Fork 0

Add some more IAX2-specific information about the channel to the CHANNEL()

function and begin the transition from SIPCHANINFO() to just using CHANNEL().
(closes issue #12856)
 Reported by: mostyn
 Patches: 
       iax_and_sip_channel_info.patch uploaded by mostyn (license 398)
       (with some additional cleanup by me)


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@122802 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
tilghman 2008-06-15 15:21:16 +00:00
parent 3fe169d130
commit 86f9034a9f
4 changed files with 44 additions and 3 deletions

View File

@ -181,6 +181,9 @@ Channel Drivers:
sip:defaultuser@defaultip
The "username" setting still work, but is deprecated and will not work in
the next version of Asterisk.
* SIP: All of the functionality in SIPCHANINFO() has been implemented in CHANNEL(),
and you should start using that function instead for retrieving information about
the channel in a technology-agnostic way.
* chan_local.c: the comma delimiter inside the channel name has been changed to a
semicolon, in order to make the Local channel driver compatible with the comma

View File

@ -11749,10 +11749,15 @@ static int acf_channel_read(struct ast_channel *chan, const char *funcname, char
return -1;
}
if (!strcasecmp(args, "osptoken"))
if (!strcasecmp(args, "osptoken")) {
ast_copy_string(buf, pvt->osptoken, buflen);
else
} else if (!strcasecmp(args, "peerip")) {
ast_copy_string(buf, pvt->addr.sin_addr.s_addr ? ast_inet_ntoa(pvt->addr.sin_addr) : "", buflen);
} else if (!strcasecmp(args, "peername")) {
ast_copy_string(buf, pvt->username, buflen);
} else {
res = -1;
}
ast_mutex_unlock(&iaxsl[callno]);

View File

@ -15510,6 +15510,7 @@ struct ast_custom_function sippeer_function = {
static int function_sipchaninfo_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
{
struct sip_pvt *p;
static int deprecated = 0;
*buf = 0;
@ -15525,6 +15526,11 @@ static int function_sipchaninfo_read(struct ast_channel *chan, const char *cmd,
return -1;
}
if (deprecated++ % 20 == 0) {
/* Deprecated in 1.6.1 */
ast_log(LOG_WARNING, "SIPCHANINFO() is deprecated. Please transition to using CHANNEL().\n");
}
p = chan->tech_pvt;
/* If there is no private structure, this channel is no longer alive */
@ -18524,7 +18530,25 @@ static int acf_channel_read(struct ast_channel *chan, const char *funcname, char
memset(buf, 0, buflen);
if (!strcasecmp(args.param, "rtpdest")) {
if (!strcasecmp(args.param, "peerip")) {
ast_copy_string(buf, p->sa.sin_addr.s_addr ? ast_inet_ntoa(p->sa.sin_addr) : "", buflen);
} else if (!strcasecmp(args.param, "recvip")) {
ast_copy_string(buf, p->recv.sin_addr.s_addr ? ast_inet_ntoa(p->recv.sin_addr) : "", buflen);
} else if (!strcasecmp(args.param, "from")) {
ast_copy_string(buf, p->from, buflen);
} else if (!strcasecmp(args.param, "uri")) {
ast_copy_string(buf, p->uri, buflen);
} else if (!strcasecmp(args.param, "useragent")) {
ast_copy_string(buf, p->useragent, buflen);
} else if (!strcasecmp(args.param, "peername")) {
ast_copy_string(buf, p->peername, buflen);
} else if (!strcasecmp(args.param, "t38passthrough")) {
if (p->t38.state == T38_DISABLED) {
ast_copy_string(buf, "0", sizeof("0"));
} else { /* T38 is offered or enabled in this call */
ast_copy_string(buf, "1", sizeof("1"));
}
} else if (!strcasecmp(args.param, "rtpdest")) {
struct sockaddr_in sin;
if (ast_strlen_zero(args.type))

View File

@ -190,6 +190,13 @@ static struct ast_custom_function channel_function = {
#endif
"\n"
"chan_sip provides the following additional options:\n"
"R/O peerip Get the IP address of the peer\n"
"R/O recvip Get the source IP address of the peer\n"
"R/O from Get the URI from the From: header\n"
"R/O uri Get the URI from the Contact: header\n"
"R/O useragent Get the useragent\n"
"R/O peername Get the name of the peer\n"
"R/O t38passthrough 1 if T38 is offered or enabled in this channel, otherwise 0\n"
"R/O rtpqos Get QOS information about the RTP stream\n"
" This option takes two additional arguments:\n"
" Argument 1:\n"
@ -227,6 +234,8 @@ static struct ast_custom_function channel_function = {
"\n"
"chan_iax2 provides the following additional options:\n"
"R/W osptoken Get or set the OSP token information for a call\n"
"R/O peerip Get the peer's ip address\n"
"R/O peername Get the peer's username\n"
"\n"
"Additional items may be available from the channel driver providing\n"
"the channel; see its documentation for details.\n"