Repository: trafficserver Updated Branches: refs/heads/master 5b29777eb -> d37199709
TS-3349: Add DscpSet API's Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d3719970 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d3719970 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d3719970 Branch: refs/heads/master Commit: d3719970905887d7781dce7d883ae11cbf3fcccc Parents: 5b29777 Author: Phil Sorber <[email protected]> Authored: Thu Jan 29 15:28:18 2015 -0700 Committer: Phil Sorber <[email protected]> Committed: Thu Jan 29 18:51:43 2015 -0700 ---------------------------------------------------------------------- CHANGES | 2 + .../api/TSHttpTxnClientPacketDscpSet.en.rst | 45 +++++++++++++++++++ .../api/TSHttpTxnServerPacketDscpSet.en.rst | 47 ++++++++++++++++++++ plugins/header_rewrite/operators.cc | 2 +- proxy/InkAPI.cc | 42 +++++++++++++++++ proxy/api/ts/ts.h | 18 ++++++++ 6 files changed, 155 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index e5cf274..c45c471 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 5.3.0 + *) [TS-3349] Add DscpSet API's. + *) [TS-3343] outbound transparent can end up with Connection: keep-alive headers on failures *) [TS-3344] 401 responses invalidate cache entry even if TSHttpTxnServerRespIgnore() used http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/doc/reference/api/TSHttpTxnClientPacketDscpSet.en.rst ---------------------------------------------------------------------- diff --git a/doc/reference/api/TSHttpTxnClientPacketDscpSet.en.rst b/doc/reference/api/TSHttpTxnClientPacketDscpSet.en.rst new file mode 100644 index 0000000..eb3368c --- /dev/null +++ b/doc/reference/api/TSHttpTxnClientPacketDscpSet.en.rst @@ -0,0 +1,45 @@ +.. Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to you under the Apache License, Version + 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + +TSHttpTxnClientPacketDscpSet +============================ + +Change packet DSCP for the client side connection. + + +Synopsis +-------- + +`#include <ts/ts.h>` + +.. c:function:: TSReturnCode TSHttpTxnClientPacketDscpSet(TSHttpTxn txnp, int dscp) + + +Description +----------- + +.. note:: + + The change takes effect immediately + + +See Also +-------- + +`Traffic Shaping`_ + +.. _Traffic Shaping: + https://cwiki.apache.org/confluence/display/TS/Traffic+Shaping http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/doc/reference/api/TSHttpTxnServerPacketDscpSet.en.rst ---------------------------------------------------------------------- diff --git a/doc/reference/api/TSHttpTxnServerPacketDscpSet.en.rst b/doc/reference/api/TSHttpTxnServerPacketDscpSet.en.rst new file mode 100644 index 0000000..a3f19fe --- /dev/null +++ b/doc/reference/api/TSHttpTxnServerPacketDscpSet.en.rst @@ -0,0 +1,47 @@ +.. Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to you under the Apache License, Version + 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + +TSHttpTxnServerPacketDscpSet +============================ + +Change packet DSCP for the server side connection. + + +Synopsis +-------- + +`#include <ts/ts.h>` + +.. c:function:: TSReturnCode TSHttpTxnServerPacketDscpSet(TSHttpTxn txnp, int dscp) + + +Description +----------- + +.. note:: + + The change takes effect immediately, if no OS connection has been + made, then this sets the mark that will be used IF an OS connection + is established + + +See Also +-------- + +`Traffic Shaping`_ + +.. _Traffic Shaping: + https://cwiki.apache.org/confluence/display/TS/Traffic+Shaping http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/plugins/header_rewrite/operators.cc ---------------------------------------------------------------------- diff --git a/plugins/header_rewrite/operators.cc b/plugins/header_rewrite/operators.cc index 9b34edf..22aceee 100644 --- a/plugins/header_rewrite/operators.cc +++ b/plugins/header_rewrite/operators.cc @@ -570,6 +570,6 @@ void OperatorSetConnDSCP::exec(const Resources& res) const { if (res.txnp) { - TSHttpTxnClientPacketTosSet(res.txnp, _ds_value.get_int_value() << 2); + TSHttpTxnClientPacketDscpSet(res.txnp, _ds_value.get_int_value()); } } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/proxy/InkAPI.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc index d906a80..efd6572 100644 --- a/proxy/InkAPI.cc +++ b/proxy/InkAPI.cc @@ -5433,6 +5433,48 @@ TSHttpTxnServerPacketTosSet(TSHttpTxn txnp, int tos) return TS_SUCCESS; } +TSReturnCode +TSHttpTxnClientPacketDscpSet(TSHttpTxn txnp, int dscp) +{ + sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); + HttpSM *sm = (HttpSM *) txnp; + if (NULL == sm->ua_session) { + return TS_ERROR; + } + + NetVConnection *vc = sm->ua_session->get_netvc(); + if (NULL == vc) { + return TS_ERROR; + } + + vc->options.packet_tos = (uint32_t)dscp << 2; + vc->apply_options(); + return TS_SUCCESS; +} + +TSReturnCode +TSHttpTxnServerPacketDscpSet(TSHttpTxn txnp, int dscp) +{ + sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); + HttpSM *sm = (HttpSM *) txnp; + + // change the tos on an active server session + if (NULL != sm->ua_session) { + HttpServerSession *ssn = sm->ua_session->get_server_session(); + if (NULL != ssn) { + NetVConnection *vc = ssn->get_netvc(); + if (vc != NULL) { + vc->options.packet_tos = (uint32_t)dscp << 2; + vc->apply_options(); + } + } + } + + // update the transactions mark config for future connections + TSHttpTxnConfigIntSet(txnp, TS_CONFIG_NET_SOCK_PACKET_TOS_OUT, dscp << 2); + return TS_SUCCESS; +} + // Set the body, or, if you provide a NULL buffer, clear the body message void TSHttpTxnErrorBodySet(TSHttpTxn txnp, char *buf, size_t buflength, char *mimetype) http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3719970/proxy/api/ts/ts.h ---------------------------------------------------------------------- diff --git a/proxy/api/ts/ts.h b/proxy/api/ts/ts.h index b5b0abe..8093c3a 100644 --- a/proxy/api/ts/ts.h +++ b/proxy/api/ts/ts.h @@ -1412,6 +1412,24 @@ extern "C" */ tsapi TSReturnCode TSHttpTxnServerPacketTosSet(TSHttpTxn txnp, int tos); + /** Change packet DSCP for the client side connection + * + @note The change takes effect immediately + + @return TS_SUCCESS if the client connection was modified + */ + tsapi TSReturnCode TSHttpTxnClientPacketDscpSet(TSHttpTxn txnp, int dscp); + + /** Change packet DSCP for the server side connection + * + + @note The change takes effect immediately, if no OS connection has been + made, then this sets the mark that will be used IF an OS connection + is established + + @return TS_SUCCESS if the (future?) server connection was modified + */ + tsapi TSReturnCode TSHttpTxnServerPacketDscpSet(TSHttpTxn txnp, int dscp); /** Sets an error type body to a transaction. Note that both string arguments
