Home | History | Annotate | Download | only in forwarding
      1 #!/bin/bash
      2 # SPDX-License-Identifier: GPL-2.0
      3 
      4 ALL_TESTS="
      5 	ping_ipv4
      6 	ping_ipv6
      7 "
      8 NUM_NETIFS=4
      9 source lib.sh
     10 
     11 h1_create()
     12 {
     13 	simple_if_init $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 
     18 h1_destroy()
     19 {
     20 	ip -6 route del 2001:db8:2::/64 vrf v$h1
     21 	ip -4 route del 192.0.2.128/28 vrf v$h1
     22 	simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64
     23 }
     24 
     25 h2_create()
     26 {
     27 	simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64
     28 	ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129
     29 	ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1
     30 }
     31 
     32 h2_destroy()
     33 {
     34 	ip -6 route del 2001:db8:1::/64 vrf v$h2
     35 	ip -4 route del 192.0.2.0/28 vrf v$h2
     36 	simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64
     37 }
     38 
     39 router_create()
     40 {
     41 	ip link add name br1 type bridge vlan_filtering 1
     42 	ip link set dev br1 up
     43 
     44 	ip link set dev $swp1 master br1
     45 	ip link set dev $swp1 up
     46 	__addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
     47 
     48 	ip link set dev $swp2 up
     49 	__addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
     50 }
     51 
     52 router_destroy()
     53 {
     54 	__addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
     55 	ip link set dev $swp2 down
     56 
     57 	__addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
     58 	ip link set dev $swp1 down
     59 	ip link set dev $swp1 nomaster
     60 
     61 	ip link del dev br1
     62 }
     63 
     64 setup_prepare()
     65 {
     66 	h1=${NETIFS[p1]}
     67 	swp1=${NETIFS[p2]}
     68 
     69 	swp2=${NETIFS[p3]}
     70 	h2=${NETIFS[p4]}
     71 
     72 	vrf_prepare
     73 
     74 	h1_create
     75 	h2_create
     76 
     77 	router_create
     78 
     79 	forwarding_enable
     80 }
     81 
     82 cleanup()
     83 {
     84 	pre_cleanup
     85 
     86 	forwarding_restore
     87 
     88 	router_destroy
     89 
     90 	h2_destroy
     91 	h1_destroy
     92 
     93 	vrf_cleanup
     94 }
     95 
     96 ping_ipv4()
     97 {
     98 	ping_test $h1 192.0.2.130
     99 }
    100 
    101 ping_ipv6()
    102 {
    103 	ping6_test $h1 2001:db8:2::2
    104 }
    105 
    106 trap cleanup EXIT
    107 
    108 setup_prepare
    109 setup_wait
    110 
    111 tests_run
    112 
    113 exit $EXIT_STATUS
    114