Browse Source

Re-configure WPA2 group keys on hostapd interface re-enable

This allows WPA2 mode AP to be re-enabled automatically after external
ifconfig down + up on a netdev used by hostapd.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Jouni Malinen 10 years ago
parent
commit
34782730c0
3 changed files with 13 additions and 0 deletions
  1. 1 0
      src/ap/drv_callbacks.c
  2. 11 0
      src/ap/wpa_auth.c
  3. 1 0
      src/ap/wpa_auth.h

+ 1 - 0
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);
 		}

+ 11 - 0
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);
+}

+ 1 - 0
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 */