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 {
