selftests: forwarding: Add PVID test case for VXLAN with VLAN-aware bridges

When using VLAN-aware bridges with VXLAN, the VLAN that is mapped to the
VNI of the VXLAN device is that which is configured as "pvid untagged"
on the corresponding bridge port.

When these flags are toggled or when the VLAN is deleted entirely,
remote hosts should not be able to receive packets from the VTEP.

Add a test case for above mentioned scenarios.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Ido Schimmel 2018-12-07 19:55:20 +00:00 committed by David S. Miller
parent 0efe9ed98d
commit 55939b262a
1 changed files with 70 additions and 0 deletions

View File

@ -95,6 +95,7 @@ export VXPORT
test_flood
test_unicast
test_learning
test_pvid
"}
NUM_NETIFS=6
@ -610,6 +611,75 @@ test_unicast()
done
}
test_pvid()
{
local -a expects=(0 0 0 0 0)
local mac=de:ad:be:ef:13:37
local dst=192.0.2.100
local vid=10
# Check that flooding works
RET=0
expects[0]=10; expects[1]=10; expects[3]=10
vxlan_flood_test $mac $dst $vid "${expects[@]}"
log_test "VXLAN: flood before pvid off"
# Toggle PVID off and test that flood to remote hosts does not work
RET=0
bridge vlan add vid 10 dev vx10
expects[0]=10; expects[1]=0; expects[3]=0
vxlan_flood_test $mac $dst $vid "${expects[@]}"
log_test "VXLAN: flood after pvid off"
# Toggle PVID on and test that flood to remote hosts does work
RET=0
bridge vlan add vid 10 dev vx10 pvid untagged
expects[0]=10; expects[1]=10; expects[3]=10
vxlan_flood_test $mac $dst $vid "${expects[@]}"
log_test "VXLAN: flood after pvid on"
# Add a new VLAN and test that it does not affect flooding
RET=0
bridge vlan add vid 30 dev vx10
expects[0]=10; expects[1]=10; expects[3]=10
vxlan_flood_test $mac $dst $vid "${expects[@]}"
bridge vlan del vid 30 dev vx10
log_test "VXLAN: flood after vlan add"
# Remove currently mapped VLAN and test that flood to remote hosts does
# not work
RET=0
bridge vlan del vid 10 dev vx10
expects[0]=10; expects[1]=0; expects[3]=0
vxlan_flood_test $mac $dst $vid "${expects[@]}"
log_test "VXLAN: flood after vlan delete"
# Re-add the VLAN and test that flood to remote hosts does work
RET=0
bridge vlan add vid 10 dev vx10 pvid untagged
expects[0]=10; expects[1]=10; expects[3]=10
vxlan_flood_test $mac $dst $vid "${expects[@]}"
log_test "VXLAN: flood after vlan re-add"
}
vxlan_ping_test()
{
local ping_dev=$1; shift