Allow for obtaining IAX2 call peer (endpoint) IP address with IAXPEER(CURRENTCHAN...
authorJim Dixon <telesistant@hotmail.com>
Wed, 19 Oct 2005 18:19:22 +0000 (18:19 +0000)
committerJim Dixon <telesistant@hotmail.com>
Wed, 19 Oct 2005 18:19:22 +0000 (18:19 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6833 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_iax2.c

index 6bd6ea5..4e50b31 100755 (executable)
@@ -9133,6 +9133,13 @@ static char *function_iaxpeer(struct ast_channel *chan, char *cmd, char *data, c
                return ret;
        }
 
+       /* if our channel, return the IP address of the endpoint of current channel */
+       if (!strcmp(peername,"CURRENTCHANNEL")) {
+               unsigned short callno = PTR_TO_CALLNO(chan->tech_pvt);
+               ast_copy_string(buf, iaxs[callno]->addr.sin_addr.s_addr ? ast_inet_ntoa(iabuf, sizeof(iabuf), iaxs[callno]->addr.sin_addr) : "", len);
+               return buf;
+       }
+
        if ((colname = strchr(peername, ':'))) {
                *colname = '\0';
                colname++;
@@ -9181,9 +9188,9 @@ static char *function_iaxpeer(struct ast_channel *chan, char *cmd, char *data, c
 struct ast_custom_function iaxpeer_function = {
     .name = "IAXPEER",
     .synopsis = "Gets IAX peer information",
-    .syntax = "IAXPEER(<peername>[:item])",
+    .syntax = "IAXPEER(<peername|CURRENTCHANNEL>[:item])",
     .read = function_iaxpeer,
-       .desc = "Valid items are:\n"
+       .desc = "If peername specified, valid items are:\n"
        "- ip (default)          The IP address.\n"
        "- mailbox               The configured mailbox.\n"
        "- context               The configured context.\n"
@@ -9194,6 +9201,8 @@ struct ast_custom_function iaxpeer_function = {
        "- codecs                The configured codecs.\n"
        "- codec[x]              Preferred codec index number 'x' (beginning with zero).\n"
        "\n"
+       "If CURRENTCHANNEL specified, returns IP address of current channel\n"
+       "\n"
 };