[LTP] [PATCH] containers/netns/sysfs: check for known iface names, explicitly
Jiri Jaburek
jjaburek@redhat.com
Thu Jun 9 16:05:08 CEST 2016
On 06/09/16 15:58, Jiri Jaburek wrote:
> The original code tries to check that no existing host interfaces
> made it into the new netns. This needs exceptions for ifaces that
> are created automatically, ie. 'lo', 'dummy0' and (on newer kernels)
> 'ip_vti0', which is not a long-term sustainable solution.
>
> It also hade a corner case of always PASSing if the host had no
> network interfaces of its own - it only checked for "no extra ifaces
> in the new ns".
>
> This change makes it use explicit pre-created interface names in
> both the host and the new ns, avoiding any (existing) ones.
>
> Signed-off-by: Jiri Jaburek <jjaburek@redhat.com>
> ---
> testcases/kernel/containers/netns/netns_sysfs.sh | 33 +++++++++---------------
> 1 file changed, 12 insertions(+), 21 deletions(-)
> mode change 100755 => 100644 testcases/kernel/containers/netns/netns_sysfs.sh
>
> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
> old mode 100755
> new mode 100644
> index 4c6e7e4..a887fa6
> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
> @@ -25,7 +25,8 @@
> TCID="netns_sysfs"
> TST_TOTAL=3
> NS_TYPE="net,mnt"
> -DUMMYDEV="dummy_test0"
> +DUMMYDEV_HOST="dummy_test0"
> +DUMMYDEV="dummy_test1"
> . test.sh
>
> setns_check
> @@ -36,6 +37,7 @@ 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
> }
> @@ -48,9 +50,8 @@ if [ $? -eq 1 ]; then
> fi
> TST_CLEANUP=cleanup
>
> -# exclude dummy0 (dummy1, etc.) from comparison as it gets automatically created
> -# by the dummy device driver upon insmod/modprobe (during ip link add)
> -ls /sys/class/net | grep -v 'dummy[0-9]\+' >sysfs_before
> +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 || \
> @@ -59,7 +60,7 @@ ns_exec $NS_HANDLE $NS_TYPE mount -t sysfs none /sys 2>/dev/null
>
>
> # TEST CASE #1
> -ns_exec $NS_HANDLE $NS_TYPE test -d /sys/class/net/$DUMMYDEV
> +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
> @@ -69,27 +70,17 @@ fi
>
> # TEST CASE #2
> res=0
Seems I missed this (now unused) variable, feel free to remove it
as well.
> -for d in $(ns_exec $NS_HANDLE $NS_TYPE ls /sys/class/net/); do
> - case "$d" in
> - lo|$DUMMYDEV)
> - ;;
> - *)
> - tst_resm TINFO "sysfs in new namespace should not contain: $d"
> - res=1
> - ;;
> - esac
> -done
> -if [ $res -eq 0 ]; then
> - tst_resm TPASS "sysfs in new namespace has only lo and $DUMMYDEV interfaces"
> +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 has more than lo and $DUMMYDEV interfaces"
> + tst_resm TFAIL "sysfs in new namespace contains $DUMMYDEV_HOST interface"
> fi
>
>
> # TEST CASE #3
> -ls /sys/class/net | grep -v 'dummy[0-9]\+' >sysfs_after
> -diff sysfs_before sysfs_after
> -if [ $? -eq 0 ]; then
> +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"
>
More information about the ltp
mailing list