X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fhostapd%2Ffiles%2Fnetifd.sh;h=005112d828e4865a1010bea37ef36cc549b43d38;hp=a5abdce1ce7a486ed899e30642eb97452bd5ee86;hb=3830200d6ad8f0197ca4f8e0a99d3a043214de10;hpb=07b17c6b255ae579e4d287a8263d43fd794b5044 diff --git a/package/network/services/hostapd/files/netifd.sh b/package/network/services/hostapd/files/netifd.sh index a5abdce1ce..005112d828 100644 --- a/package/network/services/hostapd/files/netifd.sh +++ b/package/network/services/hostapd/files/netifd.sh @@ -1,3 +1,5 @@ +. /lib/functions/network.sh + wpa_supplicant_add_rate() { local var="$1" local val="$(($2 / 1000))" @@ -120,6 +122,7 @@ hostapd_common_add_bss_config() { config_add_boolean rsn_preauth auth_cache config_add_int ieee80211w + config_add_int eapol_version config_add_string 'auth_server:host' 'server:host' config_add_string auth_secret @@ -136,10 +139,11 @@ hostapd_common_add_bss_config() { config_add_string nasid config_add_string ownip config_add_string iapp_interface - config_add_string eap_type ca_cert client_cert identity auth priv_key priv_key_pwd + config_add_string eap_type ca_cert client_cert identity anonymous_identity auth priv_key priv_key_pwd config_add_int dynamic_vlan vlan_naming config_add_string vlan_tagged_interface vlan_bridge + config_add_string vlan_file config_add_string 'key1:wepkey' 'key2:wepkey' 'key3:wepkey' 'key4:wepkey' 'password:wpakey' @@ -148,6 +152,11 @@ hostapd_common_add_bss_config() { 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 + config_add_boolean ieee80211r pmk_r1_push + config_add_int r0_key_lifetime reassociation_deadline + config_add_string mobility_domain r1_key_holder + config_add_array r0kh r1kh + config_add_int ieee80211w_max_timeout ieee80211w_retry_timeout config_add_string macfilter 'macfile:file' @@ -177,7 +186,7 @@ hostapd_set_bss_options() { wps_pushbutton wps_label ext_registrar wps_pbc_in_m1 \ wps_device_type wps_device_name wps_manufacturer wps_pin \ macfilter ssid wmm uapsd hidden short_preamble rsn_preauth \ - iapp_interface + iapp_interface eapol_version set_default isolate 0 set_default maxassoc 0 @@ -187,6 +196,7 @@ hostapd_set_bss_options() { set_default hidden 0 set_default wmm 1 set_default uapsd 1 + set_default eapol_version 0 append bss_conf "ctrl_interface=/var/run/hostapd" if [ "$isolate" -gt 0 ]; then @@ -232,6 +242,8 @@ hostapd_set_bss_options() { [ -e "$wpa_psk_file" ] || touch "$wpa_psk_file" append bss_conf "wpa_psk_file=$wpa_psk_file" "$N" } + [ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" + wps_possible=1 append wpa_key_mgmt "WPA-PSK" ;; @@ -243,7 +255,7 @@ hostapd_set_bss_options() { ownip \ eap_reauth_period dynamic_vlan \ vlan_naming vlan_tagged_interface \ - vlan_bridge + vlan_bridge vlan_file # legacy compatibility [ -n "$auth_server" ] || json_get_var auth_server server @@ -286,7 +298,13 @@ hostapd_set_bss_options() { append bss_conf "vlan_bridge=$vlan_bridge" "$N" [ -n "$vlan_tagged_interface" ] && \ append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N" + [ -n "$vlan_file" ] && { + [ -e "$vlan_file" ] || touch "$vlan_file" + append bss_conf "vlan_file=$vlan_file" "$N" + } } + + [ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" ;; wep) local wep_keyidx=0 @@ -335,13 +353,45 @@ hostapd_set_bss_options() { append bss_conf "ssid=$ssid" "$N" [ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge" "$N" [ -n "$iapp_interface" ] && { - iapp_interface="$(uci_get_state network "$iapp_interface" ifname "$iapp_interface")" - [ -n "$iapp_interface" ] && append bss_conf "iapp_interface=$iapp_interface" "$N" + local ifname + network_get_device ifname "$iapp_interface" || ifname = "$iapp_interface" + append bss_conf "iapp_interface=$ifname" "$N" } if [ "$wpa" -ge "1" ]; then - json_get_vars nasid + json_get_vars nasid ieee80211r + set_default ieee80211r 0 [ -n "$nasid" ] && append bss_conf "nas_identifier=$nasid" "$N" + + if [ "$ieee80211r" -gt "0" ]; then + json_get_vars mobility_domain r0_key_lifetime r1_key_holder \ + reassociation_deadline pmk_r1_push + json_get_values r0kh r0kh + json_get_values r1kh r1kh + + set_default mobility_domain "4f57" + set_default r0_key_lifetime 10000 + set_default r1_key_holder "00004f577274" + set_default reassociation_deadline 1000 + set_default pmk_r1_push 0 + + append bss_conf "mobility_domain=$mobility_domain" "$N" + append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" + append bss_conf "r1_key_holder=$r1_key_holder" "$N" + append bss_conf "reassociation_deadline=$reassociation_deadline" "$N" + append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" + + for kh in $r0kh; do + append bss_conf "r0kh=${kh//,/ }" "$N" + done + for kh in $r1kh; do + append bss_conf "r1kh=${kh//,/ }" "$N" + done + + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/EAP/}" ] && append wpa_key_mgmt "FT-EAP" + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/PSK/}" ] && append wpa_key_mgmt "FT-PSK" + fi + [ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" fi @@ -486,9 +536,15 @@ wpa_supplicant_prepare_interface() { _w_modestr="mode=1" } + local country_str= + [ -n "$country" ] && { + country_str="country=$country" + } + wpa_supplicant_teardown_interface "$ifname" cat > "$_config" <> "$_config" <