[sr-dev] git:master: core: set TOS for IPv6 UDP sockets

Daniel-Constantin Mierla miconda at gmail.com
Wed Mar 27 20:54:19 CET 2013


Module: sip-router
Branch: master
Commit: 084be456bc0fab015cf9964ac85651fa60ea77c9
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=084be456bc0fab015cf9964ac85651fa60ea77c9

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Wed Mar 27 20:53:00 2013 +0100

core: set TOS for IPv6 UDP sockets

- reported by Klaus Feichtinger, FS#179

---

 udp_server.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/udp_server.c b/udp_server.c
index 3889a65..d4efe13 100644
--- a/udp_server.c
+++ b/udp_server.c
@@ -321,11 +321,24 @@ int udp_init(struct socket_info* sock_info)
 	}
 	/* tos */
 	optval = tos;
-	if (setsockopt(sock_info->socket, IPPROTO_IP, IP_TOS, (void*)&optval, 
-			sizeof(optval)) ==-1){
-		LOG(L_WARN, "WARNING: udp_init: setsockopt tos: %s\n", strerror(errno));
-		/* continue since this is not critical */
+	if (addr->s.sa_family==AF_INET){
+		if (setsockopt(sock_info->socket, IPPROTO_IP, IP_TOS, (void*)&optval, 
+				sizeof(optval)) ==-1){
+			LOG(L_WARN, "WARNING: udp_init: setsockopt tos: %s\n",
+					strerror(errno));
+			/* continue since this is not critical */
+		}
+#ifdef USE_IPV6
+	} else if (addr->s.sa_family==AF_INET6){
+		if (setsockopt(sock_info->socket, IPPROTO_IPV6, IPV6_TCLASS,
+					(void*)&optval, sizeof(optval)) ==-1) {
+			LOG(L_WARN, "WARNING: udp_init: setsockopt v6 tos: %s\n",
+					strerror(errno));
+			/* continue since this is not critical */
+		}
+#endif
 	}
+
 #if defined (__OS_linux) && defined(UDP_ERRORS)
 	optval=1;
 	/* enable error receiving on unconnected sockets */




More information about the sr-dev mailing list