selftests: net: rtnetlink.sh: add fdb get test
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Sun, 16 Dec 2018 06:35:11 +0000 (22:35 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 16 Dec 2018 22:42:34 +0000 (14:42 -0800)
tests the below three cases of bridge fdb get:
[bridge, mac, vlan]
[bridge_port, mac, vlan, flags=[NTF_MASTER]]
[vxlandev, mac, flags=NTF_SELF]

depends on iproute2 support for bridge fdb get.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/rtnetlink.sh

index e101af52d1d687e59144719b4e4fab4a84241aa2..bb3436f8807fbc0c7fa854fa91a897beb118d9e9 100755 (executable)
@@ -955,6 +955,58 @@ kci_test_ip6erspan()
        ip netns del "$testns"
 }
 
+kci_test_fdb_get()
+{
+       IP="ip -netns testns"
+       BRIDGE="bridge -netns testns"
+       brdev="test-br0"
+       vxlandev="vxlan10"
+       test_mac=de:ad:be:ef:13:37
+       localip="10.0.2.2"
+       dstip="10.0.2.3"
+       ret=0
+
+       bridge fdb help 2>&1 |grep -q 'bridge fdb get'
+       if [ $? -ne 0 ];then
+               echo "SKIP: fdb get tests: iproute2 too old"
+               return $ksft_skip
+       fi
+
+       ip netns add testns
+       if [ $? -ne 0 ]; then
+               echo "SKIP fdb get tests: cannot add net namespace $testns"
+               return $ksft_skip
+       fi
+
+       $IP link add "$vxlandev" type vxlan id 10 local $localip \
+                dstport 4789 2>/dev/null
+       check_err $?
+       $IP link add name "$brdev" type bridge &>/dev/null
+       check_err $?
+       $IP link set dev "$vxlandev" master "$brdev" &>/dev/null
+       check_err $?
+       $BRIDGE fdb add $test_mac dev "$vxlandev" master &>/dev/null
+       check_err $?
+       $BRIDGE fdb add $test_mac dev "$vxlandev" dst $dstip self &>/dev/null
+       check_err $?
+
+       $BRIDGE fdb get $test_mac brport "$vxlandev" 2>/dev/null | grep -q "dev $vxlandev master $brdev"
+       check_err $?
+       $BRIDGE fdb get $test_mac br "$brdev" 2>/dev/null | grep -q "dev $vxlandev master $brdev"
+       check_err $?
+       $BRIDGE fdb get $test_mac dev "$vxlandev" self 2>/dev/null | grep -q "dev $vxlandev dst $dstip"
+       check_err $?
+
+       ip netns del testns &>/dev/null
+
+       if [ $ret -ne 0 ]; then
+               echo "FAIL: bridge fdb get"
+               return 1
+       fi
+
+       echo "PASS: bridge fdb get"
+}
+
 kci_test_rtnl()
 {
        kci_add_dummy
@@ -979,6 +1031,7 @@ kci_test_rtnl()
        kci_test_macsec
        kci_test_ipsec
        kci_test_ipsec_offload
+       kci_test_fdb_get
 
        kci_del_dummy
 }