netns-name.sh 2.9 KB

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