diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c index 181cc6d5f..e39378450 100644 --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c @@ -1216,6 +1216,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, * Try to re-enable interface if the driver stopped it * when the interface got disabled. */ + wpa_auth_reconfig_group_keys(hapd->wpa_auth); hapd->reenable_beacon = 1; ieee802_11_set_beacon(hapd); } diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c index 668cb429d..9c5f6094a 100644 --- a/src/ap/wpa_auth.c +++ b/src/ap/wpa_auth.c @@ -3387,3 +3387,14 @@ int wpa_auth_radius_das_disconnect_pmksa(struct wpa_authenticator *wpa_auth, { return pmksa_cache_auth_radius_das_disconnect(wpa_auth->pmksa, attr); } + + +void wpa_auth_reconfig_group_keys(struct wpa_authenticator *wpa_auth) +{ + struct wpa_group *group; + + if (!wpa_auth) + return; + for (group = wpa_auth->group; group; group = group->next) + wpa_group_config_group_keys(wpa_auth, group); +} diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h index b34b84dd6..2788e6574 100644 --- a/src/ap/wpa_auth.h +++ b/src/ap/wpa_auth.h @@ -318,5 +318,6 @@ int wpa_auth_get_ip_addr(struct wpa_state_machine *sm, u8 *addr); struct radius_das_attrs; int wpa_auth_radius_das_disconnect_pmksa(struct wpa_authenticator *wpa_auth, struct radius_das_attrs *attr); +void wpa_auth_reconfig_group_keys(struct wpa_authenticator *wpa_auth); #endif /* WPA_AUTH_H */