diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 69e7ad756..a3f97196d 100644 --- a/src/ap/hostapd.c +++ b/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, diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c index 9f0aa2ac4..04d3a85b3 100644 --- a/src/ap/wps_hostapd.c +++ b/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) { diff --git a/src/ap/wps_hostapd.h b/src/ap/wps_hostapd.h index bf28fb0f3..0b574032e 100644 --- a/src/ap/wps_hostapd.h +++ b/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)