PCI: helpers for BSD
[akaros.git] / kern / kfs / trexconfig
1 #!/bin/ash
2
3 if [ "$#" -eq "1" ]
4 then
5         MACHINE=$1
6 fi
7
8 #bind -a '#I' /net
9 #bind -a '#l0' /net
10 #cat /net/ipifc/clone
11 ## bind the ether0 to it
12 #echo 'bind trex /net/ether0' > /net/ipifc/0/ctl
13 #exit
14
15 # ifconfig it
16
17 export cputype=amd64
18 export objtype=$cputype
19 export service=cpu
20 export authid=bootes
21 export rootdir=/root
22 export rootspec=''
23 export rootsrv=boot
24
25 NIC="0"
26 #authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S'      # -a ...
27 # test xyzip=(0 0 0 104.9.33)
28 # test fsaddr='tcp!135.$xyzip(4)^!564'
29 # (me network server server-addr
30 # wrong addresses.
31
32 # qemu is the default
33 me=10.0.2.15
34 mask=255.255.255.0
35 # brho: i don't know what exactly 'remote' is supposed to be, but that is
36 # the third argument processed by adding to an ipifc.  if we pass nothing,
37 # it'll build 'remote' by masking me & mask.
38 remote=10.0.2.0
39 route=10.0.2.2
40
41 if [ "x$MACHINE" = "xc89" ]
42 then
43         # c89's config.  use c96 for eth0 (.196).  if you want, we can also use
44         # c97 (.197):
45         # $ cat /9/net/ipifc/clone (get e.g. 2)
46         # $ echo "add 169.229.49.197 255.255.255.0" > /9/net/ipifc/2/ctl
47         me=169.229.49.196
48         mask=255.255.255.0
49         remote=169.229.49.0
50         route=169.229.49.1
51         # the i350 NIC that is plugged in is the first NIC
52         NIC="0"
53 fi
54
55 if [ "x$MACHINE" = "xaltdra" ]
56 then
57         # yuzhu's soda hall bridged vm
58         me=128.32.37.37
59         mask=255.255.255.0
60         remote=128.32.37.0
61         route=128.32.37.1
62 fi
63
64 if [ "x$MACHINE" = "xhossin" ]
65 then
66         # brho's soda hall desktop
67         me=128.32.37.46
68         mask=255.255.255.0
69         remote=128.32.37.0
70         route=128.32.37.1
71 fi
72 #
73 # Post the read-only filesystem in #s/$beetroot
74 # and mount it on /boot so the commands in /boot/$cputype/bin
75 # are available to create the namespace (namespaces like to
76 # mount #s/boot on / and that should not be the read-only
77 # filesystem).
78 # Must set hostowner to be that of the owner of the nvram file
79 # before paqfs starts otherwise factotum will not be able to
80 # open it.
81 #
82 #/boot/echo -n sys > '#c/hostowner'
83 #/boot/paqfs -p -S $beetroot -m /boot -q /boot/$beetroot
84 #cd /boot/$cputype/bin
85 bind -b '#c' /dev
86 #bind '#d' /fd
87 #bind -c '#e' /env
88 bind -b '#p' /proc
89 #bind -b -c '#s' /srv
90 bind -b '#s' /srv
91
92 #
93 # Configure the networks.
94 #
95 bind -a '#I' /net
96 bind -a \#l$NIC /net
97
98 # note: dhcp is possible, just not done yet.
99 #get an instance of a network stack
100 i=`cat /net/ipifc/clone`
101 # bind the ether0 to it
102 echo "bind trex /net/ether$NIC " > /net/ipifc/$i/ctl
103 # ifconfig it
104 echo "add $me $mask $remote" > /net/ipifc/$i/ctl
105 echo "add 0 0 $route" > /net/iproute
106 echo I am $me, default route $route
107
108 i=`cat /net/ipifc/clone`
109 echo "bind loopback /dev/null " > /net/ipifc/$i/ctl
110 echo "add 127.0.0.1 255.0.0.0 127.0.0.0 " > /net/ipifc/$i/ctl
111
112 cs&
113 if [ ! -e "#s/cs" ] 
114 then
115         echo "cs hasn't created #s/cs yet, sleeping until it does..."
116         until [ -e "#s/cs" ] 
117         do 
118                 usleep 1000
119         done
120 fi
121 mount -a \#s/cs /net
122
123 # this is noisy, so it is off by default.
124 #echo debug > /net/cs
125
126 bind -a \#K /prof/
127
128 echo "ifconfig complete"