Module: sip-router Branch: master Commit: 5886fa623776eae7a33ff8777e68d29a170f0fac URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5886fa62...
Author: Olle E. Johansson oej@edvina.net Committer: Olle E. Johansson oej@edvina.net Date: Sun Apr 7 10:17:16 2013 +0200
lib/kcore Make sure that the bytes waiting stats also report IPv6 sockets
---
lib/kcore/statistics.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/lib/kcore/statistics.c b/lib/kcore/statistics.c index 22fed2d..ec5c691 100644 --- a/lib/kcore/statistics.c +++ b/lib/kcore/statistics.c @@ -430,16 +430,27 @@ int get_total_bytes_waiting(void) int *UDPList = NULL; int *TCPList = NULL; int *TLSList = NULL; + int *UDP6List = NULL; + int *TCP6List = NULL; + int *TLS6List = NULL;
int numUDPSockets = 0; int numTCPSockets = 0; int numTLSSockets = 0; + int numUDP6Sockets = 0; + int numTCP6Sockets = 0; + int numTLS6Sockets = 0;
/* Extract out the IP address address for UDP, TCP, and TLS, keeping * track of the number of IP addresses from each transport */ numUDPSockets = get_socket_list_from_proto(&UDPList, PROTO_UDP); numTCPSockets = get_socket_list_from_proto(&TCPList, PROTO_TCP); numTLSSockets = get_socket_list_from_proto(&TLSList, PROTO_TLS); + + numUDP6Sockets = get_socket_list_from_proto_and_family(&UDP6List, PROTO_UDP, AF_INET6); + numTCP6Sockets = get_socket_list_from_proto_and_family(&TCP6List, PROTO_TCP, AF_INET6); + numTLS6Sockets = get_socket_list_from_proto_and_family(&TLS6List, PROTO_TLS, AF_INET6); + /* Deliberately not looking at PROTO_WS or PROTO_WSS here as they are just upgraded TCP/TLS connections */
@@ -449,22 +460,38 @@ int get_total_bytes_waiting(void) bytesWaiting += get_used_waiting_queue(1, TCPList, numTCPSockets); bytesWaiting += get_used_waiting_queue(1, TLSList, numTLSSockets);
+ bytesWaiting += get_used_waiting_queue(0, UDP6List, numUDP6Sockets); + bytesWaiting += get_used_waiting_queue(1, TCP6List, numTCP6Sockets); + bytesWaiting += get_used_waiting_queue(1, TLS6List, numTLS6Sockets); + /* get_socket_list_from_proto() allocated a chunk of memory, so we need * to free it. */ if (numUDPSockets > 0) { pkg_free(UDPList); } + if (numUDP6Sockets > 0) + { + pkg_free(UDP6List); + }
if (numTCPSockets > 0) { pkg_free(TCPList); } + if (numTCP6Sockets > 0) + { + pkg_free(TCP6List); + }
if (numTLSSockets > 0) { pkg_free(TLSList); } + if (numTLS6Sockets > 0) + { + pkg_free(TLS6List); + }
return bytesWaiting; }