pipe: Add a ctl and "oneblock" command
[akaros.git] / kern / kfs / ifconfig
1 #!/bin/ash
2
3 NIC='0'
4 MAC=`cat "#ether/ether$NIC/addr"`
5
6 export cputype=amd64
7 export objtype=$cputype
8 export service=cpu
9 export authid=bootes
10 export rootdir=/root
11 export rootspec=''
12 export rootsrv=boot
13
14 if [ -f /etc/network/default ]
15 then
16         source /etc/network/default
17 else
18         echo '/etc/network/default not found'
19 fi
20
21 if [ -f /etc/network/local ]
22 then
23         source /etc/network/local
24 else
25         echo '/etc/network/local not found'
26 fi
27
28 if [ -d /etc/network/local.d ]
29 then
30         for cfg in /etc/network/local.d/*
31         do
32                 source $cfg
33         done
34 else
35         echo '/etc/network/local.d not found'
36 fi
37
38 #
39 # Set up the initial namespace for starting networking.
40 #
41 /bin/bind -b '#cons' /dev
42 /bin/bind -b '#random' /dev
43 #/bin/bind '#d' /fd
44 #/bin/bind -c '#e' /env
45 /bin/bind -b '#proc' /proc
46 /bin/bind -b '#srv' /srv
47
48 #
49 # Configure the network mount point.
50 #
51 /bin/bind -a '#ip' /net
52 /bin/bind -a '#ether'.$NIC /net
53
54 if [ -x /bin/ipconfig ]
55 then
56         if [ ! -z "$me" ]
57         then
58                 ipconfig -g $route ether /net/ether$NIC $me $mask
59         else
60                 # No explicit configuration; use DHCP.
61                 daemonize /bin/ipconfig -S ether /net/ether$NIC
62         fi
63         ipconfig -P loopback /dev/null 127.0.0.1
64 else
65         if [ -z "$me" ]
66         then
67                 # By default, configure for QEMU.
68                 me='10.0.2.15'
69                 mask='255.255.255.0'
70                 remote='10.0.2.0'
71                 route='10.0.2.2'
72         fi
73         #
74         # Get an instance of an IP stack and bind ether$NIC to it.
75         # The kernel sets errno but 'echo' doesn't return any sort of
76         # error indicator.  Our busybox hacks doesn't know any better
77         # and will think it was an error so direct stderr to /dev/null.
78         #
79         i=`cat /net/ipifc/clone`
80         echo "bind ether /net/ether$NIC" >/net/ipifc/$i/ctl 2>/dev/null
81         #
82         # Configure the stack.
83         #
84         echo "add $me $mask $remote" > /net/ipifc/$i/ctl
85         echo "add 0 0 $route" > /net/iproute
86         echo "I am $me, default route $route"
87         #
88         # Configure the loopback interface.
89         #
90         i=`cat /net/ipifc/clone`
91         echo 'bind loopback /dev/null' > /net/ipifc/$i/ctl
92         echo 'add 127.0.0.1 255.0.0.0 127.0.0.0' > /net/ipifc/$i/ctl
93 fi
94
95 daemonize /bin/cs -S
96 mount -a '#srv/cs' /net
97
98 # This is noisy, so it is off by default.
99 #echo debug > /net/cs
100
101 /bin/bind -a '#kprof' /prof
102
103 echo 'ifconfig complete'