Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/tests/sys/net/if_geneve.sh
289004 views
1
#
2
# SPDX-License-Identifier: BSD-2-Clause
3
#
4
# Copyright (c) 2025-2026 Pouria Mousavizadeh Tehrani <[email protected]>
5
#
6
# Redistribution and use in source and binary forms, with or without
7
# modification, are permitted provided that the following conditions
8
# are met:
9
# 1. Redistributions of source code must retain the above copyright
10
# notice, this list of conditions and the following disclaimer.
11
# 2. Redistributions in binary form must reproduce the above copyright
12
# notice, this list of conditions and the following disclaimer in the
13
# documentation and/or other materials provided with the distribution.
14
#
15
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
# SUCH DAMAGE.
26
27
. $(atf_get_srcdir)/../common/vnet.subr
28
29
atf_test_case "ether_ipv4" "cleanup"
30
ether_ipv4_head()
31
{
32
atf_set descr 'Create a geneve(4) l2 tunnel over an ipv4 underlay using epair and pass traffic between jails'
33
atf_set require.user root
34
atf_set require.kmods if_geneve
35
}
36
37
ether_ipv4_body()
38
{
39
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
40
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
41
42
endpoint1=192.168.2.1
43
endpoint2=192.168.2.2
44
v4tunnel1=169.254.0.1
45
v4tunnel2=169.254.0.2
46
v6tunnel1=2001:db8::1
47
v6tunnel2=2001:db8::2
48
vni1=1
49
50
vnet_init
51
epair=$(vnet_mkepair)
52
vnet_mkjail genevetest1 ${epair}a
53
vnet_mkjail genevetest2 ${epair}b
54
55
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
56
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
57
58
atf_check -s exit:0 -o ignore \
59
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
60
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
61
atf_check -s exit:0 -o ignore \
62
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
63
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
64
65
atf_check -s exit:0 -o ignore \
66
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
67
atf_check -s exit:0 -o ignore \
68
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
69
atf_check -s exit:0 -o ignore \
70
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
71
atf_check -s exit:0 -o ignore \
72
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
73
74
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
75
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
76
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
77
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
78
}
79
80
ether_ipv4_cleanup()
81
{
82
vnet_cleanup
83
}
84
85
atf_test_case "ether_ipv6" "cleanup"
86
ether_ipv6_head()
87
{
88
atf_set descr 'Create a geneve(4) l2 tunnel over an ipv6 underlay using epair and pass traffic between jails'
89
atf_set require.user root
90
atf_set require.kmods if_geneve
91
}
92
93
ether_ipv6_body()
94
{
95
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
96
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
97
98
endpoint1=3fff::1
99
endpoint2=3fff::2
100
v4tunnel1=169.254.0.1
101
v4tunnel2=169.254.0.2
102
v6tunnel1=2001:db8::1
103
v6tunnel2=2001:db8::2
104
vni1=1
105
106
vnet_init
107
epair=$(vnet_mkepair)
108
vnet_mkjail genevetest1 ${epair}a
109
vnet_mkjail genevetest2 ${epair}b
110
111
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
112
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
113
114
atf_check -s exit:0 -o ignore \
115
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
116
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
117
atf_check -s exit:0 -o ignore \
118
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
119
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
120
121
atf_check -s exit:0 -o ignore \
122
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
123
atf_check -s exit:0 -o ignore \
124
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
125
atf_check -s exit:0 -o ignore \
126
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
127
atf_check -s exit:0 -o ignore \
128
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
129
130
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
131
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
132
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
133
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
134
}
135
136
ether_ipv6_cleanup()
137
{
138
vnet_cleanup
139
}
140
141
atf_test_case "inherit_ipv4" "cleanup"
142
inherit_ipv4_head()
143
{
144
atf_set descr 'Create a geneve(4) l3 tunnel over an ipv4 underlay using epair and pass traffic between jails'
145
atf_set require.user root
146
atf_set require.kmods if_geneve
147
}
148
149
inherit_ipv4_body()
150
{
151
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
152
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
153
154
endpoint1=192.168.2.1
155
endpoint2=192.168.2.2
156
v4tunnel1=169.254.0.1
157
v4tunnel2=169.254.0.2
158
v6tunnel1=2001:db8::1
159
v6tunnel2=2001:db8::2
160
vni1=2
161
162
vnet_init
163
epair=$(vnet_mkepair)
164
vnet_mkjail genevetest1 ${epair}a
165
vnet_mkjail genevetest2 ${epair}b
166
167
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
168
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
169
170
atf_check -s exit:0 -o ignore \
171
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
172
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
173
atf_check -s exit:0 -o ignore \
174
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
175
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
176
177
atf_check -s exit:0 -o ignore \
178
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
179
atf_check -s exit:0 -o ignore \
180
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
181
atf_check -s exit:0 -o ignore \
182
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
183
atf_check -s exit:0 -o ignore \
184
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
185
186
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
187
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
188
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
189
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
190
}
191
192
inherit_ipv4_cleanup()
193
{
194
vnet_cleanup
195
}
196
197
atf_test_case "inherit_ipv6" "cleanup"
198
inherit_ipv6_head()
199
{
200
atf_set descr 'Create a geneve(4) l3 tunnel over an ipv6 underlay using epair and pass traffic between jails'
201
atf_set require.user root
202
atf_set require.kmods if_geneve
203
}
204
205
inherit_ipv6_body()
206
{
207
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
208
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
209
210
endpoint1=3fff::1
211
endpoint2=3fff::2
212
v4tunnel1=169.254.0.1
213
v4tunnel2=169.254.0.2
214
v6tunnel1=2001:db8::1
215
v6tunnel2=2001:db8::2
216
vni1=1
217
218
vnet_init
219
epair=$(vnet_mkepair)
220
vnet_mkjail genevetest1 ${epair}a
221
vnet_mkjail genevetest2 ${epair}b
222
223
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
224
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
225
226
atf_check -s exit:0 -o ignore \
227
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
228
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
229
atf_check -s exit:0 -o ignore \
230
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
231
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
232
233
atf_check -s exit:0 -o ignore \
234
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
235
atf_check -s exit:0 -o ignore \
236
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
237
atf_check -s exit:0 -o ignore \
238
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
239
atf_check -s exit:0 -o ignore \
240
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
241
242
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
243
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
244
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
245
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
246
}
247
248
inherit_ipv6_cleanup()
249
{
250
vnet_cleanup
251
}
252
253
atf_test_case "ether_ipv6_blind_options" "cleanup"
254
ether_ipv6_blind_options_head()
255
{
256
atf_set descr 'Create a geneve(4) l2 ipv6 tunnel and test geneve options'
257
atf_set require.user root
258
atf_set require.kmods if_geneve
259
}
260
261
ether_ipv6_blind_options_body()
262
{
263
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
264
local v6tunnel1 v6tunnel2
265
266
endpoint1=3fff::1
267
endpoint2=3fff::2
268
v6tunnel1=2001:db8::1
269
v6tunnel2=2001:db8::2
270
vni1=1
271
272
vnet_init
273
epair=$(vnet_mkepair)
274
vnet_mkjail genevetest1 ${epair}a
275
vnet_mkjail genevetest2 ${epair}b
276
277
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
278
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
279
280
atf_check -s exit:0 -o ignore \
281
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
282
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
283
atf_check -s exit:0 -o ignore \
284
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
285
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
286
287
atf_check -s exit:0 -o ignore \
288
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
289
atf_check -s exit:0 -o ignore \
290
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
291
292
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
293
294
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevemaxaddr 1000
295
atf_check -s exit:0 -o match:"max: 1000" ifconfig -j genevetest1 -v geneve1
296
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevetimeout 1000
297
atf_check -s exit:0 -o match:"timeout: 1000" ifconfig -j genevetest1 -v geneve1
298
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -genevelearn
299
atf_check -s exit:0 -o match:"mode: nolearning" ifconfig -j genevetest1 -v geneve1
300
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevelearn
301
atf_check -s exit:0 -o match:" learning" ifconfig -j genevetest1 -v geneve1
302
atf_check -s exit:0 -o match:"count: 1" ifconfig -j genevetest1 -v geneve1
303
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveflush
304
atf_check -s exit:0 -o match:"count: 0" ifconfig -j genevetest1 -v geneve1
305
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveflushall
306
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevettl inherit
307
atf_check -s exit:0 -o match:"ttl: inherit" ifconfig -j genevetest1 -v geneve1
308
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevettl 1
309
atf_check -s exit:0 -o match:"ttl: 1" ifconfig -j genevetest1 -v geneve1
310
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf set up
311
atf_check -s exit:0 -o match:"df: set" ifconfig -j genevetest1 -v geneve1
312
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf inherit up
313
atf_check -s exit:0 -o match:"df: inherit" ifconfig -j genevetest1 -v geneve1
314
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf unset up
315
atf_check -s exit:0 -o match:"df: unset" ifconfig -j genevetest1 -v geneve1
316
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevedscpinherit
317
atf_check -s exit:0 -o match:"dscp: inherit" ifconfig -j genevetest1 -v geneve1
318
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -genevedscpinherit
319
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveexternal
320
atf_check -s exit:0 -o match:" external" ifconfig -j genevetest1 -v geneve1
321
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -geneveexternal
322
atf_check -s exit:0 -o ignore \
323
ifconfig -j genevetest1 geneve1 down geneveportrange 11000 62000 up
324
atf_check -s exit:0 -o match:"portrange: 11000-62000" ifconfig -j genevetest1 -v geneve1
325
326
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
327
}
328
329
ether_ipv6_blind_options_cleanup()
330
{
331
vnet_cleanup
332
}
333
334
atf_test_case "ether_ipv6_external" "cleanup"
335
ether_ipv6_external_head()
336
{
337
atf_set descr 'Create a geneve(4) l2 ipv6 tunnel and test geneve collect metadata'
338
atf_set require.user root
339
atf_set require.kmods if_geneve
340
}
341
342
ether_ipv6_external_body()
343
{
344
local epair geneve1 geneve2 vni1 endpoint1 endpoint2
345
local v6tunnel1 v6tunnel2
346
347
endpoint1=3fff::1
348
endpoint2=3fff::2
349
v6tunnel1=2001:db8::1
350
v6tunnel2=2001:db8::2
351
vni1=1
352
353
vnet_init
354
epair=$(vnet_mkepair)
355
vnet_mkjail genevetest1 ${epair}a
356
vnet_mkjail genevetest2 ${epair}b
357
358
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
359
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
360
361
atf_check -s exit:0 -o ignore \
362
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
363
geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up
364
atf_check -s exit:0 -o ignore \
365
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
366
geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up
367
368
atf_check -s exit:0 -o ignore \
369
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
370
atf_check -s exit:0 -o ignore \
371
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
372
373
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
374
375
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveexternal
376
atf_check -s exit:16 -e ignore ifconfig -j genevetest1 geneve1 down geneveid 10 up
377
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -geneveexternal
378
atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down geneveid 10 up
379
380
}
381
382
ether_ipv6_external_cleanup()
383
{
384
vnet_cleanup
385
}
386
387
atf_test_case "ether_ipv4_multicast" "cleanup"
388
ether_ipv4_multicast_head()
389
{
390
atf_set descr 'Create a geneve(4) l2 ipv4 multicast tunnel using epair and pass traffic between jails'
391
atf_set require.user root
392
atf_set require.kmods if_geneve ip_mroute
393
}
394
395
ether_ipv4_multicast_body()
396
{
397
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
398
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
399
400
endpoint1=192.168.2.1
401
endpoint2=192.168.2.2
402
mc_group=239.0.0.1
403
v4tunnel1=169.254.0.1
404
v4tunnel2=169.254.0.2
405
v6tunnel1=2001:db8::1
406
v6tunnel2=2001:db8::2
407
vni1=1
408
409
vnet_init
410
epair=$(vnet_mkepair)
411
vnet_mkjail genevetest1 ${epair}a
412
vnet_mkjail genevetest2 ${epair}b
413
414
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
415
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
416
417
# manually add the multicast routes to epairs
418
route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a
419
route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b
420
421
atf_check -s exit:0 -o ignore \
422
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
423
geneveid $vni1 genevelocal ${endpoint1} \
424
genevegroup ${mc_group} genevedev ${epair}a up
425
atf_check -s exit:0 -o ignore \
426
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
427
geneveid $vni1 genevelocal ${endpoint2} \
428
genevegroup ${mc_group} genevedev ${epair}b up
429
430
atf_check -s exit:0 -o ignore \
431
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
432
atf_check -s exit:0 -o ignore \
433
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
434
atf_check -s exit:0 -o ignore \
435
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
436
atf_check -s exit:0 -o ignore \
437
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
438
439
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet
440
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet
441
442
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
443
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
444
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
445
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
446
}
447
448
ether_ipv4_multicast_cleanup()
449
{
450
vnet_cleanup
451
}
452
453
atf_test_case "ether_ipv6_multicast" "cleanup"
454
ether_ipv6_multicast_head()
455
{
456
atf_set descr 'Create a geneve(4) l2 ipv6 multicast tunnel using epair and pass traffic between jails'
457
atf_set require.user root
458
atf_set require.kmods if_geneve ip6_mroute
459
}
460
461
ether_ipv6_multicast_body()
462
{
463
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
464
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
465
466
endpoint1=3fff::1
467
endpoint2=3fff::2
468
mc_group=ff08::db8:0:1
469
v4tunnel1=169.254.0.1
470
v4tunnel2=169.254.0.2
471
v6tunnel1=2001:db8::1
472
v6tunnel2=2001:db8::2
473
vni1=1
474
475
vnet_init
476
epair=$(vnet_mkepair)
477
vnet_mkjail genevetest1 ${epair}a
478
vnet_mkjail genevetest2 ${epair}b
479
480
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
481
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
482
483
# manually add the multicast routes to epairs
484
route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a
485
route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b
486
487
atf_check -s exit:0 -o ignore \
488
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
489
geneveid $vni1 genevelocal ${endpoint1} \
490
genevegroup ${mc_group} genevedev ${epair}a up
491
atf_check -s exit:0 -o ignore \
492
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
493
geneveid $vni1 genevelocal ${endpoint2} \
494
genevegroup ${mc_group} genevedev ${epair}b up
495
496
atf_check -s exit:0 -o ignore \
497
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
498
atf_check -s exit:0 -o ignore \
499
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
500
atf_check -s exit:0 -o ignore \
501
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
502
atf_check -s exit:0 -o ignore \
503
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
504
505
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
506
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
507
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
508
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
509
}
510
511
ether_ipv6_multicast_cleanup()
512
{
513
vnet_cleanup
514
}
515
516
atf_test_case "ether_ipv4_multicast_without_dev" "cleanup"
517
ether_ipv4_multicast_without_dev_head()
518
{
519
atf_set descr 'Create a geneve(4) l2 ipv4 multicast tunnel without specifying genevedev using epair and pass traffic between jails'
520
atf_set require.user root
521
atf_set require.kmods if_geneve ip_mroute
522
}
523
524
ether_ipv4_multicast_without_dev_body()
525
{
526
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
527
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
528
529
endpoint1=192.168.2.1
530
endpoint2=192.168.2.2
531
mc_group=239.0.0.1
532
v4tunnel1=169.254.0.1
533
v4tunnel2=169.254.0.2
534
v6tunnel1=2001:db8::1
535
v6tunnel2=2001:db8::2
536
vni1=1
537
538
vnet_init
539
epair=$(vnet_mkepair)
540
vnet_mkjail genevetest1 ${epair}a
541
vnet_mkjail genevetest2 ${epair}b
542
543
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
544
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
545
546
# manually add the multicast routes to epairs
547
route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a
548
route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b
549
550
atf_check -s exit:0 -o ignore \
551
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
552
geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up
553
atf_check -s exit:0 -o ignore \
554
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
555
geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up
556
557
atf_check -s exit:0 -o ignore \
558
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
559
atf_check -s exit:0 -o ignore \
560
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
561
atf_check -s exit:0 -o ignore \
562
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
563
atf_check -s exit:0 -o ignore \
564
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
565
566
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet
567
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet
568
569
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
570
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
571
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
572
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
573
574
}
575
576
ether_ipv4_multicast_without_dev_cleanup()
577
{
578
vnet_cleanup
579
}
580
581
582
atf_test_case "ether_ipv6_multicast_without_dev" "cleanup"
583
ether_ipv6_multicast_without_dev_head()
584
{
585
atf_set descr 'Create a geneve(4) l2 ipv6 multicast tunnel without specifying genevedev using epair and pass traffic between jails'
586
atf_set require.user root
587
atf_set require.kmods if_geneve ip6_mroute
588
}
589
590
ether_ipv6_multicast_without_dev_body()
591
{
592
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
593
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
594
595
endpoint1=3fff::1
596
endpoint2=3fff::2
597
mc_group=ff08::db8:0:1
598
v4tunnel1=169.254.0.1
599
v4tunnel2=169.254.0.2
600
v6tunnel1=2001:db8::1
601
v6tunnel2=2001:db8::2
602
vni1=1
603
604
vnet_init
605
epair=$(vnet_mkepair)
606
vnet_mkjail genevetest1 ${epair}a
607
vnet_mkjail genevetest2 ${epair}b
608
609
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
610
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
611
612
# manually add the multicast routes to epairs
613
route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a
614
route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b
615
616
atf_check -s exit:0 -o ignore \
617
ifconfig -j genevetest1 geneve1 create genevemode l2 debug \
618
geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up
619
atf_check -s exit:0 -o ignore \
620
ifconfig -j genevetest2 geneve1 create genevemode l2 debug \
621
geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up
622
623
atf_check -s exit:0 -o ignore \
624
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24
625
atf_check -s exit:0 -o ignore \
626
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
627
atf_check -s exit:0 -o ignore \
628
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24
629
atf_check -s exit:0 -o ignore \
630
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
631
632
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
633
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
634
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
635
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
636
637
}
638
639
ether_ipv6_multicast_without_dev_cleanup()
640
{
641
vnet_cleanup
642
}
643
644
atf_test_case "inherit_ipv4_multicast" "cleanup"
645
inherit_ipv4_multicast_head()
646
{
647
atf_set descr 'Create a geneve(4) l3 ipv4 multicast tunnel using epair and pass traffic between jails'
648
atf_set require.user root
649
atf_set require.kmods if_geneve ip_mroute
650
}
651
652
inherit_ipv4_multicast_body()
653
{
654
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
655
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
656
657
endpoint1=192.168.2.1
658
endpoint2=192.168.2.2
659
mc_group=239.0.0.1
660
v4tunnel1=169.254.0.1
661
v4tunnel2=169.254.0.2
662
v6tunnel1=2001:db8::1
663
v6tunnel2=2001:db8::2
664
vni1=1
665
666
vnet_init
667
epair=$(vnet_mkepair)
668
vnet_mkjail genevetest1 ${epair}a
669
vnet_mkjail genevetest2 ${epair}b
670
671
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
672
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
673
674
# manually add the multicast routes to epairs
675
route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a
676
route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b
677
678
atf_check -s exit:0 -o ignore \
679
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
680
geneveid $vni1 genevelocal ${endpoint1} \
681
genevegroup ${mc_group} genevedev ${epair}a up
682
atf_check -s exit:0 -o ignore \
683
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
684
geneveid $vni1 genevelocal ${endpoint2} \
685
genevegroup ${mc_group} genevedev ${epair}b up
686
687
atf_check -s exit:0 -o ignore \
688
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30
689
atf_check -s exit:0 -o ignore \
690
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
691
atf_check -s exit:0 -o ignore \
692
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30
693
atf_check -s exit:0 -o ignore \
694
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
695
696
atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1
697
atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1
698
699
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet
700
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet
701
702
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
703
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
704
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
705
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
706
}
707
708
inherit_ipv4_multicast_cleanup()
709
{
710
vnet_cleanup
711
}
712
713
atf_test_case "inherit_ipv6_multicast" "cleanup"
714
inherit_ipv6_multicast_head()
715
{
716
atf_set descr 'Create a geneve(4) l3 ipv6 multicast tunnel using epair and pass traffic between jails'
717
atf_set require.user root
718
atf_set require.kmods if_geneve ip6_mroute
719
}
720
721
inherit_ipv6_multicast_body()
722
{
723
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
724
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
725
726
endpoint1=3fff::1
727
endpoint2=3fff::2
728
mc_group=ff08::db8:0:1
729
v4tunnel1=169.254.0.1
730
v4tunnel2=169.254.0.2
731
v6tunnel1=2001:db8::1
732
v6tunnel2=2001:db8::2
733
vni1=1
734
735
vnet_init
736
epair=$(vnet_mkepair)
737
vnet_mkjail genevetest1 ${epair}a
738
vnet_mkjail genevetest2 ${epair}b
739
740
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
741
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
742
743
# manually add the multicast routes to epairs
744
route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a
745
route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b
746
747
atf_check -s exit:0 -o ignore \
748
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
749
geneveid $vni1 genevelocal ${endpoint1} \
750
genevegroup ${mc_group} genevedev ${epair}a up
751
atf_check -s exit:0 -o ignore \
752
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
753
geneveid $vni1 genevelocal ${endpoint2} \
754
genevegroup ${mc_group} genevedev ${epair}b up
755
756
atf_check -s exit:0 -o ignore \
757
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30
758
atf_check -s exit:0 -o ignore \
759
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
760
atf_check -s exit:0 -o ignore \
761
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30
762
atf_check -s exit:0 -o ignore \
763
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
764
765
atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1
766
atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1
767
768
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
769
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
770
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
771
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
772
}
773
774
inherit_ipv6_multicast_cleanup()
775
{
776
vnet_cleanup
777
}
778
779
atf_test_case "inherit_ipv4_multicast_without_dev" "cleanup"
780
inherit_ipv4_multicast_without_dev_head()
781
{
782
atf_set descr 'Create a geneve(4) l3 ipv4 multicast tunnel without specifying genevedev using epair and pass traffic between jails'
783
atf_set require.user root
784
atf_set require.kmods if_geneve ip_mroute
785
}
786
787
inherit_ipv4_multicast_without_dev_body()
788
{
789
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
790
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
791
792
endpoint1=192.168.2.1
793
endpoint2=192.168.2.2
794
mc_group=239.0.0.1
795
v4tunnel1=169.254.0.1
796
v4tunnel2=169.254.0.2
797
v6tunnel1=2001:db8::1
798
v6tunnel2=2001:db8::2
799
vni1=1
800
801
vnet_init
802
epair=$(vnet_mkepair)
803
vnet_mkjail genevetest1 ${epair}a
804
vnet_mkjail genevetest2 ${epair}b
805
806
ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up
807
ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up
808
809
# manually add the multicast routes to epairs
810
route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a
811
route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b
812
813
atf_check -s exit:0 -o ignore \
814
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
815
geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up
816
atf_check -s exit:0 -o ignore \
817
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
818
geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up
819
820
atf_check -s exit:0 -o ignore \
821
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30
822
atf_check -s exit:0 -o ignore \
823
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
824
atf_check -s exit:0 -o ignore \
825
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30
826
atf_check -s exit:0 -o ignore \
827
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
828
829
atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1
830
atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1
831
832
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet
833
atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet
834
835
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
836
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
837
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
838
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
839
840
}
841
842
inherit_ipv4_multicast_without_dev_cleanup()
843
{
844
vnet_cleanup
845
}
846
847
848
atf_test_case "inherit_ipv6_multicast_without_dev" "cleanup"
849
inherit_ipv6_multicast_without_dev_head()
850
{
851
atf_set descr 'Create a geneve(4) l3 ipv6 multicast tunnel without specifying genevedev using epair and pass traffic between jails'
852
atf_set require.user root
853
atf_set require.kmods if_geneve ip6_mroute
854
}
855
856
inherit_ipv6_multicast_without_dev_body()
857
{
858
local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group
859
local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2
860
861
endpoint1=3fff::1
862
endpoint2=3fff::2
863
mc_group=ff08::db8:0:1
864
v4tunnel1=169.254.0.1
865
v4tunnel2=169.254.0.2
866
v6tunnel1=2001:db8::1
867
v6tunnel2=2001:db8::2
868
vni1=1
869
870
vnet_init
871
epair=$(vnet_mkepair)
872
vnet_mkjail genevetest1 ${epair}a
873
vnet_mkjail genevetest2 ${epair}b
874
875
ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up
876
ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up
877
878
# manually add the multicast routes to epairs
879
route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a
880
route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b
881
882
atf_check -s exit:0 -o ignore \
883
ifconfig -j genevetest1 geneve1 create genevemode l3 debug \
884
geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up
885
atf_check -s exit:0 -o ignore \
886
ifconfig -j genevetest2 geneve1 create genevemode l3 debug \
887
geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up
888
889
atf_check -s exit:0 -o ignore \
890
ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30
891
atf_check -s exit:0 -o ignore \
892
ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1}
893
atf_check -s exit:0 -o ignore \
894
ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30
895
atf_check -s exit:0 -o ignore \
896
ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2}
897
898
atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1
899
atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1
900
901
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2
902
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1
903
atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2
904
atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1
905
}
906
907
inherit_ipv6_multicast_without_dev_cleanup()
908
{
909
vnet_cleanup
910
}
911
912
913
atf_init_test_cases()
914
{
915
atf_add_test_case "ether_ipv4"
916
atf_add_test_case "ether_ipv4_multicast"
917
atf_add_test_case "ether_ipv4_multicast_without_dev"
918
atf_add_test_case "ether_ipv6"
919
atf_add_test_case "ether_ipv6_blind_options"
920
atf_add_test_case "ether_ipv6_external"
921
atf_add_test_case "ether_ipv6_multicast"
922
atf_add_test_case "ether_ipv6_multicast_without_dev"
923
atf_add_test_case "inherit_ipv4"
924
atf_add_test_case "inherit_ipv4_multicast"
925
atf_add_test_case "inherit_ipv4_multicast_without_dev"
926
atf_add_test_case "inherit_ipv6"
927
atf_add_test_case "inherit_ipv6_multicast"
928
atf_add_test_case "inherit_ipv6_multicast_without_dev"
929
}
930
931