[asterisk-commits] qwell: trunk r70961 - in /trunk: configs/ include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 21 18:07:20 CDT 2007


Author: qwell
Date: Thu Jun 21 18:07:20 2007
New Revision: 70961

URL: http://svn.digium.com/view/asterisk?view=rev&rev=70961
Log:
Add manager events for RTCP statistics.

Also adds a new "reporting" permission for manager, since it can be incredibly spammy.
  This permission was discussed on the -dev mailing list some months back.

Issue 8613, patch by johann8384, with some minor changes by me.

Modified:
    trunk/configs/manager.conf.sample
    trunk/include/asterisk/manager.h
    trunk/main/manager.c
    trunk/main/rtp.c

Modified: trunk/configs/manager.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/manager.conf.sample?view=diff&rev=70961&r1=70960&r2=70961
==============================================================================
--- trunk/configs/manager.conf.sample (original)
+++ trunk/configs/manager.conf.sample Thu Jun 21 18:07:20 2007
@@ -71,5 +71,5 @@
 ;displayconnects = yes	; Display on CLI user login/logoff
 ;
 ; Authorization for various classes 
-;read = system,call,log,verbose,command,agent,user,config,dtmf
-;write = system,call,log,verbose,command,agent,user,config,dtmf
+;read = system,call,log,verbose,command,agent,user,config,dtmf,reporting
+;write = system,call,log,verbose,command,agent,user,config,dtmf,reporting

Modified: trunk/include/asterisk/manager.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/manager.h?view=diff&rev=70961&r1=70960&r2=70961
==============================================================================
--- trunk/include/asterisk/manager.h (original)
+++ trunk/include/asterisk/manager.h Thu Jun 21 18:07:20 2007
@@ -61,7 +61,7 @@
 #define EVENT_FLAG_USER                 (1 << 6) /* Ability to read/set user info */
 #define EVENT_FLAG_CONFIG		(1 << 7) /* Ability to modify configurations */
 #define EVENT_FLAG_DTMF  		(1 << 8) /* Ability to read DTMF events */
-
+#define EVENT_FLAG_REPORTING		(1 << 9) /* Reporting events such as rtcp sent */
 /* Export manager structures */
 #define AST_MAX_MANHEADERS 128
 

Modified: trunk/main/manager.c
URL: http://svn.digium.com/view/asterisk/trunk/main/manager.c?view=diff&rev=70961&r1=70960&r2=70961
==============================================================================
--- trunk/main/manager.c (original)
+++ trunk/main/manager.c Thu Jun 21 18:07:20 2007
@@ -317,6 +317,7 @@
 	{ EVENT_FLAG_USER, "user" },
 	{ EVENT_FLAG_CONFIG, "config" },
 	{ EVENT_FLAG_DTMF, "dtmf" },
+	{ EVENT_FLAG_REPORTING, "reporting" },
 	{ -1, "all" },
 	{ 0, "none" },
 };

Modified: trunk/main/rtp.c
URL: http://svn.digium.com/view/asterisk/trunk/main/rtp.c?view=diff&rev=70961&r1=70960&r2=70961
==============================================================================
--- trunk/main/rtp.c (original)
+++ trunk/main/rtp.c Thu Jun 21 18:07:20 2007
@@ -55,6 +55,7 @@
 #include "asterisk/utils.h"
 #include "asterisk/netsock.h"
 #include "asterisk/cli.h"
+#include "asterisk/manager.h"
 #include "asterisk/unaligned.h"
 #include "asterisk/utils.h"
 
@@ -1037,6 +1038,56 @@
 				if (rtt)
 					ast_verbose("  RTT: %lu(sec)\n", (unsigned long) rtt);
 			}
+			if (rtt) {
+				manager_event(EVENT_FLAG_REPORTING, "RTCPReceived", "From %s:%d\r\n"
+								    "PT: %d(%s)\r\n"
+								    "ReceptionReports: %d\r\n"
+								    "SenderSSRC: %u\r\n"
+								    "FractionLost: %ld\r\n"
+								    "PacketsLost: %d\r\n"
+								    "HighestSequence: %ld\r\n"
+								    "SequenceNumberCycles: %ld\r\n"
+								    "IAJitter: %u\r\n"
+								    "LastSR: %lu.%010lu\r\n"
+								    "DLSR: %4.4f(sec)\r\n"
+								    "RTT: %lu(sec)\r\n",
+								    ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port),
+								    pt, (pt == 200) ? "Sender Report" : (pt == 201) ? "Receiver Report" : (pt == 192) ? "H.261 FUR" : "Unknown",
+								    rc,
+								    rtcpheader[i + 1],
+								    (((long) ntohl(rtcpheader[i + 1]) & 0xff000000) >> 24),
+								    rtp->rtcp->reported_lost,
+								    (long) (ntohl(rtcpheader[i + 2]) & 0xffff),
+								    (long) (ntohl(rtcpheader[i + 2]) & 0xffff) >> 16,
+								    rtp->rtcp->reported_jitter,
+								    (unsigned long) ntohl(rtcpheader[i + 4]) >> 16, ((unsigned long) ntohl(rtcpheader[i + 4]) << 16) * 4096,
+								    ntohl(rtcpheader[i + 5])/65536.0,
+								    rtt);
+			} else {
+				manager_event(EVENT_FLAG_REPORTING, "RTCPReceived", "From %s:%d\r\n"
+								    "PT: %d(%s)\r\n"
+								    "ReceptionReports: %d\r\n"
+								    "SenderSSRC: %u\r\n"
+								    "FractionLost: %ld\r\n"
+								    "PacketsLost: %d\r\n"
+								    "HighestSequence: %ld\r\n"
+								    "SequenceNumberCycles: %ld\r\n"
+								    "IAJitter: %u\r\n"
+								    "LastSR: %lu.%010lu\r\n"
+								    "DLSR: %4.4f(sec)\r\n",
+								    ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port),
+								    pt, (pt == 200) ? "Sender Report" : (pt == 201) ? "Receiver Report" : (pt == 192) ? "H.261 FUR" : "Unknown",
+								    rc,
+								    rtcpheader[i + 1],
+								    (((long) ntohl(rtcpheader[i + 1]) & 0xff000000) >> 24),
+								    rtp->rtcp->reported_lost,
+								    (long) (ntohl(rtcpheader[i + 2]) & 0xffff),
+								    (long) (ntohl(rtcpheader[i + 2]) & 0xffff) >> 16,
+								    rtp->rtcp->reported_jitter,
+								    (unsigned long) ntohl(rtcpheader[i + 4]) >> 16,
+								    ((unsigned long) ntohl(rtcpheader[i + 4]) << 16) * 4096,
+								    ntohl(rtcpheader[i + 5])/65536.0);
+			}
 			break;
 		case RTCP_PT_FUR:
 			if (rtcp_debug_test_addr(&sin))
@@ -2200,6 +2251,30 @@
 		ast_verbose("  RTT:		 %f\n", rtp->rtcp->rtt);
 	}
 
+	manager_event(EVENT_FLAG_REPORTING, "RTPReceiverStat", "SSRC: %u\r\n"
+					    "ReceivedPackets: %u\r\n"
+					    "LostPackets: %u\r\n"
+					    "Jitter: %.4f\r\n"
+					    "Transit: %.4f\r\n"
+					    "RRCount: %u\r\n",
+					    rtp->themssrc,
+					    rtp->rxcount,
+					    rtp->rtcp->expected_prior - rtp->rtcp->received_prior,
+					    rtp->rxjitter,
+					    rtp->rxtransit,
+					    rtp->rtcp->rr_count);
+	manager_event(EVENT_FLAG_REPORTING, "RTPSenderStat", "SSRC: %u\r\n"
+					    "SentPackets: %u\r\n"
+					    "LostPackets: %u\r\n"
+					    "Jitter: %u\r\n"
+					    "SRCount: %u\r\n"
+					    "RTT: %f\r\n",
+					    rtp->ssrc,
+					    rtp->txcount,
+					    rtp->rtcp->reported_lost,
+					    rtp->rtcp->reported_jitter,
+					    rtp->rtcp->sr_count,
+					    rtp->rtcp->rtt);
 	if (rtp->smoother)
 		ast_smoother_free(rtp->smoother);
 	if (rtp->ioid)
@@ -2519,6 +2594,29 @@
 		ast_verbose("  Their last SR: %u\n", rtp->rtcp->themrxlsr);
 		ast_verbose("  DLSR: %4.4f (sec)\n\n", (double)(ntohl(rtcpheader[12])/65536.0));
 	}
+	manager_event(EVENT_FLAG_REPORTING, "RTCPSent", "To %s:%d\r\n"
+					    "OurSSRC: %u\r\n"
+					    "SentNTP: %u.%010u\r\n"
+					    "SentRTP: %u\r\n"
+					    "SentPackets: %u\r\n"
+					    "SentOctets: %u\r\n"
+					    "ReportBlock:\r\n"
+					    "FractionLost: %u\r\n"
+					    "CumulativeLoss: %u\r\n"
+					    "IAJitter: %.4f\r\n"
+					    "TheirLastSR: %u\r\n"
+					    "DLSR: %4.4f (sec)\r\n",
+					    ast_inet_ntoa(rtp->rtcp->them.sin_addr), ntohs(rtp->rtcp->them.sin_port),
+					    rtp->ssrc,
+					    (unsigned int)now.tv_sec, (unsigned int)now.tv_usec*4096,
+					    rtp->lastts,
+					    rtp->txcount,
+					    rtp->txoctetcount,
+					    fraction,
+					    lost,
+					    rtp->rxjitter,
+					    rtp->rtcp->themrxlsr,
+					    (double)(ntohl(rtcpheader[12])/65536.0));
 	return res;
 }
 




More information about the asterisk-commits mailing list