This is an automated email from the ASF dual-hosted git repository.

bneradt 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 6dfbff3235 ACL filter action documentation updates (#11635)
6dfbff3235 is described below

commit 6dfbff32353a34233605ce8f90a62bcb97f2d5e8
Author: Brian Neradt <[email protected]>
AuthorDate: Fri Aug 2 19:32:18 2024 -0500

    ACL filter action documentation updates (#11635)
    
    This renames the ACL filter behavior as "legacy" and "modern" and
    documents that the legacy behavior, while the default for 10.x, is
    deprecated and will be removed in 11.x
    
    This also adds documentation for set_allow and set_deny.
---
 configs/records.yaml.default.in                |   1 +
 doc/admin-guide/files/ip_allow.yaml.en.rst     |  15 +-
 doc/admin-guide/files/records.yaml.en.rst      |  25 ++-
 doc/admin-guide/files/remap.config.en.rst      | 234 +++++++++++++++++++------
 include/proxy/http/remap/RemapConfig.h         |   6 +-
 include/proxy/http/remap/UrlRewrite.h          |  12 +-
 src/proxy/IPAllow.cc                           |   2 +-
 src/proxy/http/remap/RemapConfig.cc            |  16 +-
 src/proxy/http/remap/UrlRewrite.cc             |  30 ++--
 src/records/RecordsConfig.cc                   |   2 +-
 tests/gold_tests/ip_allow/ip_category.test.py  |   2 +-
 tests/gold_tests/remap/all_acl_combinations.py | 176 +++++++++----------
 tests/gold_tests/remap/deactivate_ip_allow.py  | 102 +++++------
 tests/gold_tests/remap/remap_acl.test.py       |  54 +++---
 14 files changed, 410 insertions(+), 267 deletions(-)

diff --git a/configs/records.yaml.default.in b/configs/records.yaml.default.in
index a2506cce77..f59a1ffbdc 100644
--- a/configs/records.yaml.default.in
+++ b/configs/records.yaml.default.in
@@ -216,3 +216,4 @@ records:
 # 
https://docs.trafficserver.apache.org/en/latest/admin-guide/files/records.yaml.en.html#proxy-config-url-remap-pristine-host-hdr
     pristine_host_hdr: 0
     remap_required: 1
+    acl_behavior_policy: 0
diff --git a/doc/admin-guide/files/ip_allow.yaml.en.rst 
b/doc/admin-guide/files/ip_allow.yaml.en.rst
index 63e6d3ae2f..bfb840da17 100644
--- a/doc/admin-guide/files/ip_allow.yaml.en.rst
+++ b/doc/admin-guide/files/ip_allow.yaml.en.rst
@@ -99,7 +99,20 @@ The keys in a rule are:
    Either this or ``ip_addrs`` are required keys for a rule.
 
 ``action``
-   The action, which must be ``allow`` or ``deny``. This is a required key.
+   The action describing the behavior of the rule. This can be either 
``set_allow`` or ``set_deny``.
+   ``set_allow`` provides a list of allowed methods, while all requests with 
other methods are
+   denied. ``set_deny`` provides a list of denied methods, while all requests 
with other methods are
+   allowed. This is a required key.
+
+.. note::
+   Prior to |TS| 10.x, these actions were named ``allow`` and ``deny``. In 
order to bring alignment
+   to the action names in remap ACL actions (see :ref:`acl-filters` for more 
details), these have
+   been renamed to ``set_allow`` and ``set_deny``. If
+   :ts:cv:`proxy.config.url_remap.acl_behavior_policy` is set to 0, which is 
the default, the old
+   ``allow`` and ``deny`` actions are still supported in order to provide 
backwards compatibility to
+   |TS| 9.x :file:`ip_allow.yaml` files. If it is set to 1, then the use of 
``allow`` and ``deny``
+   will result in a fatal error with a message asking the user to use 
``set_allow`` and ``set_deny``
+   instead.
 
 ``methods``
    This is optional. If not present, the rule action applies to all methods. 
If present, the rule
diff --git a/doc/admin-guide/files/records.yaml.en.rst 
b/doc/admin-guide/files/records.yaml.en.rst
index 41c6bb3a2a..3061387b9c 100644
--- a/doc/admin-guide/files/records.yaml.en.rst
+++ b/doc/admin-guide/files/records.yaml.en.rst
@@ -3559,17 +3559,28 @@ URL Remap Rules
 
    This is dynamic to enable different requirements for startup and reloading.
 
-.. ts:cv:: CONFIG proxy.config.url_remap.acl_matching_policy INT 0
+.. ts:cv:: CONFIG proxy.config.url_remap.acl_behavior_policy INT 0
    :reloadable:
 
-   This controls matching policy of ACL filters in :file:`remap.config`. See 
:ref:`acl-filters` for more details.
+   This controls how the ACL filter ``allow`` and ``deny`` actions behave in 
:file:`remap.config`. See
+   :ref:`acl-filters` for more details.
 
-   ===== =============================
+   ===== =================================
    Value Description
-   ===== =============================
-   ``0`` Match on IP and Method Policy
-   ``1`` Match on IP only Policy
-   ===== =============================
+   ===== =================================
+   ``0`` Legacy (9.x and below) behavior.
+   ``1`` Modern (10.x and above) behavior.
+   ===== =================================
+
+   The value ``0`` provides ACL filter ``allow`` and ``deny`` action behavior 
that is backwards compatible with previous
+   versions of |TS|. The value ``1`` results in a fatal log message if 
``allow`` or ``deny`` is used with a message
+   encouraging the user to transition to either ``set_allow`` or ``set_deny`` 
or ``add_allow`` or ``add_deny`` actions.
+   ``0`` is the default value.
+
+.. note::
+
+   This configuration is deprecated in 10.x. Starting with 11.x, |TS| will 
always function like this configuration is
+   set to ``1`` (modern) and the configuration will be removed entirely.
 
 .. _records-config-ssl-termination:
 
diff --git a/doc/admin-guide/files/remap.config.en.rst 
b/doc/admin-guide/files/remap.config.en.rst
index 72fcc0aa96..131744a036 100644
--- a/doc/admin-guide/files/remap.config.en.rst
+++ b/doc/admin-guide/files/remap.config.en.rst
@@ -455,7 +455,7 @@ As is the case with :file:`ip_allow.yaml` rules, each ACL 
filter takes one of a
 
 - ``allow``: This behaves like the ``allow`` action in :file:`ip_allow.yaml` 
in which a list of allowed methods are
   provided. Any request with a method in the list is allowed, while any 
request with a method not in the list is denied.
-  The exception to this is if 
:ts:cv:`proxy.config.url_remap.acl_matching_policy` is set to ``0``. In this 
case, the
+  The exception to this is if 
:ts:cv:`proxy.config.url_remap.acl_behavior_policy` is set to ``0``. In this 
case, the
   ``allow`` action is a synonym for ``add_allow``, described below.
 - ``add_allow``: This action adds a list of allowed methods to whatever other 
methods are allowed in a subsequently
   matched ACL filter or :file:`ip_allow.yaml` rule. Thus, if an ``add_allow`` 
ACL filter specifies the ``POST`` method,
@@ -463,7 +463,7 @@ As is the case with :file:`ip_allow.yaml` rules, each ACL 
filter takes one of a
   have ``POST``, ``GET``, or ``HEAD`` methods will be allowed while all others 
will be denied.
 - ``deny``: This behaves like the ``deny`` action in :file:`ip_allow.yaml` in 
which a list of denied methods are
   provided. Any request with a method in the list is denied, while any request 
with a method not in the list is allowed.
-  The exception to this is if 
:ts:cv:`proxy.config.url_remap.acl_matching_policy` is set to ``0``. In this 
case, the
+  The exception to this is if 
:ts:cv:`proxy.config.url_remap.acl_behavior_policy` is set to ``0``. In this 
case, the
   ``deny`` action is a synonym for ``add_deny``, described below.
 - ``add_deny``: This action adds a list of denied methods to whatever other 
methods are denied in a subsequently matched
   ACL filter or :file:`ip_allow.yaml` rule. Thus, if an ``add_deny`` ACL 
filter specifies the ``POST`` method, and a
@@ -564,84 +564,171 @@ Note this entirely disables :file:`ip_allow.yaml` checks 
for those remap rules.
 Evaluation Order and Matching Policy
 ------------------------------------
 
-ATS evaluates multiple ACL filters in the following order:
+|TS| evaluates multiple ACL filters in the following order:
 
 1. Special "deny all" filter in :file:`ip_allow.yaml`
 2. In-line Filter in :file:`remap.config`
 3. Named Filters in :file:`remap.config`
 4. Filters in :file:`ip_allow.yaml`
 
-When an ACL filter is found, ATS stops processing subsequent ACL filters 
depending on the mathcing policy configured by
-:ts:cv:`proxy.config.url_remap.acl_matching_policy`.
+When a matching ACL filter is found, |TS| stops processing subsequent ACL 
filters.
 
-Note the step 1 happens at the start of the connection before any transactions 
are processed, unlike the other rules here.
+Note that step 1 happens at the start of the connection before any 
transactions are processed, unlike the other rules
+here.  This is an optimization: if literally all requests are denied for a 
source IP address via an
+:file:`ip_allow.yaml` rule, then there is no need to process any content from 
that IP for the connection at all, so the
+connection is simply denied at the start.
 
 .. note::
 
-   ATS v10 introduced following matching policies. Prior to the change, ATS 
traverses all matched ACL filters by IP and "deny"
-   action had priority.
+   Prior to |TS| 10.x, |TS| traversed all matched ACL filters by IP and "deny" 
action had priority.
+
+ACL Action Behavior Changes for 10.x
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Before |TS| 10.x, ACL filters used the same action names as 
:file:`ip_allow.yaml` (``allow`` and ``deny``) but these
+actions behaved differently.
+
+- As described in :file:`ip_allow.yaml`, for any transaction matching an 
:file:`ip_allow.yaml` rule whose action is
+  ``allow``, any request with a method in the allow list will be accepted, 
while all other methods are denied. ``deny``
+  actions instead list methods which are denied, while all other methods are 
implicitly allowed.
+- These same action names for ACL filters, on the other hand, functioned 
essentially additively in nature. For instance,
+  an ``allow`` ACL filter action would list a set of methods which would be 
allowed in addition to any other allowed
+  methods specified by :file:`ip_allow.yaml` rules.  Similarly, a ``deny`` ACL 
filter action would list a set of methods
+  which would be denied in addition to any other denied methods specified by 
:file:`ip_allow.yaml` rules.
+
+This difference in behavior lead at times to confusion as users would expect 
the two actions having the same name to
+behave the same across the ACL filter and :file:`ip_allow.yaml` rule systems.
+
+For |TS| 10.x, a few action naming changes are being done to disambiguate the 
behavior of :file:`ip_allow.yaml` and
+remap ACL filter actions. The following new action names are introduced:
+
+- ``add_allow``: this ACL filter action name, new to |TS| 10.x, behaves like 
``allow`` used to behave for ACL filters
+  pre |TS| 10.x: that is, it adds methods which are allowed to the 
:file:`ip_allow.yaml` rule otherwise matched for the
+  given transaction.
+- ``add_deny``: this ACL filter action name, new to |TS| 10.x, behaves like 
``deny`` used to behave for ACL filters pre
+  |TS| 10.x: that is, it adds methods which are denied the 
:file:`ip_allow.yaml` rule otherwise matched for the given
+  transaction.
+- ``set_allow``: this is an entirely new ACL filter action being introduced in 
|TS| 10.x. The new ``set_allow`` action
+  creates a remap filter that behaves like an :file:`ip_allow.yaml` rule with 
an ``allow`` action. All requests with a
+  method in the list will be allowed, requests with methods not in the list 
will be denied, and no other filters or
+  :file:`ip_allow.yaml` rules will be applied. To demonstrate the consistency 
between this action and how it acts like
+  the corresponding :file:`ip_allow.yaml` rule action, the ``set_allow`` 
action is also introduced for
+  :file:`ip_allow.yaml` rules and its behavior is identical to the ``allow`` 
:file:`ip_allow.yaml` rule action for pre
+  |TS| 10.x releases.
+- ``set_deny``: this is an entirely new ACL filter action being introduced in 
|TS| 10.x. The new ``set_deny`` action
+  creates a remap filter that behaves like an :file:`ip_allow.yaml` rule with 
a ``deny`` action. All requests with a
+  method in the list will be denied, requests with methods not in the list 
will be allowed, and no other filters or
+  :file:`ip_allow.yaml` rules will be applied. To demonstrate the consistency 
between this action and how it acts like
+  the corresponding :file:`ip_allow.yaml` rule action, the ``set_deny`` action 
is also introduced for
+  :file:`ip_allow.yaml` rules and its behavior is identical to the ``deny`` 
:file:`ip_allow.yaml` rule action for pre
+  |TS| 10.x releases.
+
+The behavior of the |TS| 9.x ``allow`` and ``deny`` actions are configurable 
via
+:ts:cv:`proxy.config.url_remap.acl_behavior_policy`. This configuration is 
described in the next two sections, but in
+short, by default the ``allow`` and ``deny`` actions behave like they did in 
|TS| 9.x in order to provide backwards
+compatibility and avoid surprises for people upgrading to |TS| 10.x.
+
+Legacy Policy
+~~~~~~~~~~~~~
+
+This is the default ACL action policy and it is configured by setting
+:ts:cv:`proxy.config.url_remap.acl_behavior_policy` to ``0``. With this 
policy, ACL filter ``allow`` and ``deny``
+actions behave like they did pre |TS| 10.x: they additively add allowed or 
denied methods for transactions.
+Functionally, this means that with this set to ``0``, ``allow`` is a synonym 
for ``add_allow`` and ``deny`` is a synonym
+for ``add_deny``.  Because of this, an organization can easily, and 
incrementally prepare for the new ACL filter action
+behavior by transitioning a rule one at a time by simply replacing ``allow`` 
with ``add_allow`` and ``deny`` with
+``add_deny``. Once all actions are transitioned, an organization can then 
switch to the modern policy.
+
+As mentioned above, the legacy and modern ACL filter action policies described 
in these two sections configure how |TS|
+will respond to the older ``allow`` and ``deny`` actions. ``set_allow``, 
``set_deny``, ``add_allow``, and ``add_deny``
+actions are not affected by this configuration and they behave the same 
between the two policies.
 
 
-Match on IP and Method Policy
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This is the default matching policy. With this policy, ACL filters, in-line or 
named, only take effect if both IP address and HTTP
-method match the incoming request. If there is no match, ATS proceeds to the 
next ACL filter to find a matching one.
-
-This policy is useful for organizations that want ACL rules to additively 
allow or deny specific methods in addition to other ACL
-filters and :file:`ip_allow.yaml` rules.
-
 Consider a filter like the following:
 
 ::
 
    map http://www.example.com/ http://internal.example.com/ @action=deny 
@method=POST
 
-The implicit ``@src_ip`` is all client IP addresses, so this filter will match 
on any ``POST`` request matched by this remap rule
-from any client and its action will be to deny such POST requests. For all 
other methods, the filter will not take effect, thus
-allowing other active ACL filters or an :file:`ip_allow.yaml` rule to 
determine the action to take for any other transaction.
+The implicit ``@src_ip`` is all client IP addresses, so this filter will match 
on any ``POST`` request matched by this
+remap rule from any client and its action will be to deny such POST requests. 
For all other methods, the filter will not
+take effect, thus allowing other active ACL filters or an 
:file:`ip_allow.yaml` rule to determine the action to take for
+any other transaction.
 
-.. note::
+With the legacy policy being described here, this filter acts identically with 
an ``add_deny`` action. Thus, the above
+rule is identical to:
 
-   This policy's behavior is similar to ATS v9 and older, but employs "first 
match wins" policy.
+::
 
-Match on IP only Policy
-~~~~~~~~~~~~~~~~~~~~~~~
+   map http://www.example.com/ http://internal.example.com/ @action=add_deny 
@method=POST
 
-With this policy, ACL filters match solely based upon IP address, meaning that 
ACL filters match like :file:`ip_allow.yaml` rules.
-When a filter is processed, the action is applied to the specified methods and 
its opposite to **all other** methods.
+.. note::
 
-This policy is useful for organizations that want to have ACL filters behave 
like :file:`ip_allow.yaml` rules specific to remap
-targets.
+   This policy's behavior is similar to |TS| 9.x and older, but employs a 
"first match wins" policy.
 
-Consider a filter like the following (the same as above):
+And just to be complete, here is a rule using the new ``set_allow`` action:
 
 ::
 
-   map http://www.example.com/ http://internal.example.com/ @action=deny 
@method=POST
+   map http://www.example.com/ http://internal.example.com/ @action=set_allow 
@method=GET @method=HEAD
+
+This is a new type of rule that could not be added pre |TS| 10.x. It behaves 
like a corresponding :file:`ip_allow.yaml`
+``allow`` action rule like this would have behaved in |TS| 9.x. This rule will 
allow only ``GET`` and ``HEAD`` requests
+to the ``internal.example.com`` origin while all requests with any other 
method will be rejected. No other ACL filters
+or :file:`ip_allow.yaml` rules will apply for this target.
 
-The implicit ``@src_ip`` is all client IP address, so this filter will apply 
to **all** requests matching this remap rule. Again,
-like an analogously crafted :file:`ip_allow.yaml` action rule, this will deny 
``POST`` request while allowing **all** other methods
-to the ``www.example.com``. No other ACL filters or :file:`ip_allow.yaml` 
rules will be applied for any request to this target.
+Modern Policy
+~~~~~~~~~~~~~
 
-More realistic example is following:
+As described above in the section "ACL Action Behavior Changes for 10.x", we 
are moving away from the old ``allow`` and
+``deny`` actions are transitioning to the new ``set_allow`` and ``set_deny`` 
and ``add_allow`` and ``add_deny`` actions.
+Setting :ts:cv:`proxy.config.url_remap.acl_behavior_policy` to ``1`` enables 
the "modern" policy for organizations who
+have made this transition to these new ACL filter names. With this modern 
policy set, the use of ``allow`` and ``deny``
+actions will be detected as an accidental and fatal error with a message 
requesting the user to convert to the new
+action names. This policy will be the default in |TS| 11.x. This is the only 
behavioral difference between the two
+policies.
+
+Thus, consider a filter like the following (the exact same as the first 
example in the legacy section above):
 
 ::
 
-   map http://www.example.com/ http://internal.example.com/ @action=allow 
@method=GET @method=HEAD
+   map http://www.example.com/ http://internal.example.com/ @action=deny 
@method=POST
+
+Note that this uses the old ``deny`` action. With the modern policy, this will 
be detected as a fatal error and |TS|
+will not start with this configuration and the user will be expected to 
convert this to an ACL filter using either the
+``add_deny`` or the ``set_deny`` actions. The same will happen with an 
``@action=allow`` action.
+
+Again, ``set_allow``, ``set_deny``, ``add_allow``, and ``add_deny`` actions 
all act the same between modern and legacy
+behavior configurations, so the examples for those above for the legacy 
configuration also apply identically to the
+modern configuration.
 
-The implicit ``@src_ip`` is all client IP address, so this filter will apply 
to all transactions matching this remap rule. Again,
-like an analogously crafted ip_allow allow rule, this will allow ``GET`` and 
``HEAD`` requests while denying all other methods to
-the ``internal.example.com`` origin. No other ACL filters or ip_allow rules 
will apply for this target.
+Upgrade Notes
+~~~~~~~~~~~~~
 
-.. warning::
+As explained above, for 10.x, by default 
:ts:cv:`proxy.config.url_remap.acl_behavior_policy` is set to ``0`` to maintain
+ACL filter action backwards compatibility with |TS| 9.x and older 
:file:`remap.config` files. This means that ACL filter
+actions ``allow`` and ``deny`` behave additively like ``add_allow`` and 
``add_deny`` just like they did for 9.x and
+older. This is to ease the transition to the modern ACL filter behavior.
+
+When an organization is ready to upgrade to the modern ACL filter action 
behavior, they need to ensure that they
+transitioned all of their ``allow`` and ``deny`` :file:`ip_allow.yaml` rules 
and :file:`remap.config` ACL filter actions
+to either ``add_allow`` and ``add_deny`` or ``set_allow`` and ``set_deny`` 
actions. To maintain 9.x behavior, this
+simply means replacing ``allow`` with ``add_allow`` and ``deny`` with 
``add_deny``. In case it is helpful,
+``tools/remap/convert_remap_actions_to_10x`` is provided to do this 
replacement programmatically.  Once all rules are
+updated, the organization can then switch to the modern policy by setting
+:ts:cv:`proxy.config.url_remap.acl_behavior_policy` to ``1``.  
:ts:cv:`proxy.config.url_remap.acl_behavior_policy` will
+be removed in 11.x and the modern policy will be the default and only behavior.
 
-   This policy has completly new behavior introduced by ATS v10. When the 
``@action=deny`` is used with this policy, be careful to
-   list up **all** methods to deny. Otherwise, the cache control methods like 
``PURGE`` and ``PUSH`` are allowed unintentionally.
 
 Example of ACL filter combinations
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+As described above, the new ``add_allow`` and ``add_deny`` actions behave the 
same in both legacy and modern ACL filter
+policies: they add to underlying :file:`ip_allow.yaml` rules methods that are 
either allowed or denied, respectively.
+The difference in behavior with these policies is how ``allow`` and ``deny`` 
actions behave. To help ensure that the
+behaviors between these two modes is understood, this section walks through 
examples of differences between these two
+policies for ``allow`` and ``deny`` actions.
+
 This is an example of in-line filter, named filters in :file:`remap.config`, 
and :file:`ip_allow.yaml`.
 
 ::
@@ -662,32 +749,63 @@ This is an example of in-line filter, named filters in 
:file:`remap.config`, and
 
    map http://www.example.com/ http://internal.example.com/ @action=deny 
@method=POST
 
-With the "Match on IP and Method Policy", the evaluation applied from left to 
right until match is found:
+With the "Legacy" policy, the evaluation applied from left to right until 
match is found:
 
 ====== ============== ============== ============== ================ 
=============
 Method In-line Filter Named Filter 1 Named Filter 2 ip_allow.yaml    result
 ====== ============== ============== ============== ================ 
=============
 GET    \-             \-             \-             allow (implicit) allowed 
(200)
-POST   deny           \-             \-             \-               denied  
(403)
-HEAD   \-             allow          \-             \-               allowed 
(200)
-DELETE \-             \-             deny           \-               denied  
(403)
+POST   deny           \-             \-             allow (implicit) denied  
(403)
+HEAD   \-             allow          \-             allow (implicit) allowed 
(200)
+DELETE \-             \-             deny           allow (implicit) denied  
(403)
 PURGE  \-             \-             \-             deny             denied  
(403)
 PUSH   \-             \-             \-             deny             denied  
(403)
 ====== ============== ============== ============== ================ 
=============
 
-With the "Match on IP only Policy", the in-line filter works like an 
:file:`ip_allow.yaml` rule applies to all requests to
-``www.example.com`` that denies ``POST`` requests and implicitly allows all 
other methods:
-
-====== ================ ============== ============== ============= 
=============
-Method In-line Filter   Named Filter 1 Named Filter 2 ip_allow.yaml result
-====== ================ ============== ============== ============= 
=============
-GET    allow (implicit) \-             \-             \-            allowed 
(200)
-POST   deny             \-             \-             \-            denied  
(403)
-HEAD   allow (implicit) allow          \-             \-            allowed 
(200)
-DELETE allow (implicit) \-             deny           \-            allowed 
(200)
-PURGE  allow (implicit) \-             \-             deny          allowed 
(200)
-PUSH   allow (implicit) \-             \-             deny          allowed 
(200)
-====== ================ ============== ============== ============= 
=============
+With the "Modern" policy, the :file:`ip_allow.yaml` rule as well as all of the
+filter rules would trigger a fatal error message and |TS| would not start. The
+user would need to transition to ``set_allow``, ``set_deny``, ``add_allow``, 
and
+``add_deny`` actions.
+
+So let's try a set of conversions like that and consider the following updated 
example:
+
+::
+
+   # ip_allow.yaml
+   ip_allow:
+      - apply: in
+        ip_addrs: [0/0, ::/0]
+        action: set_deny
+        method: [PURGE, PUSH]
+
+   # remap.config
+   .definefilter named-filter-1 @action=add_allow @method=HEAD
+   .definefilter named-filter-2 @action=add_deny @method=DELETE
+
+   .activatefilter named-filter-1
+   .activatefilter named-filter-2
+
+   map http://www.example.com/ http://internal.example.com/ @action=set_deny 
@method=POST
+
+
+In this case, we changed the :file:`ip_allow.yaml` rule to use ``set_deny``
+instead of ``deny``. This makes it function as it did before in the previous
+example. Also, we changed the two named filter actions to ``add_allow`` and
+``add_deny``. Again, this makes them function as they did in legacy mode.
+Finally, we changed the in-line filter action to ``set_deny`` which changes its
+behavior to be like that of an :file:`ip_allow.yaml` rule: it will deny all 
POST
+requests and allow all other requests.
+
+====== ================ ============== ============== ================ 
=============
+Method In-line Filter   Named Filter 1 Named Filter 2 ip_allow.yaml    result
+====== ================ ============== ============== ================ 
=============
+GET    allow            \-             \-             allow (implicit) allowed 
(200)
+POST   deny             \-             \-             allow (implicit) denied  
(403)
+HEAD   allow            allow          \-             allow (implicit) allowed 
(200)
+DELETE allow            \-             deny           allow (implicit) allowed 
(200)
+PURGE  allow            \-             \-             deny             allowed 
(200)
+PUSH   allow            \-             \-             deny             allowed 
(200)
+====== ================ ============== ============== ================ 
=============
 
 Including Additional Remap Files
 ================================
diff --git a/include/proxy/http/remap/RemapConfig.h 
b/include/proxy/http/remap/RemapConfig.h
index bfceef07ca..024a86142b 100644
--- a/include/proxy/http/remap/RemapConfig.h
+++ b/include/proxy/http/remap/RemapConfig.h
@@ -26,7 +26,7 @@
 #include "proxy/http/remap/AclFiltering.h"
 
 class UrlRewrite;
-enum class ACLMatchingPolicy;
+enum class ACLBehaviorPolicy;
 
 #define BUILD_TABLE_MAX_ARGS 2048
 
@@ -56,7 +56,7 @@ struct BUILD_TABLE_INFO {
   char         *paramv[BUILD_TABLE_MAX_ARGS];
   char         *argv[BUILD_TABLE_MAX_ARGS];
 
-  ACLMatchingPolicy matching_policy;
+  ACLBehaviorPolicy behavior_policy;
   bool              ip_allow_check_enabled_p = true;
   bool              accept_check_p           = true;
 
@@ -74,7 +74,7 @@ struct BUILD_TABLE_INFO {
 const char *remap_parse_directive(BUILD_TABLE_INFO *bti, char *errbuf, size_t 
errbufsize);
 
 const char *remap_validate_filter_args(acl_filter_rule **rule_pp, const char 
**argv, int argc, char *errStrBuf,
-                                       size_t errStrBufSize, ACLMatchingPolicy 
matching_policy);
+                                       size_t errStrBufSize, ACLBehaviorPolicy 
behavior_policy);
 
 unsigned long remap_check_option(const char **argv, int argc, unsigned long 
findmode = 0, int *_ret_idx = nullptr,
                                  const char **argptr = nullptr);
diff --git a/include/proxy/http/remap/UrlRewrite.h 
b/include/proxy/http/remap/UrlRewrite.h
index 94ef4aa9bc..f9e138aeff 100644
--- a/include/proxy/http/remap/UrlRewrite.h
+++ b/include/proxy/http/remap/UrlRewrite.h
@@ -54,9 +54,9 @@ enum mapping_type {
   NONE
 };
 
-enum class ACLMatchingPolicy {
-  MATCH_ON_IP_AND_METHOD = 0,
-  MATCH_ON_IP_ONLY,
+enum class ACLBehaviorPolicy {
+  ACL_BEHAVIOR_LEGACY = 0,
+  ACL_BEHAVIOR_MODERN,
 };
 
 /**
@@ -71,11 +71,11 @@ public:
 
   /** Retrieve the configured ACL matching policy.
    *
-   * @param[out] policy The configured ACL matching policy.
+   * @param[out] policy The configured ACL behavior policy.
    * @return @c true if the policy is configured to an appropriate value, @c
    * false if not.
    */
-  static bool get_acl_matching_policy(ACLMatchingPolicy &policy);
+  static bool get_acl_behavior_policy(ACLBehaviorPolicy &policy);
 
   /** Load the configuration.
    *
@@ -239,7 +239,7 @@ public:
 
 private:
   bool              _valid               = false;
-  ACLMatchingPolicy _acl_matching_policy = 
ACLMatchingPolicy::MATCH_ON_IP_AND_METHOD;
+  ACLBehaviorPolicy _acl_behavior_policy = 
ACLBehaviorPolicy::ACL_BEHAVIOR_LEGACY;
 
   bool _mappingLookup(MappingsStore &mappings, URL *request_url, int 
request_port, const char *request_host, int request_host_len,
                       UrlMappingContainer &mapping_container);
diff --git a/src/proxy/IPAllow.cc b/src/proxy/IPAllow.cc
index d0e1e29b15..21f8cf85a7 100644
--- a/src/proxy/IPAllow.cc
+++ b/src/proxy/IPAllow.cc
@@ -202,7 +202,7 @@ IpAllow::IpAllow(const char *ip_allow_config_var, const 
char *ip_categories_conf
   : 
ip_allow_config_file(ats_scoped_str(RecConfigReadConfigPath(ip_allow_config_var)).get())
 {
   int matching_policy = 0;
-  REC_ReadConfigInteger(matching_policy, 
"proxy.config.url_remap.acl_matching_policy");
+  REC_ReadConfigInteger(matching_policy, 
"proxy.config.url_remap.acl_behavior_policy");
   if (matching_policy == 0) {
     this->_is_legacy_action_policy = true;
   } else {
diff --git a/src/proxy/http/remap/RemapConfig.cc 
b/src/proxy/http/remap/RemapConfig.cc
index a578479566..f26177f363 100644
--- a/src/proxy/http/remap/RemapConfig.cc
+++ b/src/proxy/http/remap/RemapConfig.cc
@@ -129,7 +129,7 @@ process_filter_opt(url_mapping *mp, const BUILD_TABLE_INFO 
*bti, char *errStrBuf
     for (rpp = &mp->filter; *rpp; rpp = &((*rpp)->next)) {
       ;
     }
-    errStr = remap_validate_filter_args(rpp, (const char **)bti->argv, 
bti->argc, errStrBuf, errStrBufSize, bti->matching_policy);
+    errStr = remap_validate_filter_args(rpp, (const char **)bti->argv, 
bti->argc, errStrBuf, errStrBufSize, bti->behavior_policy);
   }
 
   for (rp = bti->rules_list; rp; rp = rp->next) {
@@ -143,7 +143,7 @@ process_filter_opt(url_mapping *mp, const BUILD_TABLE_INFO 
*bti, char *errStrBuf
         ;
       }
       if ((errStr = remap_validate_filter_args(rpp, (const char **)rp->argv, 
rp->argc, errStrBuf, errStrBufSize,
-                                               bti->matching_policy)) != 
nullptr) {
+                                               bti->behavior_policy)) != 
nullptr) {
         break;
       }
     }
@@ -200,7 +200,7 @@ parse_define_directive(const char *directive, 
BUILD_TABLE_INFO *bti, char *errbu
 
   flg = ((rp = acl_filter_rule::find_byname(bti->rules_list, (const char 
*)bti->paramv[1])) == nullptr) ? true : false;
   // coverity[alloc_arg]
-  if ((cstr = remap_validate_filter_args(&rp, (const char **)bti->argv, 
bti->argc, errbuf, errbufsize, bti->matching_policy)) ==
+  if ((cstr = remap_validate_filter_args(&rp, (const char **)bti->argv, 
bti->argc, errbuf, errbufsize, bti->behavior_policy)) ==
         nullptr &&
       rp) {
     if (flg) { // new filter - add to list
@@ -442,7 +442,7 @@ remap_parse_directive(BUILD_TABLE_INFO *bti, char *errbuf, 
size_t errbufsize)
 
 const char *
 remap_validate_filter_args(acl_filter_rule **rule_pp, const char **argv, int 
argc, char *errStrBuf, size_t errStrBufSize,
-                           ACLMatchingPolicy matching_policy)
+                           ACLBehaviorPolicy behavior_policy)
 {
   acl_filter_rule *rule;
   int              i, j;
@@ -632,7 +632,7 @@ remap_validate_filter_args(acl_filter_rule **rule_pp, const 
char **argv, int arg
     }
 
     if (ul & REMAP_OPTFLG_ACTION) { /* "action=" option */
-      if (matching_policy == ACLMatchingPolicy::MATCH_ON_IP_ONLY) {
+      if (behavior_policy == ACLBehaviorPolicy::ACL_BEHAVIOR_MODERN) {
         // With the new matching policy, we don't allow the legacy "allow" and
         // "deny" actions. Users must transition to either add_allow/add_deny 
or
         // set_allow/set_deny.
@@ -1066,12 +1066,12 @@ remap_parse_config_bti(const char *path, 
BUILD_TABLE_INFO *bti)
 
   Dbg(dbg_ctl_url_rewrite, "[BuildTable] UrlRewrite::BuildTable()");
 
-  ACLMatchingPolicy matching_policy = 
ACLMatchingPolicy::MATCH_ON_IP_AND_METHOD;
-  if (!UrlRewrite::get_acl_matching_policy(matching_policy)) {
+  ACLBehaviorPolicy behavior_policy = ACLBehaviorPolicy::ACL_BEHAVIOR_LEGACY;
+  if (!UrlRewrite::get_acl_behavior_policy(behavior_policy)) {
     Warning("Failed to get ACL matching policy.");
     return false;
   }
-  bti->matching_policy = matching_policy;
+  bti->behavior_policy = behavior_policy;
 
   for (cur_line = tokLine(content.data(), &tok_state, '\\'); cur_line != 
nullptr;) {
     reg_map      = nullptr;
diff --git a/src/proxy/http/remap/UrlRewrite.cc 
b/src/proxy/http/remap/UrlRewrite.cc
index 82336b55c7..91d990beda 100644
--- a/src/proxy/http/remap/UrlRewrite.cc
+++ b/src/proxy/http/remap/UrlRewrite.cc
@@ -58,19 +58,19 @@ SetHomePageRedirectFlag(url_mapping *new_mapping, URL 
&new_to_url)
 } // end anonymous namespace
 
 bool
-UrlRewrite::get_acl_matching_policy(ACLMatchingPolicy &policy)
+UrlRewrite::get_acl_behavior_policy(ACLBehaviorPolicy &policy)
 {
-  int matching_policy = 0;
-  REC_ReadConfigInteger(matching_policy, 
"proxy.config.url_remap.acl_matching_policy");
-  switch (matching_policy) {
+  int behavior_policy = 0;
+  REC_ReadConfigInteger(behavior_policy, 
"proxy.config.url_remap.acl_behavior_policy");
+  switch (behavior_policy) {
   case 0:
-    policy = ACLMatchingPolicy::MATCH_ON_IP_AND_METHOD;
+    policy = ACLBehaviorPolicy::ACL_BEHAVIOR_LEGACY;
     break;
   case 1:
-    policy = ACLMatchingPolicy::MATCH_ON_IP_ONLY;
+    policy = ACLBehaviorPolicy::ACL_BEHAVIOR_MODERN;
     break;
   default:
-    Warning("unkown ACL Matching Policy: %d", matching_policy);
+    Warning("unkown ACL Behavior Policy: %d", behavior_policy);
     return false;
   }
   return true;
@@ -147,7 +147,7 @@ UrlRewrite::load()
   }
 
   // ACL Matching Policy
-  if (!get_acl_matching_policy(_acl_matching_policy)) {
+  if (!get_acl_behavior_policy(_acl_behavior_policy)) {
     _valid = false;
   }
 
@@ -570,13 +570,13 @@ UrlRewrite::PerformACLFiltering(HttpTransact::State *s, 
const url_mapping *const
           break;
         }
 
-        // @action=add_allow and @action=add_deny behave the same for each ACL
-        // policy behavior. The difference in behavior applies to @action=allow
-        // and @action=deny. For these, in Match on IP and Method mode they are
-        // synonyms for @action=add_allow and @action=add_deny because that is
-        // how they behaved pre-10.x.  For the Match on IP Only behavior, they
-        // behave like the corresponding ip_allow actions.
-        if (!rp->add_flag && _acl_matching_policy == 
ACLMatchingPolicy::MATCH_ON_IP_ONLY) {
+        // @action=add_allow and @action=add_deny behave the same for legacy 
and
+        // modern behavior. The difference in behavior applies to @action=allow
+        // and @action=deny. For these, in legacy mode they are synonyms for
+        // @action=add_allow and @action=add_deny because that is how they
+        // behaved pre-10.x.  For modern behavior, they behave like the
+        // corresponding ip_allow actions.
+        if (!rp->add_flag && _acl_behavior_policy == 
ACLBehaviorPolicy::ACL_BEHAVIOR_MODERN) {
           // Flipping the action for unspecified methods.
           Dbg(dbg_ctl_url_rewrite, "ACL rule matched on IP but not on method, 
action: %s, %s the request",
               rp->get_action_description(), (rp->allow_flag ? "denying" : 
"allowing"));
diff --git a/src/records/RecordsConfig.cc b/src/records/RecordsConfig.cc
index d4dd74eb51..47879359b4 100644
--- a/src/records/RecordsConfig.cc
+++ b/src/records/RecordsConfig.cc
@@ -1068,7 +1068,7 @@ static const RecordElement RecordsConfig[] =
   ,
   {RECT_CONFIG, "proxy.config.url_remap.min_rules_required", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_INT, "[0-9]+", RECA_NULL}
   ,
-  {RECT_CONFIG, "proxy.config.url_remap.acl_matching_policy", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_INT, "[0-1]", RECA_NULL}
+  {RECT_CONFIG, "proxy.config.url_remap.acl_behavior_policy", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_INT, "[0-1]", RECA_NULL}
   ,
 
   
//##############################################################################
diff --git a/tests/gold_tests/ip_allow/ip_category.test.py 
b/tests/gold_tests/ip_allow/ip_category.test.py
index b53d7e299d..76a8c1b773 100644
--- a/tests/gold_tests/ip_allow/ip_category.test.py
+++ b/tests/gold_tests/ip_allow/ip_category.test.py
@@ -230,7 +230,7 @@ class Test_ip_category:
                 'proxy.config.ssl.server.private_key.path': 
ts.Variables.SSLDir,
                 'proxy.config.ssl.client.verify.server.policy': 'PERMISSIVE',
                 'proxy.config.http.connect_ports': 
Test_ip_category._server.Variables.http_port,
-                'proxy.config.url_remap.acl_matching_policy': 1,  # TODO: 
adjust expected_responses with the default config
+                'proxy.config.url_remap.acl_behavior_policy': 1,  # TODO: 
adjust expected_responses with the default config
             })
 
         ts.Disk.remap_config.AddLine(
diff --git a/tests/gold_tests/remap/all_acl_combinations.py 
b/tests/gold_tests/remap/all_acl_combinations.py
index 6c3ce87ae6..0f76101e47 100644
--- a/tests/gold_tests/remap/all_acl_combinations.py
+++ b/tests/gold_tests/remap/all_acl_combinations.py
@@ -52,94 +52,94 @@ ip_allow:
 # yapf: disable
 keys = ["index", "policy", "inline", "named_acl", "ip_allow", "GET response", 
"POST response"]
 all_acl_combinations = [
-    [  0,  "ip_and_method",  "",                             "",               
               ALLOW_GET_AND_POST, 200, 200, ],
-    [  1,  "ip_and_method",  "",                             "",               
               ALLOW_GET,          200, 403, ],
-    [  2,  "ip_and_method",  "",                             "",               
               DENY_GET,           403, 200, ],
-    [  3,  "ip_and_method",  "",                             "",               
               DENY_GET_AND_POST,  403, 403, ],
-    [  4,  "ip_and_method",  "",                             "@action=allow 
@method=GET",     ALLOW_GET_AND_POST, 200, 200, ],
-    [  5,  "ip_and_method",  "",                             "@action=allow 
@method=GET",     ALLOW_GET,          200, 403, ],
-    [  6,  "ip_and_method",  "",                             "@action=allow 
@method=GET",     DENY_GET,           200, 200, ],
-    [  7,  "ip_and_method",  "",                             "@action=allow 
@method=GET",     DENY_GET_AND_POST,  200, 403, ],
-    [  8,  "ip_and_method",  "",                             "@action=deny  
@method=GET",     ALLOW_GET_AND_POST, 403, 200, ],
-    [  9,  "ip_and_method",  "",                             "@action=deny  
@method=GET",     ALLOW_GET,          403, 403, ],
-    [ 10,  "ip_and_method",  "",                             "@action=deny  
@method=GET",     DENY_GET,           403, 200, ],
-    [ 11,  "ip_and_method",  "",                             "@action=deny  
@method=GET",     DENY_GET_AND_POST,  403, 403, ],
-    [ 12,  "ip_and_method",  "@action=allow @method=GET",    "",               
               ALLOW_GET_AND_POST, 200, 200, ],
-    [ 13,  "ip_and_method",  "@action=allow @method=GET",    "",               
               ALLOW_GET,          200, 403, ],
-    [ 14,  "ip_and_method",  "@action=allow @method=GET",    "",               
               DENY_GET,           200, 200, ],
-    [ 15,  "ip_and_method",  "@action=allow @method=GET",    "",               
               DENY_GET_AND_POST,  200, 403, ],
-    [ 16,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=GET",     ALLOW_GET_AND_POST, 200, 200, ],
-    [ 17,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=GET",     ALLOW_GET,          200, 403, ],
-    [ 18,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=GET",     DENY_GET,           200, 200, ],
-    [ 19,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=GET",     DENY_GET_AND_POST,  200, 403, ],
-    [ 20,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=GET",     ALLOW_GET_AND_POST, 200, 200, ],
-    [ 21,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=GET",     ALLOW_GET,          200, 403, ],
-    [ 22,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=GET",     DENY_GET,           200, 200, ],
-    [ 23,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=GET",     DENY_GET_AND_POST,  200, 403, ],
-    [ 24,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=POST",    ALLOW_GET_AND_POST, 200, 200, ],
-    [ 25,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=POST",    ALLOW_GET,          200, 200, ],
-    [ 26,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=POST",    DENY_GET,           200, 200, ],
-    [ 27,  "ip_and_method",  "@action=allow @method=GET",    "@action=allow 
@method=POST",    DENY_GET_AND_POST,  200, 200, ],
-    [ 28,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=POST",    ALLOW_GET_AND_POST, 200, 403, ],
-    [ 29,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=POST",    ALLOW_GET,          200, 403, ],
-    [ 30,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=POST",    DENY_GET,           200, 403, ],
-    [ 31,  "ip_and_method",  "@action=allow @method=GET",    "@action=deny  
@method=POST",    DENY_GET_AND_POST,  200, 403, ],
-    [ 32,  "ip_and_method",  "@action=deny  @method=GET",    "",               
               ALLOW_GET_AND_POST, 403, 200, ],
-    [ 33,  "ip_and_method",  "@action=deny  @method=GET",    "",               
               ALLOW_GET,          403, 403, ],
-    [ 34,  "ip_and_method",  "@action=deny  @method=GET",    "",               
               DENY_GET,           403, 200, ],
-    [ 35,  "ip_and_method",  "@action=deny  @method=GET",    "",               
               DENY_GET_AND_POST,  403, 403, ],
-    [ 36,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=GET",     ALLOW_GET_AND_POST, 403, 200, ],
-    [ 37,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=GET",     ALLOW_GET,          403, 403, ],
-    [ 38,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=GET",     DENY_GET,           403, 200, ],
-    [ 39,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=GET",     DENY_GET_AND_POST,  403, 403, ],
-    [ 40,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=GET",     ALLOW_GET_AND_POST, 403, 200, ],
-    [ 41,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=GET",     ALLOW_GET,          403, 403, ],
-    [ 42,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=GET",     DENY_GET,           403, 200, ],
-    [ 43,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=GET",     DENY_GET_AND_POST,  403, 403, ],
-    [ 44,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=POST",    ALLOW_GET_AND_POST, 403, 200, ],
-    [ 45,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=POST",    ALLOW_GET,          403, 200, ],
-    [ 46,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=POST",    DENY_GET,           403, 200, ],
-    [ 47,  "ip_and_method",  "@action=deny  @method=GET",    "@action=allow 
@method=POST",    DENY_GET_AND_POST,  403, 200, ],
-    [ 48,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=POST",    ALLOW_GET_AND_POST, 403, 403, ],
-    [ 49,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=POST",    ALLOW_GET,          403, 403, ],
-    [ 50,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=POST",    DENY_GET,           403, 403, ],
-    [ 51,  "ip_and_method",  "@action=deny  @method=GET",    "@action=deny  
@method=POST",    DENY_GET_AND_POST,  403, 403, ],
-    [ 52,  "ip_only",       "",                              "",               
               ALLOW_GET_AND_POST, 200, 200, ],
-    [ 53,  "ip_only",       "",                              "",               
               ALLOW_GET,          200, 403, ],
-    [ 54,  "ip_only",       "",                              "",               
               DENY_GET,           403, 200, ],
-    [ 55,  "ip_only",       "",                              "",               
               DENY_GET_AND_POST,  403, 403, ],
-    [ 56,  "ip_only",       "",                              
"@action=set_allow @method=GET", ALLOW_GET_AND_POST, 200, 403, ],
-    [ 57,  "ip_only",       "",                              
"@action=set_allow @method=GET", ALLOW_GET,          200, 403, ],
-    [ 58,  "ip_only",       "",                              
"@action=set_allow @method=GET", DENY_GET,           200, 403, ],
-    [ 59,  "ip_only",       "",                              
"@action=set_allow @method=GET", DENY_GET_AND_POST,  200, 403, ],
-    [ 60,  "ip_only",       "",                              "@action=set_deny 
 @method=GET", ALLOW_GET_AND_POST, 403, 200, ],
-    [ 61,  "ip_only",       "",                              "@action=set_deny 
 @method=GET", ALLOW_GET,          403, 200, ],
-    [ 62,  "ip_only",       "",                              "@action=set_deny 
 @method=GET", DENY_GET,           403, 200, ],
-    [ 63,  "ip_only",       "",                              "@action=set_deny 
 @method=GET", DENY_GET_AND_POST,  403, 200, ],
-    [ 64,  "ip_only",       "@action=set_allow @method=GET", "",               
               ALLOW_GET_AND_POST, 200, 403, ],
-    [ 65,  "ip_only",       "@action=set_allow @method=GET", "",               
               ALLOW_GET,          200, 403, ],
-    [ 66,  "ip_only",       "@action=set_allow @method=GET", "",               
               DENY_GET,           200, 403, ],
-    [ 67,  "ip_only",       "@action=set_allow @method=GET", "",               
               DENY_GET_AND_POST,  200, 403, ],
-    [ 68,  "ip_only",       "@action=set_allow @method=GET", 
"@action=set_allow @method=GET", ALLOW_GET_AND_POST, 200, 403, ],
-    [ 69,  "ip_only",       "@action=set_allow @method=GET", 
"@action=set_allow @method=GET", ALLOW_GET,          200, 403, ],
-    [ 70,  "ip_only",       "@action=set_allow @method=GET", 
"@action=set_allow @method=GET", DENY_GET,           200, 403, ],
-    [ 71,  "ip_only",       "@action=set_allow @method=GET", 
"@action=set_allow @method=GET", DENY_GET_AND_POST,  200, 403, ],
-    [ 72,  "ip_only",       "@action=set_allow @method=GET", "@action=set_deny 
 @method=GET", ALLOW_GET_AND_POST, 200, 403, ],
-    [ 73,  "ip_only",       "@action=set_allow @method=GET", "@action=set_deny 
 @method=GET", ALLOW_GET,          200, 403, ],
-    [ 74,  "ip_only",       "@action=set_allow @method=GET", "@action=set_deny 
 @method=GET", DENY_GET,           200, 403, ],
-    [ 75,  "ip_only",       "@action=set_allow @method=GET", "@action=set_deny 
 @method=GET", DENY_GET_AND_POST,  200, 403, ],
-    [ 76,  "ip_only",       "@action=set_deny  @method=GET", "",               
               ALLOW_GET_AND_POST, 403, 200, ],
-    [ 77,  "ip_only",       "@action=set_deny  @method=GET", "",               
               ALLOW_GET,          403, 200, ],
-    [ 78,  "ip_only",       "@action=set_deny  @method=GET", "",               
               DENY_GET,           403, 200, ],
-    [ 79,  "ip_only",       "@action=set_deny  @method=GET", "",               
               DENY_GET_AND_POST,  403, 200, ],
-    [ 80,  "ip_only",       "@action=set_deny  @method=GET", 
"@action=set_allow @method=GET", ALLOW_GET_AND_POST, 403, 200, ],
-    [ 81,  "ip_only",       "@action=set_deny  @method=GET", 
"@action=set_allow @method=GET", ALLOW_GET,          403, 200, ],
-    [ 82,  "ip_only",       "@action=set_deny  @method=GET", 
"@action=set_allow @method=GET", DENY_GET,           403, 200, ],
-    [ 83,  "ip_only",       "@action=set_deny  @method=GET", 
"@action=set_allow @method=GET", DENY_GET_AND_POST,  403, 200, ],
-    [ 84,  "ip_only",       "@action=set_deny  @method=GET", "@action=set_deny 
 @method=GET", ALLOW_GET_AND_POST, 403, 200, ],
-    [ 85,  "ip_only",       "@action=set_deny  @method=GET", "@action=set_deny 
 @method=GET", ALLOW_GET,          403, 200, ],
-    [ 86,  "ip_only",       "@action=set_deny  @method=GET", "@action=set_deny 
 @method=GET", DENY_GET,           403, 200, ],
-    [ 87,  "ip_only",       "@action=set_deny  @method=GET", "@action=set_deny 
 @method=GET", DENY_GET_AND_POST,  403, 200, ],
+    [  0,  "legacy",       "",                             "",                 
              ALLOW_GET_AND_POST, 200, 200, ],
+    [  1,  "legacy",       "",                             "",                 
              ALLOW_GET,          200, 403, ],
+    [  2,  "legacy",       "",                             "",                 
              DENY_GET,           403, 200, ],
+    [  3,  "legacy",       "",                             "",                 
              DENY_GET_AND_POST,  403, 403, ],
+    [  4,  "legacy",       "",                             "@action=allow 
@method=GET",      ALLOW_GET_AND_POST, 200, 200, ],
+    [  5,  "legacy",       "",                             "@action=allow 
@method=GET",      ALLOW_GET,          200, 403, ],
+    [  6,  "legacy",       "",                             "@action=allow 
@method=GET",      DENY_GET,           200, 200, ],
+    [  7,  "legacy",       "",                             "@action=allow 
@method=GET",      DENY_GET_AND_POST,  200, 403, ],
+    [  8,  "legacy",       "",                             "@action=deny  
@method=GET",      ALLOW_GET_AND_POST, 403, 200, ],
+    [  9,  "legacy",       "",                             "@action=deny  
@method=GET",      ALLOW_GET,          403, 403, ],
+    [ 10,  "legacy",       "",                             "@action=deny  
@method=GET",      DENY_GET,           403, 200, ],
+    [ 11,  "legacy",       "",                             "@action=deny  
@method=GET",      DENY_GET_AND_POST,  403, 403, ],
+    [ 12,  "legacy",       "@action=allow @method=GET",    "",                 
              ALLOW_GET_AND_POST, 200, 200, ],
+    [ 13,  "legacy",       "@action=allow @method=GET",    "",                 
              ALLOW_GET,          200, 403, ],
+    [ 14,  "legacy",       "@action=allow @method=GET",    "",                 
              DENY_GET,           200, 200, ],
+    [ 15,  "legacy",       "@action=allow @method=GET",    "",                 
              DENY_GET_AND_POST,  200, 403, ],
+    [ 16,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=GET",      ALLOW_GET_AND_POST, 200, 200, ],
+    [ 17,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=GET",      ALLOW_GET,          200, 403, ],
+    [ 18,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=GET",      DENY_GET,           200, 200, ],
+    [ 19,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=GET",      DENY_GET_AND_POST,  200, 403, ],
+    [ 20,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=GET",      ALLOW_GET_AND_POST, 200, 200, ],
+    [ 21,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=GET",      ALLOW_GET,          200, 403, ],
+    [ 22,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=GET",      DENY_GET,           200, 200, ],
+    [ 23,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=GET",      DENY_GET_AND_POST,  200, 403, ],
+    [ 24,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=POST",     ALLOW_GET_AND_POST, 200, 200, ],
+    [ 25,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=POST",     ALLOW_GET,          200, 200, ],
+    [ 26,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=POST",     DENY_GET,           200, 200, ],
+    [ 27,  "legacy",       "@action=allow @method=GET",    "@action=allow 
@method=POST",     DENY_GET_AND_POST,  200, 200, ],
+    [ 28,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=POST",     ALLOW_GET_AND_POST, 200, 403, ],
+    [ 29,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=POST",     ALLOW_GET,          200, 403, ],
+    [ 30,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=POST",     DENY_GET,           200, 403, ],
+    [ 31,  "legacy",       "@action=allow @method=GET",    "@action=deny  
@method=POST",     DENY_GET_AND_POST,  200, 403, ],
+    [ 32,  "legacy",       "@action=deny  @method=GET",    "",                 
              ALLOW_GET_AND_POST, 403, 200, ],
+    [ 33,  "legacy",       "@action=deny  @method=GET",    "",                 
              ALLOW_GET,          403, 403, ],
+    [ 34,  "legacy",       "@action=deny  @method=GET",    "",                 
              DENY_GET,           403, 200, ],
+    [ 35,  "legacy",       "@action=deny  @method=GET",    "",                 
              DENY_GET_AND_POST,  403, 403, ],
+    [ 36,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=GET",      ALLOW_GET_AND_POST, 403, 200, ],
+    [ 37,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=GET",      ALLOW_GET,          403, 403, ],
+    [ 38,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=GET",      DENY_GET,           403, 200, ],
+    [ 39,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=GET",      DENY_GET_AND_POST,  403, 403, ],
+    [ 40,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=GET",      ALLOW_GET_AND_POST, 403, 200, ],
+    [ 41,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=GET",      ALLOW_GET,          403, 403, ],
+    [ 42,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=GET",      DENY_GET,           403, 200, ],
+    [ 43,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=GET",      DENY_GET_AND_POST,  403, 403, ],
+    [ 44,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=POST",     ALLOW_GET_AND_POST, 403, 200, ],
+    [ 45,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=POST",     ALLOW_GET,          403, 200, ],
+    [ 46,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=POST",     DENY_GET,           403, 200, ],
+    [ 47,  "legacy",       "@action=deny  @method=GET",    "@action=allow 
@method=POST",     DENY_GET_AND_POST,  403, 200, ],
+    [ 48,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=POST",     ALLOW_GET_AND_POST, 403, 403, ],
+    [ 49,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=POST",     ALLOW_GET,          403, 403, ],
+    [ 50,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=POST",     DENY_GET,           403, 403, ],
+    [ 51,  "legacy",       "@action=deny  @method=GET",    "@action=deny  
@method=POST",     DENY_GET_AND_POST,  403, 403, ],
+    [ 52,  "modern",       "",                              "",                
              ALLOW_GET_AND_POST, 200, 200, ],
+    [ 53,  "modern",       "",                              "",                
              ALLOW_GET,          200, 403, ],
+    [ 54,  "modern",       "",                              "",                
              DENY_GET,           403, 200, ],
+    [ 55,  "modern",       "",                              "",                
              DENY_GET_AND_POST,  403, 403, ],
+    [ 56,  "modern",       "",                              "@action=set_allow 
@method=GET", ALLOW_GET_AND_POST, 200, 403, ],
+    [ 57,  "modern",       "",                              "@action=set_allow 
@method=GET", ALLOW_GET,          200, 403, ],
+    [ 58,  "modern",       "",                              "@action=set_allow 
@method=GET", DENY_GET,           200, 403, ],
+    [ 59,  "modern",       "",                              "@action=set_allow 
@method=GET", DENY_GET_AND_POST,  200, 403, ],
+    [ 60,  "modern",       "",                              "@action=set_deny  
@method=GET", ALLOW_GET_AND_POST, 403, 200, ],
+    [ 61,  "modern",       "",                              "@action=set_deny  
@method=GET", ALLOW_GET,          403, 200, ],
+    [ 62,  "modern",       "",                              "@action=set_deny  
@method=GET", DENY_GET,           403, 200, ],
+    [ 63,  "modern",       "",                              "@action=set_deny  
@method=GET", DENY_GET_AND_POST,  403, 200, ],
+    [ 64,  "modern",       "@action=set_allow @method=GET", "",                
              ALLOW_GET_AND_POST, 200, 403, ],
+    [ 65,  "modern",       "@action=set_allow @method=GET", "",                
              ALLOW_GET,          200, 403, ],
+    [ 66,  "modern",       "@action=set_allow @method=GET", "",                
              DENY_GET,           200, 403, ],
+    [ 67,  "modern",       "@action=set_allow @method=GET", "",                
              DENY_GET_AND_POST,  200, 403, ],
+    [ 68,  "modern",       "@action=set_allow @method=GET", "@action=set_allow 
@method=GET", ALLOW_GET_AND_POST, 200, 403, ],
+    [ 69,  "modern",       "@action=set_allow @method=GET", "@action=set_allow 
@method=GET", ALLOW_GET,          200, 403, ],
+    [ 70,  "modern",       "@action=set_allow @method=GET", "@action=set_allow 
@method=GET", DENY_GET,           200, 403, ],
+    [ 71,  "modern",       "@action=set_allow @method=GET", "@action=set_allow 
@method=GET", DENY_GET_AND_POST,  200, 403, ],
+    [ 72,  "modern",       "@action=set_allow @method=GET", "@action=set_deny  
@method=GET", ALLOW_GET_AND_POST, 200, 403, ],
+    [ 73,  "modern",       "@action=set_allow @method=GET", "@action=set_deny  
@method=GET", ALLOW_GET,          200, 403, ],
+    [ 74,  "modern",       "@action=set_allow @method=GET", "@action=set_deny  
@method=GET", DENY_GET,           200, 403, ],
+    [ 75,  "modern",       "@action=set_allow @method=GET", "@action=set_deny  
@method=GET", DENY_GET_AND_POST,  200, 403, ],
+    [ 76,  "modern",       "@action=set_deny  @method=GET", "",                
              ALLOW_GET_AND_POST, 403, 200, ],
+    [ 77,  "modern",       "@action=set_deny  @method=GET", "",                
              ALLOW_GET,          403, 200, ],
+    [ 78,  "modern",       "@action=set_deny  @method=GET", "",                
              DENY_GET,           403, 200, ],
+    [ 79,  "modern",       "@action=set_deny  @method=GET", "",                
              DENY_GET_AND_POST,  403, 200, ],
+    [ 80,  "modern",       "@action=set_deny  @method=GET", "@action=set_allow 
@method=GET", ALLOW_GET_AND_POST, 403, 200, ],
+    [ 81,  "modern",       "@action=set_deny  @method=GET", "@action=set_allow 
@method=GET", ALLOW_GET,          403, 200, ],
+    [ 82,  "modern",       "@action=set_deny  @method=GET", "@action=set_allow 
@method=GET", DENY_GET,           403, 200, ],
+    [ 83,  "modern",       "@action=set_deny  @method=GET", "@action=set_allow 
@method=GET", DENY_GET_AND_POST,  403, 200, ],
+    [ 84,  "modern",       "@action=set_deny  @method=GET", "@action=set_deny  
@method=GET", ALLOW_GET_AND_POST, 403, 200, ],
+    [ 85,  "modern",       "@action=set_deny  @method=GET", "@action=set_deny  
@method=GET", ALLOW_GET,          403, 200, ],
+    [ 86,  "modern",       "@action=set_deny  @method=GET", "@action=set_deny  
@method=GET", DENY_GET,           403, 200, ],
+    [ 87,  "modern",       "@action=set_deny  @method=GET", "@action=set_deny  
@method=GET", DENY_GET_AND_POST,  403, 200, ],
 ]
 # yapf: enable
 
diff --git a/tests/gold_tests/remap/deactivate_ip_allow.py 
b/tests/gold_tests/remap/deactivate_ip_allow.py
index 7cfabcbc42..12763bc1ed 100644
--- a/tests/gold_tests/remap/deactivate_ip_allow.py
+++ b/tests/gold_tests/remap/deactivate_ip_allow.py
@@ -61,58 +61,58 @@ ip_allow:
 # yapf: disable
 keys = ["index", "policy", "inline", "named_acl", "deactivate_ip_allow", 
"ip_allow", "GET response", "POST response"]
 deactivate_ip_allow_combinations = [
-    [  0,  "ip_and_method",  "",                          "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
-    [  1,  "ip_and_method",  "",                          "", False, 
ALLOW_GET,          200, 403,   ],
-    [  2,  "ip_and_method",  "",                          "", False, DENY_GET, 
          403, 200,   ],
-    [  3,  "ip_and_method",  "",                          "", False, 
DENY_GET_AND_POST,  403, 403,   ],
-    [  4,  "ip_and_method",  "",                          "", False, DENY_ALL, 
          None, None, ],
-    [  5,  "ip_and_method",  "",                          "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
-    [  6,  "ip_and_method",  "",                          "", True,  
ALLOW_GET,          200, 200,   ],
-    [  7,  "ip_and_method",  "",                          "", True,  DENY_GET, 
          200, 200,   ],
-    [  8,  "ip_and_method",  "",                          "", True,  
DENY_GET_AND_POST,  200, 200,   ],
-    [  9,  "ip_and_method",  "",                          "", True,  DENY_ALL, 
          200, 200,   ],
-    [ 10,  "ip_and_method",  "@action=allow @method=GET", "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
-    [ 11,  "ip_and_method",  "@action=allow @method=GET", "", False, 
ALLOW_GET,          200, 403,   ],
-    [ 12,  "ip_and_method",  "@action=allow @method=GET", "", False, DENY_GET, 
          200, 200,   ],
-    [ 13,  "ip_and_method",  "@action=allow @method=GET", "", False, 
DENY_GET_AND_POST,  200, 403,   ],
-    [ 14,  "ip_and_method",  "@action=allow @method=GET", "", False, DENY_ALL, 
          None, None, ],
-    [ 15,  "ip_and_method",  "@action=allow @method=GET", "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
-    [ 16,  "ip_and_method",  "@action=allow @method=GET", "", True,  
ALLOW_GET,          200, 200,   ],
-    [ 17,  "ip_and_method",  "@action=allow @method=GET", "", True,  DENY_GET, 
          200, 200,   ],
-    [ 18,  "ip_and_method",  "@action=allow @method=GET", "", True,  
DENY_GET_AND_POST,  200, 200,   ],
-    [ 19,  "ip_and_method",  "@action=allow @method=GET", "", True,  DENY_ALL, 
          200, 200,   ],
-    [ 20,  "ip_and_method",  "@action=deny  @method=GET", "", False, 
ALLOW_GET_AND_POST, 403, 200,   ],
-    [ 21,  "ip_and_method",  "@action=deny  @method=GET", "", False, 
ALLOW_GET,          403, 403,   ],
-    [ 22,  "ip_and_method",  "@action=deny  @method=GET", "", False, DENY_GET, 
          403, 200,   ],
-    [ 23,  "ip_and_method",  "@action=deny  @method=GET", "", False, 
DENY_GET_AND_POST,  403, 403,   ],
-    [ 24,  "ip_and_method",  "@action=deny  @method=GET", "", False, DENY_ALL, 
          None, None, ],
-    [ 25,  "ip_and_method",  "@action=deny  @method=GET", "", True,  
ALLOW_GET_AND_POST, 403, 200,   ],
-    [ 26,  "ip_and_method",  "@action=deny  @method=GET", "", True,  
ALLOW_GET,          403, 200,   ],
-    [ 27,  "ip_and_method",  "@action=deny  @method=GET", "", True,  DENY_GET, 
          403, 200,   ],
-    [ 28,  "ip_and_method",  "@action=deny  @method=GET", "", True,  
DENY_GET_AND_POST,  403, 200,   ],
-    [ 29,  "ip_and_method",  "@action=deny  @method=GET", "", True,  DENY_ALL, 
          403, 200,   ],
+    [  0,  "legacy",  "",                          "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
+    [  1,  "legacy",  "",                          "", False, ALLOW_GET,       
   200, 403,   ],
+    [  2,  "legacy",  "",                          "", False, DENY_GET,        
   403, 200,   ],
+    [  3,  "legacy",  "",                          "", False, 
DENY_GET_AND_POST,  403, 403,   ],
+    [  4,  "legacy",  "",                          "", False, DENY_ALL,        
   None, None, ],
+    [  5,  "legacy",  "",                          "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
+    [  6,  "legacy",  "",                          "", True,  ALLOW_GET,       
   200, 200,   ],
+    [  7,  "legacy",  "",                          "", True,  DENY_GET,        
   200, 200,   ],
+    [  8,  "legacy",  "",                          "", True,  
DENY_GET_AND_POST,  200, 200,   ],
+    [  9,  "legacy",  "",                          "", True,  DENY_ALL,        
   200, 200,   ],
+    [ 10,  "legacy",  "@action=allow @method=GET", "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
+    [ 11,  "legacy",  "@action=allow @method=GET", "", False, ALLOW_GET,       
   200, 403,   ],
+    [ 12,  "legacy",  "@action=allow @method=GET", "", False, DENY_GET,        
   200, 200,   ],
+    [ 13,  "legacy",  "@action=allow @method=GET", "", False, 
DENY_GET_AND_POST,  200, 403,   ],
+    [ 14,  "legacy",  "@action=allow @method=GET", "", False, DENY_ALL,        
   None, None, ],
+    [ 15,  "legacy",  "@action=allow @method=GET", "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
+    [ 16,  "legacy",  "@action=allow @method=GET", "", True,  ALLOW_GET,       
   200, 200,   ],
+    [ 17,  "legacy",  "@action=allow @method=GET", "", True,  DENY_GET,        
   200, 200,   ],
+    [ 18,  "legacy",  "@action=allow @method=GET", "", True,  
DENY_GET_AND_POST,  200, 200,   ],
+    [ 19,  "legacy",  "@action=allow @method=GET", "", True,  DENY_ALL,        
   200, 200,   ],
+    [ 20,  "legacy",  "@action=deny  @method=GET", "", False, 
ALLOW_GET_AND_POST, 403, 200,   ],
+    [ 21,  "legacy",  "@action=deny  @method=GET", "", False, ALLOW_GET,       
   403, 403,   ],
+    [ 22,  "legacy",  "@action=deny  @method=GET", "", False, DENY_GET,        
   403, 200,   ],
+    [ 23,  "legacy",  "@action=deny  @method=GET", "", False, 
DENY_GET_AND_POST,  403, 403,   ],
+    [ 24,  "legacy",  "@action=deny  @method=GET", "", False, DENY_ALL,        
   None, None, ],
+    [ 25,  "legacy",  "@action=deny  @method=GET", "", True,  
ALLOW_GET_AND_POST, 403, 200,   ],
+    [ 26,  "legacy",  "@action=deny  @method=GET", "", True,  ALLOW_GET,       
   403, 200,   ],
+    [ 27,  "legacy",  "@action=deny  @method=GET", "", True,  DENY_GET,        
   403, 200,   ],
+    [ 28,  "legacy",  "@action=deny  @method=GET", "", True,  
DENY_GET_AND_POST,  403, 200,   ],
+    [ 29,  "legacy",  "@action=deny  @method=GET", "", True,  DENY_ALL,        
   403, 200,   ],
 
-    # Verify in ip_and_method mode that add_allow acts just like allow, and 
add_deny acts just like deny.
-    [ 30,  "ip_and_method",  "@action=add_allow @method=GET", "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
-    [ 31,  "ip_and_method",  "@action=add_allow @method=GET", "", False, 
ALLOW_GET,          200, 403,   ],
-    [ 32,  "ip_and_method",  "@action=add_allow @method=GET", "", False, 
DENY_GET,           200, 200,   ],
-    [ 33,  "ip_and_method",  "@action=add_allow @method=GET", "", False, 
DENY_GET_AND_POST,  200, 403,   ],
-    [ 34,  "ip_and_method",  "@action=add_allow @method=GET", "", False, 
DENY_ALL,           None, None, ],
-    [ 35,  "ip_and_method",  "@action=add_allow @method=GET", "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
-    [ 36,  "ip_and_method",  "@action=add_allow @method=GET", "", True,  
ALLOW_GET,          200, 200,   ],
-    [ 37,  "ip_and_method",  "@action=add_allow @method=GET", "", True,  
DENY_GET,           200, 200,   ],
-    [ 38,  "ip_and_method",  "@action=add_allow @method=GET", "", True,  
DENY_GET_AND_POST,  200, 200,   ],
-    [ 39,  "ip_and_method",  "@action=add_allow @method=GET", "", True,  
DENY_ALL,           200, 200,   ],
-    [ 40,  "ip_and_method",  "@action=add_deny  @method=GET", "", False, 
ALLOW_GET_AND_POST, 403, 200,   ],
-    [ 41,  "ip_and_method",  "@action=add_deny  @method=GET", "", False, 
ALLOW_GET,          403, 403,   ],
-    [ 42,  "ip_and_method",  "@action=add_deny  @method=GET", "", False, 
DENY_GET,           403, 200,   ],
-    [ 43,  "ip_and_method",  "@action=add_deny  @method=GET", "", False, 
DENY_GET_AND_POST,  403, 403,   ],
-    [ 44,  "ip_and_method",  "@action=add_deny  @method=GET", "", False, 
DENY_ALL,           None, None, ],
-    [ 45,  "ip_and_method",  "@action=add_deny  @method=GET", "", True,  
ALLOW_GET_AND_POST, 403, 200,   ],
-    [ 46,  "ip_and_method",  "@action=add_deny  @method=GET", "", True,  
ALLOW_GET,          403, 200,   ],
-    [ 47,  "ip_and_method",  "@action=add_deny  @method=GET", "", True,  
DENY_GET,           403, 200,   ],
-    [ 48,  "ip_and_method",  "@action=add_deny  @method=GET", "", True,  
DENY_GET_AND_POST,  403, 200,   ],
-    [ 49,  "ip_and_method",  "@action=add_deny  @method=GET", "", True,  
DENY_ALL,           403, 200,   ],
+    # Verify in legacy mode that add_allow acts just like allow, and add_deny 
acts just like deny.
+    [ 30,  "legacy",  "@action=add_allow @method=GET", "", False, 
ALLOW_GET_AND_POST, 200, 200,   ],
+    [ 31,  "legacy",  "@action=add_allow @method=GET", "", False, ALLOW_GET,   
       200, 403,   ],
+    [ 32,  "legacy",  "@action=add_allow @method=GET", "", False, DENY_GET,    
       200, 200,   ],
+    [ 33,  "legacy",  "@action=add_allow @method=GET", "", False, 
DENY_GET_AND_POST,  200, 403,   ],
+    [ 34,  "legacy",  "@action=add_allow @method=GET", "", False, DENY_ALL,    
       None, None, ],
+    [ 35,  "legacy",  "@action=add_allow @method=GET", "", True,  
ALLOW_GET_AND_POST, 200, 200,   ],
+    [ 36,  "legacy",  "@action=add_allow @method=GET", "", True,  ALLOW_GET,   
       200, 200,   ],
+    [ 37,  "legacy",  "@action=add_allow @method=GET", "", True,  DENY_GET,    
       200, 200,   ],
+    [ 38,  "legacy",  "@action=add_allow @method=GET", "", True,  
DENY_GET_AND_POST,  200, 200,   ],
+    [ 39,  "legacy",  "@action=add_allow @method=GET", "", True,  DENY_ALL,    
       200, 200,   ],
+    [ 40,  "legacy",  "@action=add_deny  @method=GET", "", False, 
ALLOW_GET_AND_POST, 403, 200,   ],
+    [ 41,  "legacy",  "@action=add_deny  @method=GET", "", False, ALLOW_GET,   
       403, 403,   ],
+    [ 42,  "legacy",  "@action=add_deny  @method=GET", "", False, DENY_GET,    
       403, 200,   ],
+    [ 43,  "legacy",  "@action=add_deny  @method=GET", "", False, 
DENY_GET_AND_POST,  403, 403,   ],
+    [ 44,  "legacy",  "@action=add_deny  @method=GET", "", False, DENY_ALL,    
       None, None, ],
+    [ 45,  "legacy",  "@action=add_deny  @method=GET", "", True,  
ALLOW_GET_AND_POST, 403, 200,   ],
+    [ 46,  "legacy",  "@action=add_deny  @method=GET", "", True,  ALLOW_GET,   
       403, 200,   ],
+    [ 47,  "legacy",  "@action=add_deny  @method=GET", "", True,  DENY_GET,    
       403, 200,   ],
+    [ 48,  "legacy",  "@action=add_deny  @method=GET", "", True,  
DENY_GET_AND_POST,  403, 200,   ],
+    [ 49,  "legacy",  "@action=add_deny  @method=GET", "", True,  DENY_ALL,    
       403, 200,   ],
 ]
 all_deactivate_ip_allow_tests = [dict(zip(keys, test)) for test in 
deactivate_ip_allow_combinations]
 # yapf: enable
diff --git a/tests/gold_tests/remap/remap_acl.test.py 
b/tests/gold_tests/remap/remap_acl.test.py
index 9115723ee5..d70f6655e9 100644
--- a/tests/gold_tests/remap/remap_acl.test.py
+++ b/tests/gold_tests/remap/remap_acl.test.py
@@ -37,7 +37,7 @@ class Test_remap_acl:
     _client_counter: int = 0
 
     def __init__(
-            self, name: str, replay_file: str, ip_allow_content: str, 
deactivate_ip_allow: bool, acl_matching_policy: int,
+            self, name: str, replay_file: str, ip_allow_content: str, 
deactivate_ip_allow: bool, acl_behavior_policy: int,
             acl_configuration: str, named_acls: List[Tuple[str, str]], 
expected_responses: List[int]):
         """Initialize the test.
 
@@ -52,7 +52,7 @@ class Test_remap_acl:
         self._replay_file = replay_file
         self._ip_allow_content = ip_allow_content
         self._deactivate_ip_allow = deactivate_ip_allow
-        self._acl_matching_policy = acl_matching_policy
+        self._acl_behavior_policy = acl_behavior_policy
         self._acl_configuration = acl_configuration
         self._named_acls = named_acls
         self._expected_responses = expected_responses
@@ -89,7 +89,7 @@ class Test_remap_acl:
                 'proxy.config.diags.debug.tags': 'http|url|remap|ip_allow',
                 'proxy.config.http.push_method_enabled': 1,
                 'proxy.config.http.connect_ports': 
self._server.Variables.http_port,
-                'proxy.config.url_remap.acl_matching_policy': 
self._acl_matching_policy,
+                'proxy.config.url_remap.acl_behavior_policy': 
self._acl_behavior_policy,
             })
 
         remap_config_lines = []
@@ -164,7 +164,7 @@ class Test_old_action:
             {
                 'proxy.config.diags.debug.enabled': 1,
                 'proxy.config.diags.debug.tags': 'http|url|remap|ip_allow',
-                'proxy.config.url_remap.acl_matching_policy': 1,
+                'proxy.config.url_remap.acl_behavior_policy': 1,
             })
 
         ts.Disk.remap_config.AddLine(f'map / http://127.0.0.1:8080 
{acl_filter}')
@@ -236,7 +236,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -246,7 +246,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=add_allow @src_ip=127.0.0.1 @method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -256,7 +256,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=add_allow @src_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -266,7 +266,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=1.2.3.4 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 403, 403, 403, 403])
@@ -276,7 +276,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=all @method=GET @method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -286,7 +286,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip_category=ACME_LOCAL 
@method=GET @method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -296,7 +296,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @method=GET @method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -306,7 +306,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_deny @src_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[403, 403, 200, 200, 400])
@@ -316,7 +316,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=add_deny @src_ip=127.0.0.1 @method=GET',
     named_acls=[],
     expected_responses=[403, 403, 403, 403, 403])
@@ -326,7 +326,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=1.2.3.4 @method=GET 
@method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[403, 403, 403, 403, 403])
@@ -336,7 +336,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=~127.0.0.1 @method=GET 
@method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[403, 403, 403, 403, 403])
@@ -346,7 +346,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=~3.4.5.6 @method=GET 
@method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[200, 200, 403, 403, 403])
@@ -356,7 +356,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip_category=~ACME_LOCAL 
@method=GET @method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[403, 403, 403, 403, 403])
@@ -366,7 +366,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip_category=~ACME_EXTERNAL 
@method=GET @method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[200, 200, 403, 403, 403])
@@ -376,7 +376,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_denied.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     # The rule will not match because, while @src_ip matches, @src_ip_category 
does not.
     acl_configuration='@action=set_allow @src_ip=127.0.0.1 
@src_ip_category=ACME_EXTERNAL @method=GET @method=POST',
     # Therefore, this named deny filter will block.
@@ -388,7 +388,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[('deny', '@action=set_deny')],
     expected_responses=[200, 200, 403, 403, 403])
@@ -398,7 +398,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @src_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -408,7 +408,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_all_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=True,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     # This won't match, so nothing will match since ip_allow.yaml is off.
     acl_configuration='@action=set_allow @src_ip=1.2.3.4 @method=GET 
@method=POST',
     named_acls=[],
@@ -420,7 +420,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_post_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @in_ip=127.0.0.1 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 200, 403, 403, 403])
@@ -430,7 +430,7 @@ test_ip_allow_optional_methods = Test_remap_acl(
     replay_file='remap_acl_get_allowed.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='@action=set_allow @in_ip=3.4.5.6 @method=GET 
@method=POST',
     named_acls=[],
     expected_responses=[200, 403, 403, 403, 403])
@@ -440,7 +440,7 @@ test_named_acl_deny = Test_remap_acl(
     replay_file='deny_head_post.replay.yaml',
     ip_allow_content=IP_ALLOW_CONTENT,
     deactivate_ip_allow=False,
-    acl_matching_policy=1,
+    acl_behavior_policy=1,
     acl_configuration='',
     named_acls=[('deny', '@action=set_deny @method=HEAD @method=POST')],
     expected_responses=[200, 403, 403, 403])
@@ -488,7 +488,7 @@ for idx, test in enumerate(all_acl_combination_tests):
         replay_file=replay_file_name,
         ip_allow_content=test["ip_allow"],
         deactivate_ip_allow=False,
-        acl_matching_policy=0 if test["policy"] == "ip_and_method" else 1,
+        acl_behavior_policy=0 if test["policy"] == "legacy" else 1,
         acl_configuration=test["inline"],
         named_acls=[("acl", test["named_acl"])] if test["named_acl"] != "" 
else [],
         expected_responses=[test["GET response"], test["POST response"]],
@@ -513,7 +513,7 @@ for idx, test in enumerate(all_deactivate_ip_allow_tests):
         replay_file=replay_file_name,
         ip_allow_content=test["ip_allow"],
         deactivate_ip_allow=test["deactivate_ip_allow"],
-        acl_matching_policy=0 if test["policy"] == "ip_and_method" else 1,
+        acl_behavior_policy=0 if test["policy"] == "legacy" else 1,
         acl_configuration=test["inline"],
         named_acls=[("acl", test["named_acl"])] if test["named_acl"] != "" 
else [],
         expected_responses=[test["GET response"], test["POST response"]])

Reply via email to