tests: EAP-SIM server using GSM triplets
[mech_eap.git] / tests / hwsim / start.sh
1 #!/bin/sh
2
3 DIR="$( cd "$( dirname "$0" )" && pwd )"
4 WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
5 WPACLI=$DIR/../../wpa_supplicant/wpa_cli
6 HAPD=$DIR/../../hostapd/hostapd
7 HAPD_AS=$DIR/../../hostapd/hostapd
8 WLANTEST=$DIR/../../wlantest/wlantest
9 HLR_AUC_GW=$DIR/../../hostapd/hlr_auc_gw
10 DATE="$(date +%s)"
11
12 if [ -z "$LOGDIR" ] ; then
13     LOGDIR="$DIR/logs/$DATE"
14     mkdir -p $LOGDIR
15 else
16     if [ -e $LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant ]; then
17         WPAS=$LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant
18     fi
19     if [ -e $LOGDIR/alt-hostapd/hostapd/hostapd ]; then
20         HAPD=$LOGDIR/alt-hostapd/hostapd/hostapd
21     fi
22     if [ -e $LOGDIR/alt-hostapd-as/hostapd/hostapd ]; then
23         HAPD_AS=$LOGDIR/alt-hostapd-as/hostapd/hostapd
24     fi
25     if [ -e $LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw ]; then
26         HLR_AUC_GW=$LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw
27     fi
28 fi
29
30 if test -w "$DIR/logs" ; then
31     rm -rf $DIR/logs/current
32     ln -sf $DATE $DIR/logs/current
33 fi
34
35 if groups | tr ' ' "\n" | grep -q ^admin$; then
36     GROUP=admin
37 else
38     GROUP=adm
39 fi
40
41 for i in 0 1 2; do
42     sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/p2p$i.conf" > "$LOGDIR/p2p$i.conf"
43 done
44
45 sed "s/group=admin/group=$GROUP/" "$DIR/auth_serv/as.conf" > "$LOGDIR/as.conf"
46
47 if [ "$1" = "valgrind" ]; then
48     VALGRIND=y
49     VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
50     VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
51     chmod -f a+rx $WPAS
52     chmod -f a+rx $HAPD
53     shift
54 else
55     unset VALGRIND
56     VALGRIND_WPAS=
57     VALGRIND_HAPD=
58 fi
59
60 if [ "$1" = "trace" ]; then
61     TRACE="T"
62     shift
63 else
64     TRACE=""
65 fi
66
67 $DIR/stop.sh
68 test -f /proc/modules && sudo modprobe mac80211_hwsim radios=6
69 sudo ifconfig hwsim0 up
70 sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -dt -L $LOGDIR/hwsim0 &
71 for i in 0 1 2; do
72     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
73          -ddKt$TRACE -f $LOGDIR/log$i &
74 done
75 sudo $(printf -- "$VALGRIND_WPAS" 5) $WPAS -g /tmp/wpas-wlan5 -G$GROUP \
76     -ddKt$TRACE -f $LOGDIR/log5 &
77 sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
78
79 sleep 1
80 sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/hwsim0 $LOGDIR/log* $LOGDIR/hostapd
81 if [ "x$VALGRIND" = "xy" ]; then
82     sudo chown -f $USER $LOGDIR/*valgrind*
83 fi
84
85 if [ -x $HLR_AUC_GW ]; then
86     sudo $HLR_AUC_GW -m $DIR/auth_serv/hlr_auc_gw.milenage_db -g $DIR/auth_serv/hlr_auc_gw.gsm > $LOGDIR/hlr_auc_gw &
87 fi
88
89 sudo $HAPD_AS -ddKt $LOGDIR/as.conf > $LOGDIR/auth_serv &
90
91 # wait for programs to be fully initialized
92 for i in 0 1 2; do
93     for j in `seq 1 10`; do
94         if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
95             break
96         fi
97         if [ $j = "10" ]; then
98             echo "Could not connect to /tmp/wpas-wlan$i"
99             exit 1
100         fi
101         sleep 1
102     done
103 done
104
105 for j in `seq 1 10`; do
106     if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
107         break
108     fi
109     if [ $j = "10" ]; then
110         echo "Could not connect to /var/run/hostapd-global"
111         exit 1
112     fi
113     sleep 1
114 done
115
116 exit 0