Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / net / forwarding / router_bridge_lag.sh
blobf05ffe213c4611c4039ecc14a2301361ed23b3ee
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
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 # +---------------------------------------------------------------------------+
29 : ${ALL_TESTS:="
30 ping_ipv4
31 ping_ipv6
33 $(: exercise remastering of LAG2 slaves )
34 config_deslave_swp4
35 config_wait
36 ping_ipv4
37 ping_ipv6
38 config_enslave_swp4
39 config_deslave_swp1
40 config_wait
41 ping_ipv4
42 ping_ipv6
43 config_deslave_swp4
44 config_enslave_swp1
45 config_enslave_swp4
46 config_wait
47 ping_ipv4
48 ping_ipv6
50 $(: exercise remastering of LAG2 itself )
51 config_remaster_lag2
52 config_wait
53 ping_ipv4
54 ping_ipv6
56 $(: exercise remastering of LAG3 slaves )
57 config_deslave_swp2
58 config_wait
59 ping_ipv4
60 ping_ipv6
61 config_enslave_swp2
62 config_deslave_swp3
63 config_wait
64 ping_ipv4
65 ping_ipv6
66 config_deslave_swp2
67 config_enslave_swp3
68 config_enslave_swp2
69 config_wait
70 ping_ipv4
71 ping_ipv6
73 $(: move LAG3 to a bridge and then out )
74 config_remaster_lag3
75 config_wait
76 ping_ipv4
77 ping_ipv6
79 NUM_NETIFS=8
80 : ${lib_dir:=.}
81 source $lib_dir/lib.sh
82 $EXTRA_SOURCE
84 h1_create()
86 team_create lag1 lacp
87 ip link set dev lag1 address $(mac_get $h1)
88 ip link set dev $h1 master lag1
89 ip link set dev $h4 master lag1
90 simple_if_init lag1 192.0.2.1/28 2001:db8:1::1/64
91 ip link set dev $h1 up
92 ip link set dev $h4 up
93 ip -4 route add 192.0.2.128/28 vrf vlag1 nexthop via 192.0.2.2
94 ip -6 route add 2001:db8:2::/64 vrf vlag1 nexthop via 2001:db8:1::2
97 h1_destroy()
99 ip -6 route del 2001:db8:2::/64 vrf vlag1
100 ip -4 route del 192.0.2.128/28 vrf vlag1
101 ip link set dev $h4 down
102 ip link set dev $h1 down
103 simple_if_fini lag1 192.0.2.1/28 2001:db8:1::1/64
104 ip link set dev $h4 nomaster
105 ip link set dev $h1 nomaster
106 team_destroy lag1
109 h2_create()
111 team_create lag4 lacp
112 ip link set dev lag4 address $(mac_get $h2)
113 ip link set dev $h2 master lag4
114 ip link set dev $h3 master lag4
115 simple_if_init lag4 192.0.2.130/28 2001:db8:2::2/64
116 ip link set dev $h2 up
117 ip link set dev $h3 up
118 ip -4 route add 192.0.2.0/28 vrf vlag4 nexthop via 192.0.2.129
119 ip -6 route add 2001:db8:1::/64 vrf vlag4 nexthop via 2001:db8:2::1
122 h2_destroy()
124 ip -6 route del 2001:db8:1::/64 vrf vlag4
125 ip -4 route del 192.0.2.0/28 vrf vlag4
126 ip link set dev $h3 down
127 ip link set dev $h2 down
128 simple_if_fini lag4 192.0.2.130/28 2001:db8:2::2/64
129 ip link set dev $h3 nomaster
130 ip link set dev $h2 nomaster
131 team_destroy lag4
134 router_create()
136 team_create lag2 lacp
137 ip link set dev lag2 address $(mac_get $swp1)
138 ip link set dev $swp1 master lag2
139 ip link set dev $swp4 master lag2
141 ip link add name br1 address $(mac_get lag2) \
142 type bridge vlan_filtering 1
143 ip link set dev lag2 master br1
145 ip link set dev $swp1 up
146 ip link set dev $swp4 up
147 ip link set dev br1 up
149 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
151 team_create lag3 lacp
152 ip link set dev lag3 address $(mac_get $swp2)
153 ip link set dev $swp2 master lag3
154 ip link set dev $swp3 master lag3
155 ip link set dev $swp2 up
156 ip link set dev $swp3 up
157 __addr_add_del lag3 add 192.0.2.129/28 2001:db8:2::1/64
160 router_destroy()
162 __addr_add_del lag3 del 192.0.2.129/28 2001:db8:2::1/64
163 ip link set dev $swp3 down
164 ip link set dev $swp2 down
165 ip link set dev $swp3 nomaster
166 ip link set dev $swp2 nomaster
167 team_destroy lag3
169 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
171 ip link set dev $swp4 down
172 ip link set dev $swp1 down
173 ip link set dev br1 down
175 ip link set dev lag2 nomaster
176 ip link del dev br1
178 ip link set dev $swp4 nomaster
179 ip link set dev $swp1 nomaster
180 team_destroy lag2
183 config_remaster_lag2()
185 log_info "Remaster bridge slave"
187 ip link set dev lag2 nomaster
188 sleep 2
189 ip link set dev lag2 master br1
192 config_remaster_lag3()
194 log_info "Move lag3 to the bridge, then out again"
196 ip link set dev lag3 master br1
197 sleep 2
198 ip link set dev lag3 nomaster
201 config_deslave()
203 local netdev=$1; shift
205 log_info "Deslave $netdev"
206 ip link set dev $netdev down
207 ip link set dev $netdev nomaster
208 ip link set dev $netdev up
211 config_deslave_swp1()
213 config_deslave $swp1
216 config_deslave_swp2()
218 config_deslave $swp2
221 config_deslave_swp3()
223 config_deslave $swp3
226 config_deslave_swp4()
228 config_deslave $swp4
231 config_enslave()
233 local netdev=$1; shift
234 local master=$1; shift
236 log_info "Enslave $netdev to $master"
237 ip link set dev $netdev down
238 ip link set dev $netdev master $master
239 ip link set dev $netdev up
242 config_enslave_swp1()
244 config_enslave $swp1 lag2
247 config_enslave_swp2()
249 config_enslave $swp2 lag3
252 config_enslave_swp3()
254 config_enslave $swp3 lag3
257 config_enslave_swp4()
259 config_enslave $swp4 lag2
262 config_wait()
264 setup_wait_dev lag2
265 setup_wait_dev lag3
268 setup_prepare()
270 h1=${NETIFS[p1]}
271 swp1=${NETIFS[p2]}
273 swp2=${NETIFS[p3]}
274 h2=${NETIFS[p4]}
276 swp3=${NETIFS[p5]}
277 h3=${NETIFS[p6]}
279 h4=${NETIFS[p7]}
280 swp4=${NETIFS[p8]}
282 vrf_prepare
284 h1_create
285 h2_create
287 router_create
289 forwarding_enable
292 cleanup()
294 pre_cleanup
296 forwarding_restore
298 router_destroy
300 h2_destroy
301 h1_destroy
303 vrf_cleanup
306 ping_ipv4()
308 ping_test lag1 192.0.2.130
311 ping_ipv6()
313 ping6_test lag1 2001:db8:2::2
316 trap cleanup EXIT
318 setup_prepare
319 setup_wait
321 tests_run
323 exit $EXIT_STATUS