Home | History | Annotate | Download | only in netns
      1 #!/bin/sh
      2 #==============================================================================
      3 # Copyright (c) 2015 Red Hat, Inc.
      4 #
      5 # This program is free software: you can redistribute it and/or modify
      6 # it under the terms of version 2 the GNU General Public License as
      7 # published by the Free Software Foundation.
      8 #
      9 # This program is distributed in the hope that it will be useful,
     10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 # GNU General Public License for more details.
     13 #
     14 # You should have received a copy of the GNU General Public License
     15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     16 #
     17 # Written by Matus Marhefka <mmarhefk (at] redhat.com>
     18 #
     19 #==============================================================================
     20 #
     21 # SYNOPSIS:
     22 # netns_breakns.sh <NS_EXEC_PROGRAM> <IP_VERSION> <COMM_TYPE>
     23 #
     24 # OPTIONS:
     25 #	* NS_EXEC_PROGRAM (ns_exec|ip)
     26 #		Program which will be used to enter and run other commands
     27 #		inside a network namespace.
     28 #	* IP_VERSION (ipv4|ipv6)
     29 #		Version of IP. (ipv4|ipv6)
     30 #	* COMM_TYPE (netlink|ioctl)
     31 #		Communication type between kernel and user space
     32 #		for basic setup: enabling and assigning IP addresses
     33 #		to the virtual ethernet devices. (Uses 'ip' command for netlink
     34 #		and 'ifconfig' for ioctl.)
     35 #
     36 # Tests communication with ip (uses netlink) and ifconfig (uses ioctl)
     37 # over a device which is not visible from the current network namespace.
     38 #
     39 # There are two test cases which are trying to set an ip address on the veth1
     40 # device which is not inside the network namespace referred to by NS_HANDLE0:
     41 # 1. using netlink (ip command).
     42 # 2. using ioctl (ifconfig command).
     43 #==============================================================================
     44 
     45 TCID="netns_breakns_$1_$2_$3"
     46 TST_TOTAL=2
     47 . netns_helper.sh
     48 
     49 # SETUP
     50 netns_setup $1 $2 $3 "192.168.0.2" "192.168.0.3" "fd00::2" "fd00::3"
     51 tst_resm TINFO "NS interaction: $1 | devices setup: $3"
     52 
     53 
     54 # TEST CASE #1
     55 $NS_EXEC $NS_HANDLE0 $NS_TYPE ip address add $IP1/$NETMASK dev veth1 2>/dev/null
     56 if [ $? -ne 0 ]; then
     57 	tst_resm TPASS "controlling device over netlink"
     58 else
     59 	tst_resm TFAIL "controlling device over netlink"
     60 fi
     61 
     62 
     63 # TEST CASE #2
     64 tst_check_cmds ifconfig
     65 $NS_EXEC $NS_HANDLE0 $NS_TYPE ifconfig veth1 $IFCONF_IN6_ARG $IP1/$NETMASK 2>/dev/null
     66 if [ $? -ne 0 ]; then
     67 	tst_resm TPASS "controlling device over ioctl"
     68 else
     69 	tst_resm TFAIL "controlling device over ioctl"
     70 fi
     71 
     72 
     73 tst_exit
     74