#include "wps/wps_defs.h"
#include "wps/wps_dev_attr.h"
#include "hostapd.h"
-#include "driver_i.h"
+#include "config.h"
#include "sta_info.h"
#include "wps_hostapd.h"
}
-static int hostapd_wps_set_ie_cb(void *ctx, const u8 *beacon_ie,
- size_t beacon_ie_len, const u8 *probe_resp_ie,
- size_t probe_resp_ie_len)
+static int hostapd_wps_set_ie_cb(void *ctx, struct wpabuf *beacon_ie,
+ struct wpabuf *probe_resp_ie)
{
struct hostapd_data *hapd = ctx;
-
- os_free(hapd->wps_beacon_ie);
- if (beacon_ie_len == 0) {
- hapd->wps_beacon_ie = NULL;
- hapd->wps_beacon_ie_len = 0;
- } else {
- hapd->wps_beacon_ie = os_malloc(beacon_ie_len);
- if (hapd->wps_beacon_ie == NULL) {
- hapd->wps_beacon_ie_len = 0;
- return -1;
- }
- os_memcpy(hapd->wps_beacon_ie, beacon_ie, beacon_ie_len);
- hapd->wps_beacon_ie_len = beacon_ie_len;
- }
- hostapd_set_wps_beacon_ie(hapd, hapd->wps_beacon_ie,
- hapd->wps_beacon_ie_len);
-
- os_free(hapd->wps_probe_resp_ie);
- if (probe_resp_ie_len == 0) {
- hapd->wps_probe_resp_ie = NULL;
- hapd->wps_probe_resp_ie_len = 0;
- } else {
- hapd->wps_probe_resp_ie = os_malloc(probe_resp_ie_len);
- if (hapd->wps_probe_resp_ie == NULL) {
- hapd->wps_probe_resp_ie_len = 0;
- return -1;
- }
- os_memcpy(hapd->wps_probe_resp_ie, probe_resp_ie,
- probe_resp_ie_len);
- hapd->wps_probe_resp_ie_len = probe_resp_ie_len;
- }
- hostapd_set_wps_probe_resp_ie(hapd, hapd->wps_probe_resp_ie,
- hapd->wps_probe_resp_ie_len);
-
- return 0;
+ wpabuf_free(hapd->wps_beacon_ie);
+ hapd->wps_beacon_ie = beacon_ie;
+ wpabuf_free(hapd->wps_probe_resp_ie);
+ hapd->wps_probe_resp_ie = probe_resp_ie;
+ return hapd->drv.set_ap_wps_ie(hapd, hapd->wps_beacon_ie,
+ hapd->wps_probe_resp_ie);
}
static void hostapd_wps_clear_ies(struct hostapd_data *hapd)
{
- os_free(hapd->wps_beacon_ie);
+ wpabuf_free(hapd->wps_beacon_ie);
hapd->wps_beacon_ie = NULL;
- hapd->wps_beacon_ie_len = 0;
- hostapd_set_wps_beacon_ie(hapd, NULL, 0);
- os_free(hapd->wps_probe_resp_ie);
+ wpabuf_free(hapd->wps_probe_resp_ie);
hapd->wps_probe_resp_ie = NULL;
- hapd->wps_probe_resp_ie_len = 0;
- hostapd_set_wps_probe_resp_ie(hapd, NULL, 0);
+
+ hapd->drv.set_ap_wps_ie(hapd, NULL, NULL);
}
os_strdup(hapd->conf->model_number) : NULL;
wps->dev.serial_number = hapd->conf->serial_number ?
os_strdup(hapd->conf->serial_number) : NULL;
- if (hapd->conf->config_methods) {
- char *m = hapd->conf->config_methods;
- if (os_strstr(m, "label"))
- wps->config_methods |= WPS_CONFIG_LABEL;
- if (os_strstr(m, "display"))
- wps->config_methods |= WPS_CONFIG_DISPLAY;
- if (os_strstr(m, "push_button"))
- wps->config_methods |= WPS_CONFIG_PUSHBUTTON;
- if (os_strstr(m, "keypad"))
- wps->config_methods |= WPS_CONFIG_KEYPAD;
- }
+ wps->config_methods =
+ wps_config_methods_str2bin(hapd->conf->config_methods);
if (hapd->conf->device_type &&
wps_dev_type_str2bin(hapd->conf->device_type,
wps->dev.pri_dev_type) < 0) {