netns-name.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. RET_CODE=0
  9. cleanup() {
  10. cleanup_ns $NS $test_ns
  11. }
  12. trap cleanup EXIT
  13. fail() {
  14. echo "ERROR: ${1:-unexpected return code} (ret: $_)" >&2
  15. RET_CODE=1
  16. }
  17. setup_ns NS test_ns
  18. #
  19. # Test basic move without a rename
  20. #
  21. ip -netns $NS link add name $DEV type dummy || fail
  22. ip -netns $NS link set dev $DEV netns $test_ns ||
  23. fail "Can't perform a netns move"
  24. ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move"
  25. ip -netns $test_ns link del $DEV || fail
  26. #
  27. # Test move with a conflict
  28. #
  29. ip -netns $test_ns link add name $DEV type dummy
  30. ip -netns $NS link add name $DEV type dummy || fail
  31. ip -netns $NS link set dev $DEV netns $test_ns 2> /dev/null &&
  32. fail "Performed a netns move with a name conflict"
  33. ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found after move"
  34. ip -netns $NS link del $DEV || fail
  35. ip -netns $test_ns link del $DEV || fail
  36. #
  37. # Test move with a conflict and rename
  38. #
  39. ip -netns $test_ns link add name $DEV type dummy
  40. ip -netns $NS link add name $DEV type dummy || fail
  41. ip -netns $NS link set dev $DEV netns $test_ns name $DEV2 ||
  42. fail "Can't perform a netns move with rename"
  43. ip -netns $test_ns link del $DEV2 || fail
  44. ip -netns $test_ns link del $DEV || fail
  45. #
  46. # Test dup alt-name with netns move
  47. #
  48. ip -netns $test_ns link add name $DEV type dummy || fail
  49. ip -netns $test_ns link property add dev $DEV altname $ALT_NAME || fail
  50. ip -netns $NS link add name $DEV2 type dummy || fail
  51. ip -netns $NS link property add dev $DEV2 altname $ALT_NAME || fail
  52. ip -netns $NS link set dev $DEV2 netns $test_ns 2> /dev/null &&
  53. fail "Moved with alt-name dup"
  54. ip -netns $test_ns link del $DEV || fail
  55. ip -netns $NS link del $DEV2 || fail
  56. #
  57. # Test creating alt-name in one net-ns and using in another
  58. #
  59. ip -netns $NS link add name $DEV type dummy || fail
  60. ip -netns $NS link property add dev $DEV altname $ALT_NAME || fail
  61. ip -netns $NS link set dev $DEV netns $test_ns || fail
  62. ip -netns $test_ns link show dev $ALT_NAME >> /dev/null || fail "Can't find alt-name after move"
  63. ip -netns $NS link show dev $ALT_NAME 2> /dev/null &&
  64. fail "Can still find alt-name after move"
  65. ip -netns $test_ns link del $DEV || fail
  66. echo -ne "$(basename $0) \t\t\t\t"
  67. if [ $RET_CODE -eq 0 ]; then
  68. echo "[ OK ]"
  69. else
  70. echo "[ FAIL ]"
  71. fi
  72. exit $RET_CODE