10988abd5SZhenlei Huang# 20988abd5SZhenlei Huang# SPDX-License-Identifier: BSD-2-Clause 30988abd5SZhenlei Huang# 40988abd5SZhenlei Huang# Copyright (c) 2026 Zhenlei Huang <zlei@FreeBSD.org> 50988abd5SZhenlei Huang# 60988abd5SZhenlei Huang# Redistribution and use in source and binary forms, with or without 70988abd5SZhenlei Huang# modification, are permitted provided that the following conditions 80988abd5SZhenlei Huang# are met: 90988abd5SZhenlei Huang# 1. Redistributions of source code must retain the above copyright 100988abd5SZhenlei Huang# notice, this list of conditions and the following disclaimer. 110988abd5SZhenlei Huang# 2. Redistributions in binary form must reproduce the above copyright 120988abd5SZhenlei Huang# notice, this list of conditions and the following disclaimer in the 130988abd5SZhenlei Huang# documentation and/or other materials provided with the distribution. 140988abd5SZhenlei Huang# 150988abd5SZhenlei Huang# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 160988abd5SZhenlei Huang# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 170988abd5SZhenlei Huang# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 180988abd5SZhenlei Huang# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 190988abd5SZhenlei Huang# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 200988abd5SZhenlei Huang# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 210988abd5SZhenlei Huang# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 220988abd5SZhenlei Huang# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 230988abd5SZhenlei Huang# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 240988abd5SZhenlei Huang# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 250988abd5SZhenlei Huang# SUCH DAMAGE. 260988abd5SZhenlei Huang 270988abd5SZhenlei Huang. $(atf_get_srcdir)/../common/vnet.subr 280988abd5SZhenlei Huang 290988abd5SZhenlei Huangatf_test_case "pr292993" "cleanup" 300988abd5SZhenlei Huangpr292993_head() 310988abd5SZhenlei Huang{ 320988abd5SZhenlei Huang atf_set descr 'Test for PR 292993' 330988abd5SZhenlei Huang atf_set require.user root 340988abd5SZhenlei Huang} 350988abd5SZhenlei Huang 360988abd5SZhenlei Huangpr292993_body() 370988abd5SZhenlei Huang{ 38*afa4648bSZhenlei Huang atf_skip "Need BPF fix due to (bpf: virtualize bpf_iflist)" 39*afa4648bSZhenlei Huang 400988abd5SZhenlei Huang vnet_init 410988abd5SZhenlei Huang 420988abd5SZhenlei Huang for i in `seq 1 10` 430988abd5SZhenlei Huang do 440988abd5SZhenlei Huang ngeth=$(ngctl -f - <<__EOF__ | awk '$1 == "Args:" {print substr($2, 2, length($2)-2)}') 450988abd5SZhenlei Huangmkpeer . eiface path_$i ether 460988abd5SZhenlei Huangmsg .path_$i getifname 470988abd5SZhenlei Huang__EOF__ 480988abd5SZhenlei Huang # Sanity check 490988abd5SZhenlei Huang atf_check -s exit:0 -o ignore \ 500988abd5SZhenlei Huang ifconfig $ngeth 510988abd5SZhenlei Huang jail -c vnet name="eiface_destroy_$i" path=/ \ 520988abd5SZhenlei Huang vnet.interface="$ngeth" exec.start="sleep 0.1" & 530988abd5SZhenlei Huang pid=$! 540988abd5SZhenlei Huang sleep 0.1 550988abd5SZhenlei Huang ngctl shutdown ${ngeth}: 560988abd5SZhenlei Huang wait $pid 570988abd5SZhenlei Huang done 580988abd5SZhenlei Huang true 590988abd5SZhenlei Huang} 600988abd5SZhenlei Huang 610988abd5SZhenlei Huangpr292993_cleanup() 620988abd5SZhenlei Huang{ 630988abd5SZhenlei Huang vnet_cleanup 640988abd5SZhenlei Huang} 650988abd5SZhenlei Huang 660988abd5SZhenlei Huangatf_init_test_cases() 670988abd5SZhenlei Huang{ 680988abd5SZhenlei Huang atf_add_test_case "pr292993" 690988abd5SZhenlei Huang} 70