This patch adds uapsd and wpa_psk_file options to hostapd.

It also fixes the hostapd_set_bss_options call in mac80211.sh.

The uapsd option sets the uapsd_advertisement_enabled flag in hostapd, only if 
the adapter actually supports the option.

The wpa_psk_file offers the possibility to use a different WPA-PSK key for each 
client. The directive points to a file with the following syntax:

> 00:11:22:33:44:55 passphrase_for_client_1
> 00:11:22:33:44:67 passphrase_for_client_2
> 00:11:22:33:44:89 
> 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

So it is possible to specify both ASCII passphrases and raw 64-chars hex keys.

Signed-off-by: Vittorio Gambaletta <open...@vittgam.net>

diff -aur /rom/lib/netifd/hostapd.sh /overlay/lib/netifd/hostapd.sh
--- /rom/lib/netifd/hostapd.sh  2014-10-12 12:59:38.000000000 +0200
+++ /overlay/lib/netifd/hostapd.sh      2014-10-14 00:03:52.000000000 +0200
@@ -100,7 +100,7 @@
 
 hostapd_common_add_bss_config() {
        config_add_string 'bssid:macaddr' 'ssid:string'
-       config_add_boolean wds wmm hidden
+       config_add_boolean wds wmm uapsd hidden
 
        config_add_int maxassoc max_inactivity
        config_add_boolean disassoc_low_ack isolate short_preamble
@@ -134,6 +134,8 @@
 
        config_add_string 'key1:wepkey' 'key2:wepkey' 'key3:wepkey' 
'key4:wepkey' 'password:wpakey'
 
+       config_add_string wpa_psk_file
+
        config_add_boolean wps_pushbutton wps_label ext_registrar wps_pbc_in_m1
        config_add_string wps_device_type wps_device_name wps_manufacturer 
wps_pin
 
@@ -161,7 +163,7 @@
                maxassoc max_inactivity disassoc_low_ack isolate auth_cache \
                wps_pushbutton wps_label ext_registrar wps_pbc_in_m1 \
                wps_device_type wps_device_name wps_manufacturer wps_pin \
-               macfilter ssid wmm hidden short_preamble rsn_preauth
+               macfilter ssid wmm uapsd hidden short_preamble rsn_preauth
 
        set_default isolate 0
        set_default maxassoc 0
@@ -170,6 +172,7 @@
        set_default disassoc_low_ack 1
        set_default hidden 0
        set_default wmm 1
+       set_default uapsd 1
 
        append bss_conf "ctrl_interface=/var/run/hostapd"
        if [ "$isolate" -gt 0 ]; then
@@ -187,6 +190,10 @@
        append bss_conf "wmm_enabled=$wmm" "$N"
        append bss_conf "ignore_broadcast_ssid=$hidden" "$N"
 
+       [ -n "$phy" ] && iw phy "$phy" info 2>/dev/null | grep -q 'Device 
supports AP-side u-APSD.' && {
+               append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N"
+       }
+
        [ "$wpa" -gt 0 ] && {
                [ -n "$wpa_group_rekey"  ] && append bss_conf 
"wpa_group_rekey=$wpa_group_rekey" "$N"
                [ -n "$wpa_pair_rekey"   ] && append bss_conf 
"wpa_ptk_rekey=$wpa_pair_rekey"    "$N"
@@ -201,7 +208,7 @@
                        wps_not_configured=1
                ;;
                psk)
-                       json_get_vars key
+                       json_get_vars key wpa_psk_file
                        if [ ${#key} -lt 8 ]; then
                                wireless_setup_vif_failed INVALID_WPA_PSK
                                return 1
@@ -210,6 +217,10 @@
                        else
                                append bss_conf "wpa_passphrase=$key" "$N"
                        fi
+                       [ -n "$wpa_psk_file" ] && {
+                               [ -e "$wpa_psk_file" ] || touch "$wpa_psk_file"
+                               append bss_conf "wpa_psk_file=$wpa_psk_file" 
"$N"
+                       }
                        wps_possible=1
                ;;
                eap)
diff -aur /rom/lib/netifd/wireless/mac80211.sh 
/overlay/lib/netifd/wireless/mac80211.sh
--- /rom/lib/netifd/wireless/mac80211.sh        2014-10-12 23:44:53.000000000 
+0200
+++ /overlay/lib/netifd/wireless/mac80211.sh    2014-10-13 23:59:39.000000000 
+0200
@@ -310,7 +310,7 @@
        hostapd_cfg=
        append hostapd_cfg "$type=$ifname" "$N"
 
-       hostapd_set_bss_options hostapd_cfg "$vif" || return 1
+       hostapd_set_bss_options hostapd_cfg "$phy" "$ifname" || return 1
        json_get_vars wds dtim_period max_listen_int
 
        set_default wds 0
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to