X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=package%2Fhostapd%2Ffiles%2Fhostapd.sh;h=db08e7bce2b131a9a044128985177166043853b0;hb=2af1cd58ef0a6fdc8c18e0bbced592004b91faf9;hp=a41c7678a7044261ef7394e1489081d215b4b09d;hpb=1420b2f40bc80fee3fc06f14cce2bd33f75aaf2d;p=openwrt.git diff --git a/package/hostapd/files/hostapd.sh b/package/hostapd/files/hostapd.sh index a41c7678a7..db08e7bce2 100644 --- a/package/hostapd/files/hostapd.sh +++ b/package/hostapd/files/hostapd.sh @@ -1,12 +1,15 @@ hostapd_set_bss_options() { local var="$1" local vif="$2" - local enc wpa_group_rekey + local enc wpa_group_rekey wps_possible config_get enc "$vif" encryption config_get wpa_group_rekey "$vif" wpa_group_rekey config_get_bool ap_isolate "$vif" isolate 0 + config_get device "$vif" device + config_get hwmode "$device" hwmode + if [ "$ap_isolate" -gt 0 ]; then append "$var" "ap_isolate=$ap_isolate" "$N" fi @@ -38,11 +41,16 @@ hostapd_set_bss_options() { # explicit override for crypto setting case "$enc" in - *tkip+aes|*tkip+ccmp) crypto="CCMP TKIP";; + *tkip+aes|*tkip+ccmp|*aes+tkip|*ccmp+tkip) crypto="CCMP TKIP";; *aes|*ccmp) crypto="CCMP";; *tkip) crypto="TKIP";; esac + # enforce CCMP for 11ng and 11na + case "$hwmode" in + *ng|*na) crypto="CCMP";; + esac + # use crypto/auth settings for building the hostapd config case "$enc" in *psk*) @@ -52,6 +60,7 @@ hostapd_set_bss_options() { else append "$var" "wpa_passphrase=$psk" "$N" fi + wps_possible=1 ;; *wpa*) # required fields? formats? @@ -68,7 +77,6 @@ hostapd_set_bss_options() { append "$var" "eapol_key_index_workaround=1" "$N" append "$var" "radius_acct_interim_interval=300" "$N" append "$var" "ieee8021x=1" "$N" - append "$var" "auth_algs=1" "$N" append "$var" "wpa_key_mgmt=WPA-EAP" "$N" append "$var" "wpa_group_rekey=300" "$N" append "$var" "wpa_gmk_rekey=640" "$N" @@ -92,6 +100,14 @@ hostapd_set_bss_options() { append "$var" "wep_default_key=0" "$N" ;; esac + case "$enc" in + *shared*) + auth_algs=2 + ;; + *mixed*) + auth_algs=3 + ;; + esac wpa=0 crypto= ;; @@ -100,6 +116,7 @@ hostapd_set_bss_options() { crypto= ;; esac + append "$var" "auth_algs=${auth_algs:-1}" "$N" append "$var" "wpa=$wpa" "$N" [ -n "$crypto" ] && append "$var" "wpa_pairwise=$crypto" "$N" [ -n "$wpa_group_rekey" ] && append "$var" "wpa_group_rekey=$wpa_group_rekey" "$N" @@ -107,10 +124,20 @@ hostapd_set_bss_options() { config_get ssid "$vif" ssid config_get bridge "$vif" bridge config_get ieee80211d "$vif" ieee80211d + config_get iapp_interface "$vif" iapp_interface + + config_get_bool wps_pbc "$vif" wps_pushbutton 0 + [ -n "$wps_possible" -a "$wps_pbc" -gt 0 ] && { + append "$var" "eap_server=1" "$N" + append "$var" "wps_state=2" "$N" + append "$var" "ap_setup_locked=1" "$N" + append "$var" "config_methods=push_button" "$N" + } append "$var" "ssid=$ssid" "$N" [ -n "$bridge" ] && append "$var" "bridge=$bridge" "$N" [ -n "$ieee80211d" ] && append "$var" "ieee80211d=$ieee80211d" "$N" + [ -n "$iapp_interface" ] && append "$var" $(uci_get_state network "$iapp_interface" ifname "$iapp_interface") "$N" [ "$wpa" -ge "2" ] && config_get ieee80211w "$vif" ieee80211w case "$ieee80211w" in