.. | .. |
---|
1 | 1 | #!/bin/bash |
---|
2 | 2 | # SPDX-License-Identifier: GPL-2.0 |
---|
3 | 3 | |
---|
4 | | -# This test uses standard topology for testing gretap. See |
---|
5 | | -# mirror_gre_topo_lib.sh for more details. |
---|
6 | | -# |
---|
7 | 4 | # Test for "tc action mirred egress mirror" when the underlay route points at a |
---|
8 | 5 | # vlan device on top of a bridge device with vlan filtering (802.1q). |
---|
| 6 | +# |
---|
| 7 | +# +---------------------+ +---------------------+ |
---|
| 8 | +# | H1 | | H2 | |
---|
| 9 | +# | + $h1 | | $h2 + | |
---|
| 10 | +# | | 192.0.2.1/28 | | 192.0.2.2/28 | | |
---|
| 11 | +# +-----|---------------+ +---------------|-----+ |
---|
| 12 | +# | | |
---|
| 13 | +# +-----|-------------------------------------------------------------|-----+ |
---|
| 14 | +# | SW o--> mirred egress mirror dev {gt4,gt6} | | |
---|
| 15 | +# | | | | |
---|
| 16 | +# | +---|-------------------------------------------------------------|---+ | |
---|
| 17 | +# | | + $swp1 br1 $swp2 + | | |
---|
| 18 | +# | | | | |
---|
| 19 | +# | | + $swp3 | | |
---|
| 20 | +# | +---|-----------------------------------------------------------------+ | |
---|
| 21 | +# | | | | |
---|
| 22 | +# | | + br1.555 | |
---|
| 23 | +# | | 192.0.2.130/28 | |
---|
| 24 | +# | | 2001:db8:2::2/64 | |
---|
| 25 | +# | | | |
---|
| 26 | +# | | + gt6 (ip6gretap) + gt4 (gretap) | |
---|
| 27 | +# | | : loc=2001:db8:2::1 : loc=192.0.2.129 | |
---|
| 28 | +# | | : rem=2001:db8:2::2 : rem=192.0.2.130 | |
---|
| 29 | +# | | : ttl=100 : ttl=100 | |
---|
| 30 | +# | | : tos=inherit : tos=inherit | |
---|
| 31 | +# | | : : | |
---|
| 32 | +# +-----|---------------------:----------------------:----------------------+ |
---|
| 33 | +# | : : |
---|
| 34 | +# +-----|---------------------:----------------------:----------------------+ |
---|
| 35 | +# | H3 + $h3 + h3-gt6 (ip6gretap) + h3-gt4 (gretap) | |
---|
| 36 | +# | | loc=2001:db8:2::2 loc=192.0.2.130 | |
---|
| 37 | +# | + $h3.555 rem=2001:db8:2::1 rem=192.0.2.129 | |
---|
| 38 | +# | 192.0.2.130/28 ttl=100 ttl=100 | |
---|
| 39 | +# | 2001:db8:2::2/64 tos=inherit tos=inherit | |
---|
| 40 | +# | | |
---|
| 41 | +# +-------------------------------------------------------------------------+ |
---|
9 | 42 | |
---|
10 | 43 | ALL_TESTS=" |
---|
11 | 44 | test_gretap |
---|
.. | .. |
---|
29 | 62 | source mirror_gre_topo_lib.sh |
---|
30 | 63 | |
---|
31 | 64 | require_command $ARPING |
---|
| 65 | + |
---|
| 66 | +h3_addr_add_del() |
---|
| 67 | +{ |
---|
| 68 | + local add_del=$1; shift |
---|
| 69 | + local dev=$1; shift |
---|
| 70 | + |
---|
| 71 | + ip addr $add_del dev $dev 192.0.2.130/28 |
---|
| 72 | + ip addr $add_del dev $dev 2001:db8:2::2/64 |
---|
| 73 | +} |
---|
32 | 74 | |
---|
33 | 75 | setup_prepare() |
---|
34 | 76 | { |
---|
.. | .. |
---|
55 | 97 | ip route rep 192.0.2.130/32 dev br1.555 |
---|
56 | 98 | ip -6 route rep 2001:db8:2::2/128 dev br1.555 |
---|
57 | 99 | |
---|
58 | | - vlan_create $h3 555 v$h3 192.0.2.130/28 2001:db8:2::2/64 |
---|
| 100 | + vlan_create $h3 555 v$h3 |
---|
| 101 | + h3_addr_add_del add $h3.555 |
---|
59 | 102 | |
---|
60 | 103 | ip link set dev $swp3 master br1 |
---|
61 | 104 | bridge vlan add dev $swp3 vid 555 |
---|
.. | .. |
---|
68 | 111 | |
---|
69 | 112 | ip link set dev $swp2 nomaster |
---|
70 | 113 | ip link set dev $swp3 nomaster |
---|
| 114 | + |
---|
| 115 | + h3_addr_add_del del $h3.555 |
---|
71 | 116 | vlan_destroy $h3 555 |
---|
72 | 117 | vlan_destroy br1 555 |
---|
73 | 118 | |
---|
.. | .. |
---|
182 | 227 | quick_test_span_gre_dir $tundev ingress |
---|
183 | 228 | quick_test_span_vlan_dir $h3 555 ingress |
---|
184 | 229 | |
---|
| 230 | + h3_addr_add_del del $h3.555 |
---|
185 | 231 | bridge vlan add dev $swp3 vid 555 pvid untagged |
---|
186 | | - sleep 1 |
---|
| 232 | + h3_addr_add_del add $h3 |
---|
| 233 | + sleep 5 |
---|
| 234 | + |
---|
187 | 235 | quick_test_span_gre_dir $tundev ingress |
---|
188 | 236 | fail_test_span_vlan_dir $h3 555 ingress |
---|
189 | 237 | |
---|
| 238 | + h3_addr_add_del del $h3 |
---|
190 | 239 | bridge vlan add dev $swp3 vid 555 |
---|
191 | | - sleep 1 |
---|
| 240 | + h3_addr_add_del add $h3.555 |
---|
| 241 | + sleep 5 |
---|
| 242 | + |
---|
192 | 243 | quick_test_span_gre_dir $tundev ingress |
---|
193 | 244 | quick_test_span_vlan_dir $h3 555 ingress |
---|
194 | 245 | |
---|
.. | .. |
---|
218 | 269 | mirror_install $swp1 ingress $tundev "matchall $tcflags" |
---|
219 | 270 | quick_test_span_gre_dir $tundev ingress |
---|
220 | 271 | |
---|
221 | | - bridge fdb del dev $swp3 $h3mac vlan 555 master |
---|
222 | | - bridge fdb add dev $swp2 $h3mac vlan 555 master |
---|
223 | | - sleep 1 |
---|
224 | | - fail_test_span_gre_dir $tundev ingress |
---|
| 272 | + while ((RET == 0)); do |
---|
| 273 | + bridge fdb del dev $swp3 $h3mac vlan 555 master 2>/dev/null |
---|
| 274 | + bridge fdb add dev $swp2 $h3mac vlan 555 master static |
---|
| 275 | + sleep 1 |
---|
| 276 | + fail_test_span_gre_dir $tundev ingress |
---|
225 | 277 | |
---|
226 | | - bridge fdb del dev $swp2 $h3mac vlan 555 master |
---|
| 278 | + if ! bridge fdb sh dev $swp2 vlan 555 master \ |
---|
| 279 | + | grep -q $h3mac; then |
---|
| 280 | + printf "TEST: %-60s [RETRY]\n" \ |
---|
| 281 | + "$what: MAC roaming ($tcflags)" |
---|
| 282 | + # ARP or ND probably reprimed the FDB while the test |
---|
| 283 | + # was running. We would get a spurious failure. |
---|
| 284 | + RET=0 |
---|
| 285 | + continue |
---|
| 286 | + fi |
---|
| 287 | + break |
---|
| 288 | + done |
---|
| 289 | + |
---|
| 290 | + bridge fdb del dev $swp2 $h3mac vlan 555 master 2>/dev/null |
---|
227 | 291 | # Re-prime FDB |
---|
228 | 292 | $ARPING -I br1.555 192.0.2.130 -fqc 1 |
---|
229 | 293 | sleep 1 |
---|