[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-04-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 8.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/8.1.x by this push:
 new 72fc02a  Updated ChangeLog
72fc02a is described below

commit 72fc02a2e5babba38d68d8284c0409477ce7aaac
Author: Leif Hedstrom 
AuthorDate: Tue Apr 28 22:00:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.0 | 4 
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG-8.1.0 b/CHANGELOG-8.1.0
index 7c3b8ea..3b01425 100644
--- a/CHANGELOG-8.1.0
+++ b/CHANGELOG-8.1.0
@@ -99,6 +99,7 @@ Changes with Apache Traffic Server 8.1.0
   #5903 - Reduce unnecesary IOBufferBlock allocation
   #5920 - Cleanup: VIO
   #5921 - Cleanup AuTest for HTTP/2
+  #5929 - Fix lost fragments when update object
   #5934 - Track scheduled events to (read|write)_vio.cont from Http2Stream
   #5945 - cachekey: allow multiple values for `--key-type`
   #5953 - Log H2 priority information
@@ -145,6 +146,7 @@ Changes with Apache Traffic Server 8.1.0
   #6450 - Adjust consume logic in data frame read
   #6464 - cache_range_requests plugin: detect and handle TSCacheUrlSet 
failures…
   #6470 - Remove update to unused variable
+  #6507 - CacheRead: catch and invalidate an asset with invalid negative 
cache_seek bytes value.
   #6518 - Fixes a bug where HostStatus::getHostStatus() creates too many stats.
   #6525 - Don't be overly aggressive on stream failures and closing
   #6534 - Ignore MgmtMessageHdr if ProcessManager is not running
@@ -173,6 +175,8 @@ Changes with Apache Traffic Server 8.1.0
   #6654 - Supports sharing cache_promote LRUs across multiple remap rules
   #6660 - Fix 8.1.x build with old openssl
   #6665 - Fix memory leak of HPACK
+  # - Fix link issue of test_libhttp2 on FreeBSD 12 with --enable-debug
   #6676 - Fixes the 'traffic_ctl host status' for trafficserver 8.1.x
   #6685 - 8.1.x backport cache_range_requests autests: remove last-modified
   #6688 - Fixes minor memory leak in configure_net
+  #6692 - Fix deprecated-copy warning in cache tool



[trafficserver] branch master updated: Updated docs for guaranteed_{min, max}_lifetime

2020-04-28 Thread bcall
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 1d529e7  Updated docs for guaranteed_{min,max}_lifetime
1d529e7 is described below

commit 1d529e7e144ad41c9adcbd0df6371055923aab7b
Author: Emanuele Rocca 
AuthorDate: Thu Apr 16 17:06:22 2020 +0200

Updated docs for guaranteed_{min,max}_lifetime

The settings are taken into account whether or not heuristics are used.
Update the documentation to reflect that.

See https://phabricator.wikimedia.org/T249627#6062187
---
 doc/admin-guide/files/records.config.en.rst | 32 +
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/doc/admin-guide/files/records.config.en.rst 
b/doc/admin-guide/files/records.config.en.rst
index 5da2297..4467665 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -2052,6 +2052,20 @@ Cache Control
 
The maximum age allowed for a stale response before it cannot be cached.
 
+.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_min_lifetime INT 0
+   :reloadable:
+   :overridable:
+
+   Establishes a guaranteed minimum lifetime boundary for object freshness.
+   Setting this to ``0`` (default) disables the feature.
+
+.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_max_lifetime INT 31536000
+   :reloadable:
+   :overridable:
+
+   Establishes a guaranteed maximum lifetime boundary for object freshness.
+   Setting this to ``0`` disables the feature.
+
 .. ts:cv:: CONFIG proxy.config.http.cache.range.lookup INT 1
:overridable:
 
@@ -2273,24 +2287,6 @@ Heuristic Expiration
The aging factor for freshness computations. |TS| stores an object for this
percentage of the time that elapsed since it last changed.
 
-.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_min_lifetime INT 0
-   :reloadable:
-   :overridable:
-
-   Establishes a guaranteed minimum lifetime boundary for freshness heuristics.
-   When heuristics are used, and the 
:ts:cv:`proxy.config.http.cache.heuristic_lm_factor`
-   aging factor is applied, the final minimum age calculated will never be
-   lower than the value in this variable.
-
-.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_max_lifetime INT 31536000
-   :reloadable:
-   :overridable:
-
-   Establishes a guaranteed maximum lifetime boundary for freshness heuristics.
-   When heuristics are used, and the 
:ts:cv:`proxy.config.http.cache.heuristic_lm_factor`
-   aging factor is applied, the final maximum age calculated will never be
-   higher than the value in this variable.
-
 Dynamic Content & Content Negotiation
 =
 



[trafficserver] branch master updated: Updated docs for guaranteed_{min, max}_lifetime

2020-04-28 Thread bcall
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 1d529e7  Updated docs for guaranteed_{min,max}_lifetime
1d529e7 is described below

commit 1d529e7e144ad41c9adcbd0df6371055923aab7b
Author: Emanuele Rocca 
AuthorDate: Thu Apr 16 17:06:22 2020 +0200

Updated docs for guaranteed_{min,max}_lifetime

The settings are taken into account whether or not heuristics are used.
Update the documentation to reflect that.

See https://phabricator.wikimedia.org/T249627#6062187
---
 doc/admin-guide/files/records.config.en.rst | 32 +
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/doc/admin-guide/files/records.config.en.rst 
b/doc/admin-guide/files/records.config.en.rst
index 5da2297..4467665 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -2052,6 +2052,20 @@ Cache Control
 
The maximum age allowed for a stale response before it cannot be cached.
 
+.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_min_lifetime INT 0
+   :reloadable:
+   :overridable:
+
+   Establishes a guaranteed minimum lifetime boundary for object freshness.
+   Setting this to ``0`` (default) disables the feature.
+
+.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_max_lifetime INT 31536000
+   :reloadable:
+   :overridable:
+
+   Establishes a guaranteed maximum lifetime boundary for object freshness.
+   Setting this to ``0`` disables the feature.
+
 .. ts:cv:: CONFIG proxy.config.http.cache.range.lookup INT 1
:overridable:
 
@@ -2273,24 +2287,6 @@ Heuristic Expiration
The aging factor for freshness computations. |TS| stores an object for this
percentage of the time that elapsed since it last changed.
 
-.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_min_lifetime INT 0
-   :reloadable:
-   :overridable:
-
-   Establishes a guaranteed minimum lifetime boundary for freshness heuristics.
-   When heuristics are used, and the 
:ts:cv:`proxy.config.http.cache.heuristic_lm_factor`
-   aging factor is applied, the final minimum age calculated will never be
-   lower than the value in this variable.
-
-.. ts:cv:: CONFIG proxy.config.http.cache.guaranteed_max_lifetime INT 31536000
-   :reloadable:
-   :overridable:
-
-   Establishes a guaranteed maximum lifetime boundary for freshness heuristics.
-   When heuristics are used, and the 
:ts:cv:`proxy.config.http.cache.heuristic_lm_factor`
-   aging factor is applied, the final maximum age calculated will never be
-   higher than the value in this variable.
-
 Dynamic Content & Content Negotiation
 =
 



[trafficserver] branch master updated: Remove tls_versions from host sni policy check

2020-04-28 Thread bcall
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 7567ff7  Remove tls_versions from host sni policy check
7567ff7 is described below

commit 7567ff7d5930a33342302572aa190b9f196e9a44
Author: Susan Hinrichs 
AuthorDate: Mon Apr 20 18:06:41 2020 +

Remove tls_versions from host sni policy check
---
 doc/admin-guide/files/records.config.en.rst | 2 ++
 iocore/net/P_SNIActionPerformer.h   | 5 -
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/doc/admin-guide/files/records.config.en.rst 
b/doc/admin-guide/files/records.config.en.rst
index 21b9bb1..5da2297 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -1851,6 +1851,8 @@ Security
 
You can override this global setting on a per domain basis in the 
:file:`sni.yaml` file using the :ref:`host_sni_policy 
attribute` action.
 
+   Currently, only the verify_client policy is checked for host name and SNI 
matching.
+
 Cache Control
 =
 
diff --git a/iocore/net/P_SNIActionPerformer.h 
b/iocore/net/P_SNIActionPerformer.h
index 8dc95fe..2f9bd01 100644
--- a/iocore/net/P_SNIActionPerformer.h
+++ b/iocore/net/P_SNIActionPerformer.h
@@ -262,11 +262,6 @@ public:
 }
 return SSL_TLSEXT_ERR_OK;
   }
-  bool
-  TestClientSNIAction(const char *servername, const IpEndpoint , int 
) const override
-  {
-return !unset;
-  }
 };
 
 class SNI_IpAllow : public ActionItem



[trafficserver] branch master updated: remove TSContSchedule, then rename TSContScheduleOnPool to TSContSchedule

2020-04-28 Thread bcall
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new cefe482  remove TSContSchedule, then rename TSContScheduleOnPool to 
TSContSchedule
cefe482 is described below

commit cefe4826c919847385aa9d8459b9d5cfc20377f9
Author: Fei Deng 
AuthorDate: Tue Mar 31 14:12:38 2020 -0500

remove TSContSchedule, then rename TSContScheduleOnPool to TSContSchedule
---
 doc/.tx/config |  6 +-
 .../api/functions/TSContScheduleEvery.en.rst   | 58 ---
 ...ule.en.rst => TSContScheduleEveryOnPool.en.rst} | 28 +++
 .../api/functions/TSContScheduleOnPool.en.rst  | 25 +--
 .../api/functions/TSContScheduleOnThread.en.rst| 17 -
 .../api/functions/TSContThreadAffinitySet.en.rst   |  4 +-
 .../continuations/activating-continuations.en.rst  |  2 +-
 .../plugins/continuations/index.en.rst |  2 +-
 .../continuations/writing-handler-functions.en.rst |  5 +-
 ...ntSchedule.en.po => TSContScheduleOnPool.en.po} | 10 +--
 .../continuations/activating-continuations.en.po   |  4 +-
 .../plugins/continuations/index.en.po  |  4 +-
 .../continuations/writing-handler-functions.en.po  |  8 +-
 include/ts/ts.h|  2 -
 src/traffic_server/InkAPI.cc   | 63 
 tests/gold_tests/cont_schedule/gold/schedule.gold  |  4 -
 tests/gold_tests/cont_schedule/schedule.test.py| 49 
 tests/tools/plugins/cont_schedule.cc   | 87 ++
 18 files changed, 75 insertions(+), 303 deletions(-)

diff --git a/doc/.tx/config b/doc/.tx/config
index 250615d..5ddb722 100644
--- a/doc/.tx/config
+++ b/doc/.tx/config
@@ -697,9 +697,9 @@ file_filter = 
locale//LC_MESSAGES/developer-guide/api/functions/TSContMute
 source_file = 
_build/locale/pot/developer-guide/api/functions/TSContMutexGet.en.pot
 source_lang = en
 
-[apache-traffic-server-6x.developer-guide--api--functions--TSContSchedule_en]
-file_filter = 
locale//LC_MESSAGES/developer-guide/api/functions/TSContSchedule.en.po
-source_file = 
_build/locale/pot/developer-guide/api/functions/TSContSchedule.en.pot
+[apache-traffic-server-6x.developer-guide--api--functions--TSContScheduleOnPool_en]
+file_filter = 
locale//LC_MESSAGES/developer-guide/api/functions/TSContScheduleOnPool.en.po
+source_file = 
_build/locale/pot/developer-guide/api/functions/TSContScheduleOnPool.en.pot
 source_lang = en
 
 [apache-traffic-server-6x.developer-guide--api--functions--TSDebug_en]
diff --git a/doc/developer-guide/api/functions/TSContScheduleEvery.en.rst 
b/doc/developer-guide/api/functions/TSContScheduleEvery.en.rst
deleted file mode 100644
index bc61392..000
--- a/doc/developer-guide/api/functions/TSContScheduleEvery.en.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-.. 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.
-
-.. include:: ../../../common.defs
-
-.. default-domain:: c
-
-TSContScheduleEvery
-***
-
-Synopsis
-
-
-.. code-block:: cpp
-
-#include 
-
-.. function:: TSAction TSContScheduleEvery(TSCont contp, TSHRTime every)
-
-Description
-===
-
-Schedules :arg:`contp` to periodically run every :arg:`delay` milliseconds in 
the future.
-This is approximate. The delay will be at least :arg:`delay` but possibly more.
-Resolutions finer than roughly 5 milliseconds will not be effective. 
:arg:`contp` is
-required to have a mutex, which is provided to :func:`TSContCreate`.
-
-The return value can be used to cancel the scheduled event via 
:func:`TSActionCancel`. This is
-effective until the continuation :arg:`contp` is being dispatched. However, if 
it is scheduled on
-another thread this can be problematic to be correctly timed. The return value 
can be checked with
-:func:`TSActionDone` to see if the continuation ran before the return, which 
is possible if
-:arg:`timeout` is `0`. Returns ``nullptr`` if thread affinity was cleared.
-
-TSContSchedule() or TSContScheduleEvery() will default to set the thread 
affinity to the calling thread
-when no affinity is 

[trafficserver] branch 9.0.x updated: Updated Changelog

2020-04-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/9.0.x by this push:
 new 6a9bf65  Updated Changelog
6a9bf65 is described below

commit 6a9bf65f1b11483e12fa328d70ed9a86fae256b4
Author: Leif Hedstrom 
AuthorDate: Tue Apr 28 13:55:50 2020 -0600

Updated Changelog
---
 CHANGELOG-9.0.0 | 4 
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG-9.0.0 b/CHANGELOG-9.0.0
index 08bfb8a..373d4b0 100644
--- a/CHANGELOG-9.0.0
+++ b/CHANGELOG-9.0.0
@@ -882,3 +882,7 @@ Changes with Apache Traffic Server 9.0.0
   #6664 - cache_range_requests: remove unnecessary Last-Modified header from 
tests
   #6677 - Format to match perferred if/else formatting for sh scripts
   #6678 - Removes commented out code from example
+  #6694 - Normalizes function names to match hook names in intercept plugins
+  #6697 - Increase the default max_record_entries to match the original value
+  #6700 - traffic_dump: add nullptr check for sni string
+  #6704 - Removes ATS version from gold files



[trafficserver] branch master updated: slice plugin: add --include-regex, --exclude-regex parameters (#6701)

2020-04-28 Thread eze
This is an automated email from the ASF dual-hosted git repository.

eze pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 8fdf694  slice plugin: add --include-regex, --exclude-regex parameters 
(#6701)
8fdf694 is described below

commit 8fdf694436e60131a5d8a9e2728e8c5aa0fe167a
Author: Brian Olsen 
AuthorDate: Tue Apr 28 13:30:54 2020 -0600

slice plugin: add --include-regex, --exclude-regex parameters (#6701)
---
 doc/admin-guide/plugins/slice.en.rst   |  21 +++
 plugins/experimental/slice/Config.cc   | 121 ---
 plugins/experimental/slice/Config.h|  28 +++-
 plugins/experimental/slice/HttpHeader.cc   |  12 +-
 plugins/experimental/slice/Makefile.inc|   6 +
 plugins/experimental/slice/slice.cc|  22 ++-
 .../pluginTest/slice/slice_regex.test.py   | 169 +
 7 files changed, 346 insertions(+), 33 deletions(-)

diff --git a/doc/admin-guide/plugins/slice.en.rst 
b/doc/admin-guide/plugins/slice.en.rst
index b131178..a0a367d 100644
--- a/doc/admin-guide/plugins/slice.en.rst
+++ b/doc/admin-guide/plugins/slice.en.rst
@@ -88,6 +88,17 @@ The slice plugin supports the following options::
 Disable writing block stitch errors to the error log.
 -d for short
 
+--exclude-regex= (optional)
+If provided, only slice what matches.
+If not provided will always slice
+Cannot be used with --include-regex
+-e for short
+
+--include-regex= (optional)
+If provided, only slice what matches.
+If not provided will always slice
+Cannot be used with --exclude-regex
+-i for short
 
 Examples::
 
@@ -122,6 +133,16 @@ After modifying :file:`remap.config`, restart or reload 
traffic server
 (sudo traffic_ctl config reload) or (sudo traffic_ctl server restart)
 to activate the new configuration values.
 
+Don't slice txt files::
+
+  slice.so --exclude-regex=\\.txt
+  slice.so -e \\.txt
+
+Slice only mp4 files::
+
+  slice.so --include-regex=\\.mp4
+  slice.so -i \\.mp4
+
 Debug Options
 -
 
diff --git a/plugins/experimental/slice/Config.cc 
b/plugins/experimental/slice/Config.cc
index fb04ebb..17b7329 100644
--- a/plugins/experimental/slice/Config.cc
+++ b/plugins/experimental/slice/Config.cc
@@ -26,6 +26,20 @@
 
 #include "ts/experimental.h"
 
+Config::~Config()
+{
+  if (nullptr != m_regex_extra) {
+#ifndef PCRE_STUDY_JIT_COMPILE
+pcre_free(m_regex_extra);
+#else
+pcre_free_study(m_regex_extra);
+#endif
+  }
+  if (nullptr != m_regex) {
+pcre_free(m_regex);
+  }
+}
+
 int64_t
 Config::bytesFrom(char const *const valstr)
 {
@@ -94,18 +108,20 @@ Config::fromArgs(int const argc, char const *const argv[])
   // standard parsing
   constexpr struct option longopts[] = {
 {const_cast("blockbytes"), required_argument, nullptr, 'b'},
-{const_cast("blockbytes-test"), required_argument, nullptr, 't'},
-{const_cast("remap-host"), required_argument, nullptr, 'r'},
-{const_cast("pace-errorlog"), required_argument, nullptr, 'p'},
 {const_cast("disable-errorlog"), no_argument, nullptr, 'd'},
+{const_cast("exclude-regex"), required_argument, nullptr, 'e'},
+{const_cast("include-regex"), required_argument, nullptr, 'i'},
 {const_cast("throttle"), no_argument, nullptr, 'o'},
+{const_cast("pace-errorlog"), required_argument, nullptr, 'p'},
+{const_cast("remap-host"), required_argument, nullptr, 'r'},
+{const_cast("blockbytes-test"), required_argument, nullptr, 't'},
 {nullptr, 0, nullptr, 0},
   };
 
   // getopt assumes args start at '1' so this hack is needed
   char *const *argvp = (const_cast(argv) - 1);
   for (;;) {
-int const opt = getopt_long(argc + 1, argvp, "b:t:r:p:do", longopts, 
nullptr);
+int const opt = getopt_long(argc + 1, argvp, "b:de:i:op:r:t:", longopts, 
nullptr);
 if (-1 == opt) {
   break;
 }
@@ -122,6 +138,61 @@ Config::fromArgs(int const argc, char const *const argv[])
 ERROR_LOG("Invalid blockbytes: %s", optarg);
   }
 } break;
+case 'd': {
+  m_paceerrsecs = -1;
+} break;
+case 'e': {
+  if (None != m_regex_type) {
+ERROR_LOG("Regex already specified!");
+break;
+  }
+
+  const char *errptr;
+  int erroffset;
+  m_regexstr = optarg;
+  m_regex= pcre_compile(m_regexstr.c_str(), 0, , , 
NULL);
+  if (nullptr == m_regex) {
+ERROR_LOG("Invalid regex: '%s'", m_regexstr.c_str());
+  } else {
+m_regex_type  = Exclude;
+m_regex_extra = pcre_study(m_regex, 0, );
+DEBUG_LOG("Using regex for url exclude: '%s'", m_regexstr.c_str());
+  }
+} break;
+case 'i': {
+  if (None != m_regex_type) {
+ERROR_LOG("Regex already specified!");
+break;
+  }
+
+  const char 

[trafficserver] branch master updated: Add Access log fields for ProxyProtocol Context

2020-04-28 Thread sudheerv
This is an automated email from the ASF dual-hosted git repository.

sudheerv pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 583e5ed  Add Access log fields for ProxyProtocol Context
583e5ed is described below

commit 583e5ed5f3db1e33075b8e5b880d6f6bf1e730f3
Author: Sudheer Vinukonda 
AuthorDate: Tue Apr 28 08:56:20 2020 -0700

Add Access log fields for ProxyProtocol Context
---
 doc/admin-guide/logging/formatting.en.rst |  7 
 proxy/logging/Log.cc  | 15 +
 proxy/logging/LogAccess.cc| 55 +++
 proxy/logging/LogAccess.h |  3 ++
 4 files changed, 80 insertions(+)

diff --git a/doc/admin-guide/logging/formatting.en.rst 
b/doc/admin-guide/logging/formatting.en.rst
index c81f435..242afe2 100644
--- a/doc/admin-guide/logging/formatting.en.rst
+++ b/doc/admin-guide/logging/formatting.en.rst
@@ -505,6 +505,13 @@ shi   Origin Server  IP address resolved via DNS by |TS| 
for the origin server.
 shn   Origin Server  Host name of the origin server.
 nhi   Origin Server  Destination IP address of next hop
 nhp   Origin Server  Destination port of next hop
+ppv   Proxy Protocol Proxy Protocol Version used (if any) between the 
Loadbalancer
+  Versionand |TS|
+pps   Proxy Protocol Source IP received via Proxy Protocol context from the LB 
to
+  Source IP  the |TS|
+ppd   Proxy Protocol Destination IP received via Proxy Protocol context from 
the LB
+  Dest IPto the |TS|
+
 = == ==
 
 .. note::
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index 8be6bd7..4d46f6d 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -917,6 +917,21 @@ Log::init_fields()
   global_field_list.add(field, false);
   field_symbol_hash.emplace("ctpd", field);
 
+  field = new LogField("proxy_protocol_version", "ppv", LogField::dINT, 
::marshal_proxy_protocol_version,
+   
reinterpret_cast(::unmarshal_str));
+  global_field_list.add(field, false);
+  field_symbol_hash.emplace("ppv", field);
+
+  field = new LogField("proxy_protocol_src_ip", "pps", LogField::IP, 
::marshal_proxy_protocol_src_ip,
+   ::unmarshal_ip_to_str);
+  global_field_list.add(field, false);
+  field_symbol_hash.emplace("ppsip", field);
+
+  field = new LogField("proxy_protocol_dst_ip", "ppd", LogField::IP, 
::marshal_proxy_protocol_dst_ip,
+   ::unmarshal_ip_to_str);
+  global_field_list.add(field, false);
+  field_symbol_hash.emplace("ppdip", field);
+
   field = new LogField("version_build_number", "vbn", LogField::STRING, 
::marshal_version_build_number,
(LogField::UnmarshalFunc)::unmarshal_str);
   global_field_list.add(field, false);
diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc
index 08f5b0a..6d8d9e1 100644
--- a/proxy/logging/LogAccess.cc
+++ b/proxy/logging/LogAccess.cc
@@ -1315,6 +1315,61 @@ LogAccess::marshal_version_build_number(char *buf)
   -*/
 
 int
+LogAccess::marshal_proxy_protocol_version(char *buf)
+{
+  const char *version_str = nullptr;
+  int len = INK_MIN_ALIGN;
+
+  if (m_http_sm) {
+NetVConnection::ProxyProtocolVersion ver = 
m_http_sm->t_state.pp_info.proxy_protocol_version;
+switch (ver) {
+case NetVConnection::ProxyProtocolVersion::V1:
+  version_str = "V1";
+  break;
+case NetVConnection::ProxyProtocolVersion::V2:
+  version_str = "V2";
+  break;
+case NetVConnection::ProxyProtocolVersion::UNDEFINED:
+default:
+  version_str = "-";
+  break;
+}
+len = LogAccess::strlen(version_str);
+  }
+
+  if (buf) {
+marshal_str(buf, version_str, len);
+  }
+  return len;
+}
+
+/*-
+  -*/
+int
+LogAccess::marshal_proxy_protocol_src_ip(char *buf)
+{
+  sockaddr const *ip = nullptr;
+  if (m_http_sm && m_http_sm->t_state.pp_info.proxy_protocol_version != 
NetVConnection::ProxyProtocolVersion::UNDEFINED) {
+ip = _http_sm->t_state.pp_info.src_addr.sa;
+  }
+  return marshal_ip(buf, ip);
+}
+
+/*-
+  -*/
+int
+LogAccess::marshal_proxy_protocol_dst_ip(char *buf)
+{
+  sockaddr const *ip = nullptr;
+  if (m_http_sm && m_http_sm->t_state.pp_info.proxy_protocol_version != 
NetVConnection::ProxyProtocolVersion::UNDEFINED) {
+ip = _http_sm->t_state.pp_info.dst_addr.sa;
+  }
+  return marshal_ip(buf, ip);
+}
+