Fixes loopback checksums
[akaros.git] / kern / kfs / ifconfig
1 #!/bin/ash
2
3 # known good.
4 hossinMAC=00241d1054e1
5 c89MAC=001e67652333
6 altdraMAC=525400b0c2ec
7 qemuMAC=525400123456
8 tower1MAC=00032d196d88
9 tower2MAC=00032d196ddd
10 tower3MAC=00032d196d46
11 tower4MAC=00032d196db0
12 tower5MAC=00032d196daa
13
14 MAC=`cat '#l/ether0/addr'`
15
16 #bind -a '#I' /net
17 #bind -a '#l0' /net
18 #cat /net/ipifc/clone
19 ## bind the ether0 to it
20 #echo 'bind ether /net/ether0' > /net/ipifc/0/ctl
21 #exit
22
23 # ifconfig it
24
25 export cputype=amd64
26 export objtype=$cputype
27 export service=cpu
28 export authid=bootes
29 export rootdir=/root
30 export rootspec=''
31 export rootsrv=boot
32
33 NIC="0"
34 #authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S'      # -a ...
35 # test xyzip=(0 0 0 104.9.33)
36 # test fsaddr='tcp!135.$xyzip(4)^!564'
37 # (me network server server-addr
38 # wrong addresses.
39
40 # qemu is the default
41 me=10.0.2.15
42 mask=255.255.255.0
43 # brho: i don't know what exactly 'remote' is supposed to be, but that is
44 # the third argument processed by adding to an ipifc.  if we pass nothing,
45 # it'll build 'remote' by masking me & mask.
46 remote=10.0.2.0
47 route=10.0.2.2
48
49 if [ "$MAC" = "$qemuMAC" ]
50 then
51     echo "Welcome to QEMU!"
52 fi
53
54 # the tower of ... tower
55 # all defaults are fine.
56 if [ "$MAC" = "$tower1MAC" ]
57 then
58     me=10.0.2.15
59 fi
60 if [ "$MAC" = "$tower2MAC" ]
61 then
62     me=10.0.2.16
63 fi
64 if [ "$MAC" = "$tower3MAC" ]
65 then
66     me=10.0.2.17
67 fi
68 if [ "$MAC" = "$tower4MAC" ]
69 then
70     me=10.0.2.18
71 fi
72 if [ "$MAC" = "$tower5MAC" ]
73 then
74     me=10.0.2.19
75 fi
76
77 if [ "$MAC" = "$c89MAC" ]
78 then
79         # c89's config.  use c96 for eth0 (.196).  if you want, we can also use
80         # c97 (.197):
81         # $ cat /9/net/ipifc/clone (get e.g. 2)
82         # $ echo "add 169.229.49.197 255.255.255.0" > /9/net/ipifc/2/ctl
83         me=169.229.49.196
84         mask=255.255.255.0
85         remote=169.229.49.0
86         route=169.229.49.1
87         # the i350 NIC that is plugged in is the first NIC
88         NIC="0"
89 fi
90
91 if [ "$MAC" = "$altdraMAC" ]
92 then
93         # yuzhu's soda hall bridged vm
94         me=128.32.37.37
95         mask=255.255.255.0
96         remote=128.32.37.0
97         route=128.32.37.1
98 fi
99
100 if [ "$MAC" = "$hossinMAC" ]
101 then
102         # brho's soda hall desktop
103         me=128.32.37.46
104         mask=255.255.255.0
105         remote=128.32.37.0
106         route=128.32.37.1
107 fi
108 #
109 # Post the read-only filesystem in #s/$beetroot
110 # and mount it on /boot so the commands in /boot/$cputype/bin
111 # are available to create the namespace (namespaces like to
112 # mount #s/boot on / and that should not be the read-only
113 # filesystem).
114 # Must set hostowner to be that of the owner of the nvram file
115 # before paqfs starts otherwise factotum will not be able to
116 # open it.
117 #
118 #/boot/echo -n sys > '#c/hostowner'
119 #/boot/paqfs -p -S $beetroot -m /boot -q /boot/$beetroot
120 #cd /boot/$cputype/bin
121 bind -b '#c' /dev
122 #bind '#d' /fd
123 #bind -c '#e' /env
124 bind -b '#p' /proc
125 #bind -b -c '#s' /srv
126 bind -b '#s' /srv
127
128 #
129 # Configure the networks.
130 #
131 bind -a '#I' /net
132 bind -a \#l$NIC /net
133
134 # note: dhcp is possible, just not done yet.
135 #get an instance of a network stack
136 i=`cat /net/ipifc/clone`
137 # bind the ether0 to it
138 # the kernel sets errno, though it doesn't return -1 or anything.  but our bb
139 # hacks doesn't know any better, and echo will think it was an error
140 echo "bind ether /net/ether$NIC " > /net/ipifc/$i/ctl 2> /dev/null
141 # ifconfig it
142 echo "add $me $mask $remote" > /net/ipifc/$i/ctl
143 echo "add 0 0 $route" > /net/iproute
144 echo I am $me, default route $route
145
146 i=`cat /net/ipifc/clone`
147 echo "bind loopback /dev/null " > /net/ipifc/$i/ctl
148 echo "add 127.0.0.1 255.0.0.0 127.0.0.0 " > /net/ipifc/$i/ctl
149
150 cs&
151 if [ ! -e "#s/cs" ]
152 then
153         echo "cs hasn't created #s/cs yet, sleeping until it does..."
154         until [ -e "#s/cs" ]
155         do
156                 usleep 1000
157         done
158 fi
159 mount -a \#s/cs /net
160
161 # this is noisy, so it is off by default.
162 #echo debug > /net/cs
163
164 bind -a \#K /prof/
165
166 echo "ifconfig complete"