int pmf_in_use(struct wpa_supplicant *wpa_s, const u8 *addr)
{
if (wpa_s->current_ssid == NULL ||
- wpa_s->wpa_state < WPA_4WAY_HANDSHAKE ||
- os_memcmp(addr, wpa_s->bssid, ETH_ALEN) != 0)
+ wpa_s->wpa_state < WPA_4WAY_HANDSHAKE)
return 0;
+ if (wpa_s->valid_links) {
+ if (os_memcmp(addr, wpa_s->ap_mld_addr, ETH_ALEN) != 0 &&
+ !wpas_ap_link_address(wpa_s, addr))
+ return 0;
+ } else {
+ if (os_memcmp(addr, wpa_s->bssid, ETH_ALEN) != 0)
+ return 0;
+ }
return wpa_sm_pmf_enabled(wpa_s->wpa);
}
}
-static bool wpas_ap_link_address(struct wpa_supplicant *wpa_s, const u8 *addr)
+bool wpas_ap_link_address(struct wpa_supplicant *wpa_s, const u8 *addr)
{
int i;
bool wpas_is_6ghz_supported(struct wpa_supplicant *wpa_s, bool only_enabled);
bool wpa_is_non_eht_scs_traffic_desc_supported(struct wpa_bss *bss);
+bool wpas_ap_link_address(struct wpa_supplicant *wpa_s, const u8 *addr);
#endif /* WPA_SUPPLICANT_I_H */