1# SPDX-License-Identifier: GPL-2.0
2
3source "$relative_path/mirror_lib.sh"
4
5quick_test_span_gre_dir_ips()
6{
7	local tundev=$1; shift
8
9	do_test_span_dir_ips 10 h3-$tundev "$@"
10}
11
12fail_test_span_gre_dir_ips()
13{
14	local tundev=$1; shift
15
16	do_test_span_dir_ips 0 h3-$tundev "$@"
17}
18
19test_span_gre_dir_ips()
20{
21	local tundev=$1; shift
22
23	test_span_dir_ips h3-$tundev "$@"
24}
25
26full_test_span_gre_dir_ips()
27{
28	local tundev=$1; shift
29	local direction=$1; shift
30	local forward_type=$1; shift
31	local backward_type=$1; shift
32	local what=$1; shift
33	local ip1=$1; shift
34	local ip2=$1; shift
35
36	RET=0
37
38	mirror_install $swp1 $direction $tundev "matchall $tcflags"
39	test_span_dir_ips "h3-$tundev" "$direction" "$forward_type" \
40			  "$backward_type" "$ip1" "$ip2"
41	mirror_uninstall $swp1 $direction
42
43	log_test "$direction $what ($tcflags)"
44}
45
46full_test_span_gre_dir_vlan_ips()
47{
48	local tundev=$1; shift
49	local direction=$1; shift
50	local vlan_match=$1; shift
51	local forward_type=$1; shift
52	local backward_type=$1; shift
53	local what=$1; shift
54	local ip1=$1; shift
55	local ip2=$1; shift
56
57	RET=0
58
59	mirror_install $swp1 $direction $tundev "matchall $tcflags"
60
61	test_span_dir_ips "h3-$tundev" "$direction" "$forward_type" \
62			  "$backward_type" "$ip1" "$ip2"
63
64	tc filter add dev $h3 ingress pref 77 prot 802.1q \
65		flower $vlan_match \
66		action pass
67	mirror_test v$h1 $ip1 $ip2 $h3 77 10
68	tc filter del dev $h3 ingress pref 77
69
70	mirror_uninstall $swp1 $direction
71
72	log_test "$direction $what ($tcflags)"
73}
74
75quick_test_span_gre_dir()
76{
77	quick_test_span_gre_dir_ips "$@" 192.0.2.1 192.0.2.2
78}
79
80fail_test_span_gre_dir()
81{
82	fail_test_span_gre_dir_ips "$@" 192.0.2.1 192.0.2.2
83}
84
85test_span_gre_dir()
86{
87	test_span_gre_dir_ips "$@" 192.0.2.1 192.0.2.2
88}
89
90full_test_span_gre_dir()
91{
92	full_test_span_gre_dir_ips "$@" 192.0.2.1 192.0.2.2
93}
94
95full_test_span_gre_dir_vlan()
96{
97	full_test_span_gre_dir_vlan_ips "$@" 192.0.2.1 192.0.2.2
98}
99
100full_test_span_gre_stp_ips()
101{
102	local tundev=$1; shift
103	local nbpdev=$1; shift
104	local what=$1; shift
105	local ip1=$1; shift
106	local ip2=$1; shift
107	local h3mac=$(mac_get $h3)
108
109	RET=0
110
111	mirror_install $swp1 ingress $tundev "matchall $tcflags"
112	quick_test_span_gre_dir_ips $tundev ingress $ip1 $ip2
113
114	bridge link set dev $nbpdev state disabled
115	sleep 1
116	fail_test_span_gre_dir_ips $tundev ingress $ip1 $ip2
117
118	bridge link set dev $nbpdev state forwarding
119	sleep 1
120	quick_test_span_gre_dir_ips $tundev ingress $ip1 $ip2
121
122	mirror_uninstall $swp1 ingress
123
124	log_test "$what: STP state ($tcflags)"
125}
126
127full_test_span_gre_stp()
128{
129	full_test_span_gre_stp_ips "$@" 192.0.2.1 192.0.2.2
130}
131