From bcc020eefba14f2650b0e9dd1ccad798b17f241f Mon Sep 17 00:00:00 2001
From: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon, 24 Feb 2014 11:25:43 -0500
Subject: [PATCH] fix IPv4 TOS if IPv6 is enabled

---
 daemon/call.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/daemon/call.c b/daemon/call.c
index 27d730c..059d200 100644
--- a/daemon/call.c
+++ b/daemon/call.c
@@ -1176,14 +1176,16 @@ static int get_port6(struct udp_fd *r, u_int16_t p, struct callmaster *m) {
 
 	nonblock(fd);
 	reuseaddr(fd);
-	tos = m->conf.tos;
+	ipv6only(fd, 0);
+	if (m->conf.tos)
+		setsockopt(fd, IPPROTO_IP, IP_TOS, &m->conf.tos, sizeof(m->conf.tos));
 #ifdef IPV6_TCLASS
+	tos = m->conf.tos;
 	if (tos)
 		setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, &tos, sizeof(tos));
 #else
 #warning "Will not set IPv6 traffic class"
 #endif
-	ipv6only(fd, 0);
 
 	ZERO(sin);
 	sin.sin6_family = AF_INET6;