aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-16 22:40:48 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-16 22:40:48 +0000
commitb779a9a4ead79d0187d2b14accd5afda22d912ec (patch)
tree1e66b84faafc8582effdfdfe7bc2f55633b51225
parent911368c21317d00b7095d1dcc91291dac6a446c1 (diff)
Improve peer stats (bug #2635)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4024 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_sip.c47
1 files changed, 27 insertions, 20 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index faca91f32..5e37ce4ce 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5611,27 +5611,34 @@ static int sip_show_peers(int fd, int argc, char *argv[])
}
strncpy(status, "UNKNOWN", sizeof(status) - 1);
}
- } else
+ } else {
strncpy(status, "Unmonitored", sizeof(status) - 1);
- snprintf(srch, sizeof(srch), FORMAT, name,
- peer->addr.sin_addr.s_addr ? ast_inet_ntoa(iabuf, sizeof(iabuf), peer->addr.sin_addr) : "(Unspecified)",
- peer->dynamic ? " D " : " ", /* Dynamic or not? */
- (peer->nat & SIP_NAT_ROUTE) ? " N " : " ", /* NAT=yes? */
- peer->ha ? " A " : " ", /* permit/deny */
- nm,
- ntohs(peer->addr.sin_port), status);
-
- if (argc == 5) {
- if (!strcasecmp(argv[3],"include") && strstr(srch,argv[4])) {
- print_line = -1;
- } else if (!strcasecmp(argv[3],"exclude") && !strstr(srch,argv[4])) {
- print_line = 1;
- } else if (!strcasecmp(argv[3],"begin") && !strncasecmp(srch,argv[4],strlen(argv[4]))) {
- print_line = -1;
- } else {
- print_line = 0;
- }
+ /* Checking if port is 0 */
+ if ( ntohs(peer->addr.sin_port) == 0 ) {
+ peers_offline++;
+ } else {
+ peers_online++;
}
+ }
+
+ snprintf(srch, sizeof(srch), FORMAT, name,
+ peer->addr.sin_addr.s_addr ? ast_inet_ntoa(iabuf, sizeof(iabuf), peer->addr.sin_addr) : "(Unspecified)",
+ peer->dynamic ? " D " : " ", /* Dynamic or not? */
+ (peer->nat & SIP_NAT_ROUTE) ? " N " : " ", /* NAT=yes? */
+ peer->ha ? " A " : " ", /* permit/deny */
+ nm, ntohs(peer->addr.sin_port), status);
+
+ if (argc == 5) {
+ if (!strcasecmp(argv[3],"include") && strstr(srch,argv[4])) {
+ print_line = -1;
+ } else if (!strcasecmp(argv[3],"exclude") && !strstr(srch,argv[4])) {
+ print_line = 1;
+ } else if (!strcasecmp(argv[3],"begin") && !strncasecmp(srch,argv[4],strlen(argv[4]))) {
+ print_line = -1;
+ } else {
+ print_line = 0;
+ }
+ }
if (print_line) {
ast_cli(fd, FORMAT, name,
@@ -5644,7 +5651,7 @@ static int sip_show_peers(int fd, int argc, char *argv[])
}
total_peers++;
}
- ast_cli(fd,"%d sip peers loaded [%d onlines , %d offlines]\n",total_peers,peers_online,peers_offline);
+ ast_cli(fd,"%d sip peers loaded [%d online , %d offline]\n",total_peers,peers_online,peers_offline);
ast_mutex_unlock(&peerl.lock);
return RESULT_SUCCESS;
#undef FORMAT