diff --git a/feeds/ipq807x_v5.4/hostapd/files/mpskd b/feeds/ipq807x_v5.4/hostapd/files/mpskd index 1a85af6ea..a03034b89 100644 --- a/feeds/ipq807x_v5.4/hostapd/files/mpskd +++ b/feeds/ipq807x_v5.4/hostapd/files/mpskd @@ -234,7 +234,7 @@ function sta_auth_psk(ifname, addr) { return ssid_psk(ssid, addr); } -function sta_auth_cache(ifname, addr, idx) { +function sta_auth_cache(ifname, addr, idx, phrase) { let ssid = iface_ssid(ifname); if (!ssid) return; @@ -248,6 +248,9 @@ function sta_auth_cache(ifname, addr, idx) { return; psk = psk[idx]; + if (!psk) + psk = phrase; + if (!psk) return; @@ -297,7 +300,7 @@ function auth_cb(msg) { case 'sta_connected': if (data.psk_idx == null) return; - return sta_auth_cache(data.iface, data.sta, data.psk_idx); + return sta_auth_cache(data.iface, data.sta, data.psk_idx, data.psk); case 'reload': netifd_reload(); reload_timer.set(5000); diff --git a/feeds/ipq807x_v5.4/hostapd/patches/601-ucode_support.patch b/feeds/ipq807x_v5.4/hostapd/patches/601-ucode_support.patch index 88b75ca9b..aec125959 100644 --- a/feeds/ipq807x_v5.4/hostapd/patches/601-ucode_support.patch +++ b/feeds/ipq807x_v5.4/hostapd/patches/601-ucode_support.patch @@ -585,40 +585,6 @@ .send_mlme = driver_nl80211_send_mlme, .get_hw_feature_data = nl80211_get_hw_feature_data, .sta_add = wpa_driver_nl80211_sta_add, ---- a/src/ap/ucode.c -+++ b/src/ap/ucode.c -@@ -256,6 +256,7 @@ uc_hostapd_bss_set_config(uc_vm_t *vm, s - - hostapd_setup_bss(hapd, hapd == iface->bss[0], true); - hostapd_ucode_update_interfaces(); -+ hostapd_owe_update_trans(iface); - - done: - ret = 0; -@@ -376,6 +377,7 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, si - conf->bss[idx] = NULL; - ret = hostapd_ucode_bss_get_uval(hapd); - hostapd_ucode_update_interfaces(); -+ hostapd_owe_update_trans(iface); - goto out; - - deinit_ctrl: -@@ -603,6 +605,7 @@ out: - - ieee802_11_set_beacon(hapd); - } -+ hostapd_owe_update_trans(iface); - - return ucv_boolean_new(true); - } -@@ -694,6 +697,7 @@ uc_hostapd_bss_rename(uc_vm_t *vm, size_ - hostapd_ubus_add_bss(hapd); - - hostapd_ucode_update_interfaces(); -+ hostapd_owe_update_trans(hapd->iface); - out: - if (interfaces->ctrl_iface_init) - interfaces->ctrl_iface_init(hapd); --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -494,11 +494,17 @@ static const char * sae_get_password(str diff --git a/feeds/ipq807x_v5.4/hostapd/src/src/ap/ucode.c b/feeds/ipq807x_v5.4/hostapd/src/src/ap/ucode.c index 887adcf2c..a38e25b76 100644 --- a/feeds/ipq807x_v5.4/hostapd/src/src/ap/ucode.c +++ b/feeds/ipq807x_v5.4/hostapd/src/src/ap/ucode.c @@ -256,6 +256,7 @@ uc_hostapd_bss_set_config(uc_vm_t *vm, size_t nargs) hostapd_setup_bss(hapd, hapd == iface->bss[0], true); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(iface); done: ret = 0; @@ -376,6 +377,7 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs) conf->bss[idx] = NULL; ret = hostapd_ucode_bss_get_uval(hapd); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(iface); goto out; deinit_ctrl: @@ -603,6 +605,7 @@ out: ieee802_11_set_beacon(hapd); } + hostapd_owe_update_trans(iface); return ucv_boolean_new(true); } @@ -694,6 +697,7 @@ uc_hostapd_bss_rename(uc_vm_t *vm, size_t nargs) hostapd_ubus_add_bss(hapd); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(hapd->iface); out: if (interfaces->ctrl_iface_init) interfaces->ctrl_iface_init(hapd); @@ -769,6 +773,7 @@ int hostapd_ucode_sta_auth(struct hostapd_data *hapd, struct sta_info *sta) void hostapd_ucode_sta_connected(struct hostapd_data *hapd, struct sta_info *sta) { + struct hostapd_sta_wpa_psk_short *psk = sta->psk; char addr[sizeof(MACSTR)]; uc_value_t *val, *cur; int ret = 0; @@ -785,6 +790,8 @@ void hostapd_ucode_sta_connected(struct hostapd_data *hapd, struct sta_info *sta val = ucv_object_new(vm); if (sta->psk_idx) ucv_object_add(val, "psk_idx", ucv_int64_new(sta->psk_idx - 1)); + if (sta->psk) + ucv_object_add(val, "psk", ucv_string_new(sta->psk->passphrase)); uc_value_push(ucv_get(val)); val = wpa_ucode_call(3);