Map PTEs for MAP_SHARED | MAP_LOCKED files on fork
[akaros.git] / kern / kfs / ifconfig
index bbcd215..ff964d7 100755 (executable)
@@ -1,12 +1,9 @@
 #!/bin/ash
 
-if [ "$#" -eq "1" ]
-then
-       MACHINE=$1
-fi
+MAC=`cat '#ether/ether0/addr'`
 
-#bind -a '#I' /net
-#bind -a '#l0' /net
+#bind -a '#ip' /net
+#bind -a '#ether.0' /net
 #cat /net/ipifc/clone
 ## bind the ether0 to it
 #echo 'bind ether /net/ether0' > /net/ipifc/0/ctl
@@ -22,41 +19,37 @@ 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 [ -f '/etc/network/default' ]
+then
+       source /etc/network/default
+else
+       echo '/etc/network/default not found'
+fi
 
-if [ "x$MACHINE" = "xc89" ]
+if [ -f '/etc/network/local' ]
 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
+       source /etc/network/local
+else
+       echo '/etc/network/local not found'
 fi
 
-if [ "x$MACHINE" = "xhossin" ]
+if [ -d '/etc/network/local.d' ]
 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
+       for cfg in /etc/network/local.d/*
+       do
+               source $cfg
+       done
+else
+       echo '/etc/network/local.d not found'
 fi
+
 #
 # Post the read-only filesystem in #s/$beetroot
 # and mount it on /boot so the commands in /boot/$cputype/bin
@@ -70,29 +63,50 @@ fi
 #/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 -b '#cons' /dev
+bind -b '#random' /dev
 #bind '#d' /fd
 #bind -c '#e' /env
-bind -b '#p' /proc
-#bind -b -c '#s' /srv
-bind -b '#s' /srv
+bind -b '#proc' /proc
+#bind -b -c '#srv' /srv
+bind -b '#srv' /srv
 
 #
 # Configure the networks.
 #
-bind -a '#I' /net
-bind -a '#l0' /net
+bind -a '#ip' /net
+bind -a \#ether.$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 ether /net/ether0 " > /net/ipifc/$i/ctl
+# 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
+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/1/ctl
-echo "add 127.0.0.1 255.0.0.0 127.0.0.0 " > /net/ipifc/1/ctl
+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 "#srv/cs" ]
+then
+       echo "cs hasn't created #srv/cs yet, sleeping until it does..."
+       until [ -e "#srv/cs" ]
+       do
+               usleep 1000
+       done
+fi
+mount -a \#srv/cs /net
+
+# this is noisy, so it is off by default.
+#echo debug > /net/cs
+
+bind -a \#kprof /prof/
+
+echo "ifconfig complete"