tests: EAP-SIM/AKA/AKA' with SQLite
[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 sed "s/group=admin/group=$GROUP/;s%LOGDIR%$LOGDIR%" "$DIR/auth_serv/as2.conf" > "$LOGDIR/as2.conf"
47
48 if [ "$1" = "valgrind" ]; then
49     VALGRIND=y
50     VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
51     VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
52     chmod -f a+rx $WPAS
53     chmod -f a+rx $HAPD
54     shift
55 else
56     unset VALGRIND
57     VALGRIND_WPAS=
58     VALGRIND_HAPD=
59 fi
60
61 if [ "$1" = "trace" ]; then
62     TRACE="T"
63     shift
64 else
65     TRACE=""
66 fi
67
68 $DIR/stop.sh
69 test -f /proc/modules && sudo modprobe mac80211_hwsim radios=6
70 sudo ifconfig hwsim0 up
71 sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -dt -L $LOGDIR/hwsim0 &
72 for i in 0 1 2; do
73     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
74          -ddKt$TRACE -f $LOGDIR/log$i &
75 done
76 sudo $(printf -- "$VALGRIND_WPAS" 5) $WPAS -g /tmp/wpas-wlan5 -G$GROUP \
77     -ddKt$TRACE -f $LOGDIR/log5 &
78 sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
79
80 sleep 1
81 sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/hwsim0 $LOGDIR/log* $LOGDIR/hostapd
82 if [ "x$VALGRIND" = "xy" ]; then
83     sudo chown -f $USER $LOGDIR/*valgrind*
84 fi
85
86 if [ -x $HLR_AUC_GW ]; then
87     cp $DIR/auth_serv/hlr_auc_gw.milenage_db $LOGDIR/hlr_auc_gw.milenage_db
88     sudo $HLR_AUC_GW -u -m $LOGDIR/hlr_auc_gw.milenage_db -g $DIR/auth_serv/hlr_auc_gw.gsm > $LOGDIR/hlr_auc_gw &
89 fi
90
91 touch $LOGDIR/hostapd.db
92 sudo $HAPD_AS -ddKt $LOGDIR/as.conf $LOGDIR/as2.conf > $LOGDIR/auth_serv &
93
94 # wait for programs to be fully initialized
95 for i in 0 1 2; do
96     for j in `seq 1 10`; do
97         if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
98             break
99         fi
100         if [ $j = "10" ]; then
101             echo "Could not connect to /tmp/wpas-wlan$i"
102             exit 1
103         fi
104         sleep 1
105     done
106 done
107
108 for j in `seq 1 10`; do
109     if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
110         break
111     fi
112     if [ $j = "10" ]; then
113         echo "Could not connect to /var/run/hostapd-global"
114         exit 1
115     fi
116     sleep 1
117 done
118
119 exit 0