start.sh 2.5 KB

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