From: Jan Scheurich <jan.scheur...@ericsson.com>

Re-introduced packet-type-aware unit tests

Reverted test with triangular bridge setup to using patch ports to
avoid dependency on veth ports and root privilidges.

Adapted to changes in Ben's ptap series. Dependent on patches for
using port names in datapath flows.

Signed-off-by: Ben Pfaff <b...@ovn.org>
Signed-off-by: Jan Scheurich <jan.scheur...@ericsson.com>
---
 tests/packet-type-aware.at | 342 ++++++++++++++++++++-------------------------
 1 file changed, 155 insertions(+), 187 deletions(-)

diff --git a/tests/packet-type-aware.at b/tests/packet-type-aware.at
index 0aaeffa..49dcc60 100644
--- a/tests/packet-type-aware.at
+++ b/tests/packet-type-aware.at
@@ -33,10 +33,6 @@ AT_CLEANUP
 
 AT_SETUP([ptap - triangle bridge setup with L2 and L3 GRE tunnels])
 
-# Always skip this test, for now, until it is revised to use patch
-# ports in place of veth devices.
-AT_SKIP_IF([:])
-
 ########################
 # GRE tunneling test setup for PTAP bridge
 #
@@ -61,126 +57,108 @@ AT_SKIP_IF([:])
 #       +--------------------------------------------------------+
 #"
 #   GRE tunnel ports:
-#      No     Bridge      Name        Type        Remote bridge & ports
+#      No     Bridge      Name        Packet-type Remote bridge & ports
 #     -----------------------------------------------------------------------
-#      1020   br-in1      gre-12      l2          br-in2 2010 (versatile)
-#      1021   br-in1      gre-12_l3   l3                same
-#      1030   br-in1      gre-13      l2          br-in3 3010 (l2)
-#      2010   br-in2      gre-21      versatile   br-in1 1020 (l2), 1021 (l3)
-#      2030   br-in2      gre-13      versatile   br-in3 3020 (l2), 3021 (l3)
-#      3010   br-in1      gre-31      l2          br-in1 1030 (l2)
-#      3020   br-in1      gre-32      l2          br-in2 2010 (versatile)
-#      3021   br-in1      gre-32_l3   l3                same
-
-
-OVS_VSWITCHD_START([])
+#      1020   br-in1      gre-12      legacy-l2   br-in2 2010 (ptap)
+#      1021   br-in1      gre-12_l3   legacy-l3         same
+#      1030   br-in1      gre-13      legacy-l2   br-in3 3010 (l2)
+#      2010   br-in2      gre-21      ptap        br-in1 1020 (l2), 1021 (l3)
+#      2030   br-in2      gre-13      ptap        br-in3 3020 (l2), 3021 (l3)
+#      3010   br-in1      gre-31      legacy-l2   br-in1 1030 (l2)
+#      3020   br-in1      gre-32      legacy-l2   br-in2 2010 (ptap)
+#      3021   br-in1      gre-32_l3   legacy-l3         same
 
 HWADDR_BRP1=aa:55:00:00:00:01
 HWADDR_BRP2=aa:55:00:00:00:02
 HWADDR_BRP3=aa:55:00:00:00:03
 
-dnl Create veth ports to connect br0 with br-p1, br-p2 and br-p3
-AT_CHECK([ip link add p1-0 type veth peer name p0-1])
-AT_CHECK([ip link set p1-0 up])
-AT_CHECK([ip link set p0-1 up])
-AT_CHECK([ip link set dev p1-0 mtu 3300])
-AT_CHECK([ip link set dev p0-1 mtu 3300])
-on_exit 'ip link del p0-1'
-
-AT_CHECK([ip link add p2-0 type veth peer name p0-2])
-AT_CHECK([ip link set p2-0 up])
-AT_CHECK([ip link set p0-2 up])
-AT_CHECK([ip link set dev p2-0 mtu 3300])
-AT_CHECK([ip link set dev p0-2 mtu 3300])
-on_exit 'ip link del p0-2'
-
-AT_CHECK([ip link add p3-0 type veth peer name p0-3])
-AT_CHECK([ip link set p3-0 up])
-AT_CHECK([ip link set p0-3 up])
-AT_CHECK([ip link set dev p3-0 mtu 3300])
-AT_CHECK([ip link set dev p0-3 mtu 3300])
-on_exit 'ip link del p0-3'
+OVS_VSWITCHD_START([dnl
+    -- add-br br-in1 \
+    -- set bridge br-in1 datapath_type=dummy fail-mode=secure \
+    -- add-br br-in2 \
+    -- set bridge br-in2 datapath_type=dummy fail-mode=secure \
+    -- add-br br-in3 \
+    -- set bridge br-in3 datapath_type=dummy fail-mode=secure \
+    -- add-br br-p1 -- \
+    -- set bridge br-p1 datapath_type=dummy fail-mode=secure 
other-config:hwaddr=\"$HWADDR_BRP1\" \
+    -- add-br br-p2 -- \
+    -- set bridge br-p2 datapath_type=dummy fail-mode=secure 
other-config:hwaddr=\"$HWADDR_BRP2\" \
+    -- add-br br-p3 -- \
+    -- set bridge br-p3 datapath_type=dummy fail-mode=secure 
other-config:hwaddr=\"$HWADDR_BRP3\" \
+    -- add-port br-p1 p1-0 \
+    -- set interface p1-0 type=patch options:peer=p0-1 ofport_request=2 \
+    -- add-port br-p2 p2-0 \
+    -- set interface p2-0 type=patch options:peer=p0-2 ofport_request=2 \
+    -- add-port br-p3 p3-0 \
+    -- set interface p3-0 type=patch options:peer=p0-3 ofport_request=2 \
+    -- add-port br0 p0-1 \
+    -- set interface p0-1 type=patch options:peer=p1-0 ofport_request=10 \
+    -- add-port br0 p0-2 \
+    -- set interface p0-2 type=patch options:peer=p2-0 ofport_request=20 \
+    -- add-port br0 p0-3 \
+    -- set interface p0-3 type=patch options:peer=p3-0 ofport_request=30 \
+    -- add-port br-in1 gre12 \
+    -- set interface gre12 type=gre options:remote_ip=10.0.0.2 \
+                           ofport_request=1020 \
+    -- add-port br-in1 gre12_l3 \
+    -- set interface gre12_l3 type=gre options:remote_ip=10.0.0.2 \
+                           ofport_request=1021 options:packet_type=legacy_l3 \
+    -- add-port br-in1 gre13 \
+    -- set interface gre13 type=gre options:remote_ip=10.0.0.3 \
+                           ofport_request=1030 \
+    -- add-port br-in2 gre21 \
+    -- set interface gre21 type=gre options:remote_ip=20.0.0.1 \
+                           ofport_request=2010 options:packet_type=ptap \
+    -- add-port br-in2 gre23 \
+    -- set interface gre23 type=gre options:remote_ip=20.0.0.3 \
+                           ofport_request=2030 options:packet_type=ptap \
+    -- add-port br-in3 gre31 \
+    -- set interface gre31 type=gre options:remote_ip=30.0.0.1 \
+                           ofport_request=3010 \
+    -- add-port br-in3 gre32 \
+    -- set interface gre32 type=gre options:remote_ip=30.0.0.2 \
+                           ofport_request=3020 \
+    -- add-port br-in3 gre32_l3 \
+    -- set interface gre32_l3 type=gre options:remote_ip=30.0.0.2 \
+                           ofport_request=3021 options:packet_type=legacy_l3
+])
 
 # Setup bridge infrastructure
 AT_CHECK([
-    ovs-vsctl add-br br-in1 -- \
-        set bridge br-in1 datapath_type=dummy fail-mode=standalone
-    ovs-vsctl add-br br-in2 -- \
-        set bridge br-in2 datapath_type=dummy fail-mode=standalone 
other-config:packet-type-aware=true
-    ovs-vsctl add-br br-in3 -- \
-        set bridge br-in3 datapath_type=dummy fail-mode=standalone
-    ovs-vsctl add-br br-p1 -- \
-        set bridge br-p1 datapath_type=dummy fail-mode=standalone 
other-config:hwaddr=$HWADDR_BRP1
-    ovs-vsctl add-br br-p2 -- \
-        set bridge br-p2 datapath_type=dummy fail-mode=standalone 
other-config:hwaddr=$HWADDR_BRP2
-    ovs-vsctl add-br br-p3 -- \
-        set bridge br-p3 datapath_type=dummy fail-mode=standalone 
other-config:hwaddr=$HWADDR_BRP3
-
-    ovs-vsctl add-port br-p1 p1-0 -- set interface p1-0 ofport_request=2
-    ovs-vsctl add-port br-p2 p2-0 -- set interface p2-0 ofport_request=2
-    ovs-vsctl add-port br-p3 p3-0 -- set interface p3-0 ofport_request=2
-    ovs-vsctl add-port br0 p0-1 -- set interface p0-1 ofport_request=10
-    ovs-vsctl add-port br0 p0-2 -- set interface p0-2 ofport_request=20
-    ovs-vsctl add-port br0 p0-3 -- set interface p0-3 ofport_request=30
-
     # Populate the MAC table of br0
-    ovs-ofctl del-flows br0
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP1,actions=10
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP2,actions=20
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP3,actions=30
-
-    ovs-ofctl del-flows br-in1
-    ovs-ofctl del-flows br-in2
-    ovs-ofctl del-flows br-in3
-    ovs-ofctl del-flows br-p1
-    ovs-ofctl del-flows br-p2
+    ovs-ofctl del-flows br0 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP1,actions=10 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP2,actions=20 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP3,actions=30 &&
+
+    ovs-ofctl del-flows br-in1 &&
+    ovs-ofctl del-flows br-in2 &&
+    ovs-ofctl del-flows br-in3 &&
+    ovs-ofctl del-flows br-p1 &&
+    ovs-ofctl del-flows br-p2 &&
     ovs-ofctl del-flows br-p3
 ], [0])
 
-# Get the MAC addresses of the tunnel end-point ports
-#HWADDR_BRP1=$(ovs-ofctl show br-p1 | grep LOCAL | sed 's/.*addr://')
-#HWADDR_BRP2=$(ovs-ofctl show br-p2 | grep LOCAL | sed 's/.*addr://')
-#HWADDR_BRP3=$(ovs-ofctl show br-p3 | grep LOCAL | sed 's/.*addr://')
-
 ### Setup GRE tunnels
 AT_CHECK([
-    ovs-vsctl add-port br-in1 gre12 -- \
-        set interface gre12 type=gre options:remote_ip=10.0.0.2 
ofport_request=1020
-    ovs-vsctl add-port br-in1 gre12_l3 -- \
-        set interface gre12_l3 type=gre options:remote_ip=10.0.0.2 
ofport_request=1021 options:layer3=true
-    ovs-vsctl add-port br-in1 gre13 -- \
-        set interface gre13 type=gre options:remote_ip=10.0.0.3 
ofport_request=1030
-
-    ovs-vsctl add-port br-in2 gre21 -- \
-        set interface gre21 type=gre options:remote_ip=20.0.0.1 
ofport_request=2010
-    ovs-vsctl add-port br-in2 gre23 -- \
-        set interface gre23 type=gre options:remote_ip=20.0.0.3 
ofport_request=2030
-
-    ovs-vsctl add-port br-in3 gre31 -- \
-        set interface gre31 type=gre options:remote_ip=30.0.0.1 
ofport_request=3010
-    ovs-vsctl add-port br-in3 gre32 -- \
-        set interface gre32 type=gre options:remote_ip=30.0.0.2 
ofport_request=3020
-    ovs-vsctl add-port br-in3 gre32_l3 -- \
-        set interface gre32_l3 type=gre options:remote_ip=30.0.0.2 
ofport_request=3021 options:layer3=true
-
-    ovs-appctl netdev-dummy/ip4addr br-p1 10.0.0.1/24
-    ovs-appctl ovs/route/add 10.0.0.0/24 br-p1
-    ovs-appctl tnl/arp/set br-p1 10.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p1 10.0.0.2 $HWADDR_BRP2
-    ovs-appctl tnl/arp/set br-p1 10.0.0.3 $HWADDR_BRP3
-
-    ovs-appctl netdev-dummy/ip4addr br-p2 20.0.0.2/24
-    ovs-appctl ovs/route/add 20.0.0.0/24 br-p2
-    ovs-appctl tnl/arp/set br-p2 20.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p2 20.0.0.2 $HWADDR_BRP2
-    ovs-appctl tnl/arp/set br-p2 20.0.0.3 $HWADDR_BRP3
-
-    ovs-appctl netdev-dummy/ip4addr br-p3 30.0.0.3/24
-    ovs-appctl ovs/route/add 30.0.0.0/24 br-p3
-    ovs-appctl tnl/arp/set br-p3 30.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p3 30.0.0.2 $HWADDR_BRP2
+    ovs-appctl netdev-dummy/ip4addr br-p1 10.0.0.1/24 &&
+    ovs-appctl ovs/route/add 10.0.0.0/24 br-p1 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.2 $HWADDR_BRP2 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.3 $HWADDR_BRP3 &&
+
+    ovs-appctl netdev-dummy/ip4addr br-p2 20.0.0.2/24 &&
+    ovs-appctl ovs/route/add 20.0.0.0/24 br-p2 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.2 $HWADDR_BRP2 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.3 $HWADDR_BRP3 &&
+
+    ovs-appctl netdev-dummy/ip4addr br-p3 30.0.0.3/24 &&
+    ovs-appctl ovs/route/add 30.0.0.0/24 br-p3 &&
+    ovs-appctl tnl/arp/set br-p3 30.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p3 30.0.0.2 $HWADDR_BRP2 &&
     ovs-appctl tnl/arp/set br-p3 30.0.0.3 $HWADDR_BRP3
-], [0], [stdout])
+], [0], [ignore])
 
 AT_CHECK([
     ovs-appctl ovs/route/show | grep User:
@@ -192,7 +170,7 @@ User: 30.0.0.0/24 dev br-p3 SRC 30.0.0.3
 
 AT_CHECK([
     ovs-appctl tnl/neigh/show | grep br-p | sort
-], [0], [stdout])
+], [0], [ignore])
 
 ### Flows in br-p<x>to twist TEP IP addresses in tunnel IP headers
 AT_CHECK([
@@ -237,12 +215,16 @@ N2_OFPORT=20
 N3_OFPORT=30
 
 AT_CHECK([
-    ovs-vsctl add-port br-in1 n1 -- \
-        set interface n1 type=dummy ofport_request=$N1_OFPORT 
options:tx_pcap=n1.pcap
-    ovs-vsctl add-port br-in2 n2 -- \
-        set interface n2 type=dummy ofport_request=$N2_OFPORT 
options:tx_pcap=n2.pcap
-    ovs-vsctl add-port br-in3 n3 -- \
-        set interface n3 type=dummy ofport_request=$N3_OFPORT 
options:tx_pcap=n3.pcap
+ovs-vsctl \
+    -- add-port br-in1 n1 \
+    -- set interface n1 type=dummy ofport_request=$N1_OFPORT \
+                                   options:tx_pcap=n1.pcap \
+    -- add-port br-in2 n2 \
+    -- set interface n2 type=dummy ofport_request=$N2_OFPORT \
+                                   options:tx_pcap=n2.pcap \
+    -- add-port br-in3 n3 \
+    -- set interface n3 type=dummy ofport_request=$N3_OFPORT \
+                                   options:tx_pcap=n3.pcap
 ], [0])
 
 #N1_DPPORT=$(ovs-appctl dpif/show | grep "n1 10" | sed 
's|.*/\([[0-9]]*\):.*|\1|')
@@ -251,39 +233,39 @@ AT_CHECK([
 
 ### Verify datapath configuration
 AT_CHECK([
-    ovs-appctl dpif/show | grep -v hit | sed 's/\t/    /g'
+    ovs-appctl dpif/show | grep -v hit | sed 's/\t/    /g' | sed 
's./[[0-9]]\{1,\}..'
 ], [0], [dnl
     br-in1:
-        br-in1 65534/101: (dummy-internal)
-        gre12 1020/10: (gre: remote_ip=10.0.0.2)
-        gre12_l3 1021/10: (gre: layer3=true, remote_ip=10.0.0.2)
-        gre13 1030/10: (gre: remote_ip=10.0.0.3)
-        n1 10/11: (dummy)
+        br-in1 65534: (dummy-internal)
+        gre12 1020: (gre: remote_ip=10.0.0.2)
+        gre12_l3 1021: (gre: packet_type=legacy_l3, remote_ip=10.0.0.2)
+        gre13 1030: (gre: remote_ip=10.0.0.3)
+        n1 10: (dummy)
     br-in2:
-        br-in2 65534/102: (dummy-internal)
-        gre21 2010/10: (gre: remote_ip=20.0.0.1)
-        gre23 2030/10: (gre: remote_ip=20.0.0.3)
-        n2 20/12: (dummy)
+        br-in2 65534: (dummy-internal)
+        gre21 2010: (gre: packet_type=ptap, remote_ip=20.0.0.1)
+        gre23 2030: (gre: packet_type=ptap, remote_ip=20.0.0.3)
+        n2 20: (dummy)
     br-in3:
-        br-in3 65534/103: (dummy-internal)
-        gre31 3010/10: (gre: remote_ip=30.0.0.1)
-        gre32 3020/10: (gre: remote_ip=30.0.0.2)
-        gre32_l3 3021/10: (gre: layer3=true, remote_ip=30.0.0.2)
-        n3 30/13: (dummy)
+        br-in3 65534: (dummy-internal)
+        gre31 3010: (gre: remote_ip=30.0.0.1)
+        gre32 3020: (gre: remote_ip=30.0.0.2)
+        gre32_l3 3021: (gre: packet_type=legacy_l3, remote_ip=30.0.0.2)
+        n3 30: (dummy)
     br-p1:
-        br-p1 65534/1: (dummy-internal)
-        p1-0 2/4: (system)
+        br-p1 65534: (dummy-internal)
+        p1-0 2/none: (patch: peer=p0-1)
     br-p2:
-        br-p2 65534/2: (dummy-internal)
-        p2-0 2/5: (system)
+        br-p2 65534: (dummy-internal)
+        p2-0 2/none: (patch: peer=p0-2)
     br-p3:
-        br-p3 65534/3: (dummy-internal)
-        p3-0 2/6: (system)
+        br-p3 65534: (dummy-internal)
+        p3-0 2/none: (patch: peer=p0-3)
     br0:
-        br0 65534/100: (dummy-internal)
-        p0-1 10/7: (system)
-        p0-2 20/8: (system)
-        p0-3 30/9: (system)
+        br0 65534: (dummy-internal)
+        p0-1 10/none: (patch: peer=p1-0)
+        p0-2 20/none: (patch: peer=p2-0)
+        p0-3 30/none: (patch: peer=p3-0)
 ])
 
 ### Test L3 forwarding flows
@@ -314,9 +296,9 @@ AT_CHECK([
 AT_CHECK([
     ovs-ofctl dump-flows br-in2 | ofctl_strip | sort | grep actions
 ], [0], [dnl
- packet_type=(0,0),ip,nw_dst=192.168.10.10 actions=output:2010
- packet_type=(0,0),ip,nw_dst=192.168.10.20 
actions=mod_dl_dst:aa:55:aa:55:00:02,output:20
- packet_type=(0,0),ip,nw_dst=192.168.10.30 actions=output:2010
+ ip,nw_dst=192.168.10.10 actions=output:2010
+ ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20
+ ip,nw_dst=192.168.10.30 actions=output:2010
  packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010
  packet_type=(1,0x800),nw_dst=192.168.10.30 actions=output:2030
 ])
@@ -331,6 +313,8 @@ AT_CHECK([
 
 ### Inject ICMP Echo request test packets
 
+ovs-appctl vlog/set any:file:dbg
+
 # N1 to N3, via the L2 GRE tunnel between br-in1 and br-in3
 AT_CHECK([
     ovs-appctl netdev-dummy/receive n1 
1e2ce92a669e3a6dd2099cab0800450000548a53400040011addc0a80a0ac0a80a1e08006f200a4d0001fc509a58000000002715020000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
@@ -340,13 +324,11 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:4
-recirc_id(0),in_port(11),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-recirc_id(0),in_port(6),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:9
-tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),13
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),n3
 ])
 
 # Clear up megaflow cache
@@ -361,13 +343,11 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:4
-recirc_id(0),in_port(11),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=20.0.0.1,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:8
-tunnel(src=20.0.0.1,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),12
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=20.0.0.1,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=20.0.0.1,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),n2
 ])
 
 # Clear up megaflow cache
@@ -382,13 +362,11 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(12),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(2))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:5
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:7
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=3a:6d:d2:09:9c:ab),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:01)),11
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n2),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p2))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=3a:6d:d2:09:9c:ab),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:01)),n1
 ])
 
 # Clear up megaflow cache
@@ -403,17 +381,13 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:4
-recirc_id(0),in_port(12),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(2))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:5
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(6),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:9
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:7
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),13
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(gre_sys)
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n2),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p2))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),n3
 ])
 
 # Clear up megaflow cache
@@ -428,17 +402,13 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(13),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:pop_eth,tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(3))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, 
used:0.0s, actions:5
-recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, 
used:0.0s, actions:6
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:122, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no),
 packets:1, bytes:122, used:0.0s, 
actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:122, used:0.0s, actions:7
-recirc_id(0),in_port(9),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:122, used:0.0s, actions:8
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no),
 packets:1, bytes:84, used:0.0s, 
actions:push_eth(src=00:00:00:00:00:00,dst=aa:55:aa:55:00:01),11
-tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:84, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(2))
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no),
 packets:1, bytes:122, used:0.0s, 
actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(br-p3),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no),
 packets:1, bytes:122, used:0.0s, 
actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n3),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:pop_eth,tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(br-p3))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no),
 packets:1, bytes:84, used:0.0s, 
actions:push_eth(src=00:00:00:00:00:00,dst=aa:55:aa:55:00:01),n1
+tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no),
 packets:1, bytes:84, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(br-p2))
 ])
 
 # Clear up megaflow cache
@@ -453,13 +423,11 @@ AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | 
sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v 
ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(13),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(3))
-recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, 
used:0.0s, actions:6
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(9),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no),
 packets:1, bytes:136, used:0.0s, actions:8
-tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),12
+recirc_id(0),in_port(br-p3),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no),
 packets:1, bytes:136, used:0.0s, 
actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n3),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no),
 packets:1, bytes:98, used:0.0s, 
actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p3))
+tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no),
 packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),n2
 ])
 
 ### Check the received packets
-- 
1.9.1



> -----Original Message-----
> From: ovs-dev-boun...@openvswitch.org 
> [mailto:ovs-dev-boun...@openvswitch.org] On Behalf Of Jan Scheurich
> Sent: Tuesday, June 20, 2017 3:33 PM
> To: Ben Pfaff <b...@ovn.org>; d...@openvswitch.org
> Subject: Re: [ovs-dev] [PATCH v2 12/12] work on packet aware test
> 
> Hi Ben,
> 
> Thanks for working on updating the PTAP test. I have found and fixed three 
> main issues that prevented the triangular
> bridge test from working.
> 
> 1. The tunnel ports in (formerly packet-type-aware) bridge br-in2 had to be 
> declared with "packet-type=ptap".
> 2. A typo in the peer name for patch port p0-1 caused packets to be dropped.
> 3. The remote tunnel end-point MAC addresses were not aligned with the MAC 
> addresses of the br-pX bridge local
> ports, causing the tunnel port lookup to fail on the receiving side.
> 
> All the rest was just adapting to datapath flow consequences of switching 
> back to patch ports and using port names.
> 
> Trouble-shooting (typically config) issues with (native) tunneling is one of 
> the most tedious tasks in OvS. It
> almost always requires use of a debugger to understand why packets are 
> dropped or not recognized as tunnel packets.
> This is for sure an area that would deserve better trouble-shooting support 
> (DBG logging and/or ovs-appctl
> commands). Something for the future!
> 
> Anyway, the attached patch, replacing your original patch 12/12, seems to 
> work on top of the latest v3 series plus
> your port name patches.
> 
> There is one anomaly that I have noticed inspecting the datapath flows 
> generated for packet received from L3 GRE
> tunnels in ptap or legacy-l3 mode:
> 
> tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-
> csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no),
> packets:1, bytes:84, used:0.0s, 
> actions:push_eth(src=00:00:00:00:00:00,dst=aa:55:aa:55:00:01),n1
> tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-
> csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,fr
> ag=no), packets:1, bytes:84, used:0.0s,
> actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0
> 800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(br-
> p2))
> 
> These include an eth_type(0x0800) match even though their packet type is not 
> ethernet: packet_type(ns=1,id=0x800).
> Apparently this does not cause lookup failure. I believe this must be a bug 
> in [PATCH v3 4/7] userspace: Handling of
> versatile tunnel ports, which I will have a look at now.
> 
> BR, Jan
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to