| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #!/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
- NSIM_ADDR=2025
- RET_CODE=0
- cleanup() {
- cleanup_netdevsim $NSIM_ADDR
- 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
- # Use netdevsim because it has extra asserts for notifiers.
- #
- nsim=$(create_netdevsim $NSIM_ADDR $NS)
- ip -netns $NS link set dev $nsim netns $test_ns ||
- fail "Can't perform a netns move"
- ip -netns $test_ns link show dev $nsim >> /dev/null ||
- fail "Device not found after move"
- cleanup_netdevsim $NSIM_ADDR
- #
- # 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
- #
- # Test no conflict of the same name/ifindex in different netns
- #
- ip -netns $NS link add name $DEV index 100 type dummy || fail
- ip -netns $NS link add netns $test_ns name $DEV index 100 type dummy ||
- fail "Can create in netns without moving"
- ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found"
- ip -netns $NS link del $DEV || fail
- 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
|