2013-03-27 13:40:10 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
DIR="$( cd "$( dirname "$0" )" && pwd )"
|
|
|
|
WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
|
2013-08-26 15:47:15 +02:00
|
|
|
WPACLI=$DIR/../../wpa_supplicant/wpa_cli
|
2013-03-27 13:40:10 +01:00
|
|
|
HAPD=$DIR/../../hostapd/hostapd
|
|
|
|
WLANTEST=$DIR/../../wlantest/wlantest
|
|
|
|
|
2013-09-29 15:41:17 +02:00
|
|
|
if groups | tr ' ' "\n" | grep -q ^admin$; then
|
|
|
|
GROUP=admin
|
|
|
|
else
|
|
|
|
GROUP=adm
|
|
|
|
fi
|
|
|
|
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$1" = "concurrent" ]; then
|
|
|
|
CONCURRENT=y
|
|
|
|
shift
|
|
|
|
else
|
|
|
|
unset CONCURRENT
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "valgrind" ]; then
|
2013-08-24 19:33:21 +02:00
|
|
|
VALGRIND=y
|
2013-09-29 15:37:25 +02:00
|
|
|
shift
|
2013-08-24 19:33:21 +02:00
|
|
|
else
|
|
|
|
unset VALGRIND
|
|
|
|
fi
|
|
|
|
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$1" = "trace" ]; then
|
2013-09-28 09:36:56 +02:00
|
|
|
TRACE="T"
|
2013-09-29 15:37:25 +02:00
|
|
|
shift
|
2013-09-28 09:36:56 +02:00
|
|
|
else
|
|
|
|
TRACE=""
|
|
|
|
fi
|
|
|
|
|
2013-03-27 13:40:10 +01:00
|
|
|
$DIR/stop-wifi.sh
|
2013-03-31 15:19:12 +02:00
|
|
|
sudo modprobe mac80211_hwsim radios=5
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$CONCURRENT" = "y" ]; then
|
|
|
|
sudo iw wlan0 interface add sta0 type station
|
|
|
|
sudo iw wlan1 interface add sta1 type station
|
|
|
|
sudo iw wlan2 interface add sta2 type station
|
|
|
|
fi
|
2013-03-27 13:40:10 +01:00
|
|
|
mkdir -p $DIR/logs
|
|
|
|
DATE=`date +%s`
|
|
|
|
sudo ifconfig hwsim0 up
|
|
|
|
sudo $WLANTEST -i hwsim0 -c -d > $DIR/logs/$DATE-hwsim0 &
|
2013-08-25 20:43:21 +02:00
|
|
|
sudo tcpdump -ni hwsim0 -s 2500 -w $DIR/logs/$DATE-hwsim0.dump > $DIR/logs/$DATE-tcpdump 2>&1 &
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$VALGRIND" = "y" ]; then
|
2013-08-24 19:33:21 +02:00
|
|
|
for i in 0 1 2; do
|
2013-08-24 20:46:44 +02:00
|
|
|
chmod a+rx $WPAS
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$CONCURRENT" = "y" ]; then
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-wlan$i $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -N -Dnl80211 -ista$i -c $DIR/sta-dummy.conf -ddKt$TRACE > $DIR/logs/$DATE-log$i &
|
2013-09-29 15:37:25 +02:00
|
|
|
else
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-wlan$i $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -ddKt$TRACE > $DIR/logs/$DATE-log$i &
|
2013-09-29 15:37:25 +02:00
|
|
|
fi
|
2013-08-24 19:33:21 +02:00
|
|
|
done
|
2013-08-24 20:46:44 +02:00
|
|
|
chmod a+rx $HAPD
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-hostapd $HAPD -ddKt -g /var/run/hostapd-global -G $GROUP -ddKt > $DIR/logs/$DATE-hostapd &
|
2013-08-24 19:33:21 +02:00
|
|
|
else
|
|
|
|
for i in 0 1 2; do
|
2013-09-29 15:37:25 +02:00
|
|
|
if [ "$CONCURRENT" = "y" ]; then
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -N -Dnl80211 -ista$i -c $DIR/sta-dummy.conf -ddKt$TRACE > $DIR/logs/$DATE-log$i &
|
2013-09-29 15:37:25 +02:00
|
|
|
else
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -ddKt$TRACE > $DIR/logs/$DATE-log$i &
|
2013-09-29 15:37:25 +02:00
|
|
|
fi
|
2013-08-24 19:33:21 +02:00
|
|
|
done
|
2013-09-29 15:41:17 +02:00
|
|
|
sudo $HAPD -ddKt -g /var/run/hostapd-global -G $GROUP -ddKt > $DIR/logs/$DATE-hostapd &
|
2013-08-24 19:33:21 +02:00
|
|
|
fi
|
2013-03-27 13:40:10 +01:00
|
|
|
sleep 1
|
2013-04-26 11:36:56 +02:00
|
|
|
sudo chown $USER $DIR/logs/$DATE-hwsim0.dump
|
2013-08-24 19:33:21 +02:00
|
|
|
if [ "x$VALGRIND" = "xy" ]; then
|
|
|
|
sudo chown $USER $DIR/logs/$DATE-*valgrind*
|
|
|
|
fi
|
2013-08-26 15:47:15 +02:00
|
|
|
|
|
|
|
# wait for programs to be fully initialized
|
|
|
|
for i in 0 1 2; do
|
|
|
|
for j in `seq 1 10`; do
|
|
|
|
if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
if [ $j = "10" ]; then
|
|
|
|
echo "Could not connect to /tmp/wpas-wlan$i"
|
2013-09-28 17:19:38 +02:00
|
|
|
exit 1
|
2013-08-26 15:47:15 +02:00
|
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
for j in `seq 1 10`; do
|
|
|
|
if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
if [ $j = "10" ]; then
|
|
|
|
echo "Could not connect to /var/run/hostapd-global"
|
2013-09-28 17:19:38 +02:00
|
|
|
exit 1
|
2013-08-26 15:47:15 +02:00
|
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
done
|
2013-09-28 17:19:38 +02:00
|
|
|
|
|
|
|
exit 0
|