router_bridge_vlan.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. ALL_TESTS="
  4. ping_ipv4
  5. ping_ipv6
  6. vlan
  7. "
  8. NUM_NETIFS=4
  9. source lib.sh
  10. h1_create()
  11. {
  12. simple_if_init $h1
  13. vlan_create $h1 555 v$h1 192.0.2.1/28 2001:db8:1::1/64
  14. ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2
  15. ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2
  16. }
  17. h1_destroy()
  18. {
  19. ip -6 route del 2001:db8:2::/64 vrf v$h1
  20. ip -4 route del 192.0.2.128/28 vrf v$h1
  21. vlan_destroy $h1 555
  22. simple_if_fini $h1
  23. }
  24. h2_create()
  25. {
  26. simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64
  27. ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129
  28. ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1
  29. }
  30. h2_destroy()
  31. {
  32. ip -6 route del 2001:db8:1::/64 vrf v$h2
  33. ip -4 route del 192.0.2.0/28 vrf v$h2
  34. simple_if_fini $h2 192.0.2.130/28
  35. }
  36. router_create()
  37. {
  38. ip link add name br1 type bridge vlan_filtering 1
  39. ip link set dev br1 up
  40. ip link set dev $swp1 master br1
  41. ip link set dev $swp1 up
  42. bridge vlan add dev br1 vid 555 self pvid untagged
  43. bridge vlan add dev $swp1 vid 555
  44. __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
  45. ip link set dev $swp2 up
  46. __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
  47. }
  48. router_destroy()
  49. {
  50. __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
  51. ip link set dev $swp2 down
  52. __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
  53. ip link set dev $swp1 down
  54. ip link set dev $swp1 nomaster
  55. ip link del dev br1
  56. }
  57. setup_prepare()
  58. {
  59. h1=${NETIFS[p1]}
  60. swp1=${NETIFS[p2]}
  61. swp2=${NETIFS[p3]}
  62. h2=${NETIFS[p4]}
  63. vrf_prepare
  64. h1_create
  65. h2_create
  66. router_create
  67. forwarding_enable
  68. }
  69. cleanup()
  70. {
  71. pre_cleanup
  72. forwarding_restore
  73. router_destroy
  74. h2_destroy
  75. h1_destroy
  76. vrf_cleanup
  77. }
  78. vlan()
  79. {
  80. RET=0
  81. bridge vlan add dev br1 vid 333 self
  82. check_err $? "Can't add a non-PVID VLAN"
  83. bridge vlan del dev br1 vid 333 self
  84. check_err $? "Can't remove a non-PVID VLAN"
  85. log_test "vlan"
  86. }
  87. ping_ipv4()
  88. {
  89. ping_test $h1 192.0.2.130
  90. }
  91. ping_ipv6()
  92. {
  93. ping6_test $h1 2001:db8:2::2
  94. }
  95. trap cleanup EXIT
  96. setup_prepare
  97. setup_wait
  98. tests_run
  99. exit $EXIT_STATUS