summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2007-09-10 20:03:51 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2007-09-10 20:03:51 +0000
commitc121ed6bec07701c4245fb9ad1715b84411ad586 (patch)
treee1627dbff0dd3a6b29400cc4af38cd75ef93d04d /channels/chan_iax2.c
parent52679fca70dc5997853486377e92f1f59f2bff86 (diff)
Change the IAXPeers command to have manager-style output, instead of CLI-style output (closes issue #8254)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index fad68591e..76cd655ae 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -4505,7 +4505,7 @@ static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc
char name[256];
int registeredonly=0;
char *term = manager ? "\r\n" : "\n";
-
+ char idtext[256] = "";
switch (argc) {
case 6:
if (!strcasecmp(argv[3], "registered"))
@@ -4540,9 +4540,7 @@ static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc
}
- if (s)
- astman_append(s, FORMAT2, "Name/Username", "Host", " ", "Mask", "Port", " ", "Status", term);
- else
+ if (!s)
ast_cli(fd, FORMAT2, "Name/Username", "Host", " ", "Mask", "Port", " ", "Status", term);
i = ao2_iterator_init(peers, 0);
@@ -4581,12 +4579,21 @@ static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc
peer->encmethods ? "(E)" : " ", status, term);
if (s)
- astman_append(s, FORMAT, name,
- peer->addr.sin_addr.s_addr ? ast_inet_ntoa( peer->addr.sin_addr) : "(Unspecified)",
- ast_test_flag(peer, IAX_DYNAMIC) ? "(D)" : "(S)",
- nm,
- ntohs(peer->addr.sin_port), ast_test_flag(peer, IAX_TRUNK) ? "(T)" : " ",
- peer->encmethods ? "(E)" : " ", status, term);
+ astman_append(s,
+ "Event: PeerEntry\r\n%s"
+ "Channeltype: IAX2\r\n"
+ "ObjectName: %s\r\n"
+ "IPaddress: %s\r\n"
+ "IPport: %d\r\n"
+ "Dynamic: %s\r\n"
+ "Status: %s\r\n\r\n",
+ idtext,
+ name,
+ peer->addr.sin_addr.s_addr ? ast_inet_ntoa(peer->addr.sin_addr) : "-none-",
+ ntohs(peer->addr.sin_port),
+ ast_test_flag(peer, IAX_DYNAMIC) ? "yes" : "no",
+ status);
+
else
ast_cli(fd, FORMAT, name,
peer->addr.sin_addr.s_addr ? ast_inet_ntoa(peer->addr.sin_addr) : "(Unspecified)",
@@ -4597,9 +4604,7 @@ static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc
total_peers++;
}
- if (s)
- astman_append(s,"%d iax2 peers [%d online, %d offline, %d unmonitored]%s", total_peers, online_peers, offline_peers, unmonitored_peers, term);
- else
+ if (!s)
ast_cli(fd,"%d iax2 peers [%d online, %d offline, %d unmonitored]%s", total_peers, online_peers, offline_peers, unmonitored_peers, term);
if (havepattern)
@@ -4748,14 +4753,13 @@ static int iax2_show_firmware(int fd, int argc, char *argv[])
static int manager_iax2_show_peers(struct mansession *s, const struct message *m)
{
char *a[] = { "iax2", "show", "users" };
- int ret;
const char *id = astman_get_header(m,"ActionID");
+ char idtext[256] = "";
if (!ast_strlen_zero(id))
- astman_append(s, "ActionID: %s\r\n",id);
- ret = __iax2_show_peers(1, -1, s, 3, a );
- astman_append(s, "\r\n\r\n" );
- return ret;
+ snprintf(idtext, sizeof(idtext), "ActionID: %s\r\n", id);
+ astman_send_ack(s, m, "Peer status list will follow");
+ return __iax2_show_peers(1, -1, s, 3, a );
} /* /JDG */
static char *regstate2str(int regstate)