Repository: trafficserver
Updated Branches:
  refs/heads/master 2f6e3269f -> 6ef00b89a


TS-3333: Enable TOS settings on IPv6 connections


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/6ef00b89
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/6ef00b89
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/6ef00b89

Branch: refs/heads/master
Commit: 6ef00b89a65ed876e0abf07ec0fd32d0fac7eda2
Parents: 138269e
Author: Phil Sorber <[email protected]>
Authored: Tue Jan 27 16:55:41 2015 -0700
Committer: Phil Sorber <[email protected]>
Committed: Tue Jan 27 16:56:09 2015 -0700

----------------------------------------------------------------------
 CHANGES                      |  2 ++
 iocore/net/UnixConnection.cc |  6 +++++-
 iocore/net/UnixNetAccept.cc  | 12 ++++++++++--
 3 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6ef00b89/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 284e440..be56328 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.3.0
 
+  *) [TS-3333] Enable TOS settings on IPv6 connections.
+
   *) [TS-3332] Allow set-conn-dscp to work in remap.
 
   *) [TS-3330] Several broken stats

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6ef00b89/iocore/net/UnixConnection.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixConnection.cc b/iocore/net/UnixConnection.cc
index ebe2791..420add1 100644
--- a/iocore/net/UnixConnection.cc
+++ b/iocore/net/UnixConnection.cc
@@ -386,7 +386,11 @@ Connection::apply_options(NetVCOptions const& opt)
 
 #if TS_HAS_IP_TOS
   uint32_t tos = opt.packet_tos;
-  safe_setsockopt(fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char *>(&tos), 
sizeof(uint32_t));
+  if (addr.isIp4()) {
+    safe_setsockopt(fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char *>(&tos), 
sizeof(uint32_t));
+  } else if (addr.isIp6()) {
+    safe_setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, reinterpret_cast<char 
*>(&tos), sizeof(uint32_t));
+  }
 #endif
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6ef00b89/iocore/net/UnixNetAccept.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixNetAccept.cc b/iocore/net/UnixNetAccept.cc
index 5ba79fc..0092c1a 100644
--- a/iocore/net/UnixNetAccept.cc
+++ b/iocore/net/UnixNetAccept.cc
@@ -283,7 +283,11 @@ NetAccept::do_blocking_accept(EThread * t)
 
 #if TS_HAS_IP_TOS
       if (packet_tos != 0) {
-        safe_setsockopt(con.fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char 
*>(&packet_tos), sizeof(uint32_t));
+        if (con.addr.isIp4()) {
+          safe_setsockopt(con.fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char 
*>(&packet_tos), sizeof(uint32_t));
+        } else if (con.addr.isIp6()) {
+          safe_setsockopt(con.fd, IPPROTO_IPV6, IPV6_TCLASS, 
reinterpret_cast<char *>(&packet_tos), sizeof(uint32_t));
+        }
       }
 #endif
 
@@ -420,7 +424,11 @@ NetAccept::acceptFastEvent(int event, void *ep)
 
 #if TS_HAS_IP_TOS
       if (packet_tos != 0) {
-        safe_setsockopt(fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char 
*>(&packet_tos), sizeof(uint32_t));
+        if (con.addr.isIp4()) {
+          safe_setsockopt(con.fd, IPPROTO_IP, IP_TOS, reinterpret_cast<char 
*>(&packet_tos), sizeof(uint32_t));
+        } else if (con.addr.isIp6()) {
+          safe_setsockopt(con.fd, IPPROTO_IPV6, IPV6_TCLASS, 
reinterpret_cast<char *>(&packet_tos), sizeof(uint32_t));
+        }
       }
 #endif
       do {

Reply via email to