From de0e4bd84ab011bd62bb004415b85260a365d0fa Mon Sep 17 00:00:00 2001 From: nbd Date: Fri, 22 Dec 2006 08:06:07 +0000 Subject: move hostapd setup function to wireless-tools package, as it is driver independent git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5890 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/wireless-tools/Makefile | 4 ++- package/wireless-tools/files/wifi.sh | 66 ++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 package/wireless-tools/files/wifi.sh (limited to 'package/wireless-tools') diff --git a/package/wireless-tools/Makefile b/package/wireless-tools/Makefile index f07a40640..6c5112662 100644 --- a/package/wireless-tools/Makefile +++ b/package/wireless-tools/Makefile @@ -61,7 +61,9 @@ define Build/UninstallDev endef define Package/wireless-tools/install - $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_DIR) $(1)/lib/wifi + $(INSTALL_DATA) ./files/wifi.sh $(1)/lib/wifi/generic.sh + $(INSTALL_DIR) $(1)/usr/lib $(INSTALL_BIN) $(PKG_BUILD_DIR)/libiw.so.28 $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/iw{config,getid,list,priv,spy} $(1)/usr/sbin/ diff --git a/package/wireless-tools/files/wifi.sh b/package/wireless-tools/files/wifi.sh new file mode 100644 index 000000000..529462e6c --- /dev/null +++ b/package/wireless-tools/files/wifi.sh @@ -0,0 +1,66 @@ +hostapd_setup_vif() { + local vif="$1" + local driver="$2" + local hostapd_cfg= + + # Examples: + # psk-mixed/tkip => WPA1+2 PSK, TKIP + # wpa-psk2/tkip+aes => WPA2 PSK, CCMP+TKIP + # wpa2/tkip+aes => WPA2 RADIUS, CCMP+TKIP + # ... + + # TODO: move this parsing function somewhere generic, so that + # later it can be reused by drivers that don't use hostapd + + # crypto defaults: WPA2 vs WPA1 + case "$enc" in + wpa2*|WPA2*|*PSK2*|*psk2*) + wpa=2 + crypto="CCMP" + ;; + *mixed*) + wpa=3 + crypto="CCMP TKIP" + ;; + *) + wpa=1 + crypto="TKIP" + ;; + esac + + # explicit override for crypto setting + case "$enc" in + *tkip+aes|*TKIP+AES|*tkip+ccmp|*TKIP+CCMP) crypto="CCMP TKIP";; + *tkip|*TKIP) crypto="TKIP";; + *aes|*AES|*ccmp|*CCMP) crypto="CCMP";; + esac + + # use crypto/auth settings for building the hostapd config + case "$enc" in + *psk*|*PSK*) + config_get psk "$vif" key + append hostapd_cfg "wpa_passphrase=$psk" "$N" + ;; + *wpa*|*WPA*) + # FIXME: add wpa+radius here + ;; + *) + return 0; + ;; + esac + config_get ifname "$vif" ifname + config_get bridge "$vif" bridge + config_get ssid "$vif" ssid + cat > /var/run/hostapd-$ifname.conf <