router_bridge.sh 1.8 KB

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