[ovs-dev] [PATCH] ofproto-dpif-xlate: Terminate native tunnels only on ports with IP addresses.

Ilya Maximets i.maximets at ovn.org
Mon Nov 15 18:08:32 UTC 2021

On 11/15/21 18:28, Mike Pattrick wrote:
> Hello Ilya,
> For some reason, the included test fails for me when I try to run it.
> The diff is:
> ./tunnel-push-pop.at:751: tail -2 stdout
> --- -    2021-11-15 12:09:05.838890065 -0500
> +++ /root/ovs/tests/testsuite.dir/at-groups/782/stdout    2021-11-15
> 12:09:05.836652743 -0500
> @@ -1,3 +1,3 @@
> -Megaflow: recirc_id=0,eth,in_port=2,dl_type=0x0000
> -Datapath actions: 3
> +Megaflow: recirc_id=0,eth,in_port=1,dl_type=0x0000
> +Datapath actions: 5
> I see that it passed github CI, so I'm unsure why it's failing for me.
> -M

Good catch.  Thanks!

I suppose, you're building with higher instruction set enabled,
e.g. sse4.2 or something like this (We definitely need to add
a job like this to GHA).  This may affect the order in which ports
are added and hence the port numbers.  I shouldn't add ports this
way.  add_of_ports should be used instead, it will set ofport_request
and will use names that will be translated into datapath port
numbers.  Could you try this:

diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at
index ed72ff986..1c9f6cad1 100644
--- a/tests/tunnel-push-pop.at
+++ b/tests/tunnel-push-pop.at
@@ -737,26 +737,25 @@ AT_CHECK([
 dnl Creating a separate bridge that is completely unrelated to a tunnel
 dnl configuration.  Ports in this bridge cannot be tunnel endpoints.
 AT_CHECK([ovs-vsctl add-br br-non-tunnel dnl
-          -- set bridge br-non-tunnel datapath_type=dummy fail-mode=secure dnl
-          -- add-port br-non-tunnel port0 -- set Interface port0 type=dummy dnl
-          -- add-port br-non-tunnel port1 -- set Interface port1 type=dummy])
+          -- set bridge br-non-tunnel datapath_type=dummy fail-mode=secure])
+add_of_ports br-non-tunnel 7 8
 AT_CHECK([ovs-ofctl del-flows br-non-tunnel])
-AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=port0,action=port1])
-AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=port1,action=port0])
+AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=p7,action=p8])
+AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=p8,action=p7])
 dnl Checking that tunnel configuration doesn't impact flow translation
 dnl on this bridge (Megaflow should contain a bare minimum of fields
 dnl according to installed OF rules).
-AT_CHECK([ovs-appctl ofproto/trace br-non-tunnel in_port=port0], [0], [stdout])
+AT_CHECK([ovs-appctl ofproto/trace br-non-tunnel in_port=p7], [0], [stdout])
 AT_CHECK([tail -2 stdout], [0], [dnl
-Megaflow: recirc_id=0,eth,in_port=2,dl_type=0x0000
-Datapath actions: 3
+Megaflow: recirc_id=0,eth,in_port=7,dl_type=0x0000
+Datapath actions: 8
-AT_CHECK([ovs-appctl ofproto/trace br-non-tunnel in_port=port1], [0], [stdout])
+AT_CHECK([ovs-appctl ofproto/trace br-non-tunnel in_port=p8], [0], [stdout])
 AT_CHECK([tail -2 stdout], [0], [dnl
-Megaflow: recirc_id=0,eth,in_port=1,dl_type=0x0000
-Datapath actions: 5
+Megaflow: recirc_id=0,eth,in_port=8,dl_type=0x0000
+Datapath actions: 7

Bets regards, Ilya Maximets.

More information about the dev mailing list