Parcourir la source

Update WPS IE on hostapd reconfiguration

This is needed to handle cases where WPS state may have changed and
hostapd is reloading its configuration.
Andriy Tkachuk il y a 15 ans
Parent
commit
6deb41e73f
3 fichiers modifiés avec 17 ajouts et 0 suppressions
  1. 1 0
      src/ap/hostapd.c
  2. 11 0
      src/ap/wps_hostapd.c
  3. 5 0
      src/ap/wps_hostapd.h

+ 1 - 0
src/ap/hostapd.c

@@ -97,6 +97,7 @@ int hostapd_reload_config(struct hostapd_iface *iface)
 	}
 
 	ieee802_11_set_beacon(hapd);
+	hostapd_update_wps(hapd);
 
 	if (hapd->conf->ssid.ssid_set &&
 	    hostapd_set_ssid(hapd, (u8 *) hapd->conf->ssid.ssid,

+ 11 - 0
src/ap/wps_hostapd.c

@@ -686,6 +686,17 @@ void hostapd_deinit_wps(struct hostapd_data *hapd)
 }
 
 
+void hostapd_update_wps(struct hostapd_data *hapd)
+{
+	if (hapd->wps == NULL)
+		return;
+	if (hapd->conf->wps_state)
+		wps_registrar_update_ie(hapd->wps->registrar);
+	else
+		hostapd_deinit_wps(hapd);
+}
+
+
 int hostapd_wps_add_pin(struct hostapd_data *hapd, const char *uuid,
 			const char *pin, int timeout)
 {

+ 5 - 0
src/ap/wps_hostapd.h

@@ -20,6 +20,7 @@
 int hostapd_init_wps(struct hostapd_data *hapd,
 		     struct hostapd_bss_config *conf);
 void hostapd_deinit_wps(struct hostapd_data *hapd);
+void hostapd_update_wps(struct hostapd_data *hapd);
 int hostapd_wps_add_pin(struct hostapd_data *hapd, const char *uuid,
 			const char *pin, int timeout);
 int hostapd_wps_button_pushed(struct hostapd_data *hapd);
@@ -40,6 +41,10 @@ static inline void hostapd_deinit_wps(struct hostapd_data *hapd)
 {
 }
 
+static inline void hostapd_update_wps(struct hostapd_data *hapd)
+{
+}
+
 static inline int hostapd_wps_get_mib_sta(struct hostapd_data *hapd,
 					  const u8 *addr,
 					  char *buf, size_t buflen)