router.sh 2.1 KB

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