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

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

Branch merges

Branch information

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

Recent commits

9e59834... by Emma Finn <email address hidden>

odp-execute: Set IPv6 traffic class in AVX implementation.

The AVX implementation for the IPv6 action did not set
traffic class field. Adding support for this field to
the AVX implementation.

Fixes: a879beb4dbee ("odp-execute: Add ISA implementation of set_masked IPv6 action")
Reported-by: Eelco Chaudron <email address hidden>
Signed-off-by: Emma Finn <email address hidden>
Signed-off-by: Eelco Chaudron <email address hidden>

e87d5b2... by Kevin Traynor

dpdk: Check other_config:dpdk-extra for '--lcores'.

Currently dpdk lcore args for DPDK EAL init can be generated or
they can be written directly by the user through dpdk-extra.

If dpdk-extra does not contain '-l' or '-c', a '-l' argument with
a core list for DPDK EAL init will be generated.

The '--lcores' argument should also be checked, as if it is used in
dpdk-extra, currently a '-l' is still generated and that causes
DPDK EAL init to fail:

|00009|dpdk|INFO|EAL ARGS: ovs-vswitchd --lcores 0@18 --in-memory -l 0.
|00012|dpdk|ERR|EAL: Option -l is ignored, because (--lcore) is set!

Add check for '--lcores' in dpdk-extra config and don't generate '-l'
if it is detected:

|00009|dpdk|INFO|EAL ARGS: ovs-vswitchd --lcores 0@8 --in-memory.

Fixes: 543342a41cbc ("DPDK: add support for v2.0.0")
Signed-off-by: Kevin Traynor <email address hidden>
Reviewed-by: David Marchand <email address hidden>
Acked-by: Eelco Chaudron <email address hidden>

9235944... by Ilya Maximets

Prepare for 3.1.6.

Acked-by: Eelco Chaudron <email address hidden>
Acked-by: Kevin Traynor <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

44695d4... by Ilya Maximets

Set release date for 3.1.5.

Acked-by: Eelco Chaudron <email address hidden>
Acked-by: Kevin Traynor <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

a8cbe50... by Adrian Moreno <email address hidden>

python: ovs: flow: Fix nested check_pkt_len acts.

Add check_pkt_len action to the decoder list that it, itself, uses.

This makes nested check_pkt_len (i.e:a check_pkt_len inside another)
work.

Fixes: 076663b31edc ("python: Add ovs datapath flow parsing.")
Reported-by: Ilya Maximets <email address hidden>
Acked-by: Eelco Chaudron <email address hidden>
Signed-off-by: Adrian Moreno <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

b00be11... by Ilya Maximets

python: idl: Fix index not being updated on row modification.

When a row is modified, python IDL doesn't perform any operations on
existing client-side indexes. This means that if the column on which
index is created changes, the old value will remain in the index and
the new one will not be added to the index. Beside lookup failures
this is also causing inability to remove modified rows, because the
new column value doesn't exist in the index causing an exception on
attempt to remove it:

 Traceback (most recent call last):
   File "ovsdbapp/backend/ovs_idl/connection.py", line 110, in run
     self.idl.run()
   File "ovs/db/idl.py", line 465, in run
     self.__parse_update(msg.params[2], OVSDB_UPDATE3)
   File "ovs/db/idl.py", line 924, in __parse_update
     self.__do_parse_update(update, version, self.tables)
   File "ovs/db/idl.py", line 964, in __do_parse_update
     changes = self.__process_update2(table, uuid, row_update)
   File "ovs/db/idl.py", line 991, in __process_update2
     del table.rows[uuid]
   File "ovs/db/custom_index.py", line 102, in __delitem__
     index.remove(val)
   File "ovs/db/custom_index.py", line 66, in remove
     self.values.remove(self.index_entry_from_row(row))
   File "sortedcontainers/sortedlist.py", line 2015, in remove
     raise ValueError('{0!r} not in list'.format(value))
 ValueError: Datapath_Binding(
   uuid=UUID('498e66a2-70bc-4587-a66f-0433baf82f60'),
   tunnel_key=16711683, load_balancers=[], external_ids={}) not in list

Fix that by always removing an existing row from indexes before
modification and adding back afterwards. This ensures that old
values are removed from the index and new ones are added.

This behavior is consistent with the C implementation.

The new test that reproduces the removal issue is added. Some extra
testing infrastructure added to be able to handle and print out the
'indexed' table from the idltest schema.

Fixes: 13973bc41524 ("Add multi-column index support for the Python IDL")
Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2024-May/053159.html
Reported-by: Roberto Bartzen Acosta <email address hidden>
Acked-by: Mike Pattrick <email address hidden>
Acked-by: Dumitru Ceara <email address hidden>
Acked-by: Terry Wilson <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

5527145... by Terry Wilson

python: ovsdb-idl: Convert new_uuid insert() arg to UUID.

The argument to insert() should be a uuid.UUID object. If it isn't
then a Row is created with a string uuid attribute and that row is
added to table.rows with a string key instead of a UUID key.

Fixes: 55b9507e6824 ("ovsdb-idl: Add the support to specify the uuid for row insert.")
Signed-off-by: Terry Wilson <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

9d7867b... by Terry Wilson

python: ovsdb-idl: Make IndexedRows mirror hmap.

The Python IDL code very closely mirrors the C IDL code, which uses
an hmap to store table rows. hmap code allows duplicate keys, while
IndexedRows, which is derived from DictBase does not.

The persistent UUID code can attempt to temporarily add a Row with
a duplicate UUID to table.rows, so IndexedRows is modified to
behave similarly to the C IDL's hmap implementation.

Fixes: 55b9507e6824 ("ovsdb-idl: Add the support to specify the uuid for row insert.")
Signed-off-by: Terry Wilson <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

5a9788b... by Ilya Maximets

nsh: Add support to compose-packet and use it in system tests.

OVS can parse NSH, but can't compose. Fix that and get rid of plain
hex NSH packets in system tests as they are hard to read or modify.

Tcpdump calls modified to write actual pcaps instead of text output,
so ovs-pcap can be used while checking the results.

While at it, replacing sleeps with more robust waiting for tcpdump
to start listening.

M4 macros are better than shell variables, because we can see the
substitution result in the test log. So, using m4_define and m4_join
extensively.

Acked-by: Simon Horman <email address hidden>
Acked-by: Eelco Chaudron <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>

33ad96d... by Ilya Maximets

tests: Convert ND, MPLS and CT sendpkt tests to compose-packet.

These tests contain plain hex dumps that are hard to read and modify.
Replace with equivalent calls to ovs-ofctl compose-packet --bare and
ovs-pcap.

Tcpdump calls modified to write actual pcaps instead of text output,
so ovs-pcap can be used while checking the results.

While at it, replacing sleeps with more robust waiting for tcpdump
to start listening.

M4 macros are better than shell variables, because we can see the
substitution result in the test log. So, using m4_define and m4_join
extensively.

Acked-by: Simon Horman <email address hidden>
Acked-by: Eelco Chaudron <email address hidden>
Signed-off-by: Ilya Maximets <email address hidden>