brintos

brintos / linux-shallow public Read only

0
0
Text · 6.8 KiB · f05ffe2 Raw
324 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +----------------------------+                   +--------------------------+5# | H1 (vrf)                   |                   |                 H2 (vrf) |6# |                            |                   |                          |7# |        + LAG1 (team)       |                   |     + LAG4 (team)        |8# |        | 192.0.2.1/28      |                   |     | 192.0.2.130/28     |9# |        | 2001:db8:1::1/64  |                   |     | 2001:db8:2::2/64   |10# |      __^___                |                   |   __^_____               |11# |     /      \               |                   |  /        \              |12# |    + $h1    + $h4          |                   | + $h2      + $h3         |13# |    |        |              |                   | |          |             |14# +----|--------|--------------+                   +-|----------|-------------+15#      |        |                                    |          |16# +----|--------|------------------------------------|----------|-------------+17# | SW |        |                                    |          |             |18# |    + $swp1  + $swp4                              + $swp2    + $swp3       |19# |     \__ ___/                                      \__ _____/              |20# |        v                                             v                    |21# | +------|-------------------------------+             |                    |22# | |      + LAG2       BR1 (802.1q)       |             + LAG3 (team)        |23# | |        (team)       192.0.2.2/28     |               192.0.2.129/28     |24# | |                     2001:db8:1::2/64 |               2001:db8:2::1/64   |25# | |                                      |                                  |26# | +--------------------------------------+                                  |27# +---------------------------------------------------------------------------+28 29: ${ALL_TESTS:="30	ping_ipv431	ping_ipv632 33	$(: exercise remastering of LAG2 slaves )34	config_deslave_swp435	config_wait36	ping_ipv437	ping_ipv638	config_enslave_swp439	config_deslave_swp140	config_wait41	ping_ipv442	ping_ipv643	config_deslave_swp444	config_enslave_swp145	config_enslave_swp446	config_wait47	ping_ipv448	ping_ipv649 50	$(: exercise remastering of LAG2 itself )51	config_remaster_lag252	config_wait53	ping_ipv454	ping_ipv655 56	$(: exercise remastering of LAG3 slaves )57	config_deslave_swp258	config_wait59	ping_ipv460	ping_ipv661	config_enslave_swp262	config_deslave_swp363	config_wait64	ping_ipv465	ping_ipv666	config_deslave_swp267	config_enslave_swp368	config_enslave_swp269	config_wait70	ping_ipv471	ping_ipv672 73	$(: move LAG3 to a bridge and then out )74	config_remaster_lag375	config_wait76	ping_ipv477	ping_ipv678    "}79NUM_NETIFS=880: ${lib_dir:=.}81source $lib_dir/lib.sh82$EXTRA_SOURCE83 84h1_create()85{86	team_create lag1 lacp87	ip link set dev lag1 address $(mac_get $h1)88	ip link set dev $h1 master lag189	ip link set dev $h4 master lag190	simple_if_init lag1 192.0.2.1/28 2001:db8:1::1/6491	ip link set dev $h1 up92	ip link set dev $h4 up93	ip -4 route add 192.0.2.128/28 vrf vlag1 nexthop via 192.0.2.294	ip -6 route add 2001:db8:2::/64 vrf vlag1 nexthop via 2001:db8:1::295}96 97h1_destroy()98{99	ip -6 route del 2001:db8:2::/64 vrf vlag1100	ip -4 route del 192.0.2.128/28 vrf vlag1101	ip link set dev $h4 down102	ip link set dev $h1 down103	simple_if_fini lag1 192.0.2.1/28 2001:db8:1::1/64104	ip link set dev $h4 nomaster105	ip link set dev $h1 nomaster106	team_destroy lag1107}108 109h2_create()110{111	team_create lag4 lacp112	ip link set dev lag4 address $(mac_get $h2)113	ip link set dev $h2 master lag4114	ip link set dev $h3 master lag4115	simple_if_init lag4 192.0.2.130/28 2001:db8:2::2/64116	ip link set dev $h2 up117	ip link set dev $h3 up118	ip -4 route add 192.0.2.0/28 vrf vlag4 nexthop via 192.0.2.129119	ip -6 route add 2001:db8:1::/64 vrf vlag4 nexthop via 2001:db8:2::1120}121 122h2_destroy()123{124	ip -6 route del 2001:db8:1::/64 vrf vlag4125	ip -4 route del 192.0.2.0/28 vrf vlag4126	ip link set dev $h3 down127	ip link set dev $h2 down128	simple_if_fini lag4 192.0.2.130/28 2001:db8:2::2/64129	ip link set dev $h3 nomaster130	ip link set dev $h2 nomaster131	team_destroy lag4132}133 134router_create()135{136	team_create lag2 lacp137	ip link set dev lag2 address $(mac_get $swp1)138	ip link set dev $swp1 master lag2139	ip link set dev $swp4 master lag2140 141	ip link add name br1 address $(mac_get lag2) \142		type bridge vlan_filtering 1143	ip link set dev lag2 master br1144 145	ip link set dev $swp1 up146	ip link set dev $swp4 up147	ip link set dev br1 up148 149	__addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64150 151	team_create lag3 lacp152	ip link set dev lag3 address $(mac_get $swp2)153	ip link set dev $swp2 master lag3154	ip link set dev $swp3 master lag3155	ip link set dev $swp2 up156	ip link set dev $swp3 up157	__addr_add_del lag3 add 192.0.2.129/28 2001:db8:2::1/64158}159 160router_destroy()161{162	__addr_add_del lag3 del 192.0.2.129/28 2001:db8:2::1/64163	ip link set dev $swp3 down164	ip link set dev $swp2 down165	ip link set dev $swp3 nomaster166	ip link set dev $swp2 nomaster167	team_destroy lag3168 169	__addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64170 171	ip link set dev $swp4 down172	ip link set dev $swp1 down173	ip link set dev br1 down174 175	ip link set dev lag2 nomaster176	ip link del dev br1177 178	ip link set dev $swp4 nomaster179	ip link set dev $swp1 nomaster180	team_destroy lag2181}182 183config_remaster_lag2()184{185	log_info "Remaster bridge slave"186 187	ip link set dev lag2 nomaster188	sleep 2189	ip link set dev lag2 master br1190}191 192config_remaster_lag3()193{194	log_info "Move lag3 to the bridge, then out again"195 196	ip link set dev lag3 master br1197	sleep 2198	ip link set dev lag3 nomaster199}200 201config_deslave()202{203	local netdev=$1; shift204 205	log_info "Deslave $netdev"206	ip link set dev $netdev down207	ip link set dev $netdev nomaster208	ip link set dev $netdev up209}210 211config_deslave_swp1()212{213	config_deslave $swp1214}215 216config_deslave_swp2()217{218	config_deslave $swp2219}220 221config_deslave_swp3()222{223	config_deslave $swp3224}225 226config_deslave_swp4()227{228	config_deslave $swp4229}230 231config_enslave()232{233	local netdev=$1; shift234	local master=$1; shift235 236	log_info "Enslave $netdev to $master"237	ip link set dev $netdev down238	ip link set dev $netdev master $master239	ip link set dev $netdev up240}241 242config_enslave_swp1()243{244	config_enslave $swp1 lag2245}246 247config_enslave_swp2()248{249	config_enslave $swp2 lag3250}251 252config_enslave_swp3()253{254	config_enslave $swp3 lag3255}256 257config_enslave_swp4()258{259	config_enslave $swp4 lag2260}261 262config_wait()263{264	setup_wait_dev lag2265	setup_wait_dev lag3266}267 268setup_prepare()269{270	h1=${NETIFS[p1]}271	swp1=${NETIFS[p2]}272 273	swp2=${NETIFS[p3]}274	h2=${NETIFS[p4]}275 276	swp3=${NETIFS[p5]}277	h3=${NETIFS[p6]}278 279	h4=${NETIFS[p7]}280	swp4=${NETIFS[p8]}281 282	vrf_prepare283 284	h1_create285	h2_create286 287	router_create288 289	forwarding_enable290}291 292cleanup()293{294	pre_cleanup295 296	forwarding_restore297 298	router_destroy299 300	h2_destroy301	h1_destroy302 303	vrf_cleanup304}305 306ping_ipv4()307{308	ping_test lag1 192.0.2.130309}310 311ping_ipv6()312{313	ping6_test lag1 2001:db8:2::2314}315 316trap cleanup EXIT317 318setup_prepare319setup_wait320 321tests_run322 323exit $EXIT_STATUS324