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