xref: /freebsd/contrib/wpa/wpa_supplicant/wps_supplicant.h (revision a90b9d0159070121c221b966469c3e36d912bf82)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * wpa_supplicant / WPS integration
3f05cddf9SRui Paulo  * Copyright (c) 2008-2012, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
5f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6f05cddf9SRui Paulo  * See README for more details.
739beb93cSSam Leffler  */
839beb93cSSam Leffler 
939beb93cSSam Leffler #ifndef WPS_SUPPLICANT_H
1039beb93cSSam Leffler #define WPS_SUPPLICANT_H
1139beb93cSSam Leffler 
12f05cddf9SRui 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);
32f05cddf9SRui Paulo int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
334bc52338SCy Schubert 		       int p2p_group, int multi_ap_backhaul_sta);
3439beb93cSSam Leffler int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
35f05cddf9SRui Paulo 		       const char *pin, int p2p_group, u16 dev_pw_id);
36325151a3SRui Paulo void wpas_wps_pbc_overlap(struct wpa_supplicant *wpa_s);
37f05cddf9SRui Paulo int wpas_wps_cancel(struct wpa_supplicant *wpa_s);
3839beb93cSSam Leffler int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
39e28a4053SRui Paulo 		       const char *pin, struct wps_new_ap_settings *settings);
4039beb93cSSam Leffler int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
41f05cddf9SRui Paulo 			    struct wpa_ssid *ssid, struct wpa_bss *bss);
4239beb93cSSam Leffler int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
43f05cddf9SRui Paulo 			      struct wpa_ssid *ssid, struct wpa_bss *bss);
4439beb93cSSam Leffler int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
45e28a4053SRui Paulo 			      struct wpa_bss *selected, struct wpa_ssid *ssid);
4639beb93cSSam Leffler void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s);
4739beb93cSSam Leffler int wpas_wps_searching(struct wpa_supplicant *wpa_s);
48e28a4053SRui Paulo int wpas_wps_scan_result_text(const u8 *ies, size_t ies_len, char *pos,
49e28a4053SRui Paulo 			      char *end);
50f05cddf9SRui Paulo int wpas_wps_er_start(struct wpa_supplicant *wpa_s, const char *filter);
515b9c547cSRui Paulo void wpas_wps_er_stop(struct wpa_supplicant *wpa_s);
52f05cddf9SRui Paulo int wpas_wps_er_add_pin(struct wpa_supplicant *wpa_s, const u8 *addr,
53f05cddf9SRui Paulo 			const char *uuid, const char *pin);
54e28a4053SRui Paulo int wpas_wps_er_pbc(struct wpa_supplicant *wpa_s, const char *uuid);
55e28a4053SRui Paulo int wpas_wps_er_learn(struct wpa_supplicant *wpa_s, const char *uuid,
56e28a4053SRui Paulo 		      const char *pin);
57f05cddf9SRui Paulo int wpas_wps_er_set_config(struct wpa_supplicant *wpa_s, const char *uuid,
58f05cddf9SRui Paulo 			   int id);
59f05cddf9SRui Paulo int wpas_wps_er_config(struct wpa_supplicant *wpa_s, const char *uuid,
60f05cddf9SRui Paulo 		       const char *pin, struct wps_new_ap_settings *settings);
61f05cddf9SRui Paulo struct wpabuf * wpas_wps_er_nfc_config_token(struct wpa_supplicant *wpa_s,
62f05cddf9SRui Paulo 					     int ndef, const char *uuid);
63e28a4053SRui Paulo int wpas_wps_terminate_pending(struct wpa_supplicant *wpa_s);
64f05cddf9SRui Paulo void wpas_wps_update_config(struct wpa_supplicant *wpa_s);
65c1d255d3SCy Schubert void wpas_wps_update_mac_addr(struct wpa_supplicant *wpa_s);
665b9c547cSRui Paulo struct wpabuf * wpas_wps_nfc_config_token(struct wpa_supplicant *wpa_s,
675b9c547cSRui Paulo 					  int ndef, const char *id_str);
68f05cddf9SRui Paulo struct wpabuf * wpas_wps_nfc_token(struct wpa_supplicant *wpa_s, int ndef);
695b9c547cSRui Paulo int wpas_wps_start_nfc(struct wpa_supplicant *wpa_s, const u8 *dev_addr,
705b9c547cSRui Paulo 		       const u8 *bssid,
715b9c547cSRui Paulo 		       const struct wpabuf *dev_pw, u16 dev_pw_id,
725b9c547cSRui Paulo 		       int p2p_group, const u8 *peer_pubkey_hash,
735b9c547cSRui Paulo 		       const u8 *ssid, size_t ssid_len, int freq);
74f05cddf9SRui Paulo int wpas_wps_nfc_tag_read(struct wpa_supplicant *wpa_s,
755b9c547cSRui Paulo 			  const struct wpabuf *data, int forced_freq);
765b9c547cSRui Paulo struct wpabuf * wpas_wps_nfc_handover_req(struct wpa_supplicant *wpa_s,
775b9c547cSRui Paulo 					  int ndef);
785b9c547cSRui Paulo struct wpabuf * wpas_wps_nfc_handover_sel(struct wpa_supplicant *wpa_s,
795b9c547cSRui Paulo 					  int ndef, int cr, const char *uuid);
805b9c547cSRui Paulo int wpas_wps_nfc_report_handover(struct wpa_supplicant *wpa_s,
815b9c547cSRui Paulo 				 const struct wpabuf *req,
825b9c547cSRui Paulo 				 const struct wpabuf *sel);
835b9c547cSRui Paulo int wpas_er_wps_nfc_report_handover(struct wpa_supplicant *wpa_s,
845b9c547cSRui Paulo 				    const struct wpabuf *req,
855b9c547cSRui Paulo 				    const struct wpabuf *sel);
86f05cddf9SRui Paulo void wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
87f05cddf9SRui Paulo 			     struct wpa_scan_results *scan_res);
88*a90b9d01SCy Schubert bool wpas_wps_partner_link_scan_done(struct wpa_supplicant *wpa_s);
89*a90b9d01SCy Schubert bool wpas_wps_partner_link_overlap_detect(struct wpa_supplicant *wpa_s);
90f05cddf9SRui Paulo void wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s, const u8 *bssid);
91780fb4a2SCy Schubert int wpas_wps_reenable_networks_pending(struct wpa_supplicant *wpa_s);
9239beb93cSSam Leffler 
9339beb93cSSam Leffler #else /* CONFIG_WPS */
9439beb93cSSam Leffler 
wpas_wps_init(struct wpa_supplicant * wpa_s)9539beb93cSSam Leffler static inline int wpas_wps_init(struct wpa_supplicant *wpa_s)
9639beb93cSSam Leffler {
9739beb93cSSam Leffler 	return 0;
9839beb93cSSam Leffler }
9939beb93cSSam Leffler 
wpas_wps_deinit(struct wpa_supplicant * wpa_s)10039beb93cSSam Leffler static inline void wpas_wps_deinit(struct wpa_supplicant *wpa_s)
10139beb93cSSam Leffler {
10239beb93cSSam Leffler }
10339beb93cSSam Leffler 
wpas_wps_eapol_cb(struct wpa_supplicant * wpa_s)10439beb93cSSam Leffler static inline int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s)
10539beb93cSSam Leffler {
10639beb93cSSam Leffler 	return 0;
10739beb93cSSam Leffler }
10839beb93cSSam Leffler 
wpas_wps_get_req_type(struct wpa_ssid * ssid)10939beb93cSSam Leffler static inline u8 wpas_wps_get_req_type(struct wpa_ssid *ssid)
11039beb93cSSam Leffler {
11139beb93cSSam Leffler 	return 0;
11239beb93cSSam Leffler }
11339beb93cSSam Leffler 
wpas_wps_ssid_bss_match(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,struct wpa_bss * bss)11439beb93cSSam Leffler static inline int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s,
11539beb93cSSam Leffler 					  struct wpa_ssid *ssid,
116f05cddf9SRui Paulo 					  struct wpa_bss *bss)
11739beb93cSSam Leffler {
11839beb93cSSam Leffler 	return -1;
11939beb93cSSam Leffler }
12039beb93cSSam Leffler 
wpas_wps_ssid_wildcard_ok(struct wpa_supplicant * wpa_s,struct wpa_ssid * ssid,struct wpa_bss * bss)12139beb93cSSam Leffler static inline int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s,
12239beb93cSSam Leffler 					    struct wpa_ssid *ssid,
123f05cddf9SRui Paulo 					    struct wpa_bss *bss)
12439beb93cSSam Leffler {
12539beb93cSSam Leffler 	return 0;
12639beb93cSSam Leffler }
12739beb93cSSam Leffler 
wpas_wps_scan_pbc_overlap(struct wpa_supplicant * wpa_s,struct wpa_bss * selected,struct wpa_ssid * ssid)12839beb93cSSam Leffler static inline int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s,
129e28a4053SRui Paulo 					    struct wpa_bss *selected,
13039beb93cSSam Leffler 					    struct wpa_ssid *ssid)
13139beb93cSSam Leffler {
13239beb93cSSam Leffler 	return 0;
13339beb93cSSam Leffler }
13439beb93cSSam Leffler 
wpas_wps_notify_scan_results(struct wpa_supplicant * wpa_s)13539beb93cSSam Leffler static inline void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s)
13639beb93cSSam Leffler {
13739beb93cSSam Leffler }
13839beb93cSSam Leffler 
wpas_wps_searching(struct wpa_supplicant * wpa_s)13939beb93cSSam Leffler static inline int wpas_wps_searching(struct wpa_supplicant *wpa_s)
14039beb93cSSam Leffler {
14139beb93cSSam Leffler 	return 0;
14239beb93cSSam Leffler }
14339beb93cSSam Leffler 
wpas_wps_update_ap_info(struct wpa_supplicant * wpa_s,struct wpa_scan_results * scan_res)144f05cddf9SRui Paulo static inline void wpas_wps_update_ap_info(struct wpa_supplicant *wpa_s,
145f05cddf9SRui Paulo 					   struct wpa_scan_results *scan_res)
146f05cddf9SRui Paulo {
147f05cddf9SRui Paulo }
148f05cddf9SRui Paulo 
wpas_wps_partner_link_scan_done(struct wpa_supplicant * wpa_s)149*a90b9d01SCy Schubert static inline bool wpas_wps_partner_link_scan_done(struct wpa_supplicant *wpa_s)
150*a90b9d01SCy Schubert {
151*a90b9d01SCy Schubert 	return true;
152*a90b9d01SCy Schubert }
153*a90b9d01SCy Schubert 
154*a90b9d01SCy Schubert static inline bool
wpas_wps_partner_link_overlap_detect(struct wpa_supplicant * wpa_s)155*a90b9d01SCy Schubert wpas_wps_partner_link_overlap_detect(struct wpa_supplicant *wpa_s)
156*a90b9d01SCy Schubert {
157*a90b9d01SCy Schubert 	return false;
158*a90b9d01SCy Schubert }
159*a90b9d01SCy Schubert 
wpas_wps_notify_assoc(struct wpa_supplicant * wpa_s,const u8 * bssid)160f05cddf9SRui Paulo static inline void wpas_wps_notify_assoc(struct wpa_supplicant *wpa_s,
161f05cddf9SRui Paulo 					 const u8 *bssid)
162f05cddf9SRui Paulo {
163f05cddf9SRui Paulo }
164f05cddf9SRui Paulo 
165780fb4a2SCy Schubert static inline int
wpas_wps_reenable_networks_pending(struct wpa_supplicant * wpa_s)166780fb4a2SCy Schubert wpas_wps_reenable_networks_pending(struct wpa_supplicant *wpa_s)
167780fb4a2SCy Schubert {
168780fb4a2SCy Schubert 	return 0;
169780fb4a2SCy Schubert }
170780fb4a2SCy Schubert 
wpas_wps_update_mac_addr(struct wpa_supplicant * wpa_s)171c1d255d3SCy Schubert static inline void wpas_wps_update_mac_addr(struct wpa_supplicant *wpa_s)
172c1d255d3SCy Schubert {
173c1d255d3SCy Schubert }
174c1d255d3SCy Schubert 
17539beb93cSSam Leffler #endif /* CONFIG_WPS */
17639beb93cSSam Leffler 
17739beb93cSSam Leffler #endif /* WPS_SUPPLICANT_H */
178