xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/net/altnames.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun
4*4882a593Smuzhiyunlib_dir=$(dirname $0)/forwarding
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunALL_TESTS="altnames_test"
7*4882a593SmuzhiyunNUM_NETIFS=0
8*4882a593Smuzhiyunsource $lib_dir/lib.sh
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunDUMMY_DEV=dummytest
11*4882a593SmuzhiyunSHORT_NAME=shortname
12*4882a593SmuzhiyunLONG_NAME=someveryveryveryveryveryverylongname
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunaltnames_test()
15*4882a593Smuzhiyun{
16*4882a593Smuzhiyun	RET=0
17*4882a593Smuzhiyun	local output
18*4882a593Smuzhiyun	local name
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun	ip link property add $DUMMY_DEV altname $SHORT_NAME
21*4882a593Smuzhiyun	check_err $? "Failed to add short alternative name"
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun	output=$(ip -j -p link show $SHORT_NAME)
24*4882a593Smuzhiyun	check_err $? "Failed to do link show with short alternative name"
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	name=$(echo $output | jq -e -r ".[0].altnames[0]")
27*4882a593Smuzhiyun	check_err $? "Failed to get short alternative name from link show JSON"
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun	[ "$name" == "$SHORT_NAME" ]
30*4882a593Smuzhiyun	check_err $? "Got unexpected short alternative name from link show JSON"
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun	ip -j -p link show $DUMMY_DEV &>/dev/null
33*4882a593Smuzhiyun	check_err $? "Failed to do link show with original name"
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun	ip link property add $DUMMY_DEV altname $LONG_NAME
36*4882a593Smuzhiyun	check_err $? "Failed to add long alternative name"
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun	output=$(ip -j -p link show $LONG_NAME)
39*4882a593Smuzhiyun	check_err $? "Failed to do link show with long alternative name"
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	name=$(echo $output | jq -e -r ".[0].altnames[1]")
42*4882a593Smuzhiyun	check_err $? "Failed to get long alternative name from link show JSON"
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	[ "$name" == "$LONG_NAME" ]
45*4882a593Smuzhiyun	check_err $? "Got unexpected long alternative name from link show JSON"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun	ip link property del $DUMMY_DEV altname $SHORT_NAME
48*4882a593Smuzhiyun	check_err $? "Failed to delete short alternative name"
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun	ip -j -p link show $SHORT_NAME &>/dev/null
51*4882a593Smuzhiyun	check_fail $? "Unexpected success while trying to do link show with deleted short alternative name"
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun	# long name is left there on purpose to be removed alongside the device
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	log_test "altnames test"
56*4882a593Smuzhiyun}
57*4882a593Smuzhiyun
58*4882a593Smuzhiyunsetup_prepare()
59*4882a593Smuzhiyun{
60*4882a593Smuzhiyun	ip link add name $DUMMY_DEV type dummy
61*4882a593Smuzhiyun}
62*4882a593Smuzhiyun
63*4882a593Smuzhiyuncleanup()
64*4882a593Smuzhiyun{
65*4882a593Smuzhiyun	pre_cleanup
66*4882a593Smuzhiyun	ip link del name $DUMMY_DEV
67*4882a593Smuzhiyun}
68*4882a593Smuzhiyun
69*4882a593Smuzhiyuntrap cleanup EXIT
70*4882a593Smuzhiyun
71*4882a593Smuzhiyunsetup_prepare
72*4882a593Smuzhiyun
73*4882a593Smuzhiyuntests_run
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunexit $EXIT_STATUS
76