~xnox/ubuntu-z-systems/+git/ovs:branch-2.15

Last commit made on 2023-04-06
Get this branch:
git clone -b branch-2.15 https://git.launchpad.net/~xnox/ubuntu-z-systems/+git/ovs

Branch merges

Branch information

Name:
branch-2.15
Repository:
lp:~xnox/ubuntu-z-systems/+git/ovs

Recent commits

1193a50... by Ilya Maximets

Prepare for 2.15.9.

Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

1548b61... by Ilya Maximets

Set release date for 2.15.8.

Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

f36509f... by aconole

ofproto-dpif-xlate: Always mask ip proto field.

The ofproto layer currently treats nw_proto field as overloaded to mean
both that a proper nw layer exists, as well as the value contained in
the header for the nw proto. However, this is incorrect behavior as
relevant standards permit that any value, including '0' should be treated
as a valid value.

Because of this overload, when the ofproto layer builds action list for
a packet with nw_proto of 0, it won't build the complete action list that
we expect to be built for the packet. That will cause a bad behavior
where all packets passing the datapath will fall into an incomplete
action set.

The fix here is to unwildcard nw_proto, allowing us to preserve setting
actions for protocols which we know have support for the actions we
program. This means that a traffic which contains nw_proto == 0 cannot
cause connectivity breakage with other traffic on the link.

Reported-by: David Marchand <email address hidden>
Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2134873
Acked-by: Ilya Maximets <email address hidden>
Signed-off-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

ee22ec7... by Wilson Peng <email address hidden>

netdev-windows: Add checking when creating netdev with system type on Windows

In the recent Antrea project testing, some port could not be created
on Windows.

When doing debug, our team found there is one case happening when multiple
ports are waiting for be created with correct port number.

Some system type port will be created netdev successfully and it will cause
conflict as in the dpif side it will be internal type. So finally the port
will be created failed and it could not be easily recovered.

With the patch, on Windows the netdev creating will be blocked for system
type when the ovs_tyep got on dpif is internal. More detailed case description
is in the reported issue No.262 with link below.

Reported-at:https://github.com/openvswitch/ovs-issues/issues/262
Signed-off-by: Wilson Peng <email address hidden>
Signed-off-by: Alin Gabriel Serdean <email address hidden>

a7c572e... by Ilya Maximets

classifier: Fix missing masks on a final stage with ports trie.

Flow lookup doesn't include masks of the final stage in a resulting
flow wildcards in case that stage had L4 ports match. Only the result
of ports trie lookup is added to the mask. It might be sufficient in
many cases, but it's not correct, because ports trie is not how we
decided that the packet didn't match in this subtable. In fact, we
used a full subtable mask in order to determine that, so all the
subtable mask bits has to be added.

Ports trie can still be used to adjust ports' mask, but it is not
sufficient to determine that the packet didn't match.

Assuming we have following 2 OpenFlow rules on the bridge:

 table=0, priority=10,tcp,tp_dst=80,tcp_flags=+psh actions=drop
 table=0, priority=0 actions=output(1)

The first high priority rule supposed to drop all the TCP data traffic
sent on port 80. The handshake, however, is allowed for forwarding.

Both 'tcp_flags' and 'tp_dst' are on the final stage in the flow.
Since the stage mask from that stage is not incorporated into the flow
wildcards and only ports mask is getting updated, we have the following
megaflow for the SYN packet that has no match on 'tcp_flags':

 $ ovs-appctl ofproto/trace br0 "in_port=br0,tcp,tp_dst=80,tcp_flags=syn"

 Megaflow: recirc_id=0,eth,tcp,in_port=LOCAL,nw_frag=no,tp_dst=80
 Datapath actions: 1

If this flow is getting installed into datapath flow table, all the
packets for port 80, regardless of TCP flags, will be forwarded.

Incorporating all the looked at bits from the final stage into the
stages map in order to get all the necessary wildcards. Ports mask
has to be updated as a last step, because it doesn't cover the full
64-bit slot in the flowmap.

With this change, in the example above, OVS is producing correct
flow wildcards including match on TCP flags:

 Megaflow: recirc_id=0,eth,tcp,in_port=LOCAL,nw_frag=no,tp_dst=80,tcp_flags=-psh
 Datapath actions: 1

This way only -psh packets will be forwarded, as expected.

This issue affects all other fields on stage 4, not only TCP flags.
Tests included to cover tcp_flags, nd_target and ct_tp_src/dst.
First two are frequently used, ct ones are sharing the same flowmap
slot with L4 ports, so important to test.

Before the pre-computation of stage masks, flow wildcards were updated
during lookup, so there was no issue. The bits of the final stage was
lost with introduction of 'stages_map'.

Recent adjustment of segment boundaries exposed 'tcp_flags' to the issue.

Reported-at: https://github.com/openvswitch/ovs-issues/issues/272
Fixes: ca44218515f0 ("classifier: Adjust segment boundary to execute prerequisite processing.")
Fixes: fa2fdbf8d0c1 ("classifier: Pre-compute stage masks.")
Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

ef9e3b1... by Ilya Maximets

cirrus: Update to use FreeBSD 12.4.

12.4 was released in December. That means that 12.3
will become unavailable in a near future. Updating.

Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

1687321... by Eelco Chaudron <email address hidden>

dpif: Fix tunnel key set for IPv6 tunnels with SLOW_ACTION.

The dpif_execute_helper_cb() function is supposed to add the
OVS_ACTION_ATTR_SET(OVS_KEY_ATTR_TUNNEL()) action to the
list of actions when passing it down to the kernel.

This function was only checking if the IPv4 destination
address was set, not both. This patch fixes this, including
a datapath testcase.

Fixes: 076caa2fb077 ("ofproto: Meter translation.")
Signed-off-by: Eelco Chaudron <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

46b3a2c... by Ilya Maximets

ci: Fix overriding OPTS provided from the yml.

For GCC builds we're overriding --disable-ssl or --enable-shared
options set up in the GHA yml file.

Fix that by adding to EXTRA_OPTS instead.

Fixes: 2581b0ad1159 ("travis: Combine kernel builds.")
Acked-by: Eelco Chaudron <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

055a2a0... by Ilya Maximets

Prepare for 2.15.8.

Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

3f93cdf... by Ilya Maximets

Set release date for 2.15.7.

Acked-by: Aaron Conole <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>