blob: 4097b7855337745ce838b341d438aad20111c455 [file] [log] [blame] [edit]
#!/bin/ash
# known good.
hossinMAC=00241d1054e1
c89MAC=001e67652333
c99MAC=001e67c2f479
altdraMAC=525400b0c2ec
qemuMAC=525400123456
tower1MAC=00032d196d88
tower2MAC=00032d196ddd
tower3MAC=00032d196d46
tower4MAC=00032d196db0
tower5MAC=00032d196daa
MAC=`cat '#l/ether0/addr'`
#bind -a '#I' /net
#bind -a '#l0' /net
#cat /net/ipifc/clone
## bind the ether0 to it
#echo 'bind ether /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 [ "$MAC" = "$qemuMAC" ]
then
echo "Welcome to QEMU!"
fi
# the tower of ... tower
# all defaults are fine.
if [ "$MAC" = "$tower1MAC" ]
then
me=10.0.2.15
fi
if [ "$MAC" = "$tower2MAC" ]
then
me=10.0.2.16
fi
if [ "$MAC" = "$tower3MAC" ]
then
me=10.0.2.17
fi
if [ "$MAC" = "$tower4MAC" ]
then
me=10.0.2.18
fi
if [ "$MAC" = "$tower5MAC" ]
then
me=10.0.2.19
fi
if [ "$MAC" = "$c89MAC" ]
then
# c89's config. use c96 for eth0 (.196).
# $ cat /9/net/ipifc/clone (get e.g. 2)
# $ echo "add 169.229.49.196 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 [ "$MAC" = "$c99MAC" ]
then
# c99's config. use c95 for eth0 (.195).
# $ cat /9/net/ipifc/clone (get e.g. 2)
# $ echo "add 169.229.49.195 255.255.255.0" > /9/net/ipifc/2/ctl
me=169.229.49.195
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 [ "$MAC" = "$altdraMAC" ]
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 [ "$MAC" = "$hossinMAC" ]
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
# the kernel sets errno, though it doesn't return -1 or anything. but our bb
# hacks doesn't know any better, and echo will think it was an error
echo "bind ether /net/ether$NIC " > /net/ipifc/$i/ctl 2> /dev/null
# 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"