52eb293dd2
wpa_supplicant can now reconfigure the AP by acting as an External Registrar with the wps_reg command. Previously, this was only used to fetch the current AP settings, but now the wps_reg command has optional arguments which can be used to provide the new AP configuration. When the new parameters are set, the WPS protocol run is allowed to continue through M8 to reconfigure the AP instead of stopping at M7.
104 lines
2.7 KiB
C
104 lines
2.7 KiB
C
/*
|
|
* wpa_supplicant / WPS integration
|
|
* Copyright (c) 2008-2009, Jouni Malinen <j@w1.fi>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* Alternatively, this software may be distributed under the terms of BSD
|
|
* license.
|
|
*
|
|
* See README and COPYING for more details.
|
|
*/
|
|
|
|
#ifndef WPS_SUPPLICANT_H
|
|
#define WPS_SUPPLICANT_H
|
|
|
|
#ifdef CONFIG_WPS
|
|
|
|
#include "wps/wps.h"
|
|
#include "wps/wps_defs.h"
|
|
|
|
struct wps_new_ap_settings {
|
|
const char *ssid_hex;
|
|
const char *auth;
|
|
const char *encr;
|
|
const char *key_hex;
|
|
};
|
|
|
|
int wpas_wps_init(struct wpa_supplicant *wpa_s);
|
|
void wpas_wps_deinit(struct wpa_supplicant *wpa_s);
|
|
int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s);
|
|
enum wps_request_type wpas_wps_get_req_type(struct wpa_ssid *ssid);
|
|
int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid);
|
|
int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
|
|
const char *pin);
|
|
int wpas_wps_start_oob(struct wpa_supplicant *wpa_s, char *device_type,
|
|
char *path, char *method, char *name);
|
|
int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
|
|
const char *pin, struct wps_new_ap_settings *settings);
|
|
int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
|
|
struct wpa_ssid *ssid, struct wpa_scan_res *bss);
|
|
int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
|
|
struct wpa_ssid *ssid, struct wpa_scan_res *bss);
|
|
int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
|
|
struct wpa_scan_res *selected,
|
|
struct wpa_ssid *ssid);
|
|
void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s);
|
|
int wpas_wps_searching(struct wpa_supplicant *wpa_s);
|
|
|
|
#else /* CONFIG_WPS */
|
|
|
|
static inline int wpas_wps_init(struct wpa_supplicant *wpa_s)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void wpas_wps_deinit(struct wpa_supplicant *wpa_s)
|
|
{
|
|
}
|
|
|
|
static inline int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline u8 wpas_wps_get_req_type(struct wpa_ssid *ssid)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
|
|
struct wpa_ssid *ssid,
|
|
struct wpa_scan_res *bss)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
|
|
struct wpa_ssid *ssid,
|
|
struct wpa_scan_res *bss)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
|
|
struct wpa_scan_res *selected,
|
|
struct wpa_ssid *ssid)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s)
|
|
{
|
|
}
|
|
|
|
static inline int wpas_wps_searching(struct wpa_supplicant *wpa_s)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
#endif /* CONFIG_WPS */
|
|
|
|
#endif /* WPS_SUPPLICANT_H */
|