Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 # +--------------------+                     +----------------------+
0005 # | H1                 |                     |                   H2 |
0006 # |                    |                     |                      |
0007 # |            $h1.1 + |                     | + $h2.1              |
0008 # |     192.0.2.2/24 | |                     | | 198.51.100.2/24    |
0009 # | 2001:db8:1::2/64 | |                     | | 2001:db8:2::2/64   |
0010 # |                  | |                     | |                    |
0011 # |              $h1 + |                     | + $h2                |
0012 # |                  | |                     | |                    |
0013 # +------------------|-+                     +-|--------------------+
0014 #                    |                         |
0015 # +------------------|-------------------------|--------------------+
0016 # | SW               |                         |                    |
0017 # |                  |                         |                    |
0018 # |             $rp1 +                         + $rp2               |
0019 # |                  |                         |                    |
0020 # |           $rp1.1 +                         + $rp2.1             |
0021 # |     192.0.2.1/24                             198.51.100.1/24    |
0022 # | 2001:db8:1::1/64                             2001:db8:2::1/64   |
0023 # |                                                                 |
0024 # +-----------------------------------------------------------------+
0025 
0026 ALL_TESTS="
0027         ping_ipv4
0028         ping_ipv6
0029 "
0030 NUM_NETIFS=4
0031 source lib.sh
0032 
0033 h1_create()
0034 {
0035         vrf_create "vrf-h1"
0036         ip link set dev vrf-h1 up
0037 
0038         ip link set dev $h1 up
0039         vlan_create $h1 1 vrf-h1 192.0.2.2/24 2001:db8:1::2/64
0040 
0041         ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.1
0042         ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::1
0043 }
0044 
0045 h1_destroy()
0046 {
0047         ip route del 2001:db8:2::/64 vrf vrf-h1
0048         ip route del 198.51.100.0/24 vrf vrf-h1
0049 
0050         vlan_destroy $h1 1
0051         ip link set dev $h1 down
0052 
0053         ip link set dev vrf-h1 down
0054         vrf_destroy "vrf-h1"
0055 }
0056 
0057 h2_create()
0058 {
0059         vrf_create "vrf-h2"
0060         ip link set dev vrf-h2 up
0061 
0062         ip link set dev $h2 up
0063         vlan_create $h2 1 vrf-h2 198.51.100.2/24 2001:db8:2::2/64
0064 
0065         ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.1
0066         ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::1
0067 }
0068 
0069 h2_destroy()
0070 {
0071         ip route del 2001:db8:1::/64 vrf vrf-h2
0072         ip route del 192.0.2.0/24 vrf vrf-h2
0073 
0074         vlan_destroy $h2 1
0075         ip link set dev $h2 down
0076 
0077         ip link set dev vrf-h2 down
0078         vrf_destroy "vrf-h2"
0079 }
0080 
0081 router_create()
0082 {
0083         ip link set dev $rp1 up
0084         ip link add link $rp1 name $rp1.1 up type vlan id 1
0085 
0086         ip address add 192.0.2.1/24 dev $rp1.1
0087         ip address add 2001:db8:1::1/64 dev $rp1.1
0088 
0089         ip link set dev $rp2 up
0090         ip link add link $rp2 name $rp2.1 up type vlan id 1
0091 
0092         ip address add 198.51.100.1/24 dev $rp2.1
0093         ip address add 2001:db8:2::1/64 dev $rp2.1
0094 }
0095 
0096 router_destroy()
0097 {
0098         ip address del 2001:db8:2::1/64 dev $rp2.1
0099         ip address del 198.51.100.1/24 dev $rp2.1
0100 
0101         ip link del dev $rp2.1
0102         ip link set dev $rp2 down
0103 
0104         ip address del 2001:db8:1::1/64 dev $rp1.1
0105         ip address del 192.0.2.1/24 dev $rp1.1
0106 
0107         ip link del dev $rp1.1
0108         ip link set dev $rp1 down
0109 }
0110 
0111 setup_prepare()
0112 {
0113         h1=${NETIFS[p1]}
0114         rp1=${NETIFS[p2]}
0115 
0116         rp2=${NETIFS[p3]}
0117         h2=${NETIFS[p4]}
0118 
0119         vrf_prepare
0120 
0121         h1_create
0122         h2_create
0123 
0124         router_create
0125 
0126         forwarding_enable
0127 }
0128 
0129 cleanup()
0130 {
0131         pre_cleanup
0132 
0133         forwarding_restore
0134 
0135         router_destroy
0136 
0137         h2_destroy
0138         h1_destroy
0139 
0140         vrf_cleanup
0141 }
0142 
0143 ping_ipv4()
0144 {
0145         ping_test $h1.1 198.51.100.2
0146 }
0147 
0148 ping_ipv6()
0149 {
0150         ping6_test $h1.1 2001:db8:2::2
0151 }
0152 
0153 trap cleanup EXIT
0154 
0155 setup_prepare
0156 setup_wait
0157 
0158 tests_run
0159 
0160 exit $EXIT_STATUS