merged the modularization branch (credentials) back to trunk
[strongswan.git] / testing / scripts / xstart-umls
1 #!/bin/bash
2 # starts the UML instances in an xterm (requires X11R6)
3 #
4 # Copyright (C) 2004  Eric Marchionni, Patrik Rayo
5 # Zuercher Hochschule Winterthur
6 #
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the
9 # Free Software Foundation; either version 2 of the License, or (at your
10 # option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 # for more details.
16 #
17 # RCSID $Id$
18
19 DIR=`dirname $0`
20
21 source $DIR/function.sh
22
23 [ -f $DIR/../testing.conf ] || die "Configuration file 'testing.conf' not found"
24
25 source $DIR/../testing.conf
26
27 if [ "$#" -eq 0 ]
28 then
29     HOSTS=$STRONGSWANHOSTS
30 else
31     HOSTS=$*
32 fi
33
34 BOOTING_HOSTS=""
35 count_max=12
36 count=0
37
38 #position of xterm window on the desktop
39 x0=8
40 y0=8
41 dx=12
42 dy=24
43
44 for host in $HOSTS
45 do
46     up=0
47
48     if [ -d ~/.uml/${host} ]
49     then
50         pid=`cat ~/.uml/${host}/pid`
51         up=`ps up $pid | wc -l`
52     fi
53     
54     if [ $up -eq 2 ]
55     then
56         cecho " * Great, ${host} is already running!"
57     else
58         rm -rf ~/.uml/${host}
59         BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
60         let "count_max += 12"
61
62         UMLHOSTFS=$BUILDDIR/root-fs/gentoo-fs-${host}
63         [ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"
64
65         cecho-n " * Starting ${host}.."
66         #eval xterm -title ${host} -geometry "+${x0}+${y0}" -rightbar -sb -sl 500 -e "gdb --args $UMLKERNEL \
67         eval xterm -title ${host} -geometry "+${x0}+${y0}" -rightbar -sb -sl 500 -e "$UMLKERNEL \
68             umid=${host} \
69             ubda=$UMLHOSTFS \
70             \$SWITCH_${host} \
71             mem=${MEM}M con=pty con0=fd:0,fd:1" &
72         cgecho "done"
73     fi
74     let "x0+=dx"
75     let "y0+=dy"
76     sleep 15
77 done
78
79 if [ -z "$BOOTING_HOSTS" ]
80 then
81     exit 0
82 fi
83
84 cecho " * Waiting for the uml instances to finish booting"
85
86 for host in $BOOTING_HOSTS
87 do
88     cecho-n " * Checking on $host.."
89
90     while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
91     do
92         cecho-n "."
93         sleep 5
94         let "count+=1"
95     done
96
97     if [ $count -ge $count_max ]
98     then
99         cecho "exit"
100         exit 1
101     fi
102
103     up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
104
105     while [ $count -lt $count_max ] && [ $up -eq 0 ]
106     do
107         cecho-n "."
108         sleep 5
109         up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
110         let "count+=1"
111     done
112
113     if [ $count -ge $count_max ]
114     then
115         cecho "exit"
116         exit 1
117     else
118         cgecho "up"
119     fi
120
121     if [ "$host" = "alice" ]
122     then
123         eval ipv4_${host}="`echo $HOSTNAMEIPV4 | sed -n -e "s/^.*${host},//gp" | awk -F, '{ print $1 }' | awk '{ print $1 }'`"
124         ssh root@$ipv4_alice /etc/init.d/net.eth1 stop
125     fi
126 done
127
128 cecho " * All uml instances are up now"