This patch exports check_tools() helper from mptcp_join.sh into
mptcp_lib.sh as a public one mptcp_lib_check_tools(). The arguments
"ip", "ss", "iptables" and "ip6tables" are passed into this helper
to indicate whether to check ip tool, ss tool, iptables and ip6tables
tools.
This helper can be used in every scripts.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://lore.kernel.org/r/20240306-upstream-net-next-20240304-selftests-mptcp-shared-code-shellcheck-v2-2-bc79e6e5e6a0@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 
 }
 
 mptcp_lib_check_mptcp
-
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
-ss -h | grep -q MPTCP
-if [ $? -ne 0 ];then
-       echo "SKIP: ss tool does not support MPTCP"
-       exit $ksft_skip
-fi
+mptcp_lib_check_tools ip ss
 
 get_msk_inuse()
 {
 
 
 mptcp_lib_check_mptcp
 mptcp_lib_check_kallsyms
-
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
+mptcp_lib_check_tools ip
 
 sin=$(mktemp)
 sout=$(mktemp)
 
        done
 }
 
-check_tools()
-{
-       mptcp_lib_check_mptcp
-       mptcp_lib_check_kallsyms
-
-       if ! ip -Version &> /dev/null; then
-               echo "SKIP: Could not run test without ip tool"
-               exit $ksft_skip
-       fi
-
-       if ! ss -h | grep -q MPTCP; then
-               echo "SKIP: ss tool does not support MPTCP"
-               exit $ksft_skip
-       fi
-
-       if ! "${iptables}" -V &> /dev/null; then
-               echo "SKIP: Could not run all tests without ${iptables} tool"
-               exit $ksft_skip
-       elif ! "${ip6tables}" -V &> /dev/null; then
-               echo "SKIP: Could not run all tests without ${ip6tables} tool"
-               exit $ksft_skip
-       fi
-}
-
 init() {
        init=1
 
-       check_tools
+       mptcp_lib_check_mptcp
+       mptcp_lib_check_kallsyms
+       mptcp_lib_check_tools ip ss "${iptables}" "${ip6tables}"
 
        sin=$(mktemp)
        sout=$(mktemp)
 
                return 1
        fi
 }
+
+mptcp_lib_check_tools() {
+       local tool
+
+       for tool in "${@}"; do
+               case "${tool}" in
+               "ip")
+                       if ! ip -Version &> /dev/null; then
+                               mptcp_lib_print_warn "SKIP: Could not run test without ip tool"
+                               exit ${KSFT_SKIP}
+                       fi
+                       ;;
+               "ss")
+                       if ! ss -h | grep -q MPTCP; then
+                               mptcp_lib_print_warn "SKIP: ss tool does not support MPTCP"
+                               exit ${KSFT_SKIP}
+                       fi
+                       ;;
+               "iptables"* | "ip6tables"*)
+                       if ! "${tool}" -V &> /dev/null; then
+                               mptcp_lib_print_warn "SKIP: Could not run all tests without ${tool}"
+                               exit ${KSFT_SKIP}
+                       fi
+                       ;;
+               *)
+                       mptcp_lib_print_err "Internal error: unsupported tool: ${tool}"
+                       exit ${KSFT_FAIL}
+                       ;;
+               esac
+       done
+}
 
 
 mptcp_lib_check_mptcp
 mptcp_lib_check_kallsyms
-
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
-
-if ! "${iptables}" -V &> /dev/null; then
-       echo "SKIP: Could not run all tests without ${iptables} tool"
-       exit $ksft_skip
-elif ! "${ip6tables}" -V &> /dev/null; then
-       echo "SKIP: Could not run all tests without ${ip6tables} tool"
-       exit $ksft_skip
-fi
+mptcp_lib_check_tools ip "${iptables}" "${ip6tables}"
 
 check_mark()
 {
 
 }
 
 mptcp_lib_check_mptcp
-
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
+mptcp_lib_check_tools ip
 
 trap cleanup EXIT
 
 
 }
 
 mptcp_lib_check_mptcp
-
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
+mptcp_lib_check_tools ip
 
 #  "$ns1"              ns2                    ns3
 #     ns1eth1    ns2eth1   ns2eth3      ns3eth1
 
        echo "userspace pm tests are not supported by the kernel: SKIP"
        exit ${KSFT_SKIP}
 fi
-
-if ! ip -Version &> /dev/null; then
-       echo "SKIP: Cannot not run test without ip tool"
-       exit ${KSFT_SKIP}
-fi
+mptcp_lib_check_tools ip
 
 ANNOUNCED=6        # MPTCP_EVENT_ANNOUNCED
 REMOVED=7          # MPTCP_EVENT_REMOVED