brintos

brintos / linux-shallow public Read only

0
0
Text · 9.3 KiB · e064b94 Raw
409 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +--------------------------------------------+5# | H1 (vrf)                                   |6# |                                            |7# |    + LAG1.100          + LAG1.200          |8# |    | 192.0.2.1/28      | 192.0.2.17/28     |9# |    | 2001:db8:1::1/64  | 2001:db8:3:1/64   |10# |    \___________ _______/                   |11# |                v                           |12# |                + LAG1 (team)               |13# |                |                           |14# |            ____^____                       |15# |           /         \                      |16# |          + $h1       + $h4                 |17# |          |           |                     |18# +----------|-----------|---------------------+19#            |           |20# +----------|-----------|---------------------+21# | SW       |           |                     |22# |          + $swp1     + $swp4               |23# |           \____ ____/                      |24# |                v                           |25# |    LAG2 (team) +                           |26# |                |                           |27# |         _______^______________             |28# |        /                      \            |29# | +------|------------+ +-------|----------+ |30# | |      + LAG2.100   | |       + LAG2.200 | |31# | |                   | |                  | |32# | |  BR1 (802.1d)     | | BR2 (802.1d)     | |33# | |  192.0.2.2/28     | | 192.0.2.18/28    | |34# | |  2001:db8:1::2/64 | | 2001:db8:3:2/64  | |35# | |                   | |                  | |36# | +-------------------+ +------------------+ |37# |                                            |38# |  + LAG3.100             + LAG3.200         |39# |  | 192.0.2.129/28       | 192.0.2.145/28   |40# |  | 2001:db8:2::1/64     | 2001:db8:4::1/64 |41# |  |                      |                  |42# |  \_________ ___________/                   |43# |            v                               |44# |            + LAG3 (team)                   |45# |        ____|____                           |46# |       /         \                          |47# |       + $swp2   + $swp3                    |48# |       |         |                          |49# +-------|---------|--------------------------+50#         |         |51# +-------|---------|--------------------------+52# |       |         |                          |53# |       + $h2     + $h3                      |54# |       \____ ___/                           |55# |            |                               |56# |            + LAG4 (team)                   |57# |            |                               |58# |  __________^__________                     |59# | /                     \                    |60# | |                     |                    |61# | + LAG4.100            + LAG4.200           |62# |   192.0.2.130/28        192.0.2.146/28     |63# |   2001:db8:2::2/64      2001:db8:4::2/64   |64# |                                            |65# | H2 (vrf)                                   |66# +--------------------------------------------+67 68ALL_TESTS="69	ping_ipv470	ping_ipv671 72	$(: exercise remastering of LAG2 slaves )73	config_deslave_swp474	config_wait75	ping_ipv476	ping_ipv677	config_enslave_swp478	config_deslave_swp179	config_wait80	ping_ipv481	ping_ipv682	config_deslave_swp483	config_enslave_swp184	config_enslave_swp485	config_wait86	ping_ipv487	ping_ipv688 89	$(: exercise remastering of LAG2 itself )90	config_remaster_lag291	config_wait92	ping_ipv493	ping_ipv694 95	$(: exercise remastering of LAG3 slaves )96	config_deslave_swp297	config_wait98	ping_ipv499	ping_ipv6100	config_enslave_swp2101	config_deslave_swp3102	config_wait103	ping_ipv4104	ping_ipv6105	config_deslave_swp2106	config_enslave_swp3107	config_enslave_swp2108	config_wait109	ping_ipv4110	ping_ipv6111"112NUM_NETIFS=8113source lib.sh114 115h1_create()116{117	team_create lag1 lacp118	ip link set dev lag1 addrgenmode none119	ip link set dev lag1 address $(mac_get $h1)120	ip link set dev $h1 master lag1121	ip link set dev $h4 master lag1122	simple_if_init lag1123	ip link set dev $h1 up124	ip link set dev $h4 up125 126	vlan_create lag1 100 vlag1 192.0.2.1/28 2001:db8:1::1/64127	vlan_create lag1 200 vlag1 192.0.2.17/28 2001:db8:3::1/64128 129	ip -4 route add 192.0.2.128/28 vrf vlag1 nexthop via 192.0.2.2130	ip -6 route add 2001:db8:2::/64 vrf vlag1 nexthop via 2001:db8:1::2131 132	ip -4 route add 192.0.2.144/28 vrf vlag1 nexthop via 192.0.2.18133	ip -6 route add 2001:db8:4::/64 vrf vlag1 nexthop via 2001:db8:3::2134}135 136h1_destroy()137{138	ip -6 route del 2001:db8:4::/64 vrf vlag1139	ip -4 route del 192.0.2.144/28 vrf vlag1140 141	ip -6 route del 2001:db8:2::/64 vrf vlag1142	ip -4 route del 192.0.2.128/28 vrf vlag1143 144	vlan_destroy lag1 200145	vlan_destroy lag1 100146 147	ip link set dev $h4 down148	ip link set dev $h1 down149	simple_if_fini lag1150	ip link set dev $h4 nomaster151	ip link set dev $h1 nomaster152	team_destroy lag1153}154 155h2_create()156{157	team_create lag4 lacp158	ip link set dev lag4 addrgenmode none159	ip link set dev lag4 address $(mac_get $h2)160	ip link set dev $h2 master lag4161	ip link set dev $h3 master lag4162	simple_if_init lag4163	ip link set dev $h2 up164	ip link set dev $h3 up165 166	vlan_create lag4 100 vlag4 192.0.2.130/28 2001:db8:2::2/64167	vlan_create lag4 200 vlag4 192.0.2.146/28 2001:db8:4::2/64168 169	ip -4 route add 192.0.2.0/28 vrf vlag4 nexthop via 192.0.2.129170	ip -6 route add 2001:db8:1::/64 vrf vlag4 nexthop via 2001:db8:2::1171 172	ip -4 route add 192.0.2.16/28 vrf vlag4 nexthop via 192.0.2.145173	ip -6 route add 2001:db8:3::/64 vrf vlag4 nexthop via 2001:db8:4::1174}175 176h2_destroy()177{178	ip -6 route del 2001:db8:3::/64 vrf vlag4179	ip -4 route del 192.0.2.16/28 vrf vlag4180 181	ip -6 route del 2001:db8:1::/64 vrf vlag4182	ip -4 route del 192.0.2.0/28 vrf vlag4183 184	vlan_destroy lag4 200185	vlan_destroy lag4 100186 187	ip link set dev $h3 down188	ip link set dev $h2 down189	simple_if_fini lag4190	ip link set dev $h3 nomaster191	ip link set dev $h2 nomaster192	team_destroy lag4193}194 195router_create()196{197	team_create lag2 lacp198	ip link set dev lag2 addrgenmode none199	ip link set dev lag2 address $(mac_get $swp1)200	ip link set dev $swp1 master lag2201	ip link set dev $swp4 master lag2202 203	vlan_create lag2 100204	vlan_create lag2 200205 206	ip link add name br1 type bridge vlan_filtering 0207	ip link set dev br1 address $(mac_get lag2.100)208	ip link set dev lag2.100 master br1209 210	ip link add name br2 type bridge vlan_filtering 0211	ip link set dev br2 address $(mac_get lag2.200)212	ip link set dev lag2.200 master br2213 214	ip link set dev $swp1 up215	ip link set dev $swp4 up216	ip link set dev br1 up217	ip link set dev br2 up218 219	__addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64220	__addr_add_del br2 add 192.0.2.18/28 2001:db8:3::2/64221 222	team_create lag3 lacp223	ip link set dev lag3 addrgenmode none224	ip link set dev lag3 address $(mac_get $swp2)225	ip link set dev $swp2 master lag3226	ip link set dev $swp3 master lag3227	ip link set dev $swp2 up228	ip link set dev $swp3 up229 230	vlan_create lag3 100231	vlan_create lag3 200232 233	__addr_add_del lag3.100 add 192.0.2.129/28 2001:db8:2::1/64234	__addr_add_del lag3.200 add 192.0.2.145/28 2001:db8:4::1/64235}236 237router_destroy()238{239	__addr_add_del lag3.200 del 192.0.2.145/28 2001:db8:4::1/64240	__addr_add_del lag3.100 del 192.0.2.129/28 2001:db8:2::1/64241 242	vlan_destroy lag3 200243	vlan_destroy lag3 100244 245	ip link set dev $swp3 down246	ip link set dev $swp2 down247	ip link set dev $swp3 nomaster248	ip link set dev $swp2 nomaster249	team_destroy lag3250 251	__addr_add_del br2 del 192.0.2.18/28 2001:db8:3::2/64252	__addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64253 254	ip link set dev br2 down255	ip link set dev br1 down256	ip link set dev $swp4 down257	ip link set dev $swp1 down258 259	ip link set dev lag2.200 nomaster260	ip link del dev br2261 262	ip link set dev lag2.100 nomaster263	ip link del dev br1264 265	vlan_destroy lag2 200266	vlan_destroy lag2 100267 268	ip link set dev $swp4 nomaster269	ip link set dev $swp1 nomaster270	team_destroy lag2271}272 273config_remaster_lag2()274{275	log_info "Remaster bridge slaves"276 277	ip link set dev lag2.200 nomaster278	ip link set dev lag2.100 nomaster279	sleep 2280	ip link set dev lag2.100 master br1281	ip link set dev lag2.200 master br2282}283 284config_deslave()285{286	local netdev=$1; shift287 288	log_info "Deslave $netdev"289	ip link set dev $netdev down290	ip link set dev $netdev nomaster291	ip link set dev $netdev up292}293 294config_deslave_swp1()295{296	config_deslave $swp1297}298 299config_deslave_swp2()300{301	config_deslave $swp2302}303 304config_deslave_swp3()305{306	config_deslave $swp3307}308 309config_deslave_swp4()310{311	config_deslave $swp4312}313 314config_enslave()315{316	local netdev=$1; shift317	local master=$1; shift318 319	log_info "Enslave $netdev to $master"320	ip link set dev $netdev down321	ip link set dev $netdev master $master322	ip link set dev $netdev up323}324 325config_enslave_swp1()326{327	config_enslave $swp1 lag2328}329 330config_enslave_swp2()331{332	config_enslave $swp2 lag3333}334 335config_enslave_swp3()336{337	config_enslave $swp3 lag3338}339 340config_enslave_swp4()341{342	config_enslave $swp4 lag2343}344 345config_wait()346{347	setup_wait_dev lag2348	setup_wait_dev lag3349}350 351setup_prepare()352{353	h1=${NETIFS[p1]}354	swp1=${NETIFS[p2]}355 356	swp2=${NETIFS[p3]}357	h2=${NETIFS[p4]}358 359	swp3=${NETIFS[p5]}360	h3=${NETIFS[p6]}361 362	h4=${NETIFS[p7]}363	swp4=${NETIFS[p8]}364 365	vrf_prepare366 367	h1_create368	h2_create369 370	router_create371 372	forwarding_enable373}374 375cleanup()376{377	pre_cleanup378 379	forwarding_restore380 381	router_destroy382 383	h2_destroy384	h1_destroy385 386	vrf_cleanup387}388 389ping_ipv4()390{391	ping_test lag1.100 192.0.2.130 ": via 100"392	ping_test lag1.200 192.0.2.146 ": via 200"393}394 395ping_ipv6()396{397	ping6_test lag1.100 2001:db8:2::2 ": via 100"398	ping6_test lag1.200 2001:db8:4::2 ": via 200"399}400 401trap cleanup EXIT402 403setup_prepare404setup_wait405 406tests_run407 408exit $EXIT_STATUS409