aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-05-15 00:15:14 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-05-15 00:15:14 +0000
commit2cc3b3d634b365e06b77e9ff95f2e21f6ee49a3c (patch)
tree2b98c0792dcce8a24b94d5c869e88c5776466ee7 /channels/chan_iax2.c
parentdf5d834a6e89dc352d73c6997da337c4eecc5285 (diff)
Add netstats option (bug #4175)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5657 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rwxr-xr-xchannels/chan_iax2.c44
1 files changed, 35 insertions, 9 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 1cf3d5850..68ee7b744 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -603,6 +603,7 @@ static struct iax2_dpcache {
AST_MUTEX_DEFINE_STATIC(dpcache_lock);
static void destroy_peer(struct iax2_peer *peer);
+static int ast_cli_netstats(int fd, int limit_fmt);
static void iax_debug_output(const char *data)
{
@@ -4107,6 +4108,13 @@ static int iax2_show_peers(int fd, int argc, char *argv[])
#undef FORMAT2
}
+static int manager_iax2_show_netstats( struct mansession *s, struct message *m )
+{
+ ast_cli_netstats(s->fd, 0);
+ ast_cli(s->fd, "\r\n");
+ return RESULT_SUCCESS;
+}
+
static int iax2_show_firmware(int fd, int argc, char *argv[])
{
#define FORMAT2 "%-15.15s %-15.15s %-15.15s\n"
@@ -4272,25 +4280,26 @@ static int iax2_show_channels(int fd, int argc, char *argv[])
#undef FORMATB
}
-static int iax2_show_netstats(int fd, int argc, char *argv[])
+static int ast_cli_netstats(int fd, int limit_fmt)
{
int x;
int numchans = 0;
- if (argc != 3)
- return RESULT_SHOWUSAGE;
- ast_cli(fd, " -------- LOCAL --------------------- -------- REMOTE --------------------\n");
- ast_cli(fd, "Channel RTT Jit Del Lost %% Drop OOO Kpkts Jit Del Lost %% Drop OOO Kpkts\n");
for (x=0;x<IAX_MAX_CALLS;x++) {
ast_mutex_lock(&iaxsl[x]);
if (iaxs[x]) {
#ifdef BRIDGE_OPTIMIZATION
- if (iaxs[x]->bridgecallno)
- ast_cli(fd, "%-25.25s <NATIVE BRIDGED>",
+ if (iaxs[x]->bridgecallno) {
+ if (limit_fmt)
+ ast_cli(fd, "%-25.25s <NATIVE BRIDGED>",
iaxs[x]->owner ? iaxs[x]->owner->name : "(None)");
- else
+ else
+ ast_cli(fd, "%s <NATIVE BRIDGED>",
+ iaxs[x]->owner ? iaxs[x]->owner->name : "(None)");
+ } else
#endif
{
int localjitter, localdelay, locallost, locallosspct, localdropped, localooo;
+ char *fmt;
#ifdef NEWJB
jb_info jbinfo;
@@ -4321,7 +4330,11 @@ static int iax2_show_netstats(int fd, int argc, char *argv[])
}
locallost = locallosspct = localooo = -1;
#endif
- ast_cli(fd, "%-25.25s %4d %4d %4d %5d %3d %5d %4d %6d %4d %4d %5d %3d %5d %4d %6d\n",
+ if (limit_fmt)
+ fmt = "%-25.25s %4d %4d %4d %5d %3d %5d %4d %6d %4d %4d %5d %3d %5d %4d %6d\n";
+ else
+ fmt = "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n";
+ ast_cli(fd, fmt,
iaxs[x]->owner ? iaxs[x]->owner->name : "(None)",
iaxs[x]->pingtime,
localjitter,
@@ -4344,6 +4357,17 @@ static int iax2_show_netstats(int fd, int argc, char *argv[])
}
ast_mutex_unlock(&iaxsl[x]);
}
+ return numchans;
+}
+
+static int iax2_show_netstats(int fd, int argc, char *argv[])
+{
+ int numchans = 0;
+ if (argc != 3)
+ return RESULT_SHOWUSAGE;
+ ast_cli(fd, " -------- LOCAL --------------------- -------- REMOTE --------------------\n");
+ ast_cli(fd, "Channel RTT Jit Del Lost %% Drop OOO Kpkts Jit Del Lost %% Drop OOO Kpkts\n");
+ numchans = ast_cli_netstats(fd, 1);
ast_cli(fd, "%d active IAX channel(s)\n", numchans);
return RESULT_SUCCESS;
}
@@ -8906,6 +8930,7 @@ static int __unload_module(void)
if (iaxs[x])
iax2_destroy(x);
ast_manager_unregister( "IAXpeers" );
+ ast_manager_unregister( "IAXnetstats" );
ast_unregister_application(papp);
ast_cli_unregister(&cli_show_users);
ast_cli_unregister(&cli_show_channels);
@@ -9015,6 +9040,7 @@ int load_module(void)
ast_register_application(papp, iax2_prov_app, psyn, pdescrip);
ast_manager_register( "IAXpeers", 0, manager_iax2_show_peers, "List IAX Peers" );
+ ast_manager_register( "IAXnetstats", 0, manager_iax2_show_netstats, "Show IAX Netstats" );
set_config(config, 0);