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