[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20838.1680234915@famine>
Date: Thu, 30 Mar 2023 20:55:15 -0700
From: Jay Vosburgh <jay.vosburgh@...onical.com>
To: Hangbin Liu <liuhangbin@...il.com>
cc: netdev@...r.kernel.org, "David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Jonathan Toppins <jtoppins@...hat.com>,
Paolo Abeni <pabeni@...hat.com>,
Eric Dumazet <edumazet@...gle.com>, Liang Li <liali@...hat.com>
Subject: Re: [PATCH net 2/3] selftests: bonding: re-format bond option tests
Hangbin Liu <liuhangbin@...il.com> wrote:
>To improve the testing process for bond options, A new bond library is
>added to our testing setup. The current option_prio.sh file will be
>renamed to bond_options.sh so that all bonding options can be tested here.
>Specifically, for priority testing, we will run all tests using module
Typo here, "module" vs "mode"
>1, 5, and 6. These changes will help us streamline the testing process
>and ensure that our bond options are rigorously evaluated.
Other than the typo above and a couple more noted below (which
aren't new to this patch; they're in code being copied), looks good to
me.
Acked-by: Jay Vosburgh <jay.vosburgh@...onical.com>
>Signed-off-by: Hangbin Liu <liuhangbin@...il.com>
>---
> .../selftests/drivers/net/bonding/Makefile | 3 +-
> .../selftests/drivers/net/bonding/bond_lib.sh | 145 +++++++++++
> .../drivers/net/bonding/bond_options.sh | 216 +++++++++++++++
> .../drivers/net/bonding/option_prio.sh | 245 ------------------
> 4 files changed, 363 insertions(+), 246 deletions(-)
> create mode 100644 tools/testing/selftests/drivers/net/bonding/bond_lib.sh
> create mode 100755 tools/testing/selftests/drivers/net/bonding/bond_options.sh
> delete mode 100755 tools/testing/selftests/drivers/net/bonding/option_prio.sh
>
>diff --git a/tools/testing/selftests/drivers/net/bonding/Makefile b/tools/testing/selftests/drivers/net/bonding/Makefile
>index a39bb2560d9b..4683b06afdba 100644
>--- a/tools/testing/selftests/drivers/net/bonding/Makefile
>+++ b/tools/testing/selftests/drivers/net/bonding/Makefile
>@@ -8,11 +8,12 @@ TEST_PROGS := \
> dev_addr_lists.sh \
> mode-1-recovery-updelay.sh \
> mode-2-recovery-updelay.sh \
>- option_prio.sh \
>+ bond_options.sh \
> bond-eth-type-change.sh
>
> TEST_FILES := \
> lag_lib.sh \
>+ bond_lib.sh \
> net_forwarding_lib.sh
>
> include ../../../lib.mk
>diff --git a/tools/testing/selftests/drivers/net/bonding/bond_lib.sh b/tools/testing/selftests/drivers/net/bonding/bond_lib.sh
>new file mode 100644
>index 000000000000..ca64a82e1385
>--- /dev/null
>+++ b/tools/testing/selftests/drivers/net/bonding/bond_lib.sh
>@@ -0,0 +1,145 @@
>+#!/bin/bash
>+# SPDX-License-Identifier: GPL-2.0
>+#
>+# Topology for Bond mode 1,5,6 testing
>+#
>+# +---------------------------------------+
>+# | bond0 | 192.0.2.1/24
>+# | + | 2001:db8::1/24
>+# | eth0 | eth1 eth2 | Server
>+# | +-------------------+ |
>+# | | | | |
>+# +---------------------------------------+
>+# | | |
>+# | | |
>+# +---------------------------------------+
>+# | | | | | 192.0.2.254/24
>+# | +---+---------+---------+---+ | 2001:db8::254/24
>+# | | br0 | | Switch
>+# | +---+---------+---------+---+ |
>+# | | | | |
>+# +---------------------------------------+
>+# | | |
>+# +-----+ | +-----+
>+# | | |
>+# +-------+ +-------+ |
>+# | | | | | | +
>+# | + | | + | ... More clients if needed
>+# | eth0 | | eth0 |
>+# +-------+ +-------+
>+# Client Client1
>+# 192.0.2.10 192.0.2.11
>+# 2001:db8::10 2001:db8::11
>+
>+s_ns="s-$(mktemp -u XXXXXX)"
>+sw_ns="sw-$(mktemp -u XXXXXX)"
>+c_ns="c-$(mktemp -u XXXXXX)"
>+s_ip4="192.0.2.1"
>+c_ip4="192.0.2.10"
>+sw_ip4="192.0.2.254"
>+s_ip6="2001:db8::1"
>+c_ip6="2001:db8::10"
>+sw_ip6="2001:db8::254"
>+
>+switch_create()
>+{
>+ ip netns add ${sw_ns}
>+ ip -n ${sw_ns} link add br0 type bridge
>+ ip -n ${sw_ns} link set br0 up
>+ ip -n ${sw_ns} addr add ${sw_ip4}/24 dev br0
>+ ip -n ${sw_ns} addr add ${sw_ip6}/24 dev br0
>+}
>+
>+switch_destroy()
>+{
>+ ip -n ${sw_ns} link del br0
>+ ip netns del ${sw_ns}
>+}
>+
>+server_create()
>+{
>+ ip netns add ${s_ns}
>+ ip -n ${s_ns} link add bond0 type bond mode active-backup miimon 100
>+
>+ for i in $(seq 0 2); do
>+ ip -n ${s_ns} link add eth${i} type veth peer name s${i} netns ${sw_ns}
>+
>+ ip -n ${sw_ns} link set s${i} up
>+ ip -n ${sw_ns} link set s${i} master br0
>+ ip -n ${s_ns} link set eth${i} master bond0
>+ done
>+
>+ ip -n ${s_ns} link set bond0 up
>+ ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
>+ ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
>+ sleep 2
>+}
>+
>+bond_reset()
>+{
>+ local param="$1"
>+
>+ ip -n ${s_ns} link set bond0 down
>+ ip -n ${s_ns} link del bond0
>+
>+ ip -n ${s_ns} link add bond0 type bond $param
>+ for i in $(seq 0 2); do
>+ ip -n ${s_ns} link set eth$i master bond0
>+ done
>+
>+ ip -n ${s_ns} link set bond0 up
>+ ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
>+ ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
>+ sleep 2
>+}
>+
>+server_destroy()
>+{
>+ for i in $(seq 0 2); do
>+ ip -n ${s_ns} link del eth${i}
>+ done
>+ ip netns del ${s_ns}
>+}
>+
>+client_create()
>+{
>+ ip netns add ${c_ns}
>+ ip -n ${c_ns} link add eth0 type veth peer name c0 netns ${sw_ns}
>+
>+ ip -n ${sw_ns} link set c0 up
>+ ip -n ${sw_ns} link set c0 master br0
>+
>+ ip -n ${c_ns} link set eth0 up
>+ ip -n ${c_ns} addr add ${c_ip4}/24 dev eth0
>+ ip -n ${c_ns} addr add ${c_ip6}/24 dev eth0
>+}
>+
>+client_destroy()
>+{
>+ ip -n ${c_ns} link del eth0
>+ ip netns del ${c_ns}
>+}
>+
>+setup_prepare()
>+{
>+ switch_create
>+ server_create
>+ client_create
>+}
>+
>+cleanup()
>+{
>+ pre_cleanup
>+
>+ client_destroy
>+ server_destroy
>+ switch_destroy
>+}
>+
>+bond_check_connection()
>+{
>+ ip netns exec ${s_ns} ping ${c_ip4} -c5 -i 0.1 -I bond0 &>/dev/null
>+ check_err $? "ping failed"
>+ ip netns exec ${s_ns} ping6 ${c_ip6} -c5 -i 0.1 -I bond0 &>/dev/null
>+ check_err $? "ping6 failed"
>+}
>diff --git a/tools/testing/selftests/drivers/net/bonding/bond_options.sh b/tools/testing/selftests/drivers/net/bonding/bond_options.sh
>new file mode 100755
>index 000000000000..431ce0e45e3c
>--- /dev/null
>+++ b/tools/testing/selftests/drivers/net/bonding/bond_options.sh
>@@ -0,0 +1,216 @@
>+#!/bin/bash
>+# SPDX-License-Identifier: GPL-2.0
>+#
>+# Test bonding options
>+
>+ALL_TESTS="
>+ prio
>+"
>+
>+REQUIRE_MZ=no
>+NUM_NETIFS=0
>+lib_dir=$(dirname "$0")
>+source "$lib_dir"/net_forwarding_lib.sh
>+source "$lib_dir"/bond_lib.sh
>+
>+skip_prio()
>+{
>+ local skip=1
>+
>+ # check if iproute support prio option
>+ ip -n ${s_ns} link set eth0 type bond_slave prio 10
>+ [[ $? -ne 0 ]] && skip=0
>+
>+ # check if kernel support prio option
>+ ip -n ${s_ns} -d link show eth0 | grep -q "prio 10"
>+ [[ $? -ne 0 ]] && skip=0
>+
>+ return $skip
>+}
>+
>+skip_ns()
>+{
>+ local skip=1
>+
>+ # check if iproute support ns_ip6_target option
>+ ip -n ${s_ns} link add bond1 type bond ns_ip6_target ${sw_ip6}
>+ [[ $? -ne 0 ]] && skip=0
>+
>+ # check if kernel support ns_ip6_target option
>+ ip -n ${s_ns} -d link show bond1 | grep -q "ns_ip6_target ${sw_ip6}"
>+ [[ $? -ne 0 ]] && skip=0
>+
>+ ip -n ${s_ns} link del bond1
>+
>+ return $skip
>+}
>+
>+active_slave=""
>+check_active_slave()
>+{
>+ local target_active_slave=$1
>+ active_slave=$(cmd_jq "ip -n ${s_ns} -d -j link show bond0" ".[].linkinfo.info_data.active_slave")
>+ test "$active_slave" = "$target_active_slave"
>+ check_err $? "Current active slave is $active_slave but not $target_active_slave"
>+}
>+
>+
>+# Test bonding prio option
>+prio_test()
>+{
>+ local param="$1"
>+ RET=0
>+
>+ # create bond
>+ bond_reset "${param}"
>+
>+ # check bonding member prio value
>+ ip -n ${s_ns} link set eth0 type bond_slave prio 0
>+ ip -n ${s_ns} link set eth1 type bond_slave prio 10
>+ ip -n ${s_ns} link set eth2 type bond_slave prio 11
>+ cmd_jq "ip -n ${s_ns} -d -j link show eth0" \
>+ ".[].linkinfo.info_slave_data | select (.prio == 0)" "-e" &> /dev/null
>+ check_err $? "eth0 prio is not 0"
>+ cmd_jq "ip -n ${s_ns} -d -j link show eth1" \
>+ ".[].linkinfo.info_slave_data | select (.prio == 10)" "-e" &> /dev/null
>+ check_err $? "eth1 prio is not 10"
>+ cmd_jq "ip -n ${s_ns} -d -j link show eth2" \
>+ ".[].linkinfo.info_slave_data | select (.prio == 11)" "-e" &> /dev/null
>+ check_err $? "eth2 prio is not 11"
>+
>+ bond_check_connection
>+ [ $RET -ne 0 ] && log_test "prio" "$retmsg"
>+
>+ # active salve should be the primary slave
"salve" -> "slave"
>+ check_active_slave eth1
>+
>+ # active slave should be the higher prio slave
>+ ip -n ${s_ns} link set $active_slave down
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 2."
>+ check_active_slave eth2
>+
>+ # when only 1 slave is up
>+ ip -n ${s_ns} link set $active_slave down
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 3."
>+ check_active_slave eth0
>+
>+ # when a higher prio slave change to up
>+ ip -n ${s_ns} link set eth2 up
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 4."
>+ case $primary_reselect in
>+ "0")
>+ check_active_slave "eth2"
>+ ;;
>+ "1")
>+ check_active_slave "eth0"
>+ ;;
>+ "2")
>+ check_active_slave "eth0"
>+ ;;
>+ esac
>+ local pre_active_slave=$active_slave
>+
>+ # when the primary slave change to up
>+ ip -n ${s_ns} link set eth1 up
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 5."
>+ case $primary_reselect in
>+ "0")
>+ check_active_slave "eth1"
>+ ;;
>+ "1")
>+ check_active_slave "$pre_active_slave"
>+ ;;
>+ "2")
>+ check_active_slave "$pre_active_slave"
>+ ip -n ${s_ns} link set $active_slave down
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 6."
>+ check_active_slave "eth1"
>+ ;;
>+ esac
>+
>+ # Test changing bond salve prio
"salve" -> "slave"
>+ if [[ "$primary_reselect" == "0" ]];then
>+ ip -n ${s_ns} link set eth0 type bond_slave prio 1000000
>+ ip -n ${s_ns} link set eth1 type bond_slave prio 0
>+ ip -n ${s_ns} link set eth2 type bond_slave prio -50
>+ ip -n ${s_ns} -d link show eth0 | grep -q 'prio 1000000'
>+ check_err $? "eth0 prio is not 1000000"
>+ ip -n ${s_ns} -d link show eth1 | grep -q 'prio 0'
>+ check_err $? "eth1 prio is not 0"
>+ ip -n ${s_ns} -d link show eth2 | grep -q 'prio -50'
>+ check_err $? "eth3 prio is not -50"
>+ check_active_slave "eth1"
>+
>+ ip -n ${s_ns} link set $active_slave down
>+ ip netns exec ${s_ns} ping $c_ip4 -c5 -I bond0 &>/dev/null
>+ check_err $? "ping failed 7."
>+ check_active_slave "eth0"
>+ fi
>+}
>+
>+prio_miimon()
>+{
>+ local primary_reselect
>+ local mode=$1
>+
>+ for primary_reselect in 0 1 2; do
>+ prio_test "mode $mode miimon 100 primary eth1 primary_reselect $primary_reselect"
>+ log_test "prio" "$mode miimon primary_reselect $primary_reselect"
>+ done
>+}
>+
>+prio_arp()
>+{
>+ local primary_reselect
>+ local mode=$1
>+
>+ for primary_reselect in 0 1 2; do
>+ prio_test "mode active-backup arp_interval 1000 arp_ip_target ${sw_ip4} primary eth1 primary_reselect $primary_reselect"
>+ log_test "prio" "$mode arp_ip_target primary_reselect $primary_reselect"
>+ done
>+}
>+
>+prio_ns()
>+{
>+ local primary_reselect
>+ local mode=$1
>+
>+ if skip_ns; then
>+ log_test_skip "prio ns" "Current iproute or kernel doesn't support bond option 'ns_ip6_target'."
>+ return 0
>+ fi
>+
>+ for primary_reselect in 0 1 2; do
>+ prio_test "mode active-backup arp_interval 1000 ns_ip6_target ${sw_ip6} primary eth1 primary_reselect $primary_reselect"
>+ log_test "prio" "$mode ns_ip6_target primary_reselect $primary_reselect"
>+ done
>+}
>+
>+prio()
>+{
>+ local mode modes="active-backup balance-tlb balance-alb"
>+
>+ if skip_prio; then
>+ log_test_skip "prio" "Current iproute or kernel doesn't support bond option 'prio'."
>+ return 0
>+ fi
>+
>+ for mode in $modes; do
>+ prio_miimon $mode
>+ prio_arp $mode
>+ prio_ns $mode
>+ done
>+}
>+
>+trap cleanup EXIT
>+
>+setup_prepare
>+setup_wait
>+tests_run
>+
>+exit $EXIT_STATUS
>diff --git a/tools/testing/selftests/drivers/net/bonding/option_prio.sh b/tools/testing/selftests/drivers/net/bonding/option_prio.sh
>deleted file mode 100755
>index c32eebff5005..000000000000
>--- a/tools/testing/selftests/drivers/net/bonding/option_prio.sh
>+++ /dev/null
>@@ -1,245 +0,0 @@
>-#!/bin/bash
>-# SPDX-License-Identifier: GPL-2.0
>-#
>-# Test bonding option prio
>-#
>-
>-ALL_TESTS="
>- prio_arp_ip_target_test
>- prio_miimon_test
>-"
>-
>-REQUIRE_MZ=no
>-REQUIRE_JQ=no
>-NUM_NETIFS=0
>-lib_dir=$(dirname "$0")
>-source "$lib_dir"/net_forwarding_lib.sh
>-
>-destroy()
>-{
>- ip link del bond0 &>/dev/null
>- ip link del br0 &>/dev/null
>- ip link del veth0 &>/dev/null
>- ip link del veth1 &>/dev/null
>- ip link del veth2 &>/dev/null
>- ip netns del ns1 &>/dev/null
>- ip link del veth3 &>/dev/null
>-}
>-
>-cleanup()
>-{
>- pre_cleanup
>-
>- destroy
>-}
>-
>-skip()
>-{
>- local skip=1
>- ip link add name bond0 type bond mode 1 miimon 100 &>/dev/null
>- ip link add name veth0 type veth peer name veth0_p
>- ip link set veth0 master bond0
>-
>- # check if iproute support prio option
>- ip link set dev veth0 type bond_slave prio 10
>- [[ $? -ne 0 ]] && skip=0
>-
>- # check if bonding support prio option
>- ip -d link show veth0 | grep -q "prio 10"
>- [[ $? -ne 0 ]] && skip=0
>-
>- ip link del bond0 &>/dev/null
>- ip link del veth0
>-
>- return $skip
>-}
>-
>-active_slave=""
>-check_active_slave()
>-{
>- local target_active_slave=$1
>- active_slave="$(cat /sys/class/net/bond0/bonding/activev_slave)"
>- test "$active_slave" = "$target_active_slave"
>- check_err $? "Current active slave is $active_slave but not $target_active_slave"
>-}
>-
>-
>-# Test bonding prio option with mode=$mode monitor=$monitor
>-# and primary_reselect=$primary_reselect
>-prio_test()
>-{
>- RET=0
>-
>- local monitor=$1
>- local mode=$2
>- local primary_reselect=$3
>-
>- local bond_ip4="192.169.1.2"
>- local peer_ip4="192.169.1.1"
>- local bond_ip6="2009:0a:0b::02"
>- local peer_ip6="2009:0a:0b::01"
>-
>-
>- # create veths
>- ip link add name veth0 type veth peer name veth0_p
>- ip link add name veth1 type veth peer name veth1_p
>- ip link add name veth2 type veth peer name veth2_p
>-
>- # create bond
>- if [[ "$monitor" == "miimon" ]];then
>- ip link add name bond0 type bond mode $mode miimon 100 primary veth1 primary_reselect $primary_reselect
>- elif [[ "$monitor" == "arp_ip_target" ]];then
>- ip link add name bond0 type bond mode $mode arp_interval 1000 arp_ip_target $peer_ip4 primary veth1 primary_reselect $primary_reselect
>- elif [[ "$monitor" == "ns_ip6_target" ]];then
>- ip link add name bond0 type bond mode $mode arp_interval 1000 ns_ip6_target $peer_ip6 primary veth1 primary_reselect $primary_reselect
>- fi
>- ip link set bond0 up
>- ip link set veth0 master bond0
>- ip link set veth1 master bond0
>- ip link set veth2 master bond0
>- # check bonding member prio value
>- ip link set dev veth0 type bond_slave prio 0
>- ip link set dev veth1 type bond_slave prio 10
>- ip link set dev veth2 type bond_slave prio 11
>- ip -d link show veth0 | grep -q 'prio 0'
>- check_err $? "veth0 prio is not 0"
>- ip -d link show veth1 | grep -q 'prio 10'
>- check_err $? "veth0 prio is not 10"
>- ip -d link show veth2 | grep -q 'prio 11'
>- check_err $? "veth0 prio is not 11"
>-
>- ip link set veth0 up
>- ip link set veth1 up
>- ip link set veth2 up
>- ip link set veth0_p up
>- ip link set veth1_p up
>- ip link set veth2_p up
>-
>- # prepare ping target
>- ip link add name br0 type bridge
>- ip link set br0 up
>- ip link set veth0_p master br0
>- ip link set veth1_p master br0
>- ip link set veth2_p master br0
>- ip link add name veth3 type veth peer name veth3_p
>- ip netns add ns1
>- ip link set veth3_p master br0 up
>- ip link set veth3 netns ns1 up
>- ip netns exec ns1 ip addr add $peer_ip4/24 dev veth3
>- ip netns exec ns1 ip addr add $peer_ip6/64 dev veth3
>- ip addr add $bond_ip4/24 dev bond0
>- ip addr add $bond_ip6/64 dev bond0
>- sleep 5
>-
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 1."
>- ping6 $peer_ip6 -c5 -I bond0 &>/dev/null
>- check_err $? "ping6 failed 1."
>-
>- # active salve should be the primary slave
>- check_active_slave veth1
>-
>- # active slave should be the higher prio slave
>- ip link set $active_slave down
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 2."
>- check_active_slave veth2
>-
>- # when only 1 slave is up
>- ip link set $active_slave down
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 3."
>- check_active_slave veth0
>-
>- # when a higher prio slave change to up
>- ip link set veth2 up
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 4."
>- case $primary_reselect in
>- "0")
>- check_active_slave "veth2"
>- ;;
>- "1")
>- check_active_slave "veth0"
>- ;;
>- "2")
>- check_active_slave "veth0"
>- ;;
>- esac
>- local pre_active_slave=$active_slave
>-
>- # when the primary slave change to up
>- ip link set veth1 up
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 5."
>- case $primary_reselect in
>- "0")
>- check_active_slave "veth1"
>- ;;
>- "1")
>- check_active_slave "$pre_active_slave"
>- ;;
>- "2")
>- check_active_slave "$pre_active_slave"
>- ip link set $active_slave down
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 6."
>- check_active_slave "veth1"
>- ;;
>- esac
>-
>- # Test changing bond salve prio
>- if [[ "$primary_reselect" == "0" ]];then
>- ip link set dev veth0 type bond_slave prio 1000000
>- ip link set dev veth1 type bond_slave prio 0
>- ip link set dev veth2 type bond_slave prio -50
>- ip -d link show veth0 | grep -q 'prio 1000000'
>- check_err $? "veth0 prio is not 1000000"
>- ip -d link show veth1 | grep -q 'prio 0'
>- check_err $? "veth1 prio is not 0"
>- ip -d link show veth2 | grep -q 'prio -50'
>- check_err $? "veth3 prio is not -50"
>- check_active_slave "veth1"
>-
>- ip link set $active_slave down
>- ping $peer_ip4 -c5 -I bond0 &>/dev/null
>- check_err $? "ping failed 7."
>- check_active_slave "veth0"
>- fi
>-
>- cleanup
>-
>- log_test "prio_test" "Test bonding option 'prio' with mode=$mode monitor=$monitor and primary_reselect=$primary_reselect"
>-}
>-
>-prio_miimon_test()
>-{
>- local mode
>- local primary_reselect
>-
>- for mode in 1 5 6; do
>- for primary_reselect in 0 1 2; do
>- prio_test "miimon" $mode $primary_reselect
>- done
>- done
>-}
>-
>-prio_arp_ip_target_test()
>-{
>- local primary_reselect
>-
>- for primary_reselect in 0 1 2; do
>- prio_test "arp_ip_target" 1 $primary_reselect
>- done
>-}
>-
>-if skip;then
>- log_test_skip "option_prio.sh" "Current iproute doesn't support 'prio'."
>- exit 0
>-fi
>-
>-trap cleanup EXIT
>-
>-tests_run
>-
>-exit "$EXIT_STATUS"
>--
>2.38.1
>
Powered by blists - more mailing lists