X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fhostapd%2Ffiles%2Fnetifd.sh;h=a339e443fff4f2c20eafbf3985c1278e5a143b91;hp=a3ffd9395475c91f764e532379ab9a741c55e7b7;hb=30f14f61984591e7481a3fb568ad59dfb6c49ce7;hpb=e23c3bb3397447c04719fd98f0df77ed358a3daa diff --git a/package/network/services/hostapd/files/netifd.sh b/package/network/services/hostapd/files/netifd.sh index a3ffd93954..a339e443ff 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))" @@ -34,6 +36,13 @@ hostapd_append_wep_key() { esac } +hostapd_append_wpa_key_mgmt() { + local auth_type="$(echo $auth_type | tr 'a-z' 'A-Z')" + + append wpa_key_mgmt "WPA-$auth_type" + [ "$ieee80211r" -gt 0 ] && append wpa_key_mgmt "FT-${auth_type}" +} + hostapd_add_log_config() { config_add_boolean \ log_80211 \ @@ -120,6 +129,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 +146,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' @@ -182,7 +193,8 @@ 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 acct_server acct_secret acct_port \ + dynamic_vlan set_default isolate 0 set_default maxassoc 0 @@ -192,6 +204,8 @@ hostapd_set_bss_options() { set_default hidden 0 set_default wmm 1 set_default uapsd 1 + set_default eapol_version 0 + set_default acct_port 1813 append bss_conf "ctrl_interface=/var/run/hostapd" if [ "$isolate" -gt 0 ]; then @@ -216,6 +230,15 @@ hostapd_set_bss_options() { [ -n "$wpa_master_rekey" ] && append bss_conf "wpa_gmk_rekey=$wpa_master_rekey" "$N" } + [ -n "$acct_server" ] && { + append bss_conf "acct_server_addr=$acct_server" "$N" + append bss_conf "acct_server_port=$acct_port" "$N" + [ -n "$acct_secret" ] && \ + append bss_conf "acct_server_shared_secret=$acct_secret" "$N" + } + + local vlan_possible="" + case "$auth_type" in none) wps_possible=1 @@ -237,18 +260,19 @@ 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" ;; eap) json_get_vars \ auth_server auth_secret auth_port \ - acct_server acct_secret acct_port \ dae_client dae_secret dae_port \ ownip \ - eap_reauth_period dynamic_vlan \ - vlan_naming vlan_tagged_interface \ - vlan_bridge + eap_reauth_period + + # radius can provide VLAN ID for clients + vlan_possible=1 # legacy compatibility [ -n "$auth_server" ] || json_get_var auth_server server @@ -256,22 +280,13 @@ hostapd_set_bss_options() { [ -n "$auth_secret" ] || json_get_var auth_secret key set_default auth_port 1812 - set_default acct_port 1813 set_default dae_port 3799 - set_default vlan_naming 1 append bss_conf "auth_server_addr=$auth_server" "$N" append bss_conf "auth_server_port=$auth_port" "$N" append bss_conf "auth_server_shared_secret=$auth_secret" "$N" - [ -n "$acct_server" ] && { - append bss_conf "acct_server_addr=$acct_server" "$N" - append bss_conf "acct_server_port=$acct_port" "$N" - [ -n "$acct_secret" ] && \ - append bss_conf "acct_server_shared_secret=$acct_secret" "$N" - } - [ -n "$eap_reauth_period" ] && append bss_conf "eap_reauth_period=$eap_reauth_period" "$N" [ -n "$dae_client" -a -n "$dae_secret" ] && { @@ -282,16 +297,8 @@ hostapd_set_bss_options() { [ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N" append bss_conf "eapol_key_index_workaround=1" "$N" append bss_conf "ieee8021x=1" "$N" - append wpa_key_mgmt "WPA-EAP" - - [ -n "$dynamic_vlan" ] && { - append bss_conf "dynamic_vlan=$dynamic_vlan" "$N" - append bss_conf "vlan_naming=$vlan_naming" "$N" - [ -n "$vlan_bridge" ] && \ - append bss_conf "vlan_bridge=$vlan_bridge" "$N" - [ -n "$vlan_tagged_interface" ] && \ - append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N" - } + + [ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" ;; wep) local wep_keyidx=0 @@ -318,8 +325,8 @@ hostapd_set_bss_options() { [ -n "$wps_possible" -a -n "$config_methods" ] && { set_default ext_registrar 0 set_default wps_device_type "6-0050F204-1" - set_default wps_device_name "OpenWrt AP" - set_default wps_manufacturer "openwrt.org" + set_default wps_device_name "Lede AP" + set_default wps_manufacturer "www.lede-project.org" wps_state=2 [ -n "$wps_configured" ] && wps_state=1 @@ -340,8 +347,9 @@ 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 @@ -373,11 +381,9 @@ hostapd_set_bss_options() { 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 + hostapd_append_wpa_key_mgmt [ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" fi @@ -414,6 +420,8 @@ hostapd_set_bss_options() { allow) append bss_conf "macaddr_acl=1" "$N" append bss_conf "accept_mac_file=$_macfile" "$N" + # accept_mac_file can be used to set MAC to VLAN ID mapping + vlan_possible=1 ;; deny) append bss_conf "macaddr_acl=0" "$N" @@ -437,6 +445,21 @@ hostapd_set_bss_options() { ) > "$_macfile" } + [ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && { + json_get_vars vlan_naming vlan_tagged_interface vlan_bridge vlan_file + set_default vlan_naming 1 + append bss_conf "dynamic_vlan=$dynamic_vlan" "$N" + append bss_conf "vlan_naming=$vlan_naming" "$N" + [ -n "$vlan_bridge" ] && \ + 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" + } + } + append "$var" "$bss_conf" "$N" return 0 } @@ -522,9 +545,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" <