extack.sh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. #
  4. # Test operations that we expect to report extended ack.
  5. lib_dir=$(dirname $0)/../../../net/forwarding
  6. ALL_TESTS="
  7. netdev_pre_up_test
  8. vxlan_vlan_add_test
  9. vxlan_bridge_create_test
  10. bridge_create_test
  11. "
  12. NUM_NETIFS=2
  13. source $lib_dir/lib.sh
  14. setup_prepare()
  15. {
  16. swp1=${NETIFS[p1]}
  17. swp2=${NETIFS[p2]}
  18. ip link set dev $swp1 up
  19. ip link set dev $swp2 up
  20. }
  21. cleanup()
  22. {
  23. pre_cleanup
  24. ip link set dev $swp2 down
  25. ip link set dev $swp1 down
  26. }
  27. netdev_pre_up_test()
  28. {
  29. RET=0
  30. ip link add name br1 type bridge vlan_filtering 0 mcast_snooping 0
  31. ip link set dev br1 addrgenmode none
  32. ip link set dev br1 up
  33. ip link add name vx1 up type vxlan id 1000 \
  34. local 192.0.2.17 remote 192.0.2.18 \
  35. dstport 4789 nolearning noudpcsum tos inherit ttl 100
  36. ip link set dev vx1 master br1
  37. check_err $?
  38. ip link set dev $swp1 master br1
  39. check_err $?
  40. ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0
  41. ip link set dev br2 addrgenmode none
  42. ip link set dev br2 up
  43. ip link add name vx2 up type vxlan id 2000 \
  44. local 192.0.2.17 remote 192.0.2.18 \
  45. dstport 4789 nolearning noudpcsum tos inherit ttl 100
  46. ip link set dev vx2 master br2
  47. check_err $?
  48. ip link set dev $swp2 master br2
  49. check_err $?
  50. # Unsupported configuration: mlxsw demands that all offloaded VXLAN
  51. # devices have the same TTL.
  52. ip link set dev vx2 down
  53. ip link set dev vx2 type vxlan ttl 200
  54. ip link set dev vx2 up &>/dev/null
  55. check_fail $?
  56. ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
  57. check_err $?
  58. log_test "extack - NETDEV_PRE_UP"
  59. ip link del dev vx2
  60. ip link del dev br2
  61. ip link del dev vx1
  62. ip link del dev br1
  63. }
  64. vxlan_vlan_add_test()
  65. {
  66. RET=0
  67. ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
  68. ip link set dev br1 addrgenmode none
  69. ip link set dev br1 up
  70. # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
  71. ip link add name vx1 up type vxlan id 1000 \
  72. local 192.0.2.17 remote 192.0.2.18 \
  73. dstport 4789 tos inherit ttl 100
  74. ip link set dev vx1 master br1
  75. check_err $?
  76. bridge vlan add dev vx1 vid 1
  77. check_err $?
  78. ip link set dev $swp1 master br1
  79. check_err $?
  80. bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
  81. | grep -q mlxsw_spectrum
  82. check_err $?
  83. log_test "extack - map VLAN at VXLAN device"
  84. ip link del dev vx1
  85. ip link del dev br1
  86. }
  87. vxlan_bridge_create_test()
  88. {
  89. RET=0
  90. # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
  91. ip link add name vx1 up type vxlan id 1000 \
  92. local 192.0.2.17 remote 192.0.2.18 \
  93. dstport 4789 tos inherit ttl 100
  94. # Test with VLAN-aware bridge.
  95. ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
  96. ip link set dev br1 addrgenmode none
  97. ip link set dev br1 up
  98. ip link set dev vx1 master br1
  99. ip link set dev $swp1 master br1 2>&1 > /dev/null \
  100. | grep -q mlxsw_spectrum
  101. check_err $?
  102. # Test with VLAN-unaware bridge.
  103. ip link set dev br1 type bridge vlan_filtering 0
  104. ip link set dev $swp1 master br1 2>&1 > /dev/null \
  105. | grep -q mlxsw_spectrum
  106. check_err $?
  107. log_test "extack - bridge creation with VXLAN"
  108. ip link del dev br1
  109. ip link del dev vx1
  110. }
  111. bridge_create_test()
  112. {
  113. RET=0
  114. ip link add name br1 type bridge vlan_filtering 1
  115. ip link set dev br1 addrgenmode none
  116. ip link set dev br1 up
  117. ip link add name br2 type bridge vlan_filtering 1
  118. ip link set dev br2 addrgenmode none
  119. ip link set dev br2 up
  120. ip link set dev $swp1 master br1
  121. check_err $?
  122. # Only one VLAN-aware bridge is supported, so this should fail with
  123. # an extack.
  124. ip link set dev $swp2 master br2 2>&1 > /dev/null \
  125. | grep -q mlxsw_spectrum
  126. check_err $?
  127. log_test "extack - multiple VLAN-aware bridges creation"
  128. ip link del dev br2
  129. ip link del dev br1
  130. }
  131. trap cleanup EXIT
  132. setup_prepare
  133. setup_wait
  134. tests_run
  135. exit $EXIT_STATUS