# different events.
 
 ret=0
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
 
 VERBOSE=${VERBOSE:=0}
 PAUSE_ON_FAIL=${PAUSE_ON_FAIL:=no}
 
 if [ "$(id -u)" -ne 0 ];then
        echo "SKIP: Need root privileges"
-       exit 0
+       exit $ksft_skip;
 fi
 
 if [ ! -x "$(command -v ip)" ]; then
        echo "SKIP: Could not run test without ip tool"
-       exit 0
+       exit $ksft_skip
 fi
 
 ip route help 2>&1 | grep -q fibmatch
 if [ $? -ne 0 ]; then
        echo "SKIP: iproute2 too old, missing fibmatch"
-       exit 0
+       exit $ksft_skip
 fi
 
 # start clean
 
 # if not they probably have failed earlier in the boot process and their logged error will be catched by another test
 #
 
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
+
 # this function will try to up the interface
 # if already up, nothing done
 # arg1: network interface name
        ip link show "$netdev" |grep -q UP
        if [ $? -eq 0 ];then
                echo "SKIP: $netdev: interface already up"
-               return 0
+               return $ksft_skip
        fi
 
        ip link set "$netdev" up
        ip address show "$netdev" |grep '^[[:space:]]*inet'
        if [ $? -eq 0 ];then
                echo "SKIP: $netdev: already have an IP"
-               return 0
+               return $ksft_skip
        fi
 
        # TODO what ipaddr to set ? DHCP ?
        echo "SKIP: $netdev: set IP address"
-       return 0
+       return $ksft_skip
 }
 
 # test an ethtool command
        if [ $ret -ne 0 ];then
                if [ $ret -eq "$1" ];then
                        echo "SKIP: $netdev: ethtool $2 not supported"
+                       return $ksft_skip
                else
                        echo "FAIL: $netdev: ethtool $2"
                        return 1
        ethtool --version 2>/dev/null >/dev/null
        if [ $? -ne 0 ];then
                echo "SKIP: ethtool not present"
-               return 1
+               return $ksft_skip
        fi
 
        TMP_ETHTOOL_FEATURES="$(mktemp)"
 #check for needed privileges
 if [ "$(id -u)" -ne 0 ];then
        echo "SKIP: Need root privileges"
-       exit 0
+       exit $ksft_skip
 fi
 
 ip link show 2>/dev/null >/dev/null
 if [ $? -ne 0 ];then
        echo "SKIP: Could not run test without the ip tool"
-       exit 0
+       exit $ksft_skip
 fi
 
 TMP_LIST_NETDEV="$(mktemp)"
 
 #      that MTU is properly calculated instead when MTU is not configured from
 #      userspace
 
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
+
 tests="
        pmtu_vti6_exception             vti6: PMTU exceptions
        pmtu_vti4_exception             vti4: PMTU exceptions
 }
 
 setup() {
-       [ "$(id -u)" -ne 0 ] && echo "  need to run as root" && return 1
+       [ "$(id -u)" -ne 0 ] && echo "  need to run as root" && return $ksft_skip
 
        cleanup_done=0
        for arg do
 
 
 #include "psock_lib.h"
 
+#include "../kselftest.h"
+
 #ifndef bug_on
 # define bug_on(cond)          assert(!(cond))
 #endif
                fprintf(stderr, "test: skip %s %s since user and kernel "
                        "space have different bit width\n",
                        tpacket_str[version], type_str[type]);
-               return 0;
+               return KSFT_SKIP;
        }
 
        sock = pfsocket(version);
 
 devdummy="test-dummy0"
 ret=0
 
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
+
 # set global exit status, but never reset nonzero one.
 check_err()
 {
        ip link show type vrf 2>/dev/null
        if [ $? -ne 0 ]; then
                echo "SKIP: vrf: iproute2 too old"
-               return 0
+               return $ksft_skip
        fi
 
        ip link add "$vrfname" type vrf table 10
        ip fou help 2>&1 |grep -q 'Usage: ip fou'
        if [ $? -ne 0 ];then
                echo "SKIP: fou: iproute2 too old"
-               return 1
+               return $ksft_skip
        fi
 
        ip netns exec "$testns" ip fou add port 7777 ipproto 47 2>/dev/null
        ip netns add "$testns"
        if [ $? -ne 0 ]; then
                echo "SKIP encap tests: cannot add net namespace $testns"
-               return 1
+               return $ksft_skip
        fi
 
        ip netns exec "$testns" ip link set lo up
        ip macsec help 2>&1 | grep -q "^Usage: ip macsec"
        if [ $? -ne 0 ]; then
                echo "SKIP: macsec: iproute2 too old"
-               return 0
+               return $ksft_skip
        fi
 
        ip link add link "$devdummy" "$msname" type macsec port 42 encrypt on
        ip netns add "$testns"
        if [ $? -ne 0 ]; then
                echo "SKIP gretap tests: cannot add net namespace $testns"
-               return 1
+               return $ksft_skip
        fi
 
        ip link help gretap 2>&1 | grep -q "^Usage:"
        if [ $? -ne 0 ];then
                echo "SKIP: gretap: iproute2 too old"
                ip netns del "$testns"
-               return 1
+               return $ksft_skip
        fi
 
        # test native tunnel
        ip netns add "$testns"
        if [ $? -ne 0 ]; then
                echo "SKIP ip6gretap tests: cannot add net namespace $testns"
-               return 1
+               return $ksft_skip
        fi
 
        ip link help ip6gretap 2>&1 | grep -q "^Usage:"
        if [ $? -ne 0 ];then
                echo "SKIP: ip6gretap: iproute2 too old"
                ip netns del "$testns"
-               return 1
+               return $ksft_skip
        fi
 
        # test native tunnel
        ip link help erspan 2>&1 | grep -q "^Usage:"
        if [ $? -ne 0 ];then
                echo "SKIP: erspan: iproute2 too old"
-               return 1
+               return $ksft_skip
        fi
 
        ip netns add "$testns"
        if [ $? -ne 0 ]; then
                echo "SKIP erspan tests: cannot add net namespace $testns"
-               return 1
+               return $ksft_skip
        fi
 
        # test native tunnel erspan v1
        ip link help ip6erspan 2>&1 | grep -q "^Usage:"
        if [ $? -ne 0 ];then
                echo "SKIP: ip6erspan: iproute2 too old"
-               return 1
+               return $ksft_skip
        fi
 
        ip netns add "$testns"
        if [ $? -ne 0 ]; then
                echo "SKIP ip6erspan tests: cannot add net namespace $testns"
-               return 1
+               return $ksft_skip
        fi
 
        # test native tunnel ip6erspan v1
 #check for needed privileges
 if [ "$(id -u)" -ne 0 ];then
        echo "SKIP: Need root privileges"
-       exit 0
+       exit $ksft_skip
 fi
 
 for x in ip tc;do
        $x -Version 2>/dev/null >/dev/null
        if [ $? -ne 0 ];then
                echo "SKIP: Could not run test without the $x tool"
-               exit 0
+               exit $ksft_skip
        fi
 done