mirror of
https://github.com/opnsense/src.git
synced 2026-03-23 03:03:09 -04:00
tests/net*: destroy interface from inside a jail
There is no guarentee that upon return of 'jail -r' all jail resources will be released. The test suite used to rely on that. Recent changes to the PCB zones made jails delay releasing their resources, which ended with interface leak in the test suite. Fix that by executing 'ifconfig foo0 destroy' inside the jail, instead of doing 'jail -r' and expecting interfaces to pop up back immediately in the parent jail. Reviewed by: kp Differential revision: https://reviews.freebsd.org/D33942
This commit is contained in:
parent
6d1808f051
commit
80fc25025f
2 changed files with 34 additions and 12 deletions
|
|
@ -1,7 +1,16 @@
|
|||
# $FreeBSD$
|
||||
# VNAT/jail utility functions
|
||||
# VNET/jail utility functions
|
||||
##
|
||||
|
||||
list_interface()
|
||||
{
|
||||
echo $1 >> created_interfaces.lst
|
||||
}
|
||||
|
||||
unlist_interface()
|
||||
{
|
||||
sed -i "" /^$1\$/d created_interfaces.lst
|
||||
}
|
||||
|
||||
vnet_init()
|
||||
{
|
||||
if [ "`sysctl -i -n kern.features.vimage`" != 1 ]; then
|
||||
|
|
@ -12,29 +21,29 @@ vnet_init()
|
|||
vnet_mkepair()
|
||||
{
|
||||
ifname=$(ifconfig epair create)
|
||||
echo $ifname >> created_interfaces.lst
|
||||
echo ${ifname%a}b >> created_interfaces.lst
|
||||
list_interface $ifname
|
||||
list_interface ${ifname%a}b
|
||||
echo ${ifname%a}
|
||||
}
|
||||
|
||||
vnet_mkbridge()
|
||||
{
|
||||
ifname=$(ifconfig bridge create)
|
||||
echo $ifname >> created_interfaces.lst
|
||||
list_interface $ifname
|
||||
echo ${ifname}
|
||||
}
|
||||
|
||||
vnet_mkvlan()
|
||||
{
|
||||
ifname=$(ifconfig vlan create)
|
||||
echo ${ifname} >> created_interfaces.lst
|
||||
list_interface $ifname
|
||||
echo ${ifname}
|
||||
}
|
||||
|
||||
vnet_mkloopback()
|
||||
{
|
||||
ifname=$(ifconfig lo create)
|
||||
echo $ifname >> created_interfaces.lst
|
||||
list_interface $ifname
|
||||
echo ${ifname}
|
||||
}
|
||||
|
||||
|
|
@ -47,19 +56,32 @@ vnet_mkjail()
|
|||
for ifname in $@
|
||||
do
|
||||
vnet_interfaces="${vnet_interfaces} vnet.interface=${ifname}"
|
||||
unlist_interface $ifname
|
||||
done
|
||||
jail -c name=${jailname} persist vnet ${vnet_interfaces}
|
||||
|
||||
echo $jailname >> created_jails.lst
|
||||
echo $jailname $@ >> created_jails.lst
|
||||
}
|
||||
|
||||
vnet_ifmove()
|
||||
{
|
||||
ifname=$1
|
||||
jailname=$2
|
||||
|
||||
ifconfig ${ifname} vnet ${jailname}
|
||||
unlist_interface $ifname
|
||||
sed -i "" "/^${jailname}/s/\$/ ${ifname}/" created_jails.lst
|
||||
}
|
||||
|
||||
vnet_cleanup()
|
||||
{
|
||||
if [ -f created_jails.lst ]; then
|
||||
for jailname in `cat created_jails.lst`
|
||||
do
|
||||
while read jailname ifnames; do
|
||||
for ifname in ${ifnames}; do
|
||||
jexec ${jailname} ifconfig ${ifname} destroy
|
||||
done
|
||||
jail -r ${jailname}
|
||||
done
|
||||
done < created_jails.lst
|
||||
rm created_jails.lst
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ set_skip_dynamic_body()
|
|||
|
||||
epair=$(vnet_mkepair)
|
||||
ifconfig ${epair}a 192.0.2.2/24 up
|
||||
ifconfig ${epair}b vnet alcatraz
|
||||
vnet_ifmove ${epair}b alcatraz
|
||||
|
||||
jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue