start.sh 3.0 KB

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