Message ID | 20250507145900.317243-1-dceara@redhat.com |
---|---|
State | Accepted |
Headers | show |
Series | [ovs-dev] northd: Remove redundant ct state matches. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/github-robot-_ovn-kubernetes | fail | github build: failed |
On Wed, May 7, 2025 at 4:59 PM Dumitru Ceara via dev < ovs-dev@openvswitch.org> wrote: > There were at least three types of redundant matches in northd generated > logical flows: > a. ct.est && !ct.new -> this can be simplified to ct.est because > "established" implies "not new" > b. ct.est && !ct.inv -> this can be simplified to ct.est because > "established" implies "not invalid" (*) > c. ct.rel && !ct.inv -> this can be simplified to ct.rel because > "related" implies "not invalid". > > (*) There's a single case in the OVS userspace conntrack in which we > could end up with some malformed FTP control packets that have > ct_state=+trk+est+inv but after a private discussion with Ilya Maximets > that's probably just a minor bug in the userspace conntrack > implementation. > > Spotted during code review. > > Signed-off-by: Dumitru Ceara <dceara@redhat.com> > --- > northd/northd.c | 22 ++++---- > tests/ovn-northd.at | 122 ++++++++++++++++++++++---------------------- > 2 files changed, 70 insertions(+), 74 deletions(-) > > diff --git a/northd/northd.c b/northd/northd.c > index 7b05147b41..2ab49fc27e 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -7646,10 +7646,9 @@ build_acl_log_related_flows(const struct > ovn_datapath *od, > S_SWITCH_OUT_ACL_EVAL : > S_SWITCH_IN_ACL_EVAL; > ds_clear(match); > - ds_put_format(match, "ct.est && !ct.rel && !ct.new%s && " > - "ct.rpl && ct_mark.blocked == 0 && " > - "ct_label.label == %" PRId64, > - use_ct_inv_match ? " && !ct.inv" : "", > + ds_put_format(match, "ct.est && !ct.rel && ct.rpl && " > + "ct_mark.blocked == 0 && " > + "ct_label.label == %" PRId64, > acl->label); > ovn_lflow_add_with_hint(lflows, od, log_related_stage, > UINT16_MAX - 2, > @@ -7657,11 +7656,10 @@ build_acl_log_related_flows(const struct > ovn_datapath *od, > &acl->header_, lflow_ref); > > ds_clear(match); > - ds_put_format(match, "!ct.est && ct.rel && !ct.new%s && " > + ds_put_format(match, "!ct.est && ct.rel && !ct.new && " > "ct_mark.blocked == 0 && " > "ct_label.label == %" PRId64, > - use_ct_inv_match ? " && !ct.inv" : "", > - acl->label); > + acl->label); > ovn_lflow_add_with_hint(lflows, od, log_related_stage, > UINT16_MAX - 2, > ds_cstr(match), ds_cstr(actions), > @@ -7799,9 +7797,8 @@ build_acls(const struct ls_stateful_record > *ls_stateful_rec, > * > * This is enforced at a higher priority than ACLs can be > defined. */ > ds_clear(&match); > - ds_put_format(&match, "ct.est && !ct.rel && !ct.new%s && " > - "ct.rpl && ct_mark.blocked == 0", > - use_ct_inv_match ? " && !ct.inv" : ""); > + ds_put_cstr(&match, "ct.est && !ct.rel && ct.rpl && " > + "ct_mark.blocked == 0"); > ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_EVAL, UINT16_MAX - 3, > ds_cstr(&match), REGBIT_ACL_HINT_DROP" = 0; " > REGBIT_ACL_HINT_BLOCK" = 0; " > @@ -7831,9 +7828,8 @@ build_acls(const struct ls_stateful_record > *ls_stateful_rec, > const char *ct_out_acl_action = > REGBIT_ACL_VERDICT_ALLOW" = 1; ct_commit_nat;"; > ds_clear(&match); > - ds_put_format(&match, "!ct.est && ct.rel && !ct.new%s " > - "&& ct_mark.blocked == 0", > - use_ct_inv_match ? " && !ct.inv" : ""); > + ds_put_cstr(&match, "!ct.est && ct.rel && !ct.new && " > + "ct_mark.blocked == 0"); > ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_EVAL, UINT16_MAX - 3, > ds_cstr(&match), ct_in_acl_action, lflow_ref); > ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL_EVAL, UINT16_MAX - 3, > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at > index 69b75fe9de..756e11faab 100644 > --- a/tests/ovn-northd.at > +++ b/tests/ovn-northd.at > @@ -2717,8 +2717,8 @@ check ovn-nbctl --wait=sb \ > AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e > ls_out_acl_hint -e ls_in_acl -e ls_out_acl | grep 'ct\.' | > ovn_strip_lflows], [0], [dnl > table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_hint ), priority=1 , match=(ct.est && > ct_mark.blocked == 0), action=(reg0[[10]] = 1; next;) > @@ -2730,8 +2730,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e > ls_in_acl_hint -e ls_out_acl_hint -e > table=??(ls_in_acl_hint ), priority=7 , match=(ct.new && > !ct.est), action=(reg0[[7]] = 1; reg0[[9]] = 1; reg0[[1]] = 1; next;) > table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_hint ), priority=1 , match=(ct.est && > ct_mark.blocked == 0), action=(reg0[[10]] = 1; next;) > @@ -2761,8 +2761,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e > ls_in_acl_hint -e ls_out_acl_hint -e > table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && > (ip)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && > (ip)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -2780,8 +2780,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e > ls_in_acl_hint -e ls_out_acl_hint -e > table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && > (ip)), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && > (ip)), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -5049,16 +5049,16 @@ ovn-sbctl dump-flows sw0 > sw0flows > AT_CAPTURE_FILE([sw0flows]) > > AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > ]) > > AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -5073,7 +5073,7 @@ AT_CAPTURE_FILE([sw0flows]) > AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > table=??(ls_in_acl_eval ), priority=65532, match=((ct.est && ct.rpl > && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; > reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > ]) > @@ -5081,7 +5081,7 @@ AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep > 6553 | ovn_strip_lflows], [0] > AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > table=??(ls_out_acl_eval ), priority=65532, match=((ct.est && ct.rpl > && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > ]) > @@ -5097,23 +5097,23 @@ ovn-sbctl dump-flows sw0 > sw0flows > AT_CAPTURE_FILE([sw0flows]) > > AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > ]) > > AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | > ovn_strip_lflows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > ]) > > AT_CHECK([grep -c "ct.inv" sw0flows], [0], [dnl > -6 > +2 > ]) > > AT_CLEANUP > @@ -7857,10 +7857,10 @@ check_log_flows_count 0 in > > # Now ensure the flows are what we expect them to be for the ACLs we > created > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > ]) > > rm log_flows > @@ -7878,10 +7878,10 @@ check_log_flows_count 0 in > > # And the log flows will remain the same since the stateless ACL will not > be represented. > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > ]) > > rm log_flows > @@ -7900,8 +7900,8 @@ check_log_flows_count 0 in > > # And make sure only the allow ACL has the log flows installed > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > ]) > > rm log_flows > @@ -7917,8 +7917,8 @@ check_log_flows_count 0 in > > # And make sure only the allow ACL has the log flows installed > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > ]) > > rm log_flows > @@ -7962,10 +7962,10 @@ check_log_flows_count 0 out > > # Now ensure the flows are what we expect them to be for the ACLs we > created > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > ]) > > rm log_flows > @@ -7983,10 +7983,10 @@ check_log_flows_count 0 out > > # And the log flows will remain the same since the stateless ACL will not > be represented. > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), > action=(log(name="allow_related_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > ]) > > rm log_flows > @@ -8005,8 +8005,8 @@ check_log_flows_count 0 out > > # And make sure only the allow ACL has the log flows installed > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > ]) > > rm log_flows > @@ -8022,8 +8022,8 @@ check_log_flows_count 0 out > > # And make sure only the allow ACL has the log flows installed > AT_CHECK([cat log_flows], [0], [dnl > - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label > == 1), action=(log(name="allow_acl", severity=info, verdict=allow); > reg8[[16]] = 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), > action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = > 1; next;) > ]) > > rm log_flows > @@ -8123,8 +8123,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e > "ls_in_acl_hint" lsflows | ovn_strip_lflo > table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[10]] == 1 > && (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; ct_commit { > ct_mark.blocked = 1; ct_label.obs_point_id = 0; }; next;) > table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[9]] == 1 && > (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -8182,8 +8182,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e > "ls_in_acl_hint" lsflows | ovn_strip_lflo > table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -8241,8 +8241,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e > "ls_in_acl_hint" lsflows | ovn_strip_lflo > table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[7]] == 1 && > (ip4 && icmp)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[8]] == 1 && > (ip4 && icmp)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -8786,8 +8786,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && > (ip4 && tcp)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && > (ip4 && tcp)), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -8814,8 +8814,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -8986,8 +8986,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -9014,8 +9014,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -9184,8 +9184,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), > action=(next;) > table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && > ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; > reg8[[16]] = 1; ct_commit_nat;) > - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; > next;) > + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = > 1; ct_commit_nat;) > + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; > reg0[[17]] = 1; reg8[[16]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; > next;) > table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > @@ -9214,8 +9214,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" > | ovn_strip_lflows], [0], [ > table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && > (ip4 && tcp)), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && > (ip4 && tcp)), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == > $svc_monitor_mac), action=(reg8[[16]] = 1; next;) > - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), > action=(reg8[[16]] = 1; next;) > + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel > && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; > ct_commit_nat;) > + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel > && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && > ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est > && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) > table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || > nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) > -- > 2.49.0 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Thank you Dumitru, I went ahead and merged this into main. Regards, Ales
On 5/16/25 12:12 PM, Ales Musil wrote:
> I went ahead and merged this into main.
Thanks a lot Ales!
Regards,
Dumitru
diff --git a/northd/northd.c b/northd/northd.c index 7b05147b41..2ab49fc27e 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -7646,10 +7646,9 @@ build_acl_log_related_flows(const struct ovn_datapath *od, S_SWITCH_OUT_ACL_EVAL : S_SWITCH_IN_ACL_EVAL; ds_clear(match); - ds_put_format(match, "ct.est && !ct.rel && !ct.new%s && " - "ct.rpl && ct_mark.blocked == 0 && " - "ct_label.label == %" PRId64, - use_ct_inv_match ? " && !ct.inv" : "", + ds_put_format(match, "ct.est && !ct.rel && ct.rpl && " + "ct_mark.blocked == 0 && " + "ct_label.label == %" PRId64, acl->label); ovn_lflow_add_with_hint(lflows, od, log_related_stage, UINT16_MAX - 2, @@ -7657,11 +7656,10 @@ build_acl_log_related_flows(const struct ovn_datapath *od, &acl->header_, lflow_ref); ds_clear(match); - ds_put_format(match, "!ct.est && ct.rel && !ct.new%s && " + ds_put_format(match, "!ct.est && ct.rel && !ct.new && " "ct_mark.blocked == 0 && " "ct_label.label == %" PRId64, - use_ct_inv_match ? " && !ct.inv" : "", - acl->label); + acl->label); ovn_lflow_add_with_hint(lflows, od, log_related_stage, UINT16_MAX - 2, ds_cstr(match), ds_cstr(actions), @@ -7799,9 +7797,8 @@ build_acls(const struct ls_stateful_record *ls_stateful_rec, * * This is enforced at a higher priority than ACLs can be defined. */ ds_clear(&match); - ds_put_format(&match, "ct.est && !ct.rel && !ct.new%s && " - "ct.rpl && ct_mark.blocked == 0", - use_ct_inv_match ? " && !ct.inv" : ""); + ds_put_cstr(&match, "ct.est && !ct.rel && ct.rpl && " + "ct_mark.blocked == 0"); ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_EVAL, UINT16_MAX - 3, ds_cstr(&match), REGBIT_ACL_HINT_DROP" = 0; " REGBIT_ACL_HINT_BLOCK" = 0; " @@ -7831,9 +7828,8 @@ build_acls(const struct ls_stateful_record *ls_stateful_rec, const char *ct_out_acl_action = REGBIT_ACL_VERDICT_ALLOW" = 1; ct_commit_nat;"; ds_clear(&match); - ds_put_format(&match, "!ct.est && ct.rel && !ct.new%s " - "&& ct_mark.blocked == 0", - use_ct_inv_match ? " && !ct.inv" : ""); + ds_put_cstr(&match, "!ct.est && ct.rel && !ct.new && " + "ct_mark.blocked == 0"); ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_EVAL, UINT16_MAX - 3, ds_cstr(&match), ct_in_acl_action, lflow_ref); ovn_lflow_add(lflows, od, S_SWITCH_OUT_ACL_EVAL, UINT16_MAX - 3, diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index 69b75fe9de..756e11faab 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -2717,8 +2717,8 @@ check ovn-nbctl --wait=sb \ AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e ls_out_acl_hint -e ls_in_acl -e ls_out_acl | grep 'ct\.' | ovn_strip_lflows], [0], [dnl table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_hint ), priority=1 , match=(ct.est && ct_mark.blocked == 0), action=(reg0[[10]] = 1; next;) @@ -2730,8 +2730,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e ls_out_acl_hint -e table=??(ls_in_acl_hint ), priority=7 , match=(ct.new && !ct.est), action=(reg0[[7]] = 1; reg0[[9]] = 1; reg0[[1]] = 1; next;) table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_hint ), priority=1 , match=(ct.est && ct_mark.blocked == 0), action=(reg0[[10]] = 1; next;) @@ -2761,8 +2761,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e ls_out_acl_hint -e table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -2780,8 +2780,8 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e ls_out_acl_hint -e table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip)), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip)), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -5049,16 +5049,16 @@ ovn-sbctl dump-flows sw0 > sw0flows AT_CAPTURE_FILE([sw0flows]) AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) ]) AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -5073,7 +5073,7 @@ AT_CAPTURE_FILE([sw0flows]) AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) table=??(ls_in_acl_eval ), priority=65532, match=((ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) ]) @@ -5081,7 +5081,7 @@ AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0] AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) table=??(ls_out_acl_eval ), priority=65532, match=((ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) ]) @@ -5097,23 +5097,23 @@ ovn-sbctl dump-flows sw0 > sw0flows AT_CAPTURE_FILE([sw0flows]) AT_CHECK([grep -w "ls_in_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) ]) AT_CHECK([grep -w "ls_out_acl_eval" sw0flows | grep 6553 | ovn_strip_lflows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) ]) AT_CHECK([grep -c "ct.inv" sw0flows], [0], [dnl -6 +2 ]) AT_CLEANUP @@ -7857,10 +7857,10 @@ check_log_flows_count 0 in # Now ensure the flows are what we expect them to be for the ACLs we created AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -7878,10 +7878,10 @@ check_log_flows_count 0 in # And the log flows will remain the same since the stateless ACL will not be represented. AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -7900,8 +7900,8 @@ check_log_flows_count 0 in # And make sure only the allow ACL has the log flows installed AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -7917,8 +7917,8 @@ check_log_flows_count 0 in # And make sure only the allow ACL has the log flows installed AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -7962,10 +7962,10 @@ check_log_flows_count 0 out # Now ensure the flows are what we expect them to be for the ACLs we created AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -7983,10 +7983,10 @@ check_log_flows_count 0 out # And the log flows will remain the same since the stateless ACL will not be represented. AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 2), action=(log(name="allow_related_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -8005,8 +8005,8 @@ check_log_flows_count 0 out # And make sure only the allow ACL has the log flows installed AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -8022,8 +8022,8 @@ check_log_flows_count 0 out # And make sure only the allow ACL has the log flows installed AT_CHECK([cat log_flows], [0], [dnl - table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65533, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0 && ct_label.label == 1), action=(log(name="allow_acl", severity=info, verdict=allow); reg8[[16]] = 1; next;) ]) rm log_flows @@ -8123,8 +8123,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e "ls_in_acl_hint" lsflows | ovn_strip_lflo table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[10]] == 1 && (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; ct_commit { ct_mark.blocked = 1; ct_label.obs_point_id = 0; }; next;) table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[9]] == 1 && (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -8182,8 +8182,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e "ls_in_acl_hint" lsflows | ovn_strip_lflo table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -8241,8 +8241,8 @@ AT_CHECK([grep -e "ls_in_acl.*eval" -e "ls_in_acl_hint" lsflows | ovn_strip_lflo table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[7]] == 1 && (ip4 && icmp)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[8]] == 1 && (ip4 && icmp)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -8786,8 +8786,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -8814,8 +8814,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -8986,8 +8986,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -9014,8 +9014,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_out_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_out_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -9184,8 +9184,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;) table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) + table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg0[[21]] = 1; reg8[[16]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;) @@ -9214,8 +9214,8 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E "ls_.*_acl" | ovn_strip_lflows], [0], [ table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=34000, match=(eth.src == $svc_monitor_mac), action=(reg8[[16]] = 1; next;) - table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) - table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) + table=??(ls_out_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && ct_mark.blocked == 0), action=(reg8[[16]] = 1; ct_commit_nat;) + table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && !ct.rel && ct.rpl && ct_mark.blocked == 0), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.est && ct_mark.allow_established == 1), action=(reg8[[16]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;) table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)
There were at least three types of redundant matches in northd generated logical flows: a. ct.est && !ct.new -> this can be simplified to ct.est because "established" implies "not new" b. ct.est && !ct.inv -> this can be simplified to ct.est because "established" implies "not invalid" (*) c. ct.rel && !ct.inv -> this can be simplified to ct.rel because "related" implies "not invalid". (*) There's a single case in the OVS userspace conntrack in which we could end up with some malformed FTP control packets that have ct_state=+trk+est+inv but after a private discussion with Ilya Maximets that's probably just a minor bug in the userspace conntrack implementation. Spotted during code review. Signed-off-by: Dumitru Ceara <dceara@redhat.com> --- northd/northd.c | 22 ++++---- tests/ovn-northd.at | 122 ++++++++++++++++++++++---------------------- 2 files changed, 70 insertions(+), 74 deletions(-)