continue;
}
- ds_put_format(ds, "\t%s:\n", ofproto->up.name);
+ ds_put_format(ds, " %s:\n", ofproto->up.name);
ports = shash_sort(&ofproto->up.port_by_name);
for (j = 0; j < shash_count(&ofproto->up.port_by_name); j++) {
struct smap config;
odp_port_t odp_port;
- ds_put_format(ds, "\t\t%s %u/", netdev_get_name(ofport->netdev),
+ ds_put_format(ds, " %s %u/", netdev_get_name(ofport->netdev),
ofport->ofp_port);
odp_port = ofp_port_to_odp_port(ofproto, ofport->ofp_port);
add_of_ports br0 1 2
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p1 1/1: (dummy)
- p2 2/2: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (dummy)
+ p2 2/2: (dummy)
])
# Delete p1 from the datapath with "ovs-dpctl del-if"
AT_CHECK([ovs-appctl dpctl/del-if dummy@ovs-dummy p1])
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p2 2/2: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p2 2/2: (dummy)
])
# Force reconfiguration and make sure that p1 got added back.
AT_CHECK([ovs-vsctl del-port p2])
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p1 1/1: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (dummy)
])
OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p1 1/1: (dummy)
- p2 2/2: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (dummy)
+ p2 2/2: (dummy)
])
ovs-appctl time/stop
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- p1 2/none: (patch: peer=p2)
- br1:
- br1 65534/101: (dummy-internal)
- p2 1/none: (patch: peer=p1)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ p1 2/none: (patch: peer=p2)
+ br1:
+ br1 65534/101: (dummy-internal)
+ p2 1/none: (patch: peer=p1)
])
dnl Setup single MPLS tags.
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- p1 2/none: (patch: peer=p2)
- br1:
- br1 65534/101: (dummy-internal)
- p2 1/none: (patch: peer=p1)
- p3 3/3: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ p1 2/none: (patch: peer=p2)
+ br1:
+ br1 65534/101: (dummy-internal)
+ p2 1/none: (patch: peer=p1)
+ p3 3/3: (dummy)
])
dnl MPLS PUSH + POP.
add_of_ports br0 1
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p1 1/1: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (dummy)
])
#
# Set MAC address of dummy device and check that it has been set
#N3_DPPORT=$(ovs-appctl dpif/show | grep "n3 30" | sed 's|.*/\([[0-9]]*\):.*|\1|')
### Verify datapath configuration
-AT_CHECK([
- ovs-appctl dpif/show | grep -v hit | sed 's/\t/ /g'
-], [0], [dnl
- br-in1:
- br-in1 65534/101: (dummy-internal)
- n1 10/4: (dummy)
- vxlangpe12 1020/4789: (vxlan: packet_type=ptap, remote_ip=10.0.0.2)
- vxlangpe13 1030/4789: (vxlan: packet_type=ptap, remote_ip=10.0.0.3)
- br-in2:
- br-in2 65534/102: (dummy-internal)
- n2 20/5: (dummy)
- vxlangpe21 2010/4789: (vxlan: packet_type=ptap, remote_ip=20.0.0.1)
- vxlangpe23 2030/4789: (vxlan: packet_type=ptap, remote_ip=20.0.0.3)
- br-in3:
- br-in3 65534/103: (dummy-internal)
- n3 30/6: (dummy)
- vxlangpe31 3010/4789: (vxlan: packet_type=ptap, remote_ip=30.0.0.1)
- vxlangpe32 3020/4789: (vxlan: packet_type=ptap, remote_ip=30.0.0.2)
- br-p1:
- br-p1 65534/1: (dummy-internal)
- p1-0 2/none: (patch: peer=p0-1)
- br-p2:
- br-p2 65534/2: (dummy-internal)
- p2-0 2/none: (patch: peer=p0-2)
- br-p3:
- br-p3 65534/3: (dummy-internal)
- p3-0 2/none: (patch: peer=p0-3)
- br0:
- br0 65534/100: (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)
+AT_CHECK([ovs-appctl dpif/show | grep -v hit], [0], [dnl
+ br-in1:
+ br-in1 65534/101: (dummy-internal)
+ n1 10/4: (dummy)
+ vxlangpe12 1020/4789: (vxlan: packet_type=ptap, remote_ip=10.0.0.2)
+ vxlangpe13 1030/4789: (vxlan: packet_type=ptap, remote_ip=10.0.0.3)
+ br-in2:
+ br-in2 65534/102: (dummy-internal)
+ n2 20/5: (dummy)
+ vxlangpe21 2010/4789: (vxlan: packet_type=ptap, remote_ip=20.0.0.1)
+ vxlangpe23 2030/4789: (vxlan: packet_type=ptap, remote_ip=20.0.0.3)
+ br-in3:
+ br-in3 65534/103: (dummy-internal)
+ n3 30/6: (dummy)
+ vxlangpe31 3010/4789: (vxlan: packet_type=ptap, remote_ip=30.0.0.1)
+ vxlangpe32 3020/4789: (vxlan: packet_type=ptap, remote_ip=30.0.0.2)
+ br-p1:
+ br-p1 65534/1: (dummy-internal)
+ p1-0 2/none: (patch: peer=p0-1)
+ br-p2:
+ br-p2 65534/2: (dummy-internal)
+ p2-0 2/none: (patch: peer=p0-2)
+ br-p3:
+ br-p3 65534/3: (dummy-internal)
+ p3-0 2/none: (patch: peer=p0-3)
+ br0:
+ br0 65534/100: (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)
])
### Setup SFC flow configuration
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: key=5, local_ip=2.2.2.2, remote_ip=1.1.1.1)
- p2 2/2: (dummy)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: key=5, local_ip=2.2.2.2, remote_ip=1.1.1.1)
+ p2 2/2: (dummy)
])
dnl Basic
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy: ifindex=1010)
- int-br:
- int-br 65534/2: (dummy-internal)
- t1 4/4: (gre: key=456, remote_ip=1.1.2.92)
- vm1 5/3: (dummy: ifindex=2011)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy: ifindex=1010)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t1 4/4: (gre: key=456, remote_ip=1.1.2.92)
+ vm1 5/3: (dummy: ifindex=2011)
])
dnl set up route to 1.1.2.92 via br0 and action=normal
AT_CHECK([ovs-appctl dpif/show | sed 's/\(dummy-pmd: \).*)/\1<cleared>)/'], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p1 1/1: (dummy-pmd: <cleared>)
- p2 2/2: (dummy-pmd: <cleared>)
- br1:
- br1 65534/101: (dummy-internal)
- p3 3/3: (dummy)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (dummy-pmd: <cleared>)
+ p2 2/2: (dummy-pmd: <cleared>)
+ br1:
+ br1 65534/101: (dummy-internal)
+ p3 3/3: (dummy)
])
OVS_VSWITCHD_STOP
AT_CLEANUP
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:13 missed:2
- br0:
- br0 65534/100: (dummy-internal)
- p2 2/2: (dummy)
- pbr0 1/none: (patch: peer=pbr1)
- br1:
- br1 65534/101: (dummy-internal)
- p3 3/3: (dummy)
- pbr1 1/none: (patch: peer=pbr0)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p2 2/2: (dummy)
+ pbr0 1/none: (patch: peer=pbr1)
+ br1:
+ br1 65534/101: (dummy-internal)
+ p3 3/3: (dummy)
+ pbr1 1/none: (patch: peer=pbr0)
])
AT_CHECK([strip_ufid < ovs-vswitchd.log | filter_flow_install | strip_used], [0], [dnl
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:1
- br0:
- br0 65534/100: (dummy-internal)
- p2 2/2: (dummy)
- pbr0 1/none: (patch: peer=pbr1)
- br1:
- br1 65534/101: (dummy-internal)
- p3 3/3: (dummy)
- pbr1 1/none: (patch: peer=pbr0)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p2 2/2: (dummy)
+ pbr0 1/none: (patch: peer=pbr1)
+ br1:
+ br1 65534/101: (dummy-internal)
+ p3 3/3: (dummy)
+ pbr1 1/none: (patch: peer=pbr0)
])
AT_CHECK([strip_ufid < ovs-vswitchd.log | filter_flow_install | strip_used], [0], [dnl
])
AT_CHECK([ovs-appctl dpif/show | tail -n +4], [0], [dnl
- p1 1/1: (dummy)
- p2 2/2: (dummy)
+ p1 1/1: (dummy)
+ p2 2/2: (dummy)
])
dnl Outbound web traffic with bare-SYN
dnl ovs-vswitchd should still 'see' ovsdb change with the 'monitor' method
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy-internal)
- p1 2/2: (dummy-internal)
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy-internal)
+ p1 2/2: (dummy-internal)
])
OVS_VSWITCHD_STOP
AT_CLEANUP
### Verify datapath configuration
AT_CHECK([
- ovs-appctl dpif/show | grep -v hit | sed "s/$(printf \\t)/ /g" | sed 's./[[0-9]]\{1,\}..'
+ ovs-appctl dpif/show | grep -v hit | sed 's./[[0-9]]\{1,\}..'
], [0], [dnl
- br-in1:
- 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: (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: (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: (dummy-internal)
- p1-0 2/none: (patch: peer=p0-1)
- br-p2:
- br-p2 65534: (dummy-internal)
- p2-0 2/none: (patch: peer=p0-2)
- br-p3:
- br-p3 65534: (dummy-internal)
- p3-0 2/none: (patch: peer=p0-3)
- br0:
- 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)
+ br-in1:
+ 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: (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: (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: (dummy-internal)
+ p1-0 2/none: (patch: peer=p0-1)
+ br-p2:
+ br-p2 65534: (dummy-internal)
+ p2-0 2/none: (patch: peer=p0-2)
+ br-p3:
+ br-p3 65534: (dummy-internal)
+ p3-0 2/none: (patch: peer=p0-3)
+ br0:
+ 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
### Verify datapath configuration
AT_CHECK([
- ovs-appctl dpif/show | grep -v hit | sed 's/\t/ /g' | sed 's./[[0-9]]\{1,\}..'
+ ovs-appctl dpif/show | grep -v hit | sed 's./[[0-9]]\{1,\}..'
], [0], [dnl
- br0:
- br0 65534: (dummy-internal)
- n0 30: (dummy)
- p0 10/none: (patch: peer=p1)
- br1:
- br1 65534: (dummy-internal)
- gre1 100: (gre: packet_type=ptap, remote_ip=10.0.0.2)
- n1 40: (dummy)
- p1 20/none: (patch: peer=p0)
- br2:
- br2 65534: (dummy-internal)
- n2 50: (dummy)
+ br0:
+ br0 65534: (dummy-internal)
+ n0 30: (dummy)
+ p0 10/none: (patch: peer=p1)
+ br1:
+ br1 65534: (dummy-internal)
+ gre1 100: (gre: packet_type=ptap, remote_ip=10.0.0.2)
+ n1 40: (dummy)
+ p1 20/none: (patch: peer=p0)
+ br2:
+ br2 65534: (dummy-internal)
+ n2 50: (dummy)
])
AT_CHECK([
### Verify datapath configuration
AT_CHECK([
- ovs-appctl dpif/show | grep -v hit | sed 's/\t/ /g' | sed 's./[[0-9]]\{1,\}..'
+ ovs-appctl dpif/show | grep -v hit | sed 's./[[0-9]]\{1,\}..'
], [0], [dnl
- br0:
- br0 65534: (dummy-internal)
- n0 30: (dummy)
- p0 10/none: (patch: peer=p1)
- br1:
- br1 65534: (dummy-internal)
- gre1 100: (gre: packet_type=legacy_l3, remote_ip=10.0.0.2)
- n1 40: (dummy)
- p1 20/none: (patch: peer=p0)
- br2:
- br2 65534: (dummy-internal)
- n2 50: (dummy)
+ br0:
+ br0 65534: (dummy-internal)
+ n0 30: (dummy)
+ p0 10/none: (patch: peer=p1)
+ br1:
+ br1 65534: (dummy-internal)
+ gre1 100: (gre: packet_type=legacy_l3, remote_ip=10.0.0.2)
+ n1 40: (dummy)
+ p1 20/none: (patch: peer=p0)
+ br2:
+ br2 65534: (dummy-internal)
+ n2 50: (dummy)
])
AT_CHECK([
### Verify datapath configuration
AT_CHECK([
- ovs-appctl dpif/show | grep -v hit | sed 's/\t/ /g' | sed 's./[[0-9]]\{1,\}..'
+ ovs-appctl dpif/show | grep -v hit | sed 's./[[0-9]]\{1,\}..'
], [0], [dnl
- br0:
- br0 65534: (dummy-internal)
- p0 1: (dummy)
- int-br:
- int-br 65534: (dummy-internal)
- tunnel 2: (gre: packet_type=legacy_l3, remote_ip=20.0.0.2)
+ br0:
+ br0 65534: (dummy-internal)
+ p0 1: (dummy)
+ int-br:
+ int-br 65534: (dummy-internal)
+ tunnel 2: (gre: packet_type=legacy_l3, remote_ip=20.0.0.2)
])
AT_CHECK([
AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
])
OVS_VSWITCHD_STOP
AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
])
AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy-pmd: configured_rx_queues=8, configured_tx_queues=<cleared>, requested_rx_queues=8, requested_tx_queues=<cleared>)
])
AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 7/1: (dummy-pmd: configured_rx_queues=4, configured_tx_queues=<cleared>, requested_rx_queues=4, requested_tx_queues=<cleared>)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 7/1: (dummy-pmd: configured_rx_queues=4, configured_tx_queues=<cleared>, requested_rx_queues=4, requested_tx_queues=<cleared>)
])
AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 8], [0], [dnl
AT_CHECK([ovs-vsctl remove interface p1 options n_rxq])
AT_CHECK([ovs-appctl dpif/show | grep p1 | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
- p1 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
+ p1 1/1: (dummy-pmd: configured_rx_queues=1, configured_tx_queues=<cleared>, requested_rx_queues=1, requested_tx_queues=<cleared>)
])
OVS_VSWITCHD_STOP
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- int-br:
- int-br 65534/2: (dummy-internal)
- t2 2/6: (ip6erspan: erspan_idx=0x3, erspan_ver=1, key=123, remote_ip=2001:cafe::92)
- t3 3/6: (ip6erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=567, remote_ip=2001:cafe::93)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t2 2/6: (ip6erspan: erspan_idx=0x3, erspan_ver=1, key=123, remote_ip=2001:cafe::92)
+ t3 3/6: (ip6erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=567, remote_ip=2001:cafe::93)
])
dnl First setup dummy interface IP address, then add the route
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- int-br:
- int-br 65534/2: (dummy-internal)
- t1 3/3: (gre: key=456, remote_ip=2001:cafe::92)
- t2 2/4789: (vxlan: key=123, remote_ip=2001:cafe::92)
- t3 4/4789: (vxlan: csum=true, out_key=flow, remote_ip=2001:cafe::93)
- t4 5/6081: (geneve: key=123, remote_ip=flow)
- t5 6/3: (gre: key=455, packet_type=legacy_l3, remote_ip=2001:cafe::92)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t1 3/3: (gre: key=456, remote_ip=2001:cafe::92)
+ t2 2/4789: (vxlan: key=123, remote_ip=2001:cafe::92)
+ t3 4/4789: (vxlan: csum=true, out_key=flow, remote_ip=2001:cafe::93)
+ t4 5/6081: (geneve: key=123, remote_ip=flow)
+ t5 6/3: (gre: key=455, packet_type=legacy_l3, remote_ip=2001:cafe::92)
])
AT_CHECK([ovs-appctl tnl/ports/show |sort], [0], [dnl
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- int-br:
- int-br 65534/2: (dummy-internal)
- t1 2/3: (erspan: erspan_idx=0x3, erspan_ver=1, key=123, remote_ip=1.1.2.92)
- t2 3/3: (erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=567, remote_ip=1.1.2.92)
- t3 4/3: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_ver=2, key=456, remote_ip=flow)
- t4 5/3: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_idx=flow, erspan_ver=flow, key=56, remote_ip=flow)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t1 2/3: (erspan: erspan_idx=0x3, erspan_ver=1, key=123, remote_ip=1.1.2.92)
+ t2 3/3: (erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=567, remote_ip=1.1.2.92)
+ t3 4/3: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_ver=2, key=456, remote_ip=flow)
+ t4 5/3: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_idx=flow, erspan_ver=flow, key=56, remote_ip=flow)
])
dnl First setup dummy interface IP address, then add the route
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- int-br:
- int-br 65534/2: (dummy-internal)
- t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
- t2 2/4789: (vxlan: key=123, remote_ip=1.1.2.92)
- t3 4/4789: (vxlan: csum=true, out_key=flow, remote_ip=1.1.2.93)
- t4 5/6081: (geneve: key=123, remote_ip=flow)
- t5 6/6081: (geneve: egress_pkt_mark=1234, out_key=flow, remote_ip=1.1.2.93)
- t6 7/3: (gre: key=456, packet_type=legacy_l3, remote_ip=1.1.2.92)
- t7 8/4789: (vxlan: key=345, remote_ip=1.1.2.92)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
+ t2 2/4789: (vxlan: key=123, remote_ip=1.1.2.92)
+ t3 4/4789: (vxlan: csum=true, out_key=flow, remote_ip=1.1.2.93)
+ t4 5/6081: (geneve: key=123, remote_ip=flow)
+ t5 6/6081: (geneve: egress_pkt_mark=1234, out_key=flow, remote_ip=1.1.2.93)
+ t6 7/3: (gre: key=456, packet_type=legacy_l3, remote_ip=1.1.2.92)
+ t7 8/4789: (vxlan: key=345, remote_ip=1.1.2.92)
])
dnl First setup dummy interface IP address, then add the route
AT_CHECK([ovs-appctl dpif/show], [0], [dnl
dummy@ovs-dummy: hit:0 missed:0
- br0:
- br0 65534/100: (dummy-internal)
- p0 1/1: (dummy)
- int-br:
- int-br 65534/2: (dummy-internal)
- t1 3/3: (gre: key=456, remote_ip=1.1.2.92, seq=true)
+ br0:
+ br0 65534/100: (dummy-internal)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy-internal)
+ t1 3/3: (gre: key=456, remote_ip=1.1.2.92, seq=true)
])
AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 1.1.2.88/24], [0], [OK
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: remote_ip=1.1.1.1)
- p2 2/1: (gre: local_ip=2.2.2.2, remote_ip=1.1.1.1)
- p3 3/1: (gre: remote_ip=2.2.2.2)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: remote_ip=1.1.1.1)
+ p2 2/1: (gre: local_ip=2.2.2.2, remote_ip=1.1.1.1)
+ p3 3/1: (gre: remote_ip=2.2.2.2)
])
dnl remote_ip
options:df_default=false options:ttl=1 options:csum=true \
-- set Interface p3 type=vxlan])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: remote_ip=1.1.1.1)
- p2 2/1: (gre: csum=true, df_default=false, local_ip=2.2.2.3, remote_ip=1.1.1.1, ttl=1)
- p3 3/4789: (vxlan: remote_ip=2.2.2.2)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: remote_ip=1.1.1.1)
+ p2 2/1: (gre: csum=true, df_default=false, local_ip=2.2.2.3, remote_ip=1.1.1.1, ttl=1)
+ p3 3/4789: (vxlan: remote_ip=2.2.2.2)
])
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(src=1.1.1.1,dst=2.2.2.2,ttl=64,flags()),in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=9)'], [0], [stdout])
AT_CHECK([tail -1 stdout], [0],
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: remote_ip=1.1.1.1)
- p2 2/2: (dummy)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: remote_ip=1.1.1.1)
+ p2 2/2: (dummy)
])
dnl Tunnel CE and encapsulated packet CE
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: key=5, local_ip=2.2.2.2, remote_ip=1.1.1.1)
- p2 2/2: (dummy)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: key=5, local_ip=2.2.2.2, remote_ip=1.1.1.1)
+ p2 2/2: (dummy)
])
dnl Basic
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: remote_ip=1.1.1.1, tos=inherit, ttl=inherit)
- p2 2/2: (dummy)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: remote_ip=1.1.1.1, tos=inherit, ttl=inherit)
+ p2 2/2: (dummy)
])
dnl Basic
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: key=flow, remote_ip=1.1.1.1)
- p2 2/1: (gre: key=flow, remote_ip=2.2.2.2)
- p3 3/1: (gre: key=flow, remote_ip=3.3.3.3)
- p4 4/1: (gre: key=flow, remote_ip=4.4.4.4)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: key=flow, remote_ip=1.1.1.1)
+ p2 2/1: (gre: key=flow, remote_ip=2.2.2.2)
+ p3 3/1: (gre: key=flow, remote_ip=3.3.3.3)
+ p4 4/1: (gre: key=flow, remote_ip=4.4.4.4)
])
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: key=1, remote_ip=1.1.1.1)
- p2 2/1: (gre: in_key=2, out_key=3, remote_ip=1.1.1.1)
- p3 3/1: (gre: out_key=5, remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: key=1, remote_ip=1.1.1.1)
+ p2 2/1: (gre: in_key=2, out_key=3, remote_ip=1.1.1.1)
+ p3 3/1: (gre: out_key=5, remote_ip=1.1.1.1)
])
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x1,src=1.1.1.1,dst=2.2.2.2,ttl=64,flags(key)),in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=9)'], [0], [stdout])
AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (gre: key=flow, remote_ip=1.1.1.1)
- p2 2/1: (gre: key=3, remote_ip=3.3.3.3)
- p3 3/3: (dummy)
- p4 4/4: (dummy)
- p5 5/5: (dummy)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (gre: key=flow, remote_ip=1.1.1.1)
+ p2 2/1: (gre: key=3, remote_ip=3.3.3.3)
+ p3 3/3: (dummy)
+ p4 4/4: (dummy)
+ p5 5/5: (dummy)
])
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x2,src=1.1.1.1,dst=2.2.2.2,ttl=64,flags(key)),in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=9)'], [0], [stdout])
options:remote_ip=1.1.1.1 ofport_request=1 options:dst_port=5000])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/5000: (geneve: dst_port=5000, remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/5000: (geneve: dst_port=5000, remote_ip=1.1.1.1)
])
OVS_VSWITCHD_STOP
options:remote_ip=1.1.1.1 ofport_request=1])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/4789: (vxlan: remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/4789: (vxlan: remote_ip=1.1.1.1)
])
OVS_VSWITCHD_STOP
options:remote_ip=1.1.1.1 ofport_request=1])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/4341: (lisp: remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/4341: (lisp: remote_ip=1.1.1.1)
])
OVS_VSWITCHD_STOP
])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/1: (erspan: erspan_idx=0x0, erspan_ver=1, key=1, remote_ip=1.1.1.1)
- p2 2/1: (erspan: erspan_idx=flow, erspan_ver=1, key=flow, remote_ip=1.1.1.1)
- p3 3/1: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_ver=2, key=10, remote_ip=1.1.1.1)
- p4 4/1: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_idx=flow, erspan_ver=flow, key=flow, remote_ip=1.2.3.4)
+ br0 65534/100: (dummy-internal)
+ p1 1/1: (erspan: erspan_idx=0x0, erspan_ver=1, key=1, remote_ip=1.1.1.1)
+ p2 2/1: (erspan: erspan_idx=flow, erspan_ver=1, key=flow, remote_ip=1.1.1.1)
+ p3 3/1: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_ver=2, key=10, remote_ip=1.1.1.1)
+ p4 4/1: (erspan: erspan_dir=flow, erspan_hwid=flow, erspan_idx=flow, erspan_ver=flow, key=flow, remote_ip=1.2.3.4)
])
dnl Check ERSPAN v1 flow-based tunnel push
options:remote_ip=1.1.1.1 ofport_request=1 options:dst_port=4341])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/4341: (vxlan: dst_port=4341, remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/4341: (vxlan: dst_port=4341, remote_ip=1.1.1.1)
])
dnl change UDP port
AT_CHECK([ovs-vsctl -- set Interface p1 options:dst_port=5000])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/5000: (vxlan: dst_port=5000, remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/5000: (vxlan: dst_port=5000, remote_ip=1.1.1.1)
])
dnl change UDP port to default
AT_CHECK([ovs-vsctl -- set Interface p1 options:dst_port=4789])
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/4789: (vxlan: remote_ip=1.1.1.1)
+ br0 65534/100: (dummy-internal)
+ p1 1/4789: (vxlan: remote_ip=1.1.1.1)
])
OVS_VSWITCHD_STOP
AT_CLEANUP
OVS_VSWITCHD_DISABLE_TUNNEL_PUSH_POP
AT_CHECK([ovs-appctl dpif/show | tail -n +3], [0], [dnl
- br0 65534/100: (dummy-internal)
- p1 1/3: (dummy)
- p2 2/2: (dummy)
- p3 3/1: (erspan: erspan_idx=0x7, erspan_ver=1, key=1, remote_ip=1.1.1.1)
- p4 4/1: (erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=2, remote_ip=1.1.1.2)
+ br0 65534/100: (dummy-internal)
+ p1 1/3: (dummy)
+ p2 2/2: (dummy)
+ p3 3/1: (erspan: erspan_idx=0x7, erspan_ver=1, key=1, remote_ip=1.1.1.1)
+ p4 4/1: (erspan: erspan_dir=1, erspan_hwid=0x7, erspan_ver=2, key=2, remote_ip=1.1.1.2)
])
AT_DATA([flows.txt], [dnl