Browse 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 15 years ago
parent
commit
6deb41e73f
3 changed files with 17 additions and 0 deletions
  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)