123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/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
|