selftests: rtnetlink: add gretap test cases
authorWilliam Tu <u9012063@gmail.com>
Tue, 19 Dec 2017 18:37:02 +0000 (10:37 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Dec 2017 17:48:38 +0000 (12:48 -0500)
Add test cases for gretap and ip6gretap, native mode
and external (collect metadata) mode.

Signed-off-by: William Tu <u9012063@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/rtnetlink.sh

index 5215493..dada4ab 100755 (executable)
@@ -502,6 +502,102 @@ kci_test_macsec()
        echo "PASS: macsec"
 }
 
+kci_test_gretap()
+{
+       testns="testns"
+       DEV_NS=gretap00
+       ret=0
+
+       ip netns add "$testns"
+       if [ $? -ne 0 ]; then
+               echo "SKIP gretap tests: cannot add net namespace $testns"
+               return 1
+       fi
+
+       ip link help gretap 2>&1 | grep -q "^Usage:"
+       if [ $? -ne 0 ];then
+               echo "SKIP: gretap: iproute2 too old"
+               return 1
+       fi
+
+       # test native tunnel
+       ip netns exec "$testns" ip link add dev "$DEV_NS" type gretap seq \
+               key 102 local 172.16.1.100 remote 172.16.1.200
+       check_err $?
+
+       ip netns exec "$testns" ip addr add dev "$DEV_NS" 10.1.1.100/24
+       check_err $?
+
+       ip netns exec "$testns" ip link set dev $DEV_NS up
+       check_err $?
+
+       ip netns exec "$testns" ip link del "$DEV_NS"
+       check_err $?
+
+       # test external mode
+       ip netns exec "$testns" ip link add dev "$DEV_NS" type gretap external
+       check_err $?
+
+       ip netns exec "$testns" ip link del "$DEV_NS"
+       check_err $?
+
+       if [ $ret -ne 0 ]; then
+               echo "FAIL: gretap"
+               return 1
+       fi
+       echo "PASS: gretap"
+
+       ip netns del "$testns"
+}
+
+kci_test_ip6gretap()
+{
+       testns="testns"
+       DEV_NS=ip6gretap00
+       ret=0
+
+       ip netns add "$testns"
+       if [ $? -ne 0 ]; then
+               echo "SKIP ip6gretap tests: cannot add net namespace $testns"
+               return 1
+       fi
+
+       ip link help ip6gretap 2>&1 | grep -q "^Usage:"
+       if [ $? -ne 0 ];then
+               echo "SKIP: ip6gretap: iproute2 too old"
+               return 1
+       fi
+
+       # test native tunnel
+       ip netns exec "$testns" ip link add dev "$DEV_NS" type ip6gretap seq \
+               key 102 local fc00:100::1 remote fc00:100::2
+       check_err $?
+
+       ip netns exec "$testns" ip addr add dev "$DEV_NS" fc00:200::1/96
+       check_err $?
+
+       ip netns exec "$testns" ip link set dev $DEV_NS up
+       check_err $?
+
+       ip netns exec "$testns" ip link del "$DEV_NS"
+       check_err $?
+
+       # test external mode
+       ip netns exec "$testns" ip link add dev "$DEV_NS" type ip6gretap external
+       check_err $?
+
+       ip netns exec "$testns" ip link del "$DEV_NS"
+       check_err $?
+
+       if [ $ret -ne 0 ]; then
+               echo "FAIL: ip6gretap"
+               return 1
+       fi
+       echo "PASS: ip6gretap"
+
+       ip netns del "$testns"
+}
+
 kci_test_rtnl()
 {
        kci_add_dummy
@@ -514,6 +610,8 @@ kci_test_rtnl()
        kci_test_route_get
        kci_test_tc
        kci_test_gre
+       kci_test_gretap
+       kci_test_ip6gretap
        kci_test_bridge
        kci_test_addrlabel
        kci_test_ifalias