xref: /freebsd/contrib/wpa/wpa_supplicant/wps_supplicant.h (revision f05cddf940dbfc5b657f5e9beb9de2c31e509e5b)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * wpa_supplicant / WPS integration
3*f05cddf9SRui Paulo  * Copyright (c) 2008-2012, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
5*f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6*f05cddf9SRui Paulo  * See README for more details.
739beb93cSSam Leffler  */
839beb93cSSam Leffler 
939beb93cSSam Leffler #ifndef WPS_SUPPLICANT_H
1039beb93cSSam Leffler #define WPS_SUPPLICANT_H
1139beb93cSSam Leffler 
12*f05cddf9SRui Paulo struct wpa_scan_results;
13e28a4053SRui Paulo 
1439beb93cSSam Leffler #ifdef CONFIG_WPS
1539beb93cSSam Leffler 
1639beb93cSSam Leffler #include "wps/wps.h"
1739beb93cSSam Leffler #include "wps/wps_defs.h"
1839beb93cSSam Leffler 
19e28a4053SRui Paulo struct wpa_bss;
20e28a4053SRui Paulo 
21e28a4053SRui Paulo struct wps_new_ap_settings {
22e28a4053SRui Paulo 	const char *ssid_hex;
23e28a4053SRui Paulo 	const char *auth;
24e28a4053SRui Paulo 	const char *encr;
25e28a4053SRui Paulo 	const char *key_hex;
26e28a4053SRui Paulo };
27e28a4053SRui Paulo 
2839beb93cSSam Leffler int wpas_wps_init(struct wpa_supplicant *wpa_s);
2939beb93cSSam Leffler void wpas_wps_deinit(struct wpa_supplicant *wpa_s);
3039beb93cSSam Leffler int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s);
3139beb93cSSam Leffler enum wps_request_type wpas_wps_get_req_type(struct wpa_ssid *ssid);
32*f05cddf9SRui Paulo int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
33*f05cddf9SRui Paulo 		       int p2p_group);
3439beb93cSSam Leffler int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
35*f05cddf9SRui Paulo 		       const char *pin, int p2p_group, u16 dev_pw_id);
36*f05cddf9SRui Paulo int wpas_wps_cancel(struct wpa_supplicant *wpa_s);
3739beb93cSSam Leffler int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
38e28a4053SRui Paulo 		       const char *pin, struct wps_new_ap_settings *settings);
3939beb93cSSam Leffler int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
40*f05cddf9SRui Paulo 			    struct wpa_ssid *ssid, struct wpa_bss *bss);
4139beb93cSSam Leffler int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
42*f05cddf9SRui Paulo 			      struct wpa_ssid *ssid, struct wpa_bss *bss);
4339beb93cSSam Leffler int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
44e28a4053SRui Paulo 			      struct wpa_bss *selected, struct wpa_ssid *ssid);
4539beb93cSSam Leffler void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s);
4639beb93cSSam Leffler int wpas_wps_searching(struct wpa_supplicant *wpa_s);
47e28a4053SRui Paulo int wpas_wps_scan_result_text(const u8 *ies, size_t ies_len, char *pos,
48e28a4053SRui Paulo 			      char *end);
49*f05cddf9SRui Paulo int wpas_wps_er_start(struct wpa_supplicant *wpa_s, const char *filter);
50e28a4053SRui Paulo int wpas_wps_er_stop(struct wpa_supplicant *wpa_s);
51*f05cddf9SRui Paulo int wpas_wps_er_add_pin(struct wpa_supplicant *wpa_s, const u8 *addr,
52*f05cddf9SRui Paulo 			const char *uuid, const char *pin);
53e28a4053SRui Paulo int wpas_wps_er_pbc(struct wpa_supplicant *wpa_s, const char *uuid);
54e28a4053SRui Paulo int wpas_wps_er_learn(struct wpa_supplicant *wpa_s, const char *uuid,
55e28a4053SRui Paulo 		      const char *pin);
56*f05cddf9SRui Paulo int wpas_wps_er_set_config(struct wpa_supplicant *wpa_s, const char *uuid,
57*f05cddf9SRui Paulo 			   int id);
58*f05cddf9SRui Paulo int wpas_wps_er_config(struct wpa_supplicant *wpa_s, const char *uuid,
59*f05cddf9SRui Paulo 		       const char *pin, struct wps_new_ap_settings *settings);
60*f05cddf9SRui Paulo struct wpabuf * wpas_wps_er_nfc_config_token(struct wpa_supplicant *wpa_s,
61*f05cddf9SRui Paulo 					     int ndef, const char *uuid);
62e28a4053SRui Paulo int wpas_wps_terminate_pending(struct wpa_supplicant *wpa_s);
63*f05cddf9SRui Paulo int wpas_wps_in_progress(struct wpa_supplicant *wpa_s);
64*f05cddf9SRui Paulo void wpas_wps_update_config(struct wpa_supplicant *wpa_s);
65*f05cddf9SRui Paulo struct wpabuf * wpas_wps_nfc_token(struct wpa_supplicant *wpa_s, int ndef);
66*f05cddf9SRui Paulo int wpas_wps_start_nfc(struct wpa_supplicant *wpa_s, const u8 *bssid);
67*f05cddf9SRui Paulo int wpas_wps_nfc_tag_read(struct wpa_supplicant *wpa_s,
68*f05cddf9SRui Paulo 			  const struct wpabuf *data);
69*f05cddf9SRui Paulo struct wpabuf * wpas_wps_nfc_handover_req(struct wpa_supplicant *wpa_s);
70*f05cddf9SRui Paulo struct wpabuf * wpas_wps_nfc_handover_sel(struct wpa_supplicant *wpa_s);
71*f05cddf9SRui Paulo int wpas_wps_nfc_rx_handover_req(struct wpa_supplicant *wpa_s,
72*f05cddf9SRui Paulo 				 const struct wpabuf *data);
73*f05cddf9SRui Paulo int wpas_wps_nfc_rx_handover_sel(struct wpa_supplicant *wpa_s,
74*f05cddf9SRui Paulo 				 const struct wpabuf *data);
75*f05cddf9SRui Paulo void wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
76*f05cddf9SRui Paulo 			     struct wpa_scan_results *scan_res);
77*f05cddf9SRui Paulo void wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s, const u8 *bssid);
7839beb93cSSam Leffler 
7939beb93cSSam Leffler #else /* CONFIG_WPS */
8039beb93cSSam Leffler 
8139beb93cSSam Leffler static inline int wpas_wps_init(struct wpa_supplicant *wpa_s)
8239beb93cSSam Leffler {
8339beb93cSSam Leffler 	return 0;
8439beb93cSSam Leffler }
8539beb93cSSam Leffler 
8639beb93cSSam Leffler static inline void wpas_wps_deinit(struct wpa_supplicant *wpa_s)
8739beb93cSSam Leffler {
8839beb93cSSam Leffler }
8939beb93cSSam Leffler 
9039beb93cSSam Leffler static inline int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
9139beb93cSSam Leffler {
9239beb93cSSam Leffler 	return 0;
9339beb93cSSam Leffler }
9439beb93cSSam Leffler 
9539beb93cSSam Leffler static inline u8 wpas_wps_get_req_type(struct wpa_ssid *ssid)
9639beb93cSSam Leffler {
9739beb93cSSam Leffler 	return 0;
9839beb93cSSam Leffler }
9939beb93cSSam Leffler 
10039beb93cSSam Leffler static inline int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
10139beb93cSSam Leffler 					  struct wpa_ssid *ssid,
102*f05cddf9SRui Paulo 					  struct wpa_bss *bss)
10339beb93cSSam Leffler {
10439beb93cSSam Leffler 	return -1;
10539beb93cSSam Leffler }
10639beb93cSSam Leffler 
10739beb93cSSam Leffler static inline int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
10839beb93cSSam Leffler 					    struct wpa_ssid *ssid,
109*f05cddf9SRui Paulo 					    struct wpa_bss *bss)
11039beb93cSSam Leffler {
11139beb93cSSam Leffler 	return 0;
11239beb93cSSam Leffler }
11339beb93cSSam Leffler 
11439beb93cSSam Leffler static inline int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
115e28a4053SRui Paulo 					    struct wpa_bss *selected,
11639beb93cSSam Leffler 					    struct wpa_ssid *ssid)
11739beb93cSSam Leffler {
11839beb93cSSam Leffler 	return 0;
11939beb93cSSam Leffler }
12039beb93cSSam Leffler 
12139beb93cSSam Leffler static inline void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s)
12239beb93cSSam Leffler {
12339beb93cSSam Leffler }
12439beb93cSSam Leffler 
12539beb93cSSam Leffler static inline int wpas_wps_searching(struct wpa_supplicant *wpa_s)
12639beb93cSSam Leffler {
12739beb93cSSam Leffler 	return 0;
12839beb93cSSam Leffler }
12939beb93cSSam Leffler 
130*f05cddf9SRui Paulo static inline void wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
131*f05cddf9SRui Paulo 					   struct wpa_scan_results *scan_res)
132*f05cddf9SRui Paulo {
133*f05cddf9SRui Paulo }
134*f05cddf9SRui Paulo 
135*f05cddf9SRui Paulo static inline void wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s,
136*f05cddf9SRui Paulo 					 const u8 *bssid)
137*f05cddf9SRui Paulo {
138*f05cddf9SRui Paulo }
139*f05cddf9SRui Paulo 
14039beb93cSSam Leffler #endif /* CONFIG_WPS */
14139beb93cSSam Leffler 
14239beb93cSSam Leffler #endif /* WPS_SUPPLICANT_H */
143