cc7e3f63d7
The loopback feature is only supported on a few drivers like broadcom,
mellanox, etc. The default veth driver has not supported it yet. To avoid
returning failed and making the runner feel confused, let's just skip
the test on drivers that not support loopback.
Fixes: ad11340994
("selftests: Add loopback test")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
103 lines
1.6 KiB
Bash
Executable File
103 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# Kselftest framework requirement - SKIP code is 4.
|
|
ksft_skip=4
|
|
|
|
ALL_TESTS="loopback_test"
|
|
NUM_NETIFS=2
|
|
source tc_common.sh
|
|
source lib.sh
|
|
|
|
h1_create()
|
|
{
|
|
simple_if_init $h1 192.0.2.1/24
|
|
tc qdisc add dev $h1 clsact
|
|
}
|
|
|
|
h1_destroy()
|
|
{
|
|
tc qdisc del dev $h1 clsact
|
|
simple_if_fini $h1 192.0.2.1/24
|
|
}
|
|
|
|
h2_create()
|
|
{
|
|
simple_if_init $h2
|
|
}
|
|
|
|
h2_destroy()
|
|
{
|
|
simple_if_fini $h2
|
|
}
|
|
|
|
loopback_test()
|
|
{
|
|
RET=0
|
|
|
|
tc filter add dev $h1 ingress protocol arp pref 1 handle 101 flower \
|
|
skip_hw arp_op reply arp_tip 192.0.2.1 action drop
|
|
|
|
$MZ $h1 -c 1 -t arp -q
|
|
|
|
tc_check_packets "dev $h1 ingress" 101 1
|
|
check_fail $? "Matched on a filter without loopback setup"
|
|
|
|
ethtool -K $h1 loopback on
|
|
check_err $? "Failed to enable loopback"
|
|
|
|
setup_wait_dev $h1
|
|
|
|
$MZ $h1 -c 1 -t arp -q
|
|
|
|
tc_check_packets "dev $h1 ingress" 101 1
|
|
check_err $? "Did not match on filter with loopback"
|
|
|
|
ethtool -K $h1 loopback off
|
|
check_err $? "Failed to disable loopback"
|
|
|
|
$MZ $h1 -c 1 -t arp -q
|
|
|
|
tc_check_packets "dev $h1 ingress" 101 2
|
|
check_fail $? "Matched on a filter after loopback was removed"
|
|
|
|
tc filter del dev $h1 ingress protocol arp pref 1 handle 101 flower
|
|
|
|
log_test "loopback"
|
|
}
|
|
|
|
setup_prepare()
|
|
{
|
|
h1=${NETIFS[p1]}
|
|
h2=${NETIFS[p2]}
|
|
|
|
vrf_prepare
|
|
|
|
h1_create
|
|
h2_create
|
|
|
|
if ethtool -k $h1 | grep loopback | grep -q fixed; then
|
|
log_test "SKIP: dev $h1 does not support loopback feature"
|
|
exit $ksft_skip
|
|
fi
|
|
}
|
|
|
|
cleanup()
|
|
{
|
|
pre_cleanup
|
|
|
|
h2_destroy
|
|
h1_destroy
|
|
|
|
vrf_cleanup
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
setup_prepare
|
|
setup_wait
|
|
|
|
tests_run
|
|
|
|
exit $EXIT_STATUS
|