brintos

brintos / linux-shallow public Read only

0
0
Text · 3.3 KiB · 92904b0 Raw
175 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +-------------------------+  +-------------------------+5# | H1                      |  |                      H2 |6# |               $h1 +     |  |               $h2 +     |7# |      192.0.2.2/24 |     |  |   198.51.100.2/24 |     |8# |  2001:db8:1::2/64 |     |  |  2001:db8:2::2/64 |     |9# +-------------------|-----+  +-------------------|-----+10#                     |                            |11# +-------------------|----------------------------|-----+12# | R1                |                            |     |13# |              $rp1 +                       $rp2 +     |14# |      192.0.2.1/24              198.51.100.1/24       |15# |  2001:db8:1::1/64             2001:db8:2::1/64       |16# +------------------------------------------------------+17 18ALL_TESTS="19	ping_ipv420	ping_ipv621"22 23NUM_NETIFS=424source lib.sh25source tc_common.sh26 27h1_create()28{29	vrf_create "vrf-h1"30	ip link set dev $h1 master vrf-h131 32	ip link set dev vrf-h1 up33	ip link set dev $h1 up34 35	ip address add 192.0.2.2/24 dev $h136	ip address add 2001:db8:1::2/64 dev $h137 38	ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.139	ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::140}41 42h1_destroy()43{44	ip route del 2001:db8:2::/64 vrf vrf-h145	ip route del 198.51.100.0/24 vrf vrf-h146 47	ip address del 2001:db8:1::2/64 dev $h148	ip address del 192.0.2.2/24 dev $h149 50	ip link set dev $h1 down51	vrf_destroy "vrf-h1"52}53 54h2_create()55{56	vrf_create "vrf-h2"57	ip link set dev $h2 master vrf-h258 59	ip link set dev vrf-h2 up60	ip link set dev $h2 up61 62	ip address add 198.51.100.2/24 dev $h263	ip address add 2001:db8:2::2/64 dev $h264 65	ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.166	ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::167}68 69h2_destroy()70{71	ip route del 2001:db8:1::/64 vrf vrf-h272	ip route del 192.0.2.0/24 vrf vrf-h273 74	ip address del 2001:db8:2::2/64 dev $h275	ip address del 198.51.100.2/24 dev $h276 77	ip link set dev $h2 down78	vrf_destroy "vrf-h2"79}80 81router_create()82{83	ip link set dev $rp1 up84	ip link set dev $rp2 up85 86	tc qdisc add dev $rp2 clsact87 88	ip address add 192.0.2.1/24 dev $rp189	ip address add 2001:db8:1::1/64 dev $rp190 91	ip address add 198.51.100.1/24 dev $rp292	ip address add 2001:db8:2::1/64 dev $rp293}94 95router_destroy()96{97	ip address del 2001:db8:2::1/64 dev $rp298	ip address del 198.51.100.1/24 dev $rp299 100	ip address del 2001:db8:1::1/64 dev $rp1101	ip address del 192.0.2.1/24 dev $rp1102 103	tc qdisc del dev $rp2 clsact104 105	ip link set dev $rp2 down106	ip link set dev $rp1 down107}108 109routing_nh_obj()110{111	# Create the nexthops as AF_INET6, so that IPv4 and IPv6 routes could112	# use them.113	ip -6 nexthop add id 101 dev $rp1114	ip -6 nexthop add id 102 dev $rp2115 116	ip route replace 192.0.2.0/24 nhid 101117	ip route replace 2001:db8:1::/64 nhid 101118	ip route replace 198.51.100.0/24 nhid 102119	ip route replace 2001:db8:2::/64 nhid 102120}121 122setup_prepare()123{124	h1=${NETIFS[p1]}125	rp1=${NETIFS[p2]}126 127	rp2=${NETIFS[p3]}128	h2=${NETIFS[p4]}129 130	rp1mac=$(mac_get $rp1)131 132	vrf_prepare133 134	h1_create135	h2_create136 137	router_create138 139	forwarding_enable140}141 142cleanup()143{144	pre_cleanup145 146	forwarding_restore147 148	router_destroy149 150	h2_destroy151	h1_destroy152 153	vrf_cleanup154}155 156ping_ipv4()157{158	ping_test $h1 198.51.100.2159}160 161ping_ipv6()162{163	ping6_test $h1 2001:db8:2::2164}165 166trap cleanup EXIT167 168setup_prepare169setup_wait170routing_nh_obj171 172tests_run173 174exit $EXIT_STATUS175