xref: /freebsd/tests/sys/net/if_gre.sh (revision fdf86df72a32e5d8ca729220a5c787265f8b6682)
1*fdf86df7SPouria Mousavizadeh Tehrani#
2*fdf86df7SPouria Mousavizadeh Tehrani# Copyright (c) 2026 Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
3*fdf86df7SPouria Mousavizadeh Tehrani#
4*fdf86df7SPouria Mousavizadeh Tehrani# SPDX-License-Identifier: BSD-2-Clause
5*fdf86df7SPouria Mousavizadeh Tehrani#
6*fdf86df7SPouria Mousavizadeh Tehrani
7*fdf86df7SPouria Mousavizadeh Tehrani. $(atf_get_srcdir)/../common/vnet.subr
8*fdf86df7SPouria Mousavizadeh Tehrani
9*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre4_basic" "cleanup"
10*fdf86df7SPouria Mousavizadeh Tehranigre4_basic_head()
11*fdf86df7SPouria Mousavizadeh Tehrani{
12*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a gre(4) tunnel over ipv4 underlay'
13*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
14*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
15*fdf86df7SPouria Mousavizadeh Tehrani}
16*fdf86df7SPouria Mousavizadeh Tehranigre4_basic_body()
17*fdf86df7SPouria Mousavizadeh Tehrani{
18*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
19*fdf86df7SPouria Mousavizadeh Tehrani        local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
20*fdf86df7SPouria Mousavizadeh Tehrani
21*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=192.168.2.1
22*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=192.168.2.2
23*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
24*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
25*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
26*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
27*fdf86df7SPouria Mousavizadeh Tehrani
28*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
29*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
30*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
31*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
32*fdf86df7SPouria Mousavizadeh Tehrani
33*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet ${endpoint1}/30 up
34*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet ${endpoint2}/30 up
35*fdf86df7SPouria Mousavizadeh Tehrani
36*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
37*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
38*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
39*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
40*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
41*fdf86df7SPouria Mousavizadeh Tehrani
42*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
43*fdf86df7SPouria Mousavizadeh Tehrani	    inet tunnel ${endpoint1} ${endpoint2} up
44*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
45*fdf86df7SPouria Mousavizadeh Tehrani	    inet tunnel ${endpoint2} ${endpoint1} up
46*fdf86df7SPouria Mousavizadeh Tehrani
47*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
48*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
49*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
50*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
51*fdf86df7SPouria Mousavizadeh Tehrani
52*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
53*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
54*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
55*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
56*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
57*fdf86df7SPouria Mousavizadeh Tehrani}
58*fdf86df7SPouria Mousavizadeh Tehranigre4_basic_cleanup()
59*fdf86df7SPouria Mousavizadeh Tehrani{
60*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
61*fdf86df7SPouria Mousavizadeh Tehrani}
62*fdf86df7SPouria Mousavizadeh Tehrani
63*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre6_basic" "cleanup"
64*fdf86df7SPouria Mousavizadeh Tehranigre6_basic_head()
65*fdf86df7SPouria Mousavizadeh Tehrani{
66*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a gre(4) tunnel over ipv6 underlay'
67*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
68*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
69*fdf86df7SPouria Mousavizadeh Tehrani}
70*fdf86df7SPouria Mousavizadeh Tehranigre6_basic_body()
71*fdf86df7SPouria Mousavizadeh Tehrani{
72*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
73*fdf86df7SPouria Mousavizadeh Tehrani        local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
74*fdf86df7SPouria Mousavizadeh Tehrani
75*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=3fff::1
76*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=3fff::2
77*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
78*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
79*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
80*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
81*fdf86df7SPouria Mousavizadeh Tehrani
82*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
83*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
84*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
85*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
86*fdf86df7SPouria Mousavizadeh Tehrani
87*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet6 ${endpoint1} up
88*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet6 ${endpoint2} up
89*fdf86df7SPouria Mousavizadeh Tehrani
90*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
91*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
92*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
93*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
94*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
95*fdf86df7SPouria Mousavizadeh Tehrani
96*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
97*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint1} ${endpoint2} up
98*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
99*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint2} ${endpoint1} up
100*fdf86df7SPouria Mousavizadeh Tehrani
101*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
102*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
103*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
104*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
105*fdf86df7SPouria Mousavizadeh Tehrani
106*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
107*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
108*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
109*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
110*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
111*fdf86df7SPouria Mousavizadeh Tehrani}
112*fdf86df7SPouria Mousavizadeh Tehranigre6_basic_cleanup()
113*fdf86df7SPouria Mousavizadeh Tehrani{
114*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
115*fdf86df7SPouria Mousavizadeh Tehrani}
116*fdf86df7SPouria Mousavizadeh Tehrani
117*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre6_csum" "cleanup"
118*fdf86df7SPouria Mousavizadeh Tehranigre6_csum_head()
119*fdf86df7SPouria Mousavizadeh Tehrani{
120*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a gre(4) tunnel over ipv6 underlay with checksum option'
121*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
122*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
123*fdf86df7SPouria Mousavizadeh Tehrani}
124*fdf86df7SPouria Mousavizadeh Tehranigre6_csum_body()
125*fdf86df7SPouria Mousavizadeh Tehrani{
126*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
127*fdf86df7SPouria Mousavizadeh Tehrani	local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
128*fdf86df7SPouria Mousavizadeh Tehrani
129*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=3fff::1
130*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=3fff::2
131*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
132*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
133*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
134*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
135*fdf86df7SPouria Mousavizadeh Tehrani
136*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
137*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
138*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
139*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
140*fdf86df7SPouria Mousavizadeh Tehrani
141*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet6 ${endpoint1} up
142*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet6 ${endpoint2} up
143*fdf86df7SPouria Mousavizadeh Tehrani
144*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
145*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
146*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
147*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
148*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
149*fdf86df7SPouria Mousavizadeh Tehrani
150*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
151*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint1} ${endpoint2} enable_csum up
152*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
153*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint2} ${endpoint1} enable_csum up
154*fdf86df7SPouria Mousavizadeh Tehrani
155*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
156*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
157*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
158*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
159*fdf86df7SPouria Mousavizadeh Tehrani
160*fdf86df7SPouria Mousavizadeh Tehrani	# ifconfig test
161*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_CSUM" ifconfig -j gretest1 gre1
162*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_CSUM" ifconfig -j gretest2 gre1
163*fdf86df7SPouria Mousavizadeh Tehrani
164*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
165*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
166*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
167*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
168*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
169*fdf86df7SPouria Mousavizadeh Tehrani}
170*fdf86df7SPouria Mousavizadeh Tehranigre6_csum_cleanup()
171*fdf86df7SPouria Mousavizadeh Tehrani{
172*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
173*fdf86df7SPouria Mousavizadeh Tehrani}
174*fdf86df7SPouria Mousavizadeh Tehrani
175*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre6_key" "cleanup"
176*fdf86df7SPouria Mousavizadeh Tehranigre6_key_head()
177*fdf86df7SPouria Mousavizadeh Tehrani{
178*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a gre(4) tunnel over ipv6 underlay with gre key option'
179*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
180*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
181*fdf86df7SPouria Mousavizadeh Tehrani}
182*fdf86df7SPouria Mousavizadeh Tehranigre6_key_body()
183*fdf86df7SPouria Mousavizadeh Tehrani{
184*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
185*fdf86df7SPouria Mousavizadeh Tehrani        local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
186*fdf86df7SPouria Mousavizadeh Tehrani
187*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=3fff::1
188*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=3fff::2
189*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
190*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
191*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
192*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
193*fdf86df7SPouria Mousavizadeh Tehrani
194*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
195*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
196*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
197*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
198*fdf86df7SPouria Mousavizadeh Tehrani
199*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet6 ${endpoint1} up
200*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet6 ${endpoint2} up
201*fdf86df7SPouria Mousavizadeh Tehrani
202*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
203*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
204*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
205*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
206*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
207*fdf86df7SPouria Mousavizadeh Tehrani
208*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
209*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint1} ${endpoint2} grekey 10 up
210*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
211*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint2} ${endpoint1} grekey 10 up
212*fdf86df7SPouria Mousavizadeh Tehrani
213*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
214*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
215*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
216*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
217*fdf86df7SPouria Mousavizadeh Tehrani
218*fdf86df7SPouria Mousavizadeh Tehrani	# ifconfig test
219*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"grekey: 0xa \(10\)" ifconfig -j gretest1 gre1
220*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"grekey: 0xa \(10\)" ifconfig -j gretest2 gre1
221*fdf86df7SPouria Mousavizadeh Tehrani
222*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
223*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
224*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
225*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
226*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
227*fdf86df7SPouria Mousavizadeh Tehrani}
228*fdf86df7SPouria Mousavizadeh Tehranigre6_key_cleanup()
229*fdf86df7SPouria Mousavizadeh Tehrani{
230*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
231*fdf86df7SPouria Mousavizadeh Tehrani}
232*fdf86df7SPouria Mousavizadeh Tehrani
233*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre6_seq" "cleanup"
234*fdf86df7SPouria Mousavizadeh Tehranigre6_seq_head()
235*fdf86df7SPouria Mousavizadeh Tehrani{
236*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a sequenced gre(4) tunnel over ipv6 underlay'
237*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
238*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
239*fdf86df7SPouria Mousavizadeh Tehrani}
240*fdf86df7SPouria Mousavizadeh Tehranigre6_seq_body()
241*fdf86df7SPouria Mousavizadeh Tehrani{
242*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
243*fdf86df7SPouria Mousavizadeh Tehrani	local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
244*fdf86df7SPouria Mousavizadeh Tehrani
245*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=3fff::1
246*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=3fff::2
247*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
248*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
249*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
250*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
251*fdf86df7SPouria Mousavizadeh Tehrani
252*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
253*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
254*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
255*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
256*fdf86df7SPouria Mousavizadeh Tehrani
257*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet6 ${endpoint1} up
258*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet6 ${endpoint2} up
259*fdf86df7SPouria Mousavizadeh Tehrani
260*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
261*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
262*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
263*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
264*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
265*fdf86df7SPouria Mousavizadeh Tehrani
266*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
267*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint1} ${endpoint2} enable_seq up
268*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
269*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint2} ${endpoint1} enable_seq up
270*fdf86df7SPouria Mousavizadeh Tehrani
271*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
272*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
273*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
274*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
275*fdf86df7SPouria Mousavizadeh Tehrani
276*fdf86df7SPouria Mousavizadeh Tehrani	# ifconfig test
277*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_SEQ" ifconfig -j gretest1 gre1
278*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_SEQ" ifconfig -j gretest2 gre1
279*fdf86df7SPouria Mousavizadeh Tehrani
280*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
281*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
282*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
283*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
284*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
285*fdf86df7SPouria Mousavizadeh Tehrani}
286*fdf86df7SPouria Mousavizadeh Tehranigre6_seq_cleanup()
287*fdf86df7SPouria Mousavizadeh Tehrani{
288*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
289*fdf86df7SPouria Mousavizadeh Tehrani}
290*fdf86df7SPouria Mousavizadeh Tehrani
291*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre6_udpencap" "cleanup"
292*fdf86df7SPouria Mousavizadeh Tehranigre6_udpencap_head()
293*fdf86df7SPouria Mousavizadeh Tehrani{
294*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Create a gre(4) over UDP tunnel with ipv6 underlay'
295*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
296*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
297*fdf86df7SPouria Mousavizadeh Tehrani}
298*fdf86df7SPouria Mousavizadeh Tehranigre6_udpencap_body()
299*fdf86df7SPouria Mousavizadeh Tehrani{
300*fdf86df7SPouria Mousavizadeh Tehrani	local epair endpoint1 endpoint2
301*fdf86df7SPouria Mousavizadeh Tehrani        local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
302*fdf86df7SPouria Mousavizadeh Tehrani
303*fdf86df7SPouria Mousavizadeh Tehrani	endpoint1=3fff::1
304*fdf86df7SPouria Mousavizadeh Tehrani	endpoint2=3fff::2
305*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
306*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
307*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
308*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
309*fdf86df7SPouria Mousavizadeh Tehrani
310*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
311*fdf86df7SPouria Mousavizadeh Tehrani	epair=$(vnet_mkepair)
312*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest1 ${epair}a
313*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest2 ${epair}b
314*fdf86df7SPouria Mousavizadeh Tehrani
315*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest1 ${epair}a inet6 ${endpoint1} up
316*fdf86df7SPouria Mousavizadeh Tehrani	ifconfig -j gretest2 ${epair}b inet6 ${endpoint2} up
317*fdf86df7SPouria Mousavizadeh Tehrani
318*fdf86df7SPouria Mousavizadeh Tehrani	# Sanity check
319*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
320*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest1 ping -c 1 -t 3 ${endpoint2}
321*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore \
322*fdf86df7SPouria Mousavizadeh Tehrani	    jexec gretest2 ping -c 1 -t 3 ${endpoint1}
323*fdf86df7SPouria Mousavizadeh Tehrani
324*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 create \
325*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint1} ${endpoint2} udpencap up
326*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 create \
327*fdf86df7SPouria Mousavizadeh Tehrani	    inet6 tunnel ${endpoint2} ${endpoint1} udpencap udpport 55555 up
328*fdf86df7SPouria Mousavizadeh Tehrani
329*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet ${v4tunnel1} ${v4tunnel2}
330*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest1 gre1 inet6 ${v6tunnel1}
331*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet ${v4tunnel2} ${v4tunnel1}
332*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest2 gre1 inet6 ${v6tunnel2}
333*fdf86df7SPouria Mousavizadeh Tehrani
334*fdf86df7SPouria Mousavizadeh Tehrani	# ifconfig test
335*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"UDPENCAP" ifconfig -j gretest1 gre1
336*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"udpport: 55555" ifconfig -j gretest2 gre1
337*fdf86df7SPouria Mousavizadeh Tehrani
338*fdf86df7SPouria Mousavizadeh Tehrani	# Tunnel test
339*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v4tunnel2
340*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v4tunnel1
341*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest1 ping -nc 1 -t 1 $v6tunnel2
342*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o ignore jexec gretest2 ping -nc 1 -t 1 $v6tunnel1
343*fdf86df7SPouria Mousavizadeh Tehrani}
344*fdf86df7SPouria Mousavizadeh Tehranigre6_udpencap_cleanup()
345*fdf86df7SPouria Mousavizadeh Tehrani{
346*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
347*fdf86df7SPouria Mousavizadeh Tehrani}
348*fdf86df7SPouria Mousavizadeh Tehrani
349*fdf86df7SPouria Mousavizadeh Tehraniatf_test_case "gre_blind_options" "cleanup"
350*fdf86df7SPouria Mousavizadeh Tehranigre_blind_options_head()
351*fdf86df7SPouria Mousavizadeh Tehrani{
352*fdf86df7SPouria Mousavizadeh Tehrani	atf_set descr 'Test gre(4) tunnel options without verifying its effect on dataplane.'
353*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.user root
354*fdf86df7SPouria Mousavizadeh Tehrani	atf_set require.kmods if_gre
355*fdf86df7SPouria Mousavizadeh Tehrani}
356*fdf86df7SPouria Mousavizadeh Tehranigre_blind_options_body()
357*fdf86df7SPouria Mousavizadeh Tehrani{
358*fdf86df7SPouria Mousavizadeh Tehrani	local gre
359*fdf86df7SPouria Mousavizadeh Tehrani
360*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel1=169.254.0.1
361*fdf86df7SPouria Mousavizadeh Tehrani	v4tunnel2=169.254.0.2
362*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel1=2001:db8::1
363*fdf86df7SPouria Mousavizadeh Tehrani	v6tunnel2=2001:db8::2
364*fdf86df7SPouria Mousavizadeh Tehrani
365*fdf86df7SPouria Mousavizadeh Tehrani	vnet_init
366*fdf86df7SPouria Mousavizadeh Tehrani	vnet_mkjail gretest
367*fdf86df7SPouria Mousavizadeh Tehrani
368*fdf86df7SPouria Mousavizadeh Tehrani	gre=$(ifconfig -j gretest gre create \
369*fdf86df7SPouria Mousavizadeh Tehrani		enable_seq grekey 10 enable_csum udpencap udpport 55555 up)
370*fdf86df7SPouria Mousavizadeh Tehrani
371*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest $gre inet ${v4tunnel1} ${v4tunnel2}
372*fdf86df7SPouria Mousavizadeh Tehrani	atf_check ifconfig -j gretest $gre inet6 ${v6tunnel1}
373*fdf86df7SPouria Mousavizadeh Tehrani
374*fdf86df7SPouria Mousavizadeh Tehrani	# ifconfig test
375*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"grekey: 0xa \(10\)" ifconfig -j gretest $gre
376*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_CSUM" ifconfig -j gretest $gre
377*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"ENABLE_SEQ" ifconfig -j gretest $gre
378*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"UDPENCAP" ifconfig -j gretest $gre
379*fdf86df7SPouria Mousavizadeh Tehrani	atf_check -o match:"udpport: 55555" ifconfig -j gretest $gre
380*fdf86df7SPouria Mousavizadeh Tehrani}
381*fdf86df7SPouria Mousavizadeh Tehranigre_blind_options_cleanup()
382*fdf86df7SPouria Mousavizadeh Tehrani{
383*fdf86df7SPouria Mousavizadeh Tehrani	vnet_cleanup
384*fdf86df7SPouria Mousavizadeh Tehrani}
385*fdf86df7SPouria Mousavizadeh Tehrani
386*fdf86df7SPouria Mousavizadeh Tehrani
387*fdf86df7SPouria Mousavizadeh Tehraniatf_init_test_cases()
388*fdf86df7SPouria Mousavizadeh Tehrani{
389*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre4_basic"
390*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre6_basic"
391*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre6_csum"
392*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre6_key"
393*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre6_seq"
394*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre6_udpencap"
395*fdf86df7SPouria Mousavizadeh Tehrani	atf_add_test_case "gre_blind_options"
396*fdf86df7SPouria Mousavizadeh Tehrani}
397