#!/bin/ash

if [ "$#" -eq "1" ]
then
	MACHINE=$1
fi

#bind -a '#I' /net
#bind -a '#l0' /net
#cat /net/ipifc/clone
## bind the ether0 to it
#echo 'bind trex /net/ether0' > /net/ipifc/0/ctl
#exit

# ifconfig it

export cputype=amd64
export objtype=$cputype
export service=cpu
export authid=bootes
export rootdir=/root
export rootspec=''
export rootsrv=boot

NIC="0"
#authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S'      # -a ...
# test xyzip=(0 0 0 104.9.33)
# test fsaddr='tcp!135.$xyzip(4)^!564'
# (me network server server-addr
# wrong addresses.

# qemu is the default
me=10.0.2.15
mask=255.255.255.0
# brho: i don't know what exactly 'remote' is supposed to be, but that is
# the third argument processed by adding to an ipifc.  if we pass nothing,
# it'll build 'remote' by masking me & mask.
remote=10.0.2.0
route=10.0.2.2

if [ "x$MACHINE" = "xc89" ]
then
	# c89's config.  use c96 for eth0 (.196).  if you want, we can also use
	# c97 (.197):
	# $ cat /9/net/ipifc/clone (get e.g. 2)
	# $ echo "add 169.229.49.197 255.255.255.0" > /9/net/ipifc/2/ctl
	me=169.229.49.196
	mask=255.255.255.0
	remote=169.229.49.0
	route=169.229.49.1
	# the i350 NIC that is plugged in is the first NIC
	NIC="0"
fi

if [ "x$MACHINE" = "xaltdra" ]
then
	# yuzhu's soda hall bridged vm
	me=128.32.37.37
	mask=255.255.255.0
	remote=128.32.37.0
	route=128.32.37.1
fi

if [ "x$MACHINE" = "xhossin" ]
then
	# brho's soda hall desktop
	me=128.32.37.46
	mask=255.255.255.0
	remote=128.32.37.0
	route=128.32.37.1
fi
#
# Post the read-only filesystem in #s/$beetroot
# and mount it on /boot so the commands in /boot/$cputype/bin
# are available to create the namespace (namespaces like to
# mount #s/boot on / and that should not be the read-only
# filesystem).
# Must set hostowner to be that of the owner of the nvram file
# before paqfs starts otherwise factotum will not be able to
# open it.
#
#/boot/echo -n sys > '#c/hostowner'
#/boot/paqfs -p -S $beetroot -m /boot -q /boot/$beetroot
#cd /boot/$cputype/bin
bind -b '#c' /dev
#bind '#d' /fd
#bind -c '#e' /env
bind -b '#p' /proc
#bind -b -c '#s' /srv
bind -b '#s' /srv

#
# Configure the networks.
#
bind -a '#I' /net
bind -a \#l$NIC /net

# note: dhcp is possible, just not done yet.
#get an instance of a network stack
i=`cat /net/ipifc/clone`
# bind the ether0 to it
echo "bind trex /net/ether$NIC " > /net/ipifc/$i/ctl
# ifconfig it
echo "add $me $mask $remote" > /net/ipifc/$i/ctl
echo "add 0 0 $route" > /net/iproute
echo I am $me, default route $route

i=`cat /net/ipifc/clone`
echo "bind loopback /dev/null " > /net/ipifc/$i/ctl
echo "add 127.0.0.1 255.0.0.0 127.0.0.0 " > /net/ipifc/$i/ctl

cs&
if [ ! -e "#s/cs" ] 
then
	echo "cs hasn't created #s/cs yet, sleeping until it does..."
	until [ -e "#s/cs" ] 
	do 
		usleep 1000
	done
fi
mount -a \#s/cs /net

# this is noisy, so it is off by default.
#echo debug > /net/cs

bind -a \#K /prof/

echo "ifconfig complete"
