You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.6 KiB
94 lines
2.6 KiB
7 months ago
|
#!/bin/sh
|
||
|
#==============================================================================
|
||
|
# Copyright (c) 2015 Red Hat, Inc.
|
||
|
#
|
||
|
# This program is free software: you can redistribute it and/or modify
|
||
|
# it under the terms of version 2 the GNU General Public License as
|
||
|
# published by the Free Software Foundation.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
#
|
||
|
# Written by Matus Marhefka <mmarhefk@redhat.com>
|
||
|
#
|
||
|
#==============================================================================
|
||
|
#
|
||
|
# Tests that a separate network namespace cannot affect sysfs contents
|
||
|
# of the main namespace.
|
||
|
#==============================================================================
|
||
|
|
||
|
TCID="netns_sysfs"
|
||
|
TST_TOTAL=3
|
||
|
NS_TYPE="net,mnt"
|
||
|
DUMMYDEV_HOST="dummy_test0"
|
||
|
DUMMYDEV="dummy_test1"
|
||
|
. test.sh
|
||
|
|
||
|
if tst_kvcmp -lt "2.6.35"; then
|
||
|
tst_brkm TCONF "sysfs is not mount namespace aware for kernels older than 2.6.35"
|
||
|
fi
|
||
|
|
||
|
setns_check
|
||
|
if [ $? -eq 32 ]; then
|
||
|
tst_brkm TCONF "setns not supported"
|
||
|
fi
|
||
|
|
||
|
cleanup()
|
||
|
{
|
||
|
tst_rmdir
|
||
|
ip link del $DUMMYDEV_HOST 2>/dev/null
|
||
|
ip link del $DUMMYDEV 2>/dev/null
|
||
|
kill -9 $NS_HANDLE 2>/dev/null
|
||
|
}
|
||
|
|
||
|
tst_tmpdir
|
||
|
NS_HANDLE=$(ns_create $NS_TYPE)
|
||
|
if [ $? -eq 1 ]; then
|
||
|
tst_resm TINFO "$NS_HANDLE"
|
||
|
tst_brkm TBROK "unable to create a new network namespace"
|
||
|
fi
|
||
|
TST_CLEANUP=cleanup
|
||
|
|
||
|
ip link add $DUMMYDEV_HOST type dummy || \
|
||
|
tst_brkm TBROK "failed to add a new (host) dummy device"
|
||
|
|
||
|
ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
|
||
|
ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
|
||
|
tst_brkm TBROK "failed to add a new dummy device"
|
||
|
ns_exec $NS_HANDLE $NS_TYPE mount -t sysfs none /sys 2>/dev/null
|
||
|
|
||
|
|
||
|
# TEST CASE #1
|
||
|
ns_exec $NS_HANDLE $NS_TYPE test -e /sys/class/net/$DUMMYDEV
|
||
|
if [ $? -eq 0 ]; then
|
||
|
tst_resm TPASS "sysfs in new namespace has $DUMMYDEV interface"
|
||
|
else
|
||
|
tst_resm TFAIL "sysfs in new namespace does not have $DUMMYDEV interface"
|
||
|
fi
|
||
|
|
||
|
|
||
|
# TEST CASE #2
|
||
|
ns_exec $NS_HANDLE $NS_TYPE test -e /sys/class/net/$DUMMYDEV_HOST
|
||
|
if [ $? -ne 0 ]; then
|
||
|
tst_resm TPASS "sysfs in new namespace does not have $DUMMYDEV_HOST interface"
|
||
|
else
|
||
|
tst_resm TFAIL "sysfs in new namespace contains $DUMMYDEV_HOST interface"
|
||
|
fi
|
||
|
|
||
|
|
||
|
# TEST CASE #3
|
||
|
test -e /sys/class/net/$DUMMYDEV
|
||
|
if [ $? -ne 0 ]; then
|
||
|
tst_resm TPASS "sysfs not affected by a separate namespace"
|
||
|
else
|
||
|
tst_resm TFAIL "sysfs affected by a separate namespace"
|
||
|
fi
|
||
|
|
||
|
|
||
|
tst_exit
|