start.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/bin/sh
  2. DIR="$( cd "$( dirname "$0" )" && pwd )"
  3. WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
  4. WPACLI=$DIR/../../wpa_supplicant/wpa_cli
  5. HAPD=$DIR/../../hostapd/hostapd
  6. WLANTEST=$DIR/../../wlantest/wlantest
  7. HLR_AUC_GW=$DIR/../../hostapd/hlr_auc_gw
  8. if [ -z "$LOGDIR" ] ; then
  9. LOGDIR="$DIR/logs/$(date +%s)"
  10. mkdir -p $LOGDIR
  11. fi
  12. if groups | tr ' ' "\n" | grep -q ^admin$; then
  13. GROUP=admin
  14. else
  15. GROUP=adm
  16. fi
  17. if [ "$1" = "concurrent" ]; then
  18. CONCURRENT=y
  19. CONCURRENT_ARGS="-N -Dnl80211 -ista%d -c $DIR/sta-dummy.conf"
  20. shift
  21. else
  22. unset CONCURRENT
  23. CONCURRENT_ARGS=
  24. fi
  25. if [ "$1" = "valgrind" ]; then
  26. VALGRIND=y
  27. VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
  28. VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
  29. chmod -f a+rx $WPAS
  30. chmod -f a+rx $HAPD
  31. shift
  32. else
  33. unset VALGRIND
  34. VALGRIND_WPAS=
  35. VALGRIND_HAPD=
  36. fi
  37. if [ "$1" = "trace" ]; then
  38. TRACE="T"
  39. shift
  40. else
  41. TRACE=""
  42. fi
  43. $DIR/stop-wifi.sh
  44. test -f /proc/modules && sudo modprobe mac80211_hwsim radios=5
  45. if [ "$CONCURRENT" = "y" ]; then
  46. sudo iw wlan0 interface add sta0 type station
  47. sudo iw wlan1 interface add sta1 type station
  48. sudo iw wlan2 interface add sta2 type station
  49. fi
  50. mkdir -p $LOGDIR
  51. sudo ifconfig hwsim0 up
  52. sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -d > $LOGDIR/hwsim0 &
  53. for i in 0 1 2; do
  54. sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf \
  55. $(printf -- "$CONCURRENT_ARGS" $i) -ddKt$TRACE -f $LOGDIR/log$i &
  56. done
  57. sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt > $LOGDIR/hostapd &
  58. sleep 1
  59. sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/log*
  60. if [ "x$VALGRIND" = "xy" ]; then
  61. sudo chown -f $USER $LOGDIR/*valgrind*
  62. fi
  63. if [ -x $HLR_AUC_GW ]; then
  64. $HLR_AUC_GW -m $DIR/auth_serv/hlr_auc_gw.milenage_db > $LOGDIR/hlr_auc_gw &
  65. fi
  66. $HAPD -ddKt $DIR/auth_serv/as.conf > $LOGDIR/auth_serv &
  67. # wait for programs to be fully initialized
  68. for i in 0 1 2; do
  69. for j in `seq 1 10`; do
  70. if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
  71. break
  72. fi
  73. if [ $j = "10" ]; then
  74. echo "Could not connect to /tmp/wpas-wlan$i"
  75. exit 1
  76. fi
  77. sleep 1
  78. done
  79. done
  80. for j in `seq 1 10`; do
  81. if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
  82. break
  83. fi
  84. if [ $j = "10" ]; then
  85. echo "Could not connect to /var/run/hostapd-global"
  86. exit 1
  87. fi
  88. sleep 1
  89. done
  90. exit 0