13920431dSJakub Kicinski#!/bin/bash 23920431dSJakub Kicinski# SPDX-License-Identifier: GPL-2.0 33920431dSJakub Kicinski 4*f6476dedSHangbin Liusource lib.sh 53920431dSJakub Kicinskiset -o pipefail 63920431dSJakub Kicinski 73920431dSJakub KicinskiDEV=dummy-dev0 83920431dSJakub KicinskiDEV2=dummy-dev1 93920431dSJakub KicinskiALT_NAME=some-alt-name 103920431dSJakub Kicinski 113920431dSJakub KicinskiRET_CODE=0 123920431dSJakub Kicinski 133920431dSJakub Kicinskicleanup() { 14*f6476dedSHangbin Liu cleanup_ns $NS $test_ns 153920431dSJakub Kicinski} 163920431dSJakub Kicinski 173920431dSJakub Kicinskitrap cleanup EXIT 183920431dSJakub Kicinski 193920431dSJakub Kicinskifail() { 203920431dSJakub Kicinski echo "ERROR: ${1:-unexpected return code} (ret: $_)" >&2 213920431dSJakub Kicinski RET_CODE=1 223920431dSJakub Kicinski} 233920431dSJakub Kicinski 24*f6476dedSHangbin Liusetup_ns NS test_ns 253920431dSJakub Kicinski 263920431dSJakub Kicinski# 273920431dSJakub Kicinski# Test basic move without a rename 283920431dSJakub Kicinski# 293920431dSJakub Kicinskiip -netns $NS link add name $DEV type dummy || fail 30*f6476dedSHangbin Liuip -netns $NS link set dev $DEV netns $test_ns || 313920431dSJakub Kicinski fail "Can't perform a netns move" 32*f6476dedSHangbin Liuip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move" 33*f6476dedSHangbin Liuip -netns $test_ns link del $DEV || fail 343920431dSJakub Kicinski 353920431dSJakub Kicinski# 363920431dSJakub Kicinski# Test move with a conflict 373920431dSJakub Kicinski# 38*f6476dedSHangbin Liuip -netns $test_ns link add name $DEV type dummy 393920431dSJakub Kicinskiip -netns $NS link add name $DEV type dummy || fail 40*f6476dedSHangbin Liuip -netns $NS link set dev $DEV netns $test_ns 2> /dev/null && 413920431dSJakub Kicinski fail "Performed a netns move with a name conflict" 42*f6476dedSHangbin Liuip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move" 433920431dSJakub Kicinskiip -netns $NS link del $DEV || fail 44*f6476dedSHangbin Liuip -netns $test_ns link del $DEV || fail 453920431dSJakub Kicinski 463920431dSJakub Kicinski# 473920431dSJakub Kicinski# Test move with a conflict and rename 483920431dSJakub Kicinski# 49*f6476dedSHangbin Liuip -netns $test_ns link add name $DEV type dummy 503920431dSJakub Kicinskiip -netns $NS link add name $DEV type dummy || fail 51*f6476dedSHangbin Liuip -netns $NS link set dev $DEV netns $test_ns name $DEV2 || 523920431dSJakub Kicinski fail "Can't perform a netns move with rename" 53*f6476dedSHangbin Liuip -netns $test_ns link del $DEV2 || fail 54*f6476dedSHangbin Liuip -netns $test_ns link del $DEV || fail 553920431dSJakub Kicinski 563920431dSJakub Kicinski# 573920431dSJakub Kicinski# Test dup alt-name with netns move 583920431dSJakub Kicinski# 59*f6476dedSHangbin Liuip -netns $test_ns link add name $DEV type dummy || fail 60*f6476dedSHangbin Liuip -netns $test_ns link property add dev $DEV altname $ALT_NAME || fail 613920431dSJakub Kicinskiip -netns $NS link add name $DEV2 type dummy || fail 623920431dSJakub Kicinskiip -netns $NS link property add dev $DEV2 altname $ALT_NAME || fail 633920431dSJakub Kicinski 64*f6476dedSHangbin Liuip -netns $NS link set dev $DEV2 netns $test_ns 2> /dev/null && 653920431dSJakub Kicinski fail "Moved with alt-name dup" 663920431dSJakub Kicinski 67*f6476dedSHangbin Liuip -netns $test_ns link del $DEV || fail 683920431dSJakub Kicinskiip -netns $NS link del $DEV2 || fail 693920431dSJakub Kicinski 703920431dSJakub Kicinski# 713920431dSJakub Kicinski# Test creating alt-name in one net-ns and using in another 723920431dSJakub Kicinski# 733920431dSJakub Kicinskiip -netns $NS link add name $DEV type dummy || fail 743920431dSJakub Kicinskiip -netns $NS link property add dev $DEV altname $ALT_NAME || fail 75*f6476dedSHangbin Liuip -netns $NS link set dev $DEV netns $test_ns || fail 76*f6476dedSHangbin Liuip -netns $test_ns link show dev $ALT_NAME >> /dev/null || fail "Can't find alt-name after move" 773920431dSJakub Kicinskiip -netns $NS link show dev $ALT_NAME 2> /dev/null && 783920431dSJakub Kicinski fail "Can still find alt-name after move" 79*f6476dedSHangbin Liuip -netns $test_ns link del $DEV || fail 803920431dSJakub Kicinski 813920431dSJakub Kicinskiecho -ne "$(basename $0) \t\t\t\t" 823920431dSJakub Kicinskiif [ $RET_CODE -eq 0 ]; then 833920431dSJakub Kicinski echo "[ OK ]" 843920431dSJakub Kicinskielse 853920431dSJakub Kicinski echo "[ FAIL ]" 863920431dSJakub Kicinskifi 873920431dSJakub Kicinskiexit $RET_CODE 88