From nobody Mon Apr 13 14:16:59 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fvTxR4bcsz6ZF03 for ; Mon, 13 Apr 2026 14:16:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fvTxR1RfKz3njm for ; Mon, 13 Apr 2026 14:16:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776089819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KzS2cqueHfBO9CXukMKHDY47lXdiDat2nn5f1zotKcg=; b=LGq7eZ+c3RcOwICi/j0Xrrlj+KDn27qYx5NxH0CKmNMN3tzoQp1OGc2v6/jSej9l0w1cZx 1UUj0xJ9RpqU6sjllJoqlyi1Bh5YvhjLHV58TAzKJ5cHIAu1iazbOQeWnD19kjqV1/CfRJ u/YSBqPmEDN9F0hjxJtE32f+d3loqN/toE4bnV2LtUapi4nE9IPg35F4au6PHyRoIbR4Vy 5Rnr/Xb9xgbqFDj9fIx63S+QirNFN4Z09vXmG9CkYVEm0YFBRKGI7lDKyXIwml9R56e019 kLlQJSw0soN/cizKjYkV9toMbtohoSKyQD4MN+6vK5f03taLaB7hAdQQf42C4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776089819; a=rsa-sha256; cv=none; b=R2JbH1uyAGYtM10lB515unJamxQRjNCGnwGEPGDi+rHA/BB7YQZ+yashF5fu34PZ5GHjJn ApxXYaGFkTHoAPEsD3X/wN3wWUXWqGy8v441WmuZ7G4DkWcIWwsDDL2kGJFzlWpyQLoYZe lRXAvFvcIJ0DdSGX2i0GaIIhFJ0sS4syVdllgwSKXqgddcon4vD1JaLcSYl5pXZ1at5ZPc fOzMM07vstM6S5oGcaxpJUTKRh2zcsWHQsIh/Gg7/Rt8mlaQo5wc8/62S9YGTv1UEU5K/k S0gOCANJGtiFo5Q6xlN97qKMcd2oBCnNd/07NY3KxTqyXEU2IkirtjcmwjdLLA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776089819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KzS2cqueHfBO9CXukMKHDY47lXdiDat2nn5f1zotKcg=; b=iFEVzWr1YIXGhbwa8adm3cb640lP7b5g41fICVF2zvJku2GMAX1aSgfEmALxR0fd0SzU1y wbIgfK0Tvm+FUVaCc6OjykKRZJKhQ88qqQY5LGENV5g/GJ16boE9D5iHEOMAzDvmpMZMGr KECcHzq8Q+4EyPNFlvdJ0xvUuT+Bd1A2ZJGCROnfB99DSL8OUmTIBOUn1VV1aOQF4XlLXY FVoDXC3kkASe8ELp2rINYEzyh9nyHAQLH/SkpaEo7DZkaeHgBBApYI3zUg7gCaV7H5yJlc UtjLc6RuNeWFK5ts90qjRgwz5cHv8V1G5vYQ73jO2Uc6wGa4rosn0J3HTEfPow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fvTxR0py5z16FZ for ; Mon, 13 Apr 2026 14:16:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46269 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 13 Apr 2026 14:16:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Pouria Mousavizadeh Tehrani Subject: git: aa9f669d09a7 - main - geneve: Add tests for geneve List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pouria X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: aa9f669d09a7a193d470477398815f45a42c0270 Auto-Submitted: auto-generated Date: Mon, 13 Apr 2026 14:16:59 +0000 Message-Id: <69dcfadb.46269.5b10c7b2@gitrepo.freebsd.org> The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=aa9f669d09a7a193d470477398815f45a42c0270 commit aa9f669d09a7a193d470477398815f45a42c0270 Author: Pouria Mousavizadeh Tehrani AuthorDate: 2026-04-11 18:45:08 +0000 Commit: Pouria Mousavizadeh Tehrani CommitDate: 2026-04-13 14:15:04 +0000 geneve: Add tests for geneve Add tests for each combinations of geneve modes, address families and multicast. Differential Revision: https://reviews.freebsd.org/D55183 --- tests/ci/tools/ci.conf | 1 + tests/sys/net/Makefile | 1 + tests/sys/net/if_geneve.sh | 1000 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1002 insertions(+) diff --git a/tests/ci/tools/ci.conf b/tests/ci/tools/ci.conf index 2302fc479a47..5ddb3476eb26 100644 --- a/tests/ci/tools/ci.conf +++ b/tests/ci/tools/ci.conf @@ -74,6 +74,7 @@ kld_list="\${kld_list} fusefs" # sys/fs/fusefs kld_list="\${kld_list} if_bridge" # sys/net/if_bridge_test kld_list="\${kld_list} if_enc" # sys/netpfil/pf kld_list="\${kld_list} if_epair" # sys/net/if_epair_test +kld_list="\${kld_list} if_geneve" # sys/net/if_geneve kld_list="\${kld_list} if_ovpn" # sys/net/if_ovpn kld_list="\${kld_list} if_stf" # sys/net/if_stf kld_list="\${kld_list} ipdivert" # sys/netinet (loads ipdivert) diff --git a/tests/sys/net/Makefile b/tests/sys/net/Makefile index e390c6e8059d..6dcc23b49b67 100644 --- a/tests/sys/net/Makefile +++ b/tests/sys/net/Makefile @@ -15,6 +15,7 @@ ATF_TESTS_SH+= if_stf ATF_TESTS_SH+= if_tun_test ATF_TESTS_SH+= if_vlan ATF_TESTS_SH+= if_wg +ATF_TESTS_SH+= if_geneve TESTS_SUBDIRS+= bpf TESTS_SUBDIRS+= if_ovpn diff --git a/tests/sys/net/if_geneve.sh b/tests/sys/net/if_geneve.sh new file mode 100644 index 000000000000..7eb2649b44a9 --- /dev/null +++ b/tests/sys/net/if_geneve.sh @@ -0,0 +1,1000 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2025-2026 Pouria Mousavizadeh Tehrani +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +. $(atf_get_srcdir)/../common/vnet.subr + +atf_test_case "ether_ipv4" "cleanup" +ether_ipv4_head() +{ + atf_set descr 'Create a geneve(4) l2 tunnel over an ipv4 underlay using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv4_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 +} + +ether_ipv4_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv6" "cleanup" +ether_ipv6_head() +{ + atf_set descr 'Create a geneve(4) l2 tunnel over an ipv6 underlay using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv6_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 +} + +ether_ipv6_cleanup() +{ + vnet_cleanup +} + +atf_test_case "inherit_ipv4" "cleanup" +inherit_ipv4_head() +{ + atf_set descr 'Create a geneve(4) l3 tunnel over an ipv4 underlay using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv4_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=2 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l3 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l3 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 +} + +inherit_ipv4_cleanup() +{ + vnet_cleanup +} + +atf_test_case "inherit_ipv6" "cleanup" +inherit_ipv6_head() +{ + atf_set descr 'Create a geneve(4) l3 tunnel over an ipv6 underlay using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv6_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l3 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l3 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 +} + +inherit_ipv6_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv6_blind_options" "cleanup" +ether_ipv6_blind_options_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv6 tunnel and test geneve options' + atf_set require.user root +} + +ether_ipv6_blind_options_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevemaxaddr 1000 + atf_check -s exit:0 -o match:"max: 1000" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevetimeout 1000 + atf_check -s exit:0 -o match:"timeout: 1000" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -genevelearn + atf_check -s exit:0 -o match:"mode: nolearning" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevelearn + atf_check -s exit:0 -o match:" learning" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o match:"count: 1" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveflush + atf_check -s exit:0 -o match:"count: 0" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveflushall + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevettl inherit + atf_check -s exit:0 -o match:"ttl: inherit" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevettl 1 + atf_check -s exit:0 -o match:"ttl: 1" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf set up + atf_check -s exit:0 -o match:"df: set" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf inherit up + atf_check -s exit:0 -o match:"df: inherit" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down genevedf unset up + atf_check -s exit:0 -o match:"df: unset" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 genevedscpinherit + atf_check -s exit:0 -o match:"dscp: inherit" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -genevedscpinherit + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveexternal + atf_check -s exit:0 -o match:" external" ifconfig -j genevetest1 -v geneve1 + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -geneveexternal + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 down geneveportrange 11000 62000 up + atf_check -s exit:0 -o match:"portrange: 11000-62000" ifconfig -j genevetest1 -v geneve1 + + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 +} + +ether_ipv6_blind_options_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv6_external" "cleanup" +ether_ipv6_external_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv6 tunnel and test geneve collect metadata' + atf_set require.user root +} + +ether_ipv6_external_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 + local v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint2} genevelocal ${endpoint1} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 geneveremote ${endpoint1} genevelocal ${endpoint2} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 geneveexternal + atf_check -s exit:16 -e ignore ifconfig -j genevetest1 geneve1 down geneveid 10 up + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 -geneveexternal + atf_check -s exit:0 -o ignore ifconfig -j genevetest1 geneve1 down geneveid 10 up + +} + +ether_ipv6_external_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv4_multicast" "cleanup" +ether_ipv4_multicast_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv4 multicast tunnel using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv4_multicast_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + mc_group=239.0.0.1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip_mroute; then + atf_skip "This test requires ip_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + # manually add the multicast routes to epairs + route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a + route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint1} \ + genevegroup ${mc_group} genevedev ${epair}a up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint2} \ + genevegroup ${mc_group} genevedev ${epair}b up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +ether_ipv4_multicast_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv6_multicast" "cleanup" +ether_ipv6_multicast_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv6 multicast tunnel using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv6_multicast_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + mc_group=ff08::db8:0:1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip6_mroute; then + atf_skip "This test requires ip6_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + # manually add the multicast routes to epairs + route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a + route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint1} \ + genevegroup ${mc_group} genevedev ${epair}a up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint2} \ + genevegroup ${mc_group} genevedev ${epair}b up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +ether_ipv6_multicast_cleanup() +{ + vnet_cleanup +} + +atf_test_case "ether_ipv4_multicast_without_dev" "cleanup" +ether_ipv4_multicast_without_dev_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv4 multicast tunnel without specifying genevedev using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv4_multicast_without_dev_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + mc_group=239.0.0.1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip_mroute; then + atf_skip "This test requires ip_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + # manually add the multicast routes to epairs + route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a + route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +ether_ipv4_multicast_without_dev_cleanup() +{ + vnet_cleanup +} + + +atf_test_case "ether_ipv6_multicast_without_dev" "cleanup" +ether_ipv6_multicast_without_dev_head() +{ + atf_set descr 'Create a geneve(4) l2 ipv6 multicast tunnel without specifying genevedev using epair and pass traffic between jails' + atf_set require.user root +} + +ether_ipv6_multicast_without_dev_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + mc_group=ff08::db8:0:1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip6_mroute; then + atf_skip "This test requires ip6_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + # manually add the multicast routes to epairs + route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a + route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l2 debug \ + geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/24 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +ether_ipv6_multicast_without_dev_cleanup() +{ + vnet_cleanup +} + +atf_test_case "inherit_ipv4_multicast" "cleanup" +inherit_ipv4_multicast_head() +{ + atf_set descr 'Create a geneve(4) l3 ipv4 multicast tunnel using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv4_multicast_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + mc_group=239.0.0.1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip_mroute; then + atf_skip "This test requires ip_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + # manually add the multicast routes to epairs + route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a + route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint1} \ + genevegroup ${mc_group} genevedev ${epair}a up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint2} \ + genevegroup ${mc_group} genevedev ${epair}b up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1 + atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1 + + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +inherit_ipv4_multicast_cleanup() +{ + vnet_cleanup +} + +atf_test_case "inherit_ipv6_multicast" "cleanup" +inherit_ipv6_multicast_head() +{ + atf_set descr 'Create a geneve(4) l3 ipv6 multicast tunnel using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv6_multicast_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + mc_group=ff08::db8:0:1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip6_mroute; then + atf_skip "This test requires ip6_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet6 ${endpoint1} up + ifconfig -j genevetest2 ${epair}b inet6 ${endpoint2} up + + # manually add the multicast routes to epairs + route -j genevetest1 -n6 add -net ff08::db8:0:1/96 -interface ${epair}a + route -j genevetest2 -n6 add -net ff08::db8:0:1/96 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint1} \ + genevegroup ${mc_group} genevedev ${epair}a up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint2} \ + genevegroup ${mc_group} genevedev ${epair}b up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1 + atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1 + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + +} + +inherit_ipv6_multicast_cleanup() +{ + vnet_cleanup +} + +atf_test_case "inherit_ipv4_multicast_without_dev" "cleanup" +inherit_ipv4_multicast_without_dev_head() +{ + atf_set descr 'Create a geneve(4) l3 ipv4 multicast tunnel without specifying genevedev using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv4_multicast_without_dev_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=192.168.2.1 + endpoint2=192.168.2.2 + mc_group=239.0.0.1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi + if ! kldstat -q -m ip_mroute; then + atf_skip "This test requires ip_mroute" + fi + + vnet_init + epair=$(vnet_mkepair) + vnet_mkjail genevetest1 ${epair}a + vnet_mkjail genevetest2 ${epair}b + + ifconfig -j genevetest1 ${epair}a inet ${endpoint1}/24 up + ifconfig -j genevetest2 ${epair}b inet ${endpoint2}/24 up + + # manually add the multicast routes to epairs + route -j genevetest1 add -net 239.0.0.0/8 -interface ${epair}a + route -j genevetest2 add -net 239.0.0.0/8 -interface ${epair}b + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint1} genevegroup ${mc_group} up + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 create genevemode l3 debug \ + geneveid $vni1 genevelocal ${endpoint2} genevegroup ${mc_group} up + + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet ${v4tunnel1}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest1 geneve1 inet6 ${v6tunnel1} + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet ${v4tunnel2}/30 + atf_check -s exit:0 -o ignore \ + ifconfig -j genevetest2 geneve1 inet6 ${v6tunnel2} + + atf_check -s exit:0 -o ignore sysctl -j genevetest1 net.inet.icmp.bmcastecho=1 + atf_check -s exit:0 -o ignore sysctl -j genevetest2 net.inet.icmp.bmcastecho=1 + + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest1 ifmcstat -i ${epair}a -f inet + atf_check -s exit:0 -o match:"group 239.0.0.1" jexec genevetest2 ifmcstat -i ${epair}b -f inet + + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v4tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v4tunnel1 + atf_check -s exit:0 -o ignore jexec genevetest1 ping -nc 1 -t 1 $v6tunnel2 + atf_check -s exit:0 -o ignore jexec genevetest2 ping -nc 1 -t 1 $v6tunnel1 + +} + +inherit_ipv4_multicast_without_dev_cleanup() +{ + vnet_cleanup +} + + +atf_test_case "inherit_ipv6_multicast_without_dev" "cleanup" +inherit_ipv6_multicast_without_dev_head() +{ + atf_set descr 'Create a geneve(4) l3 ipv6 multicast tunnel without specifying genevedev using epair and pass traffic between jails' + atf_set require.user root +} + +inherit_ipv6_multicast_without_dev_body() +{ + local epair geneve1 geneve2 vni1 endpoint1 endpoint2 mc_group + local v4tunnel1 v4tunnel2 v6tunnel1 v6tunnel2 + + endpoint1=3fff::1 + endpoint2=3fff::2 + mc_group=ff08::db8:0:1 + v4tunnel1=169.254.0.1 + v4tunnel2=169.254.0.2 + v6tunnel1=2001:db8::1 + v6tunnel2=2001:db8::2 + vni1=1 + + if ! kldstat -q -m if_geneve; then + atf_skip "This test requires if_geneve" + fi *** 65 LINES SKIPPED ***