18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant / WPS integration
304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * Copyright (c) 2008-2012, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPS_SUPPLICANT_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPS_SUPPLICANT_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_scan_res;
1361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstruct wpa_scan_results;
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_WPS
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wps/wps.h"
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wps/wps_defs.h"
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_bss;
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wps_new_ap_settings {
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const char *ssid_hex;
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const char *auth;
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const char *encr;
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const char *key_hex;
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_init(struct wpa_supplicant *wpa_s);
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_wps_deinit(struct wpa_supplicant *wpa_s);
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum wps_request_type wpas_wps_get_req_type(struct wpa_ssid *ssid);
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		       int p2p_group);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		       const char *pin, int p2p_group, u16 dev_pw_id);
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_cancel(struct wpa_supplicant *wpa_s);
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_start_oob(struct wpa_supplicant *wpa_s, char *device_type,
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		       char *path, char *method, char *name);
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		       const char *pin, struct wps_new_ap_settings *settings);
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
439bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt			    struct wpa_ssid *ssid, struct wpa_bss *bss);
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
459bce59c7fef20e34a05f04d1e33a4076083dca0cDmitry Shmidt			      struct wpa_ssid *ssid, struct wpa_bss *bss);
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			      struct wpa_bss *selected, struct wpa_ssid *ssid);
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s);
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_searching(struct wpa_supplicant *wpa_s);
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_scan_result_text(const u8 *ies, size_t ies_len, char *pos,
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			      char *end);
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_start(struct wpa_supplicant *wpa_s, const char *filter);
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_stop(struct wpa_supplicant *wpa_s);
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_add_pin(struct wpa_supplicant *wpa_s, const u8 *addr,
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			const char *uuid, const char *pin);
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_pbc(struct wpa_supplicant *wpa_s, const char *uuid);
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_learn(struct wpa_supplicant *wpa_s, const char *uuid,
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		      const char *pin);
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_set_config(struct wpa_supplicant *wpa_s, const char *uuid,
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			   int id);
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_er_config(struct wpa_supplicant *wpa_s, const char *uuid,
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		       const char *pin, struct wps_new_ap_settings *settings);
6304949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct wpabuf * wpas_wps_er_nfc_config_token(struct wpa_supplicant *wpa_s,
6404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt					     int ndef, const char *uuid);
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_terminate_pending(struct wpa_supplicant *wpa_s);
668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpas_wps_in_progress(struct wpa_supplicant *wpa_s);
678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpas_wps_update_config(struct wpa_supplicant *wpa_s);
6804949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct wpabuf * wpas_wps_nfc_token(struct wpa_supplicant *wpa_s, int ndef);
6904949598a23f501be6eec21697465fd46a28840aDmitry Shmidtint wpas_wps_start_nfc(struct wpa_supplicant *wpa_s, const u8 *bssid);
7004949598a23f501be6eec21697465fd46a28840aDmitry Shmidtint wpas_wps_nfc_tag_read(struct wpa_supplicant *wpa_s,
7104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt			  const struct wpabuf *data);
7261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtvoid wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
7361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt			     struct wpa_scan_results *scan_res);
7461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtvoid wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s, const u8 *bssid);
758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#else /* CONFIG_WPS */
778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_init(struct wpa_supplicant *wpa_s)
798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline void wpas_wps_deinit(struct wpa_supplicant *wpa_s)
848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline u8 wpas_wps_get_req_type(struct wpa_ssid *ssid)
938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					  struct wpa_ssid *ssid,
998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					  struct wpa_scan_res *bss)
1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return -1;
1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					    struct wpa_ssid *ssid,
1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					    struct wpa_scan_res *bss)
1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					    struct wpa_bss *selected,
1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt					    struct wpa_ssid *ssid)
1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s)
1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int wpas_wps_searching(struct wpa_supplicant *wpa_s)
1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
12761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstatic inline void wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
12861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt					   struct wpa_scan_results *scan_res)
12961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt{
13061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt}
13161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
13261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtstatic inline void wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s,
13361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt					 const u8 *bssid)
13461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt{
13561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt}
13661d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_WPS */
1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPS_SUPPLICANT_H */
140