hostapd: introduce mbo option
[openwrt/staging/stintel.git] / package / network / services / hostapd / files / hostapd.sh
index 157a7ad3e0b860cf6381346d95974addd3c84b74..be3993d4bd1a2888b4a44f2052c874ea9485efa0 100644 (file)
@@ -304,7 +304,7 @@ hostapd_common_add_bss_config() {
        config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin
        config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key
 
-       config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
+       config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition mbo
        config_add_int time_advertisement
        config_add_string time_zone
        config_add_string vendor_elements
@@ -335,6 +335,7 @@ hostapd_common_add_bss_config() {
        config_add_int sae_pwe
 
        config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string'
+       config_add_string owe_transition_ifname
 
        config_add_boolean iw_enabled iw_internet iw_asra iw_esr iw_uesa
        config_add_int iw_access_network_type iw_venue_group iw_venue_type
@@ -620,10 +621,12 @@ hostapd_set_bss_options() {
                sae|owe|eap192|eap-eap192)
                        set_default ieee80211w 2
                        set_default sae_require_mfp 1
+                       set_default sae_pwe 2
                ;;
                psk-sae)
                        set_default ieee80211w 1
                        set_default sae_require_mfp 1
+                       set_default sae_pwe 2
                ;;
        esac
        [ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N"
@@ -633,10 +636,11 @@ hostapd_set_bss_options() {
 
        case "$auth_type" in
                none|owe)
-                       json_get_vars owe_transition_bssid owe_transition_ssid
+                       json_get_vars owe_transition_bssid owe_transition_ssid owe_transition_ifname
 
                        [ -n "$owe_transition_ssid" ] && append bss_conf "owe_transition_ssid=\"$owe_transition_ssid\"" "$N"
                        [ -n "$owe_transition_bssid" ] && append bss_conf "owe_transition_bssid=$owe_transition_bssid" "$N"
+                       [ -n "$owe_transition_ifname" ] && append bss_conf "owe_transition_ifname=$owe_transition_ifname" "$N"
 
                        wps_possible=1
                        # Here we make the assumption that if we're in open mode
@@ -740,6 +744,25 @@ hostapd_set_bss_options() {
                ;;
        esac
 
+       case "$auth_type" in
+               none|owe|psk|sae|psk-sae|wep)
+                       json_get_vars \
+                       auth_server auth_port auth_secret \
+                       ownip radius_client_addr
+
+                       [ -n "$auth_server" ] &&  {
+                               set_default auth_port 1812
+
+                               append bss_conf "auth_server_addr=$auth_server" "$N"
+                               append bss_conf "auth_server_port=$auth_port" "$N"
+                               [ -n "$auth_secret" ] && append bss_conf "auth_server_shared_secret=$auth_secret" "$N"
+                               [ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N"
+                               [ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N"
+                               append bss_conf "macaddr_acl=2" "$N"
+                       }
+               ;;
+       esac
+
        local auth_algs=$((($auth_mode_shared << 1) | $auth_mode_open))
        append bss_conf "auth_algs=${auth_algs:-1}" "$N"
        append bss_conf "wpa=$wpa" "$N"
@@ -802,11 +825,17 @@ hostapd_set_bss_options() {
                append bss_conf "iapp_interface=$ifname" "$N"
        }
 
-       json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
+       json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition mbo
        set_default bss_transition 0
        set_default wnm_sleep_mode 0
        set_default wnm_sleep_mode_no_keys 0
 
+       if [ "$enable_ax" -eq 1 ]; then
+               set_default mbo 1
+       else
+               set_default mbo 0
+       fi
+
        [ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N"
        [ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N"
        if [ "$wnm_sleep_mode" -eq "1" ]; then
@@ -814,6 +843,7 @@ hostapd_set_bss_options() {
                [ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N"
        fi
        [ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N"
+       [ "$mbo" -eq 1 ] && append bss_conf "mbo=1" "$N"
 
        json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report
        set_default ieee80211k 0