From a8680cc2d922b6585f38f0a5c904f4bd3c3f4fff Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 3 Aug 2012 17:29:45 +0000 Subject: [PATCH] TOS for ipv6 needs an int to work --- daemon/call.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index ac094b909..d1afaa1d6 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -628,6 +628,7 @@ fail: static int get_port4(struct streamrelay *r, u_int16_t p) { int fd; struct sockaddr_in sin; + struct callmaster *m = r->up->up->call->callmaster; fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) @@ -635,7 +636,8 @@ static int get_port4(struct streamrelay *r, u_int16_t p) { nonblock(fd); reuseaddr(fd); - setsockopt(fd, IPPROTO_IP, IP_TOS, &r->up->up->call->callmaster->tos, sizeof(r->up->up->call->callmaster->tos)); + if (m->tos) + setsockopt(fd, IPPROTO_IP, IP_TOS, &m->tos, sizeof(m->tos)); ZERO(sin); sin.sin_family = AF_INET; @@ -656,6 +658,8 @@ fail: static int get_port6(struct streamrelay *r, u_int16_t p) { int fd; struct sockaddr_in6 sin; + struct callmaster *m = r->up->up->call->callmaster; + int tos; fd = socket(AF_INET6, SOCK_DGRAM, 0); if (fd < 0) @@ -663,8 +667,10 @@ static int get_port6(struct streamrelay *r, u_int16_t p) { nonblock(fd); reuseaddr(fd); + tos = m->tos; #ifdef IPV6_TCLASS - setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, &r->up->up->call->callmaster->tos, sizeof(r->up->up->call->callmaster->tos)); + if (tos) + setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, &tos, sizeof(tos)); #else #warning "Will not set IPv6 traffic class" #endif