On Tue, Sep 6, 2022 at 6:02 AM Ales Musil <[email protected]> wrote:
>
> The current behavior is that load balancers
> default to tcp protocol if it is not specified.
> However, this is not propagated to lflows which
> specify proto only when port is specified as part
> of the protocol e.g. udp.port == X. Always include
> the protocol in the lb flow even if the port is not
> specified.
>
> Signed-off-by: Ales Musil <[email protected]>

Hi Ales,

Sorry that I don't understand the problem. The ovn-nb.xml defines:

    <column name="protocol">
      <p>
        Valid protocols are <code>tcp</code>, <code>udp</code>, or
        <code>sctp</code>.  This column is useful when a port number is
        provided as part of the <code>vips</code> column.  If this column is
        empty and a port number is provided as part of <code>vips</code>
        column, OVN assumes the protocol to be <code>tcp</code>.
      </p>
    </column>

So it defaults to TCP only if a port number is provided. Your patch seems
to change this definition and is trying to default to TCP even if a port
number is NOT provided? Did I misunderstand?

Thanks,
Han

> ---
>  northd/northd.c           |  7 +++--
>  tests/ovn-northd.at       | 56 +++++++++++++++++++--------------------
>  tests/ovn.at              |  6 ++---
>  utilities/ovn-nbctl.8.xml |  5 ++--
>  4 files changed, 36 insertions(+), 38 deletions(-)
>
> diff --git a/northd/northd.c b/northd/northd.c
> index 7e2681865..3ab335fec 100644
> --- a/northd/northd.c
> +++ b/northd/northd.c
> @@ -6870,9 +6870,8 @@ build_lb_rules(struct hmap *lflows, struct
ovn_northd_lb *lb, bool ct_lb_mark,
>                            lb_vip->vip_str);
>          }
>
> -        const char *proto = NULL;
> +        const char *proto = "tcp";
>          if (lb_vip->vip_port) {
> -            proto = "tcp";
>              if (lb->nlb->protocol) {
>                  if (!strcmp(lb->nlb->protocol, "udp")) {
>                      proto = "udp";
> @@ -6894,8 +6893,8 @@ build_lb_rules(struct hmap *lflows, struct
ovn_northd_lb *lb, bool ct_lb_mark,
>                                             lb->selection_fields, true,
>                                             ct_lb_mark);
>
> -        ds_put_format(match, "ct.new && %s.dst == %s", ip_match,
> -                      lb_vip->vip_str);
> +        ds_put_format(match, "ct.new && %s.dst == %s && %s", ip_match,
> +                      lb_vip->vip_str, proto);
>          int priority = 110;
>          if (lb_vip->vip_port) {
>              ds_put_format(match, " && %s.dst == %d", proto,
lb_vip->vip_port);
> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> index 157f9f60c..6559a6ade 100644
> --- a/tests/ovn-northd.at
> +++ b/tests/ovn-northd.at
> @@ -1227,7 +1227,7 @@ check ovn-nbctl --wait=sb ls-lb-add sw0 lb1
>  AT_CAPTURE_FILE([sbflows])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows | grep
'priority=120.*backends' | sed 's/table=..//'], 0, [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Delete the Load_Balancer_Health_Check])
> @@ -1237,7 +1237,7 @@ wait_row_count Service_Monitor 0
>  AT_CAPTURE_FILE([sbflows2])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows2 | grep
'priority=120.*backends' | sed 's/table=..//'], [0],
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Create the Load_Balancer_Health_Check again.])
> @@ -1249,7 +1249,7 @@ check ovn-nbctl --wait=sb sync
>
>  ovn-sbctl dump-flows sw0 | grep backends | grep priority=120 > lflows.txt
>  AT_CHECK([cat lflows.txt | sed 's/table=..//'], [0], [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Get the uuid of both the service_monitor])
> @@ -1259,7 +1259,7 @@ sm_sw1_p1=$(fetch_column Service_Monitor _uuid
logical_port=sw1-p1)
>  AT_CAPTURE_FILE([sbflows3])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows 3 | grep
'priority=120.*backends' | sed 's/table=..//'], [0],
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Set the service monitor for sw1-p1 to offline])
> @@ -1270,7 +1270,7 @@ check ovn-nbctl --wait=sb sync
>  AT_CAPTURE_FILE([sbflows4])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows4 | grep
'priority=120.*backends' | sed 's/table=..//'], [0],
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
>  ])
>
>  AS_BOX([Set the service monitor for sw0-p1 to offline])
> @@ -1285,8 +1285,8 @@ OVS_WAIT_FOR_OUTPUT(
>
>  AT_CAPTURE_FILE([sbflows6])
>  OVS_WAIT_FOR_OUTPUT(
> -  [ovn-sbctl dump-flows sw0 | tee sbflows6 | grep "ip4.dst == 10.0.0.10
&& tcp.dst == 80" | grep priority=120 | sed 's/table=..//'], [0], [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(drop;)
> +  [ovn-sbctl dump-flows sw0 | tee sbflows6 | grep "ip4.dst == 10.0.0.10
&& tcp && tcp.dst == 80" | grep priority=120 | sed 's/table=..//'], [0],
[dnl
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(drop;)
>  ])
>
>  AS_BOX([Set the service monitor for sw0-p1 and sw1-p1 to online])
> @@ -1299,7 +1299,7 @@ check ovn-nbctl --wait=sb sync
>  AT_CAPTURE_FILE([sbflows7])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows7 | grep backends | grep
priority=120 | sed 's/table=..//'], 0,
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Set the service monitor for sw1-p1 to error])
> @@ -1307,10 +1307,10 @@ ovn-sbctl set service_monitor $sm_sw1_p1
status=error
>  wait_row_count Service_Monitor 1 logical_port=sw1-p1 status=error
>  check ovn-nbctl --wait=sb sync
>
> -ovn-sbctl dump-flows sw0 | grep "ip4.dst == 10.0.0.10 && tcp.dst == 80" \
> +ovn-sbctl dump-flows sw0 | grep "ip4.dst == 10.0.0.10 && tcp && tcp.dst
== 80" \
>  | grep priority=120 > lflows.txt
>  AT_CHECK([cat lflows.txt | sed 's/table=..//'], [0], [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
>  ])
>
>  AS_BOX([Add one more vip to lb1])
> @@ -1336,8 +1336,8 @@ AT_CAPTURE_FILE([sbflows9])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows9 | grep backends | grep
priority=120 | sed 's/table=..//' | sort],
>    0,
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 = 10.0.0.40;
reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 =
10.0.0.40; reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000);)
>  ])
>
>  AS_BOX([Set the service monitor for sw1-p1 to online])
> @@ -1350,8 +1350,8 @@ AT_CAPTURE_FILE([sbflows10])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw0 | tee sbflows10 | grep backends | grep
priority=120 | sed 's/table=..//' | sort],
>    0,
> -[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 = 10.0.0.40;
reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000,20.0.0.3:80);)
> +[  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 =
10.0.0.40; reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Associate lb1 to sw1])
> @@ -1360,8 +1360,8 @@ AT_CAPTURE_FILE([sbflows11])
>  OVS_WAIT_FOR_OUTPUT(
>    [ovn-sbctl dump-flows sw1 | tee sbflows11 | grep backends | grep
priority=120 | sed 's/table=..//' | sort],
>    0, [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 = 10.0.0.40;
reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000,20.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb(backends=10.0.0.3:80,20.0.0.3:80);)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.40 && tcp && tcp.dst == 1000), action=(reg0[[1]] = 0; reg1 =
10.0.0.40; reg2[[0..15]] = 1000; ct_lb(backends=10.0.0.3:1000,20.0.0.3:80);)
>  ])
>
>  AS_BOX([Now create lb2 same as lb1 but udp protocol.])
> @@ -1417,8 +1417,8 @@ ovn-sbctl set service_monitor $sm_sw1_p1
status=offline
>
>  AT_CAPTURE_FILE([sbflows12])
>  OVS_WAIT_FOR_OUTPUT(
> -  [ovn-sbctl dump-flows sw0 | tee sbflows12 | grep "ip4.dst == 10.0.0.10
&& tcp.dst == 80" | grep priority=120 | sed 's/table=..//'], [0], [dnl
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0 = 0; reject { outport <-> inport;
next(pipeline=egress,table=5);};)
> +  [ovn-sbctl dump-flows sw0 | tee sbflows12 | grep "ip4.dst == 10.0.0.10
&& tcp && tcp.dst == 80" | grep priority=120 | sed 's/table=..//'], [0],
[dnl
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0 = 0; reject { outport <->
inport; next(pipeline=egress,table=5);};)
>  ])
>
>  AT_CLEANUP
> @@ -3899,8 +3899,8 @@ check_stateful_flows() {
>
>      AT_CHECK([grep "ls_in_lb" sw0flows | sort | sed
's/table=../table=??/'], [0], [dnl
>    table=??(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.4:8080);)
> -  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.20 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.20; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.40:8080);)
> +  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1
= 10.0.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.4:8080);)
> +  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.20 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1
= 10.0.0.20; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.40:8080);)
>  ])
>
>      AT_CHECK([grep "ls_in_stateful" sw0flows | sort | sed
's/table=../table=??/'], [0], [dnl
> @@ -6415,7 +6415,7 @@ AT_CHECK([grep -e "ls_in_acl" lsflows | sed
's/table=../table=??/' | sort], [0],
>
>  AT_CHECK([grep -e "ls_in_lb" lsflows | sed 's/table=../table=??/' |
sort], [0], [dnl
>    table=??(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
> +  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2 && tcp), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
>  ])
>
>  AT_CHECK([grep -e "ls_in_stateful" lsflows | sed 's/table=../table=??/'
| sort], [0], [dnl
> @@ -6468,7 +6468,7 @@ AT_CHECK([grep -e "ls_in_acl" lsflows | sed
's/table=../table=??/' | sort], [0],
>
>  AT_CHECK([grep -e "ls_in_lb" lsflows | sed 's/table=../table=??/' |
sort], [0], [dnl
>    table=??(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
> +  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2 && tcp), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
>  ])
>
>  AT_CHECK([grep -e "ls_in_stateful" lsflows | sed 's/table=../table=??/'
| sort], [0], [dnl
> @@ -6521,7 +6521,7 @@ AT_CHECK([grep -e "ls_in_acl" lsflows | sed
's/table=../table=??/' | sort], [0],
>
>  AT_CHECK([grep -e "ls_in_lb" lsflows | sed 's/table=../table=??/' |
sort], [0], [dnl
>    table=??(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
> +  table=??(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 10.0.0.2 && tcp), action=(reg0[[1]] = 0; reg1 = 10.0.0.2;
ct_lb_mark(backends=10.0.0.10);)
>  ])
>
>  AT_CHECK([grep -e "ls_in_stateful" lsflows | sed 's/table=../table=??/'
| sort], [0], [dnl
> @@ -7487,7 +7487,7 @@ AT_CHECK([ovn-sbctl lflow-list | grep -e natted -e
ct_lb], [0], [dnl
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && tcp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = tcp.dst;
ct_lb_mark;)
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && udp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = udp.dst;
ct_lb_mark;)
>    table=6 (ls_in_pre_stateful ), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb_mark;)
> -  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb_mark(backends=42.42.42.2);)
> +  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66 && tcp), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb_mark(backends=42.42.42.2);)
>    table=2 (ls_out_pre_stateful), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb_mark;)
>  ])
>
> @@ -7504,7 +7504,7 @@ AT_CHECK([ovn-sbctl lflow-list | grep -e natted -e
ct_lb], [0], [dnl
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && tcp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = tcp.dst; ct_lb;)
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && udp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = udp.dst; ct_lb;)
>    table=6 (ls_in_pre_stateful ), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb;)
> -  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb(backends=42.42.42.2);)
> +  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66 && tcp), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb(backends=42.42.42.2);)
>    table=2 (ls_out_pre_stateful), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb;)
>  ])
>
> @@ -7521,7 +7521,7 @@ AT_CHECK([ovn-sbctl lflow-list | grep -e natted -e
ct_lb], [0], [dnl
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && tcp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = tcp.dst;
ct_lb_mark;)
>    table=6 (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1
&& ip6 && udp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = udp.dst;
ct_lb_mark;)
>    table=6 (ls_in_pre_stateful ), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb_mark;)
> -  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb_mark(backends=42.42.42.2);)
> +  table=11(ls_in_lb           ), priority=110  , match=(ct.new &&
ip4.dst == 66.66.66.66 && tcp), action=(reg0[[1]] = 0; reg1 = 66.66.66.66;
ct_lb_mark(backends=42.42.42.2);)
>    table=2 (ls_out_pre_stateful), priority=110  , match=(reg0[[2]] == 1),
action=(ct_lb_mark;)
>  ])
>
> @@ -7692,11 +7692,11 @@ AT_CAPTURE_FILE([S1flows])
>
>  AT_CHECK([grep "ls_in_lb" S0flows | sort], [0], [dnl
>    table=11(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=11(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 172.16.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
172.16.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.2:80);)
> +  table=11(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 172.16.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0;
reg1 = 172.16.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.2:80);)
>  ])
>  AT_CHECK([grep "ls_in_lb" S1flows | sort], [0], [dnl
>    table=11(ls_in_lb           ), priority=0    , match=(1),
action=(next;)
> -  table=11(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 172.16.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
172.16.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.2:80);)
> +  table=11(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 172.16.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0;
reg1 = 172.16.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.2:80);)
>  ])
>
>  ovn-sbctl get datapath S0 _uuid > dp_uuids
> diff --git a/tests/ovn.at b/tests/ovn.at
> index c2bcb721a..6dbb88a5e 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -23606,7 +23606,7 @@ OVS_WAIT_FOR_OUTPUT(
>    (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1 && ip6 &&
sctp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = sctp.dst; ct_lb_mark;)
>    (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1 && ip6 &&
tcp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = tcp.dst; ct_lb_mark;)
>    (ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1 && ip6 &&
udp), action=(xxreg1 = ip6.dst; reg2[[0..15]] = udp.dst; ct_lb_mark;)
> -  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 = 10.0.0.10;
reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.3:80,20.0.0.3:80;
hash_fields="ip_dst,ip_src,tcp_dst,tcp_src");)
> +  (ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst ==
10.0.0.10 && tcp && tcp.dst == 80), action=(reg0[[1]] = 0; reg1 =
10.0.0.10; reg2[[0..15]] = 80; ct_lb_mark(backends=10.0.0.3:80,20.0.0.3:80;
hash_fields="ip_dst,ip_src,tcp_dst,tcp_src");)
>  ])
>
>  AT_CAPTURE_FILE([sbflows2])
> @@ -23646,9 +23646,9 @@ grep "405400000003${svc_mon_src_mac}" | wc -l`]
>  AT_CAPTURE_FILE([sbflows3])
>  ovn-sbctl dump-flows sw0 > sbflows3
>  AT_CHECK(
> -  [grep "ip4.dst == 10.0.0.10 && tcp.dst == 80" sbflows3 | grep
priority=120 |\
> +  [grep "ip4.dst == 10.0.0.10 && tcp && tcp.dst == 80" sbflows3 | grep
priority=120 |\
>     sed 's/table=../table=??/'], [0],
> -  [  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.10 && tcp.dst == 80), action=(drop;)
> +  [  table=??(ls_in_lb           ), priority=120  , match=(ct.new &&
ip4.dst == 10.0.0.10 && tcp && tcp.dst == 80), action=(drop;)
>  ])
>
>  AT_CAPTURE_FILE([sbflows4])
> diff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml
> index 040d05227..a127c5b34 100644
> --- a/utilities/ovn-nbctl.8.xml
> +++ b/utilities/ovn-nbctl.8.xml
> @@ -1276,9 +1276,8 @@
>           The optional argument <var>protocol</var> must be either
>           <code>tcp</code>,  <code>udp</code> or <code>sctp</code>. This
argument
>           is useful when a port number is provided as part of the
<var>vip</var>.
> -         If the <var>protocol</var> is unspecified and a port number is
provided
> -         as part of the <var>vip</var>, OVN assumes the
<var>protocol</var> to
> -         be <code>tcp</code>.
> +         If the <var>protocol</var> is unspecified OVN assumes the
> +         <var>protocol</var> to be <code>tcp</code>.
>          </p>
>
>          <p>
> --
> 2.37.2
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to