brintos

brintos / linux-shallow public Read only

0
0
Text · 5.1 KiB · 6d51f2c Raw
186 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +---------------------------------------------+      +----------------------+5# | H1 (vrf)                                    |      |             H2 (vrf) |6# |    + $h1.100            + $h1.200           |      |  + $h2               |7# |    | 192.0.2.1/28       | 192.0.2.17/28     |      |  | 192.0.2.130/28    |8# |    | 2001:db8:1::1/64   | 2001:db8:3::1/64  |      |  | 192.0.2.146/28    |9# |    \_________ __________/                   |      |  | 2001:db8:2::2/64  |10# |              V                              |      |  | 2001:db8:4::2/64  |11# |              + $h1                          |      |  |                   |12# +--------------|------------------------------+      +--|-------------------+13#                |                                        |14# +--------------|----------------------------------------|-------------------+15# | SW           + $swp1                                  + $swp2             |16# |              |                                          192.0.2.129/28    |17# |              |                                          192.0.2.145/28    |18# |              |                                          2001:db8:2::1/64  |19# |      ________^___________________________               2001:db8:4::1/64  |20# |     /                                    \                                |21# | +---|------------------------------+ +---|------------------------------+ |22# | |   + $swp1.100   BR1 (802.1d)     | |   + $swp1.200   BR2 (802.1d)     | |23# | |                 192.0.2.2/28     | |                 192.0.2.18/28    | |24# | |                 2001:db8:1::2/64 | |                 2001:db8:3::2/64 | |25# | |                                  | |                                  | |26# | +----------------------------------+ +----------------------------------+ |27# +---------------------------------------------------------------------------+28 29ALL_TESTS="30	ping_ipv431	ping_ipv632	config_remaster33	ping_ipv434	ping_ipv635"36NUM_NETIFS=437source lib.sh38 39h1_create()40{41	simple_if_init $h142	vlan_create $h1 100 v$h1 192.0.2.1/28 2001:db8:1::1/6443	vlan_create $h1 200 v$h1 192.0.2.17/28 2001:db8:3::1/6444	ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.245	ip -4 route add 192.0.2.144/28 vrf v$h1 nexthop via 192.0.2.1846	ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::247	ip -6 route add 2001:db8:4::/64 vrf v$h1 nexthop via 2001:db8:3::248}49 50h1_destroy()51{52	ip -6 route del 2001:db8:4::/64 vrf v$h153	ip -6 route del 2001:db8:2::/64 vrf v$h154	ip -4 route del 192.0.2.144/28 vrf v$h155	ip -4 route del 192.0.2.128/28 vrf v$h156	vlan_destroy $h1 20057	vlan_destroy $h1 10058	simple_if_fini $h159}60 61h2_create()62{63	simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 \64			   192.0.2.146/28 2001:db8:4::2/6465	ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.12966	ip -4 route add 192.0.2.16/28 vrf v$h2 nexthop via 192.0.2.14567	ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::168	ip -6 route add 2001:db8:3::/64 vrf v$h2 nexthop via 2001:db8:4::169}70 71h2_destroy()72{73	ip -6 route del 2001:db8:3::/64 vrf v$h274	ip -6 route del 2001:db8:1::/64 vrf v$h275	ip -4 route del 192.0.2.16/28 vrf v$h276	ip -4 route del 192.0.2.0/28 vrf v$h277	simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64 \78			   192.0.2.146/28 2001:db8:4::2/6479}80 81router_create()82{83	ip link set dev $swp1 up84 85	vlan_create $swp1 10086	ip link add name br1 type bridge vlan_filtering 087	ip link set dev br1 address $(mac_get $swp1.100)88	ip link set dev $swp1.100 master br189	__addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/6490	ip link set dev br1 up91 92	vlan_create $swp1 20093	ip link add name br2 type bridge vlan_filtering 094	ip link set dev br2 address $(mac_get $swp1.200)95	ip link set dev $swp1.200 master br296	__addr_add_del br2 add 192.0.2.18/28 2001:db8:3::2/6497	ip link set dev br2 up98 99	ip link set dev $swp2 up100	__addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 \101				 192.0.2.145/28 2001:db8:4::1/64102}103 104router_destroy()105{106	__addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 \107				 192.0.2.145/28 2001:db8:4::1/64108	ip link set dev $swp2 down109 110	__addr_add_del br2 del 192.0.2.18/28 2001:db8:3::2/64111	ip link set dev $swp1.200 nomaster112	ip link del dev br2113	vlan_destroy $swp1 200114 115	__addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64116	ip link set dev $swp1.100 nomaster117	ip link del dev br1118	vlan_destroy $swp1 100119 120	ip link set dev $swp1 down121}122 123config_remaster()124{125	log_info "Remaster bridge slaves"126 127	ip link set dev $swp1.100 nomaster128	ip link set dev $swp1.200 nomaster129	sleep 2130	ip link set dev $swp1.200 master br2131	ip link set dev $swp1.100 master br1132}133 134setup_prepare()135{136	h1=${NETIFS[p1]}137	swp1=${NETIFS[p2]}138 139	swp2=${NETIFS[p3]}140	h2=${NETIFS[p4]}141 142	vrf_prepare143 144	h1_create145	h2_create146 147	router_create148 149	forwarding_enable150}151 152cleanup()153{154	pre_cleanup155 156	forwarding_restore157 158	router_destroy159 160	h2_destroy161	h1_destroy162 163	vrf_cleanup164}165 166ping_ipv4()167{168	ping_test $h1 192.0.2.130 ": via 100"169	ping_test $h1 192.0.2.146 ": via 200"170}171 172ping_ipv6()173{174	ping6_test $h1 2001:db8:2::2 ": via 100"175	ping6_test $h1 2001:db8:4::2 ": via 200"176}177 178trap cleanup EXIT179 180setup_prepare181setup_wait182 183tests_run184 185exit $EXIT_STATUS186