start.sh 2.7 KB

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