forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh
....@@ -1,11 +1,44 @@
11 #!/bin/bash
22 # SPDX-License-Identifier: GPL-2.0
33
4
-# This test uses standard topology for testing gretap. See
5
-# mirror_gre_topo_lib.sh for more details.
6
-#
74 # Test for "tc action mirred egress mirror" when the underlay route points at a
85 # 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
+# +-------------------------------------------------------------------------+
942
1043 ALL_TESTS="
1144 test_gretap
....@@ -29,6 +62,15 @@
2962 source mirror_gre_topo_lib.sh
3063
3164 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
+}
3274
3375 setup_prepare()
3476 {
....@@ -55,7 +97,8 @@
5597 ip route rep 192.0.2.130/32 dev br1.555
5698 ip -6 route rep 2001:db8:2::2/128 dev br1.555
5799
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
59102
60103 ip link set dev $swp3 master br1
61104 bridge vlan add dev $swp3 vid 555
....@@ -68,6 +111,8 @@
68111
69112 ip link set dev $swp2 nomaster
70113 ip link set dev $swp3 nomaster
114
+
115
+ h3_addr_add_del del $h3.555
71116 vlan_destroy $h3 555
72117 vlan_destroy br1 555
73118
....@@ -182,13 +227,19 @@
182227 quick_test_span_gre_dir $tundev ingress
183228 quick_test_span_vlan_dir $h3 555 ingress
184229
230
+ h3_addr_add_del del $h3.555
185231 bridge vlan add dev $swp3 vid 555 pvid untagged
186
- sleep 1
232
+ h3_addr_add_del add $h3
233
+ sleep 5
234
+
187235 quick_test_span_gre_dir $tundev ingress
188236 fail_test_span_vlan_dir $h3 555 ingress
189237
238
+ h3_addr_add_del del $h3
190239 bridge vlan add dev $swp3 vid 555
191
- sleep 1
240
+ h3_addr_add_del add $h3.555
241
+ sleep 5
242
+
192243 quick_test_span_gre_dir $tundev ingress
193244 quick_test_span_vlan_dir $h3 555 ingress
194245
....@@ -218,12 +269,25 @@
218269 mirror_install $swp1 ingress $tundev "matchall $tcflags"
219270 quick_test_span_gre_dir $tundev ingress
220271
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
225277
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
227291 # Re-prime FDB
228292 $ARPING -I br1.555 192.0.2.130 -fqc 1
229293 sleep 1