blob: 40dbd787cf3e91aa201823a82bc5c7c35677bfd7 [file] [log] [blame]
#!/bin/sh
################################################################################
## ##
## Copyright (c) International Business Machines Corp., 2008 ##
## ##
## This program is free software; you can redistribute it and#or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of the License, or ##
## (at your option) any later version. ##
## ##
## 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, write to the Free Software ##
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ##
## ##
## Author: Veerendra <veeren@linux.vnet.ibm.com> ##
################################################################################
################################################################################
# This script creates 2 veth devices.
# It will assign $IP1 to vnet0 .
# And defines the $IP2 as route to vnet1
# Also it assigns the $vnet1 to child network-NS
#
# Arguments: Accepts an argument 'script' and executes on top of this
################################################################################
# The test case ID, the test case count and the total number of test case
TCID=${TCID:-parentns.sh}
TST_TOTAL=1
TST_COUNT=1
export TCID
export TST_COUNT
export TST_TOTAL
#set -x
. initialize.sh
status=0
# Checks if any script is passed as argument.
if [ $# = 2 ]; then
scrpt=$1
debug "INFO: Script to be executed in parent NS is $scrpt"
fi
# Sets up the infrastructure for creating network NS
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/$netdev/proxy_arp
create_veth
vnet0=$dev0
vnet1=$dev1
if [ -z "$vnet0" -o -z "$vnet1" ] ; then
tst_resm TFAIL "Error: unable to create veth pair"
exit -1
else
debug "INFO: vnet0 = $vnet0 , vnet1 = $vnet1"
fi
sleep 2
ifconfig $vnet0 $IP1/24 up > /dev/null 2>&1
if [ $? -ne 0 ]; then
debug "Failed to make interface $vnet0 up in parent....."
fi
route add -host $IP2 dev $vnet0
if [ $? -ne 0 ]; then
debug "Failed to add route to child in parent for $vnet0....."
fi
echo 1 > /proc/sys/net/ipv4/conf/$vnet0/proxy_arp
# Waits for the Child-NS to get created and reads the PID
tmp=`cat /tmp/FIFO1`;
pid=$2;
debug "INFO: the pid of child is $pid"
ip link set $vnet1 netns $pid
if [ $? -ne 0 ]; then
echo "Failed to assign network device to child .........."
fi
# Passes the device name to Child NS
echo $vnet1 > /tmp/FIFO2
# Executes the script if it is passed as an argument.
if [ ! -z $scrpt ] && [ -f $scrpt ] ; then
. $scrpt
fi
debug "INFO: Done executing parent script $0, status is $status "
exit $status