On Wed, Apr 6, 2022 at 7:33 AM Dumitru Ceara <[email protected]> wrote:
>
> This option changes how logical switch ACL related flows are generated
> such that the following behavior is ensured:
>
> a. If a logical switch has no ACL applied to it (either directly or
> indirectly via a port group) then traffic is always allowed in the
> ls_in_acl, ls_in_acl_after_lb, ls_out_acl stages.
>
> b. If a logical switch has ACLs applied (directly or indirectly) and
> NB_Global.options:default_acl_drop is set to 'false', then traffic that
> doesn't match any ACL in the ls_in_acl, ls_in_acl_after_lb, ls_out_acl
> stages is allowed to advance to the next step in the processing
> pipeline.
>
> c. If a logical switch has *any* ACL applied (directly or indirectly)
> and NB_Global.options:default_acl_drop is set to 'true', then a default
> lowest-priority rule is added to the ls_in_acl, ls_in_acl_after_lb,
> ls_out_acl stages to drop traffic that is not matched by any ACLs.
>
> The goal of the feature is to simplify the configuration of the ACLs and
> port groups for CMSs that require a default-deny firewall
> implementation.  One such example is with OpenStack security groups
> which, when enabled, implicitly drop all not explicitly allowed traffic.
>
> Until now the CMS had to add all logical ports corresponding to VMs in a
> network to a single, huge, default-drop-port-group and apply a single
> drop ACL to the port group.
>
> With this new feature, the CMS can enable 'default_acl_drop', and punch
> holes for traffic that needs to be allowed.  The resulting NB and SB
> configuration is also reduced in size.
>
> Reported-by: Daniel Alvarez Sanchez <[email protected]>
> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1947807
> Signed-off-by: Dumitru Ceara <[email protected]>
> ---
> NOTE:
> I'm sending this patch as RFC because I'd like to discuss alternatives
> for the default behavior when the knob is enabled and logical switches
> don't have any ACLs set.
>
> Also, it would be interesting to see if this feature, or something
> similar would also be beneficial for other CMSs, e.g., ovn-kubernetes
> (CC-ing Tim Rozet).

Thanks Dumitru. This feature looks good. For ovn-kubernetes, I wonder it
may not be helpful because network policies are applied on endpoints, and
there is no way for a network policy be mapped to a logical switch in
ovn-k8s because there is no mappings between applications/services and
logical switches (which is node level object), so the ACLs would all have
the inport/outport matches, and the default deny/allow has to be applied to
each LSP level.  Tim may correct me if I am wrong. Regardless, it is a
useful feature for OpenStack and probably other CMS.

I have two comments, please see below.

> ---
>  NEWS                |   2 +
>  northd/northd.c     |  31 +++++--
>  ovn-nb.xml          |   8 ++
>  tests/ovn-northd.at | 218 ++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 253 insertions(+), 6 deletions(-)
>
> diff --git a/NEWS b/NEWS
> index 3e8358723d..377d3f8cea 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -4,6 +4,8 @@ Post v22.03.0
>      different OVN Interconnection availability zones.
>    - Replaced the usage of masked ct_label by ct_mark in most cases to
work
>      better with hardware-offloading.
> +  - Add global option (NB_Global.options:default_acl_drop) to enable
> +    implicit drop behavior on logical switches with ACLs applied.
>
>  OVN v22.03.0 - 11 Mar 2022
>  --------------------------
> diff --git a/northd/northd.c b/northd/northd.c
> index 8dae72180d..77a2f49724 100644
> --- a/northd/northd.c
> +++ b/northd/northd.c
> @@ -73,6 +73,12 @@ static struct eth_addr svc_monitor_mac_ea;
>   * Otherwise, it will avoid using it.  The default is true. */
>  static bool use_ct_inv_match = true;
>
> +/* If this option is 'true' northd will implicitly add a lowest-priority
> + * drop rule in the ACL stage of logical switches that have at least one
> + * ACL.
> + */
> +static bool default_acl_drop;
> +
>  #define MAX_OVN_TAGS 4096
>
>  /* Pipeline stages. */
> @@ -6588,6 +6594,7 @@ static void
>  build_acls(struct ovn_datapath *od, struct hmap *lflows,
>             const struct hmap *port_groups, const struct shash
*meter_groups)
>  {
> +    const char *default_acl_action = default_acl_drop ? "drop;" :
"next;";
>      bool has_stateful = od->has_stateful_acl || od->has_lb_vip;
>      struct ds match   = DS_EMPTY_INITIALIZER;
>      struct ds actions = DS_EMPTY_INITIALIZER;
> @@ -6599,15 +6606,26 @@ build_acls(struct ovn_datapath *od, struct hmap
*lflows,
>       *
>       * A related rule at priority 1 is added below if there
>       * are any stateful ACLs in this datapath. */
> -    if (!od->has_acls && !od->has_lb_vip) {
> -        ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL, UINT16_MAX, "1",
"next;");
> -        ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL, UINT16_MAX, "1",
"next;");
> +    if (!od->has_acls) {
> +        if (!od->has_lb_vip) {
> +            ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL, UINT16_MAX, "1",
> +                          "next;");
> +            ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL, UINT16_MAX, "1",
> +                          "next;");
> +        } else {
> +            ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL, 1, "1", "next;");
> +            ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL, 1, "1", "next;");
> +        }
> +        ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_AFTER_LB, 0, "1",
"next;");
>      } else {
> -        ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL, 0, "1", "next;");
> -        ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL, 0, "1", "next;");
> +        ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL, 0, "1",
> +                      default_acl_action);
> +        ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL, 0, "1",
> +                      default_acl_action);
> +        ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_AFTER_LB, 0, "1",
> +                      default_acl_action);

Should the packet be dropped if we just don't add the lflow with "next"? It
may save some flows but I agree that it doesn't make big differences.

>      }
>
> -    ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_AFTER_LB, 0, "1", "next;");
>
>      if (has_stateful) {

It seems the patch didn't take care of the stateful scenario? If
has_stateful, there are priority 1 flows to forward the packets.

Thanks,
Han

>          /* Ingress and Egress ACL Table (Priority 1).
> @@ -15190,6 +15208,7 @@ ovnnb_db_run(struct northd_input *input_data,
>                                          "controller_event", false);
>      check_lsp_is_up = !smap_get_bool(&nb->options,
>                                       "ignore_lsp_down", true);
> +    default_acl_drop = smap_get_bool(&nb->options, "default_acl_drop",
false);
>
>      build_datapaths(input_data, ovnsb_txn, &data->datapaths,
&data->lr_list);
>      build_lbs(input_data, &data->datapaths, &data->lbs);
> diff --git a/ovn-nb.xml b/ovn-nb.xml
> index 4d7a23c527..47347819f1 100644
> --- a/ovn-nb.xml
> +++ b/ovn-nb.xml
> @@ -255,6 +255,14 @@
>          </p>
>        </column>
>
> +      <column name="options" key="default_acl_drop">
> +        <p>
> +          If set to <code>true</code>., <code>ovn-northd</code> will
> +          generate a logical flow to drop all traffic in the ACL stages.
> +          By default this option is set to <code>false</code>.
> +        </p>
> +      </column>
> +
>        <group title="Options for configuring interconnection route
advertisement">
>          <p>
>            These options control how routes are advertised between OVN
> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> index 317f024f64..3699f5bd23 100644
> --- a/tests/ovn-northd.at
> +++ b/tests/ovn-northd.at
> @@ -6480,3 +6480,221 @@ AT_CHECK([grep -e "ls_in_stateful" lsflows | sed
's/table=../table=??/' | sort],
>
>  AT_CLEANUP
>  ])
> +
> +OVN_FOR_EACH_NORTHD([
> +AT_SETUP([LS default ACL drop])
> +AT_KEYWORDS([acl])
> +
> +ovn_start
> +
> +check ovn-nbctl ls-add ls
> +
> +AS_BOX([No ACL, default_acl_drop not set])
> +check ovn-nbctl --wait=sb sync
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([No ACL, default_acl_drop false])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=false
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([No ACL, default_acl_drop true])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=true
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=65535, match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport ACL])
> +check ovn-nbctl acl-del ls
> +check ovn-nbctl acl-add ls from-lport 1 "ip" allow
> +
> +AS_BOX([from-lport ACL, default_acl_drop not set])
> +check ovn-nbctl --wait=sb remove NB_Global . options default_acl_drop
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport ACL, default_acl_drop false])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=false
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport ACL, default_acl_drop true])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=true
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl          ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport --apply-after-lb ACL])
> +check ovn-nbctl acl-del ls
> +check ovn-nbctl --apply-after-lb acl-add ls from-lport 1 "ip" allow
> +
> +AS_BOX([from-lport --apply-after-lb ACL, default_acl_drop not set])
> +check ovn-nbctl --wait=sb remove NB_Global . options default_acl_drop
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport --apply-after-lb ACL, default_acl_drop false])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=false
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([from-lport --apply-after-lb ACL, default_acl_drop true])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=true
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl_after_lb ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([to-lport ACL])
> +check ovn-nbctl acl-del ls
> +check ovn-nbctl acl-add ls to-lport 1 "ip" allow
> +
> +AS_BOX([to-lport ACL, default_acl_drop not set])
> +check ovn-nbctl --wait=sb remove NB_Global . options default_acl_drop
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([to-lport ACL, default_acl_drop false])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=false
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_acl         ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AS_BOX([to-lport ACL, default_acl_drop true])
> +check ovn-nbctl --wait=sb set NB_Global . options:default_acl_drop=true
> +AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | sed
's/table=../table=??/' | sort], [0], [dnl
> +  table=??(ls_in_acl          ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl          ), priority=34000, match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_in_acl_after_lb ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_in_acl_hint     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_in_pre_acl      ), priority=110  , match=(eth.dst ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl         ), priority=0    , match=(1),
action=(drop;)
> +  table=??(ls_out_acl         ), priority=1001 , match=(ip),
action=(next;)
> +  table=??(ls_out_acl         ), priority=34000, match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +  table=??(ls_out_acl_hint    ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=0    , match=(1),
action=(next;)
> +  table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src ==
$svc_monitor_mac), action=(next;)
> +])
> +
> +AT_CLEANUP
> +])
> --
> 2.27.0
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to