#!/bin/bash # SPDX-License-Identifier: GPL-2.0 source lib.sh set -o pipefail DEV=dummy-dev0 DEV2=dummy-dev1 ALT_NAME=some-alt-name RET_CODE=0 cleanup() { cleanup_ns $NS $test_ns } trap cleanup EXIT fail() { echo "ERROR: ${1:-unexpected return code} (ret: $_)" >&2 RET_CODE=1 } setup_ns NS test_ns # # Test basic move without a rename # ip -netns $NS link add name $DEV type dummy || fail ip -netns $NS link set dev $DEV netns $test_ns || fail "Can't perform a netns move" ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move" ip -netns $test_ns link del $DEV || fail # # Test move with a conflict # ip -netns $test_ns link add name $DEV type dummy ip -netns $NS link add name $DEV type dummy || fail ip -netns $NS link set dev $DEV netns $test_ns 2> /dev/null && fail "Performed a netns move with a name conflict" ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move" ip -netns $NS link del $DEV || fail ip -netns $test_ns link del $DEV || fail # # Test move with a conflict and rename # ip -netns $test_ns link add name $DEV type dummy ip -netns $NS link add name $DEV type dummy || fail ip -netns $NS link set dev $DEV netns $test_ns name $DEV2 || fail "Can't perform a netns move with rename" ip -netns $test_ns link del $DEV2 || fail ip -netns $test_ns link del $DEV || fail # # Test dup alt-name with netns move # ip -netns $test_ns link add name $DEV type dummy || fail ip -netns $test_ns link property add dev $DEV altname $ALT_NAME || fail ip -netns $NS link add name $DEV2 type dummy || fail ip -netns $NS link property add dev $DEV2 altname $ALT_NAME || fail ip -netns $NS link set dev $DEV2 netns $test_ns 2> /dev/null && fail "Moved with alt-name dup" ip -netns $test_ns link del $DEV || fail ip -netns $NS link del $DEV2 || fail # # Test creating alt-name in one net-ns and using in another # ip -netns $NS link add name $DEV type dummy || fail ip -netns $NS link property add dev $DEV altname $ALT_NAME || fail ip -netns $NS link set dev $DEV netns $test_ns || fail ip -netns $test_ns link show dev $ALT_NAME >> /dev/null || fail "Can't find alt-name after move" ip -netns $NS link show dev $ALT_NAME 2> /dev/null && fail "Can still find alt-name after move" ip -netns $test_ns link del $DEV || fail echo -ne "$(basename $0) \t\t\t\t" if [ $RET_CODE -eq 0 ]; then echo "[ OK ]" else echo "[ FAIL ]" fi exit $RET_CODE