File Index
Files and directories
Sign in
FILE

netns-name.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/netns-name.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4source lib.sh
  5set -o pipefail
  6
  7DEV=dummy-dev0
  8DEV2=dummy-dev1
  9ALT_NAME=some-alt-name
 10NSIM_ADDR=2025
 11
 12RET_CODE=0
 13
 14cleanup() {
 15    cleanup_netdevsim $NSIM_ADDR
 16    cleanup_ns $NS $test_ns
 17}
 18
 19trap cleanup EXIT
 20
 21fail() {
 22    echo "ERROR: ${1:-unexpected return code} (ret: $_)" >&2
 23    RET_CODE=1
 24}
 25
 26setup_ns NS test_ns
 27
 28#
 29# Test basic move without a rename
 30# Use netdevsim because it has extra asserts for notifiers.
 31#
 32
 33nsim=$(create_netdevsim $NSIM_ADDR $NS)
 34ip -netns $NS link set dev $nsim netns $test_ns ||
 35    fail "Can't perform a netns move"
 36ip -netns $test_ns link show dev $nsim >> /dev/null ||
 37    fail "Device not found after move"
 38cleanup_netdevsim $NSIM_ADDR
 39
 40#
 41# Test move with a conflict
 42#
 43ip -netns $test_ns link add name $DEV type dummy
 44ip -netns $NS link add name $DEV type dummy || fail
 45ip -netns $NS link set dev $DEV netns $test_ns 2> /dev/null &&
 46    fail "Performed a netns move with a name conflict"
 47ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move"
 48ip -netns $NS link del $DEV || fail
 49ip -netns $test_ns link del $DEV || fail
 50
 51#
 52# Test move with a conflict and rename
 53#
 54ip -netns $test_ns link add name $DEV type dummy
 55ip -netns $NS link add name $DEV type dummy || fail
 56ip -netns $NS link set dev $DEV netns $test_ns name $DEV2 ||
 57    fail "Can't perform a netns move with rename"
 58ip -netns $test_ns link del $DEV2 || fail
 59ip -netns $test_ns link del $DEV || fail
 60
 61#
 62# Test dup alt-name with netns move
 63#
 64ip -netns $test_ns link add name $DEV type dummy || fail
 65ip -netns $test_ns link property add dev $DEV altname $ALT_NAME || fail
 66ip -netns $NS link add name $DEV2 type dummy || fail
 67ip -netns $NS link property add dev $DEV2 altname $ALT_NAME || fail
 68
 69ip -netns $NS link set dev $DEV2 netns $test_ns 2> /dev/null &&
 70    fail "Moved with alt-name dup"
 71
 72ip -netns $test_ns link del $DEV || fail
 73ip -netns $NS link del $DEV2 || fail
 74
 75#
 76# Test creating alt-name in one net-ns and using in another
 77#
 78ip -netns $NS link add name $DEV type dummy || fail
 79ip -netns $NS link property add dev $DEV altname $ALT_NAME || fail
 80ip -netns $NS link set dev $DEV netns $test_ns || fail
 81ip -netns $test_ns link show dev $ALT_NAME >> /dev/null || fail "Can't find alt-name after move"
 82ip -netns $NS link show dev $ALT_NAME 2> /dev/null &&
 83    fail "Can still find alt-name after move"
 84ip -netns $test_ns link del $DEV || fail
 85
 86#
 87# Test no conflict of the same name/ifindex in different netns
 88#
 89ip -netns $NS link add name $DEV index 100 type dummy || fail
 90ip -netns $NS link add netns $test_ns name $DEV index 100 type dummy ||
 91    fail "Can create in netns without moving"
 92ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found"
 93ip -netns $NS link del $DEV || fail
 94ip -netns $test_ns link del $DEV || fail
 95
 96echo -ne "$(basename $0) \t\t\t\t"
 97if [ $RET_CODE -eq 0 ]; then
 98    echo "[  OK  ]"
 99else
100    echo "[ FAIL ]"
101fi
102exit $RET_CODE
~/ Read-only file preview.