[PROBLEM] selftests: net/forwarding/*.sh: 'Command line is not complete. Try option "help"'

From: Mirsad Todorovac
Date: Mon Jul 17 2023 - 16:51:38 EST


Hi,

There seems to be a problem with net/forwarding line of 6.5-rc2 kselftests,
vanilla Torvalds tree, commit fdf0eaf11452, on Ubuntu 22.04 LTS Jammy Jellyfish.

(Confirmed on Ubuntu 22.10 Kinetic Kudu.)

Tests fail with error message:

Command line is not complete. Try option "help"
Failed to create netif

The script

# tools/testing/seltests/net/forwarding/bridge_igmp.sh

bash `set -x` ends with an error:

++ create_netif_veth
++ local i
++ (( i = 1 ))
++ (( i <= NUM_NETIFS ))
++ local j=2
++ ip link show dev
++ [[ 255 -ne 0 ]]
++ ip link add type veth peer name
Command line is not complete. Try option "help"
++ [[ 255 -ne 0 ]]
++ echo 'Failed to create netif'
Failed to create netif
++ exit 1

The problem seems to be linked with this piece of code of "lib.sh":

create_netif_veth()
{
local i

for ((i = 1; i <= NUM_NETIFS; ++i)); do
local j=$((i+1))

ip link show dev ${NETIFS[p$i]} &> /dev/null
if [[ $? -ne 0 ]]; then
ip link add ${NETIFS[p$i]} type veth \
peer name ${NETIFS[p$j]}
if [[ $? -ne 0 ]]; then
echo "Failed to create netif"
exit 1
fi
fi
i=$j
done
}

Somehow, ${NETIFS[p$i]} is evaluated to an empty string?

However, I can't seem to see what is the expected result.

The problem was confirmed in the backlogs of 6.5-rc1 and 6.4 kselftests.

It is possible that I'm doing something terribly wrong, but it is basically
the default kselftest suite on a rather minimal Ubuntu.

Please find attached the bash output from `set -x`.

Version of iproute2 is:
ii iproute2 5.15.0-1ubuntu2 amd64 networking and traffic control tools

Hope this helps.

Best regards,
Mirsad Todorovac+ ALL_TESTS='v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test v3exc_block_test v3exc_timeout_test v3star_ex_auto_add_test'
+ NUM_NETIFS=4
+ CHECK_TC=yes
+ TEST_GROUP=239.10.10.10
+ TEST_GROUP_MAC=01:00:5e:0a:0a:0a
+ ALL_GROUP=224.0.0.1
+ ALL_MAC=01:00:5e:00:00:01
+ MZPKT_IS_INC=22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:03
+ MZPKT_IS_INC2=22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c
+ MZPKT_IS_INC3=22:00:5f:b4:00:00:00:01:01:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e
+ MZPKT_ALLOW=22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c
+ MZPKT_ALLOW2=22:00:5b:b4:00:00:00:01:05:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e
+ MZPKT_IS_EXC=22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:14:c0:00:02:15
+ MZPKT_IS_EXC2=22:00:5e:b4:00:00:00:01:02:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e
+ MZPKT_TO_EXC=22:00:9a:b1:00:00:00:01:04:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e
+ MZPKT_BLOCK=22:00:98:b1:00:00:00:01:06:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e
+ source lib.sh
++ ksft_skip=4
++ PING=ping
++ PING6=ping6
++ MZ=mausezahn
++ ARPING=arping
++ TEAMD=teamd
++ WAIT_TIME=5
++ PAUSE_ON_FAIL=no
++ PAUSE_ON_CLEANUP=no
++ NETIF_TYPE=veth
++ NETIF_CREATE=yes
++ MCD=smcrouted
++ MC_CLI=smcroutectl
++ PING_COUNT=10
++ PING_TIMEOUT=5
++ WAIT_TIMEOUT=20
++ INTERFACE_TIMEOUT=600
++ LOW_AGEING_TIME=1000
++ REQUIRE_JQ=yes
++ REQUIRE_MZ=yes
++ REQUIRE_MTOOLS=no
++ STABLE_MAC_ADDRS=no
++ TCPDUMP_EXTRA_FLAGS=
++ relative_path=lib.sh
++ [[ lib.sh == \l\i\b\.\s\h ]]
++ relative_path=.
++ [[ -f ./forwarding.config ]]
+++ id -u
++ [[ 0 -ne 0 ]]
++ [[ yes = \y\e\s ]]
++ check_tc_version
++ tc -j
++ [[ 0 -ne 0 ]]
++ [[ yes = \y\e\s ]]
++ require_command jq
++ local cmd=jq
++ shift
+++ command -v jq
++ [[ ! -x /usr/bin/jq ]]
++ [[ yes = \y\e\s ]]
++ require_command mausezahn
++ local cmd=mausezahn
++ shift
+++ command -v mausezahn
++ [[ ! -x /usr/sbin/mausezahn ]]
++ [[ no = \y\e\s ]]
++ [[ ! -v NUM_NETIFS ]]
++ count=0
++ [[ 0 -gt 0 ]]
++ declare -A MAC_ADDR_ORIG
++ [[ yes = \y\e\s ]]
++ create_netif
++ case "$NETIF_TYPE" in
++ create_netif_veth
++ local i
++ (( i = 1 ))
++ (( i <= NUM_NETIFS ))
++ local j=2
++ ip link show dev
++ [[ 255 -ne 0 ]]
++ ip link add type veth peer name
Command line is not complete. Try option "help"
++ [[ 255 -ne 0 ]]
++ echo 'Failed to create netif'
Failed to create netif
++ exit 1

Attachment: config-6.5.0-rc2-debug-gfdf0eaf11452.xz
Description: application/xz