trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zw...@apache.org
Subject [1/2] trafficserver git commit: TS-3448 Add a new Mod operator to ControlMatcher, named "internal"
Date Fri, 03 Apr 2015 14:24:44 GMT
Repository: trafficserver
Updated Branches:
  refs/heads/master 8b5f44792 -> 6b6e7450b


TS-3448 Add a new Mod operator to ControlMatcher, named "internal"


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

Branch: refs/heads/master
Commit: 99073afd54c1bf6a492c5f2121f0664d117c470e
Parents: 8b5f447
Author: Leif Hedstrom <zwoop@apache.org>
Authored: Tue Mar 17 15:36:50 2015 -0600
Committer: Leif Hedstrom <zwoop@apache.org>
Committed: Fri Apr 3 08:09:20 2015 -0600

----------------------------------------------------------------------
 CHANGES                                         |  2 +
 doc/reference/configuration/cache.config.en.rst |  7 +++
 .../configuration/parent.config.en.rst          |  7 +++
 proxy/ControlBase.cc                            | 52 ++++++++++++++++++++
 proxy/ControlBase.h                             |  1 +
 proxy/ControlMatcher.h                          |  3 +-
 proxy/config/cache.config.default               |  1 +
 proxy/config/parent.config.default              |  1 +
 proxy/http/HttpTransact.cc                      |  1 +
 9 files changed, 74 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 7257057..d79a2b5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 6.0.0
 
+  *) [TS-3448] Add a new Mod operator to ControlMatcher, named "internal".
+
   *) [TS-3483] Fix regex remap to work with CONNECT.
 
   *) [TS-3479] Remove verbose Warning() from HTTP/2 connections.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/doc/reference/configuration/cache.config.en.rst
----------------------------------------------------------------------
diff --git a/doc/reference/configuration/cache.config.en.rst b/doc/reference/configuration/cache.config.en.rst
index f0c1eab..397fb2b 100644
--- a/doc/reference/configuration/cache.config.en.rst
+++ b/doc/reference/configuration/cache.config.en.rst
@@ -111,6 +111,13 @@ following list shows possible secondary specifiers with allowed values.
 ``src_ip``
    A client IP address.
 
+.. _cache-config-format-internal:
+
+``internal``
+    A boolean value, ``true`` or ``false``, specifying if the rule should
+    match (or not match) a transaction originating from an internal API. This
+    is useful to differentiate transaction originating from an ATS plugin.
+
 The following list shows possible actions and their allowed values.
 
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/doc/reference/configuration/parent.config.en.rst
----------------------------------------------------------------------
diff --git a/doc/reference/configuration/parent.config.en.rst b/doc/reference/configuration/parent.config.en.rst
index f025a7a..c0ec0b4 100644
--- a/doc/reference/configuration/parent.config.en.rst
+++ b/doc/reference/configuration/parent.config.en.rst
@@ -112,6 +112,13 @@ values.
 ``src_ip``
     A client IP address.
 
+.. _parent-config-format-internal:
+
+``internal``
+    A boolean value, ``true`` or ``false``, specifying if the rule should
+    match (or not match) a transaction originating from an internal API. This
+    is useful to differentiate transaction originating from an ATS plugin.
+
 The following list shows the possible actions and their allowed values.
 
 .. _parent-config-format-parent:

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/ControlBase.cc
----------------------------------------------------------------------
diff --git a/proxy/ControlBase.cc b/proxy/ControlBase.cc
index f634ad2..a149124 100644
--- a/proxy/ControlBase.cc
+++ b/proxy/ControlBase.cc
@@ -633,6 +633,56 @@ TagMod::make(char *value, char const ** /* error ATS_UNUSED */)
 }
 
 // ----------
+struct InternalMod : public ControlBase::Modifier {
+  bool flag;
+  static char const *const NAME;
+
+  virtual Type
+  type() const
+  {
+    return MOD_INTERNAL;
+  }
+  virtual char const *
+  name() const
+  {
+    return NAME;
+  }
+  virtual bool
+  check(HttpRequestData *req) const
+  {
+    return req->internal_txn == flag;
+  }
+  virtual void
+  print(FILE *f) const
+  {
+    fprintf(f, "%s=%s  ", this->name(), flag ? "true" : "false");
+  }
+  static InternalMod *make(char *value, char const **error);
+};
+
+char const *const InternalMod::NAME = "Internal";
+
+InternalMod *
+InternalMod::make(char *value, char const **error)
+{
+  InternalMod tmp;
+
+  if (0 == strncasecmp("false", value, 5)) {
+    tmp.flag = false;
+  } else if (0 == strncasecmp("true", value, 4)) {
+    tmp.flag = true;
+  } else {
+    *error = "Value must be true or false";
+  }
+
+  if (*error) {
+    return NULL;
+  } else {
+    return new InternalMod(tmp);
+  }
+}
+
+// ----------
 } // anon name space
 // ------------------------------------------------
 ControlBase::~ControlBase()
@@ -765,6 +815,8 @@ ControlBase::ProcessModifiers(matcher_line *line_info)
       mod = TimeMod::make(value, &errBuf);
     } else if (strcasecmp(label, "tag") == 0) {
       mod = TagMod::make(value, &errBuf);
+    } else if (strcasecmp(label, "internal") == 0) {
+      mod = InternalMod::make(value, &errBuf);
     } else {
       err = ME_BAD_MOD;
     }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/ControlBase.h
----------------------------------------------------------------------
diff --git a/proxy/ControlBase.h b/proxy/ControlBase.h
index 8ada921..48d393d 100644
--- a/proxy/ControlBase.h
+++ b/proxy/ControlBase.h
@@ -54,6 +54,7 @@ public:
       MOD_SRC_IP,
       MOD_IPORT,
       MOD_TAG,
+      MOD_INTERNAL,
     };
     /// Destructor - force virtual.
     virtual ~Modifier();

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/ControlMatcher.h
----------------------------------------------------------------------
diff --git a/proxy/ControlMatcher.h b/proxy/ControlMatcher.h
index b0126da..999d09f 100644
--- a/proxy/ControlMatcher.h
+++ b/proxy/ControlMatcher.h
@@ -146,7 +146,7 @@ public:
   inkcoreapi sockaddr const *get_ip();
   inkcoreapi sockaddr const *get_client_ip();
 
-  HttpRequestData() : hdr(NULL), hostname_str(NULL), api_info(NULL), xact_start(0), incoming_port(0),
tag(NULL)
+  HttpRequestData() : hdr(NULL), hostname_str(NULL), api_info(NULL), xact_start(0), incoming_port(0),
tag(NULL), internal_txn(false)
   {
     ink_zero(src_ip);
     ink_zero(dest_ip);
@@ -160,6 +160,7 @@ public:
   IpEndpoint dest_ip;
   uint16_t incoming_port;
   char *tag;
+  bool internal_txn;
 };
 
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/config/cache.config.default
----------------------------------------------------------------------
diff --git a/proxy/config/cache.config.default b/proxy/config/cache.config.default
index 565571a..b7d1179 100644
--- a/proxy/config/cache.config.default
+++ b/proxy/config/cache.config.default
@@ -27,6 +27,7 @@
 #     method=
 #     time=
 #     src_ip=
+#     internal={true,false}
 #
 # Each line must include exactly one cache directive
 #   Cache directives are

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/config/parent.config.default
----------------------------------------------------------------------
diff --git a/proxy/config/parent.config.default b/proxy/config/parent.config.default
index 93eecc3..1cf216e 100644
--- a/proxy/config/parent.config.default
+++ b/proxy/config/parent.config.default
@@ -28,6 +28,7 @@
 #     method=
 #     time=
 #     src_ip=
+#     internal={true,false}
 #
 # Available parent directives are:
 #     parent=    (a semicolon separated list of parent proxies)

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99073afd/proxy/http/HttpTransact.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 0ca0a48..ff4820c 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -5591,6 +5591,7 @@ HttpTransact::initialize_state_variables_from_request(State *s, HTTPHdr
*obsolet
   }
   s->request_data.xact_start = s->client_request_time;
   s->request_data.api_info = &s->api_info;
+  s->request_data.internal_txn = s->state_machine->ua_session->get_netvc()->get_is_internal_request();
 
   /////////////////////////////////////////////
   // Do dns lookup for the host. We need     //


Mime
View raw message