xref: /aosp_15_r20/external/ltp/testcases/kernel/containers/netns/netns_sysfs.sh (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# Copyright (c) Köry Maincent <[email protected]> 2020
4# Copyright (c) 2015 Red Hat, Inc.
5# Copyright (c) Linux Test Project, 2015-2023
6#
7# Tests that a separate network namespace cannot affect sysfs contents
8# of the main namespace.
9
10TST_NEEDS_DRIVERS="dummy"
11TST_CLEANUP=do_cleanup
12TST_SETUP=do_setup
13TST_TESTFUNC=do_test
14TST_NEEDS_TMPDIR=1
15
16do_setup()
17{
18	NS_TYPE="net,mnt"
19	DUMMYDEV_HOST="dummy_test0"
20	DUMMYDEV="dummy_test1"
21
22	NS_HANDLE=$(tst_ns_create $NS_TYPE)
23	if [ $? -eq 1 ]; then
24		tst_res TINFO "$NS_HANDLE"
25		tst_brk TBROK "unable to create a new network namespace"
26	fi
27
28	ip link add $DUMMYDEV_HOST type dummy || \
29		tst_brk TBROK "failed to add a new (host) dummy device"
30
31	tst_ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
32	tst_ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
33		tst_brk TBROK "failed to add a new dummy device"
34	tst_ns_exec $NS_HANDLE $NS_TYPE mount -t sysfs none /sys 2>/dev/null
35}
36
37do_cleanup()
38{
39	ip link del $DUMMYDEV_HOST 2>/dev/null
40	ip link del $DUMMYDEV 2>/dev/null
41	kill -9 $NS_HANDLE 2>/dev/null
42}
43
44do_test()
45{
46	EXPECT_PASS tst_ns_exec $NS_HANDLE $NS_TYPE test -e /sys/class/net/$DUMMYDEV
47	EXPECT_FAIL tst_ns_exec $NS_HANDLE $NS_TYPE test -e /sys/class/net/$DUMMYDEV_HOST
48	EXPECT_FAIL test -e /sys/class/net/$DUMMYDEV
49}
50
51. tst_test.sh
52tst_run
53