mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
47 lines
1.5 KiB
Plaintext
47 lines
1.5 KiB
Plaintext
AT_BANNER([VLAN splinters])
|
|
|
|
AT_SETUP([VLAN splinters])
|
|
OVS_VSWITCHD_START([], [], [=override])
|
|
ADD_OF_PORTS([br0], 1, 2, 3, 4)
|
|
AT_CHECK([ovs-vsctl \
|
|
-- set Bridge br0 fail-mode=standalone flood_vlans=0,9,11,15 \
|
|
-- set port br0 tag=0 \
|
|
-- set port p1 trunks=0,9,11,15 \
|
|
-- set interface p1 other-config:enable-vlan-splinters=true \
|
|
-- set port p2 tag=9 \
|
|
-- set port p3 tag=11 \
|
|
-- set port p4 tag=15])
|
|
|
|
ovs-appctl dpif/show | sed -n '
|
|
s/\./_/g
|
|
s/^[[ ]]*\([[^ ]][[^ ]]*\) [[0-9]]*\/\([[0-9]]*\).*/\1=\2/p
|
|
' > port-numbers
|
|
cat port-numbers
|
|
. ./port-numbers
|
|
|
|
for args in '9 p2' '11 p3' '15 p4'; do
|
|
set $args
|
|
vlan=$1
|
|
eval access_port=\$$2
|
|
eval splinter_port=\$p1_$vlan
|
|
|
|
# Check that when a packet is received on $splinter_port, it is
|
|
# treated as if it had been received on p1 in the correct VLAN.
|
|
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "in_port($splinter_port)"],
|
|
[0], [stdout])
|
|
AT_CHECK_UNQUOTED([sed -n '/^Flow/p; /^Datapath/p' stdout], [0], [dnl
|
|
Flow: metadata=0,in_port=$p1,dl_vlan=$vlan,dl_vlan_pcp=0,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x05ff
|
|
Datapath actions: $access_port
|
|
])
|
|
|
|
# Check that when an OpenFlow action sends a packet to p1 on
|
|
# splintered VLAN $vlan, it is actually output to $splinter_port.
|
|
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "in_port($access_port)"],
|
|
[0], [stdout])
|
|
AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: $splinter_port
|
|
])
|
|
done
|
|
|
|
OVS_VSWITCHD_STOP
|
|
AT_CLEANUP
|