1 /* 2 * wpa_supplicant / WPS integration 3 * Copyright (c) 2008-2009, Jouni Malinen <j@w1.fi> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * published by the Free Software Foundation. 8 * 9 * Alternatively, this software may be distributed under the terms of BSD 10 * license. 11 * 12 * See README and COPYING for more details. 13 */ 14 15 #ifndef WPS_SUPPLICANT_H 16 #define WPS_SUPPLICANT_H 17 18 struct wpa_scan_res; 19 20 #ifdef CONFIG_WPS 21 22 #include "wps/wps.h" 23 #include "wps/wps_defs.h" 24 25 struct wpa_bss; 26 27 struct wps_new_ap_settings { 28 const char *ssid_hex; 29 const char *auth; 30 const char *encr; 31 const char *key_hex; 32 }; 33 34 int wpas_wps_init(struct wpa_supplicant *wpa_s); 35 void wpas_wps_deinit(struct wpa_supplicant *wpa_s); 36 int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s); 37 enum wps_request_type wpas_wps_get_req_type(struct wpa_ssid *ssid); 38 int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid); 39 int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid, 40 const char *pin); 41 int wpas_wps_start_oob(struct wpa_supplicant *wpa_s, char *device_type, 42 char *path, char *method, char *name); 43 int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid, 44 const char *pin, struct wps_new_ap_settings *settings); 45 int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s, 46 struct wpa_ssid *ssid, struct wpa_scan_res *bss); 47 int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s, 48 struct wpa_ssid *ssid, struct wpa_scan_res *bss); 49 int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s, 50 struct wpa_bss *selected, struct wpa_ssid *ssid); 51 void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s); 52 int wpas_wps_searching(struct wpa_supplicant *wpa_s); 53 int wpas_wps_scan_result_text(const u8 *ies, size_t ies_len, char *pos, 54 char *end); 55 int wpas_wps_er_start(struct wpa_supplicant *wpa_s); 56 int wpas_wps_er_stop(struct wpa_supplicant *wpa_s); 57 int wpas_wps_er_add_pin(struct wpa_supplicant *wpa_s, const char *uuid, 58 const char *pin); 59 int wpas_wps_er_pbc(struct wpa_supplicant *wpa_s, const char *uuid); 60 int wpas_wps_er_learn(struct wpa_supplicant *wpa_s, const char *uuid, 61 const char *pin); 62 int wpas_wps_terminate_pending(struct wpa_supplicant *wpa_s); 63 64 #else /* CONFIG_WPS */ 65 66 static inline int wpas_wps_init(struct wpa_supplicant *wpa_s) 67 { 68 return 0; 69 } 70 71 static inline void wpas_wps_deinit(struct wpa_supplicant *wpa_s) 72 { 73 } 74 75 static inline int wpas_wps_eapol_cb(struct wpa_supplicant *wpa_s) 76 { 77 return 0; 78 } 79 80 static inline u8 wpas_wps_get_req_type(struct wpa_ssid *ssid) 81 { 82 return 0; 83 } 84 85 static inline int wpas_wps_ssid_bss_match(struct wpa_supplicant *wpa_s, 86 struct wpa_ssid *ssid, 87 struct wpa_scan_res *bss) 88 { 89 return -1; 90 } 91 92 static inline int wpas_wps_ssid_wildcard_ok(struct wpa_supplicant *wpa_s, 93 struct wpa_ssid *ssid, 94 struct wpa_scan_res *bss) 95 { 96 return 0; 97 } 98 99 static inline int wpas_wps_scan_pbc_overlap(struct wpa_supplicant *wpa_s, 100 struct wpa_bss *selected, 101 struct wpa_ssid *ssid) 102 { 103 return 0; 104 } 105 106 static inline void wpas_wps_notify_scan_results(struct wpa_supplicant *wpa_s) 107 { 108 } 109 110 static inline int wpas_wps_searching(struct wpa_supplicant *wpa_s) 111 { 112 return 0; 113 } 114 115 #endif /* CONFIG_WPS */ 116 117 #endif /* WPS_SUPPLICANT_H */ 118