selftests: forwarding: Add PVID test case for VXLAN with VLAN-aware bridges
authorIdo Schimmel <idosch@mellanox.com>
Fri, 7 Dec 2018 19:55:20 +0000 (19:55 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Dec 2018 20:59:08 +0000 (12:59 -0800)
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>
tools/testing/selftests/net/forwarding/vxlan_bridge_1q.sh

index bac2e568d22c092b320b5cc02a8c7671323b5768..a5789721ba922ebf9f30debafd7caae247abb0af 100755 (executable)
@@ -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