X-Git-Url: http://sjero.net/git/?p=iperf;a=blobdiff_plain;f=src%2FPerfSocket.cpp;fp=src%2FPerfSocket.cpp;h=63e97ff9480b4405fe98f770498a3a2c0e67dcce;hp=04a68b9583ced9bb44de5a7f070fdebbcd76c660;hb=4a61594d8e95e2d9662816ae595f8257b69012eb;hpb=45b167d420c535f754203fbce29a893b0ca0aae2 diff --git a/src/PerfSocket.cpp b/src/PerfSocket.cpp index 04a68b9..63e97ff 100644 --- a/src/PerfSocket.cpp +++ b/src/PerfSocket.cpp @@ -99,14 +99,22 @@ void SetSocketOptions( thread_Settings *inSettings ) } - // set IP TOS (type-of-service) field -#ifdef IP_TOS + // Set the DiffServ codepoint for IPv4 TOS or IPv6 traffic class if ( inSettings->mTOS > 0 ) { val = inSettings->mTOS; - rc = setsockopt( inSettings->mSock, IPPROTO_IP, IP_TOS, &val, len ); - WARN_errno( rc == SOCKET_ERROR, "setsockopt IP_TOS" ); - } +#if defined(IP_TOS) + if ( inSettings->mSockAF == AF_INET ) { + rc = setsockopt( inSettings->mSock, IPPROTO_IP, IP_TOS, &val, len ); + WARN_errno( rc == SOCKET_ERROR, "setsockopt IP_TOS" ); + } #endif +#if defined(IPV6_TCLASS) + if ( inSettings->mSockAF == AF_INET6 ) { + rc = setsockopt( inSettings->mSock, IPPROTO_IPV6, IPV6_TCLASS, &val, len ); + WARN_errno( rc == SOCKET_ERROR, "setsockopt IPV6_TCLASS" ); + } +#endif + } // TCP-specific options