From patchwork Thu Nov 12 01:35:58 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Rodriguez X-Patchwork-Id: 59473 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nAC1a2GZ013495 for ; Thu, 12 Nov 2009 01:36:02 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759873AbZKLBfz (ORCPT ); Wed, 11 Nov 2009 20:35:55 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759884AbZKLBfz (ORCPT ); Wed, 11 Nov 2009 20:35:55 -0500 Received: from bombadil.infradead.org ([18.85.46.34]:44946 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759870AbZKLBfy (ORCPT ); Wed, 11 Nov 2009 20:35:54 -0500 Received: from mcgrof by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1N8ObO-00080n-Ji; Thu, 12 Nov 2009 01:35:58 +0000 From: "Luis R. Rodriguez" To: jeff.zheng@intel.com Cc: Wifi-test-devel@lists.sourceforge.net, linux-wireless@vger.kernel.org, "Luis R. Rodriguez" Subject: [PATCH] wifi-test: add initial simple test scripts Date: Wed, 11 Nov 2009 20:35:58 -0500 Message-Id: <1257989758-30756-1-git-send-email-lrodriguez@atheros.com> X-Mailer: git-send-email 1.6.2.rc1.3.g81d3f Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org diff --git a/README b/README index 491597a..eb88832 100644 --- a/README +++ b/README @@ -1,4 +1,18 @@ +Type of testing +=============== + + * Robust testing environment with CLI AP + +This project is designed originally for using APs which you can +configure yourself manually through some sort of CLI like the Cisco APs. + + * Simple testing + +Simple testing utilities are only starting to being developed, for those +refer to the simple/ directory. The rest of this document covers testing +with robust environment and an AP with a CLI. + ***************************************** ** Testing environment ** ***************************************** diff --git a/simple/README b/simple/README new file mode 100644 index 0000000..cd65290 --- /dev/null +++ b/simple/README @@ -0,0 +1,15 @@ +Simple Linux wirelss testing utilities +====================================== + +Use these if you don't have a complex testing environment, like +only one AP you run yourself with hostapd and a client which you +control as well. + +This doesn't yet collect information from connection establishment. + +TODO: + + * Use iw commands + + * Write nl80211 client which lisents to multicast events + to figure out connection completions/etc diff --git a/simple/create-ap.sh.txt b/simple/create-ap.sh.txt new file mode 100755 index 0000000..e4081a5 --- /dev/null +++ b/simple/create-ap.sh.txt @@ -0,0 +1,199 @@ +#!/bin/bash +# +# Copyright (c) 2008 Luis R. Rodriguez +# +# Linuxwireless.org generic AP setup utility +# +# Use this script setup an AP to tests drivers in STA mode against +# generic AP modes. This script was designed to support all current +# Linux wireless drivers which support AP mode but was tested mainly with +# MadWifi +# +# Requirements: +# +# * hostapd +# * wireless-tools +# * Wireless card and a respective Linux wireless driver which supports AP mode +# +#### Configurable items +ESSID="linuxwireless.org-testap01" +DEV="ath2" +# Used for WEP and TKIP and CCMP PSK passphrase +WEPKEY1="linuxwireless" +MODULE="ath_pci" +HOSTAPD_TKIP="/tmp/hostapd.conf.tkip" +HOSTAPD_CCMP="/tmp/hostapd.conf.ccmp" +#### You should not need to edit anything else bellow + +function generic-ap-setup() { + echo "Removing module $DRIVER..." + rmmod $MODULE + echo "Adding module $DRIVER..." + modprobe $MODULE + # Some drivers in AP mode will need this + echo "Letting module breathe for a bit..." + sleep 2 + case "$MODULE" in + ath_pci) + wlanconfig $DEV destroy + wlanconfig $DEV create wlandev wifi0 wlanmode ap + ;; + *) + iwconfig $DEV mode master + ;; + esac + iwconfig $DEV essid $ESSID +} + +function generate-hostapd() { + if [[ $# -ne 2 ]]; then + echo "Not enough arguments for generate-hostapd()" + usage + exit + fi + + case "$1" in + TKIP) + PAIRWISE_ALG="TKIP"; + ;; + CCMP) + PAIRWISE_ALG="CCMP"; + ;; + *) + echo -e "Unsupported hostapd pairwise algorythm: $1" + exit + ;; + esac + DRIVER="hostap" + case "$MODULE" in + ath_pci) + DRIVER="madwifi" + ;; + # Other hostapd drivers are hostap, wired, and prism54, all these match + # ther respective module name + *) + DRIVER="$MODULE" + ;; + esac + echo " +interface=$DEV +driver=$DRIVER +logger_syslog=-1 +logger_syslog_level=2 +logger_stdout=-1 +logger_stdout_level=2 +debug=0 +dump_file=/tmp/hostapd.dump +ctrl_interface=/var/run/hostapd +ctrl_interface_group=0 +ssid=$ESSID +max_num_sta=255 +macaddr_acl=0 +auth_algs=3 +wme_enabled=1 +wme_ac_bk_cwmin=4 +wme_ac_bk_cwmax=10 +wme_ac_bk_aifs=7 +wme_ac_bk_txop_limit=0 +wme_ac_bk_acm=0 +wme_ac_be_aifs=3 +wme_ac_be_cwmin=4 +wme_ac_be_cwmax=10 +wme_ac_be_txop_limit=0 +wme_ac_be_acm=0 +wme_ac_vi_aifs=2 +wme_ac_vi_cwmin=3 +wme_ac_vi_cwmax=4 +wme_ac_vi_txop_limit=94 +wme_ac_vi_acm=0 +wme_ac_vo_aifs=2 +wme_ac_vo_cwmin=2 +wme_ac_vo_cwmax=3 +wme_ac_vo_txop_limit=47 +wme_ac_vo_acm=0 +eapol_key_index_workaround=0 +eap_server=0 +own_ip_addr=127.0.0.1 +wpa=2 +wpa_passphrase=$WEPKEY1 +wpa_key_mgmt=WPA-PSK +wpa_pairwise=$PAIRWISE_ALG +" > $2 +} + +function mode-ap() { + echo "Setting up AP..." + generic-ap-setup + ifconfig $DEV up + echo "AP setup complete" +} + +function mode-ap-wep() { + echo "Setting up AP in AP-WEP mode..." + generic-ap-setup + iwconfig $DEV key s:$WEPKEY1 + ifconfig $DEV up + echo "AP setup complete" +} + +function mode-ap-wpa() { + if [[ $# -ne 1 ]]; then + echo "Not enough arguments for mode-ap-wpa()" + usage + exit + fi + + case "$1" in + TKIP) + PAIRWISE_ALG="TKIP" + HOSTAPD_CONF="$HOSTAPD_TKIP" + ;; + CCMP) + PAIRWISE_ALG="CCMP" + HOSTAPD_CONF="$HOSTAPD_CCMP" + ;; + *) + echo -e "Unsupported hostapd pairwise algorithm: $1" + exit; + ;; + esac + echo "Setting up AP in AP-$PAIRWISE_ALG mode..." + generic-ap-setup + ifconfig $DEV up + generate-hostapd $PAIRWISE_ALG $HOSTAPD_CONF + hostapd $HOSTAPD_CONF + echo "AP setup complete" +} + +function usage() { + echo -e "Usage: $0 AP-Mode" + echo -e "AP-Modes available:" + echo -e "\tAP\tNo encryption" + echo -e "\tAP-WEP\tWEP encryption" + echo -e "\tAP-TKIP\tTKIP encryption" + echo -e "\tAP-CCMP\tCCMP encryption" +} + +if [[ $# -ne 1 ]]; then + usage + exit +fi + +case "$1" in + AP) + mode-ap; + ;; + AP-WEP) + mode-ap-wep; + ;; + AP-TKIP) + mode-ap-wpa TKIP; + ;; + AP-CCMP) + mode-ap-wpa CCMP; + ;; + *) + echo -e "Unsupported AP mode: $1" + usage; + ;; +esac diff --git a/simple/create-client.sh.txt b/simple/create-client.sh.txt new file mode 100755 index 0000000..2c99072 --- /dev/null +++ b/simple/create-client.sh.txt @@ -0,0 +1,153 @@ +#!/bin/bash +# +# Copyright (c) 2008 Luis R. Rodriguez +# +# Linuxwireless.org generic STA test utility +# +# Use this script to test Linux wireless drivers +# which require to associate to an access point. +# +#### Configurable items +ESSID="linuxwireless.org-testap01" +DEV="ath2" +# Used for WEP and TKIP and CCMP PSK passphrase +WEPKEY1="linuxwireless" +MODULE="ath_pci" +WPASUPPLICANT_TKIP="/tmp/wpasupplicant.conf.tkip" +WPASUPPLICANT_CCMP="/tmp/wpasupplicant.conf.ccmp" +#### You should not need to edit anything else bellow + +function generic-sta-setup() { + echo "Removing module $MODULE..." + rmmod $MODULE + echo "Adding module $MODULE..." + modprobe $MODULE + # Some drivers in AP mode will need this + echo "Letting module breathe for a bit..." + sleep 2 + iwconfig $DEV mode Managed + iwconfig $DEV essid $ESSID +} + +function generate-wpasupplicant() { + if [[ $# -ne 2 ]]; then + echo "Not enough arguments for generate-wpasupplicant()" + usage + exit + fi + + case "$1" in + TKIP) + PAIRWISE_ALG="TKIP"; + GROUPWISE_ALG="TKIP"; + ;; + CCMP) + PAIRWISE_ALG="CCMP"; + GROUPWISE_ALG="CCMP"; + ;; + *) + echo -e "Unsupported hostapd pairwise algorythm: $1" + exit + ;; + esac + + echo " +#ctrl_interface=/var/run/wpa_supplicant +ctrl_interface_group=wheel +network={ + ssid=\"$ESSID\" + scan_ssid=1 + key_mgmt=WPA-PSK + pairwise=$PAIRWISE_ALG + group=$GROUPWISE_ALG + psk=\"$WEPKEY1\" +} +" > $2 +} + +function mode-sta() { + echo "Setting up STA..." + generic-sta-setup + ifconfig $DEV up + echo "STA setup complete" +} + +function mode-sta-wep() { + echo "Setting up AP in AP-WEP mode..." + generic-sta-setup + iwconfig $DEV key s:$WEPKEY1 + ifconfig $DEV up + echo "STA setup complete" +} + +function mode-sta-wpa() { + if [[ $# -ne 1 ]]; then + echo "Not enough arguments for mode-sta-wpa()" + usage + exit + fi + + case "$1" in + TKIP) + PAIRWISE_ALG="TKIP" + WPASUPPLICANT_CONF="$WPASUPPLICANT_TKIP" + ;; + CCMP) + PAIRWISE_ALG="CCMP" + WPASUPPLICANT_CONF="$WPASUPPLICANT_CCMP" + ;; + *) + echo -e "Unsupported wpasupplicant pairwise algorithm: $1" + exit + ;; + esac + DRIVER="wext" + case "$MODULE" in + ath_pci) + DRIVER="madwifi" + ;; + # Drivers should now support wext + *) + DRIVER="wext" + ;; + esac + echo "Setting up STA in STA-$PAIRWISE_ALG mode..." + generic-sta-setup + ifconfig $DEV up + generate-wpasupplicant $PAIRWISE_ALG $WPASUPPLICANT_CONF + wpa_supplicant -D${DRIVER} -i${DEV} -c $WPASUPPLICANT_CONF + echo "STA setup complete" +} + +function usage() { + echo -e "Usage: $0 STA-Mode" + echo -e "STA-Modes available:" + echo -e "\tSTA\tNo encryption" + echo -e "\tSTA-WEP\tWEP encryption" + echo -e "\tSTA-TKIP\tTKIP encryption" + echo -e "\tSTA-CCMP\tCCMP encryption" +} + +if [[ $# -ne 1 ]]; then + usage + exit +fi + +case "$1" in + STA) + mode-sta; + ;; + STA-WEP) + mode-sta-wep; + ;; + STA-TKIP) + mode-sta-wpa TKIP; + ;; + STA-CCMP) + mode-sta-wpa CCMP; + ;; + *) + echo -e "Unsupported STA mode: $1" + usage; + ;; +esac