Skip to content

Commit 3920431

Browse files
kuba-mooPaolo Abeni
authored andcommitted
selftests: net: add very basic test for netdev names and namespaces
Add selftest for fixes around naming netdevs and namespaces. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 8e15aee commit 3920431

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

tools/testing/selftests/net/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ TEST_PROGS += gro.sh
3434
TEST_PROGS += gre_gso.sh
3535
TEST_PROGS += cmsg_so_mark.sh
3636
TEST_PROGS += cmsg_time.sh cmsg_ipv6.sh
37+
TEST_PROGS += netns-name.sh
3738
TEST_PROGS += srv6_end_dt46_l3vpn_test.sh
3839
TEST_PROGS += srv6_end_dt4_l3vpn_test.sh
3940
TEST_PROGS += srv6_end_dt6_l3vpn_test.sh
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
set -o pipefail
5+
6+
NS=netns-name-test
7+
DEV=dummy-dev0
8+
DEV2=dummy-dev1
9+
ALT_NAME=some-alt-name
10+
11+
RET_CODE=0
12+
13+
cleanup() {
14+
ip netns del $NS
15+
}
16+
17+
trap cleanup EXIT
18+
19+
fail() {
20+
echo "ERROR: ${1:-unexpected return code} (ret: $_)" >&2
21+
RET_CODE=1
22+
}
23+
24+
ip netns add $NS
25+
26+
#
27+
# Test basic move without a rename
28+
#
29+
ip -netns $NS link add name $DEV type dummy || fail
30+
ip -netns $NS link set dev $DEV netns 1 ||
31+
fail "Can't perform a netns move"
32+
ip link show dev $DEV >> /dev/null || fail "Device not found after move"
33+
ip link del $DEV || fail
34+
35+
#
36+
# Test move with a conflict
37+
#
38+
ip link add name $DEV type dummy
39+
ip -netns $NS link add name $DEV type dummy || fail
40+
ip -netns $NS link set dev $DEV netns 1 2> /dev/null &&
41+
fail "Performed a netns move with a name conflict"
42+
ip link show dev $DEV >> /dev/null || fail "Device not found after move"
43+
ip -netns $NS link del $DEV || fail
44+
ip link del $DEV || fail
45+
46+
#
47+
# Test move with a conflict and rename
48+
#
49+
ip link add name $DEV type dummy
50+
ip -netns $NS link add name $DEV type dummy || fail
51+
ip -netns $NS link set dev $DEV netns 1 name $DEV2 ||
52+
fail "Can't perform a netns move with rename"
53+
ip link del $DEV2 || fail
54+
ip link del $DEV || fail
55+
56+
#
57+
# Test dup alt-name with netns move
58+
#
59+
ip link add name $DEV type dummy || fail
60+
ip link property add dev $DEV altname $ALT_NAME || fail
61+
ip -netns $NS link add name $DEV2 type dummy || fail
62+
ip -netns $NS link property add dev $DEV2 altname $ALT_NAME || fail
63+
64+
ip -netns $NS link set dev $DEV2 netns 1 2> /dev/null &&
65+
fail "Moved with alt-name dup"
66+
67+
ip link del $DEV || fail
68+
ip -netns $NS link del $DEV2 || fail
69+
70+
#
71+
# Test creating alt-name in one net-ns and using in another
72+
#
73+
ip -netns $NS link add name $DEV type dummy || fail
74+
ip -netns $NS link property add dev $DEV altname $ALT_NAME || fail
75+
ip -netns $NS link set dev $DEV netns 1 || fail
76+
ip link show dev $ALT_NAME >> /dev/null || fail "Can't find alt-name after move"
77+
ip -netns $NS link show dev $ALT_NAME 2> /dev/null &&
78+
fail "Can still find alt-name after move"
79+
ip link del $DEV || fail
80+
81+
echo -ne "$(basename $0) \t\t\t\t"
82+
if [ $RET_CODE -eq 0 ]; then
83+
echo "[ OK ]"
84+
else
85+
echo "[ FAIL ]"
86+
fi
87+
exit $RET_CODE

0 commit comments

Comments
 (0)