]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/p2p_supplicant.h
nl80211: Add VHT 160 MHz channel flags
[thirdparty/hostap.git] / wpa_supplicant / p2p_supplicant.h
CommitLineData
b22128ef
JM
1/*
2 * wpa_supplicant - P2P
3 * Copyright (c) 2009-2010, Atheros Communications
4 *
e22d4d95
JM
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
b22128ef
JM
7 */
8
9#ifndef P2P_SUPPLICANT_H
10#define P2P_SUPPLICANT_H
11
12enum p2p_wps_method;
812bf56a 13struct p2p_go_neg_results;
93b7ddd0 14enum p2p_send_action_result;
c5db8e51 15struct p2p_peer_info;
54733624 16struct p2p_channels;
c68f6200 17struct wps_event_fail;
6d908514 18struct p2ps_provision;
b22128ef 19
3a8f008a
IP
20enum wpas_p2p_channel_update_trig {
21 WPAS_P2P_CHANNEL_UPDATE_ANY,
22 WPAS_P2P_CHANNEL_UPDATE_DRIVER,
23 WPAS_P2P_CHANNEL_UPDATE_STATE_CHANGE,
24 WPAS_P2P_CHANNEL_UPDATE_AVOID,
25 WPAS_P2P_CHANNEL_UPDATE_DISALLOW,
26 WPAS_P2P_CHANNEL_UPDATE_CS,
27};
28
f1a61311
JM
29int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
30 const char *conf_p2p_dev);
6f04642f
TB
31struct wpa_supplicant * wpas_get_p2p_go_iface(struct wpa_supplicant *wpa_s,
32 const u8 *ssid, size_t ssid_len);
33struct wpa_supplicant * wpas_get_p2p_client_iface(struct wpa_supplicant *wpa_s,
34 const u8 *peer_dev_addr);
b22128ef
JM
35int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
36 const char *pin, enum p2p_wps_method wps_method,
b31be3a0 37 int persistent_group, int auto_join, int join,
3bc462cb 38 int auth, int go_intent, int freq, int persistent_id,
20ea1ca4 39 int pd, int ht40, int vht);
8567866d
JJ
40int wpas_p2p_handle_frequency_conflicts(struct wpa_supplicant *wpa_s,
41 int freq, struct wpa_ssid *ssid);
b22128ef 42int wpas_p2p_group_add(struct wpa_supplicant *wpa_s, int persistent_group,
20ea1ca4 43 int freq, int ht40, int vht);
b22128ef
JM
44int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s,
45 struct wpa_ssid *ssid, int addr_allocated,
062a7c0d
MS
46 int force_freq, int neg_freq, int ht40,
47 int vht, const struct p2p_channels *channels,
dfaf11d6 48 int connection_timeout, int force_scan);
b22128ef 49struct p2p_group * wpas_p2p_group_init(struct wpa_supplicant *wpa_s,
6f251b6b 50 struct wpa_ssid *ssid);
0918c4bf
JM
51enum wpas_p2p_prov_disc_use {
52 WPAS_P2P_PD_FOR_GO_NEG,
53 WPAS_P2P_PD_FOR_JOIN,
6d908514
KV
54 WPAS_P2P_PD_AUTO,
55 WPAS_P2P_PD_FOR_ASP
0918c4bf 56};
b22128ef 57int wpas_p2p_prov_disc(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
0918c4bf 58 const char *config_method,
6d908514
KV
59 enum wpas_p2p_prov_disc_use use,
60 struct p2ps_provision *p2ps_prov);
b22128ef 61void wpas_send_action_tx_status(struct wpa_supplicant *wpa_s, const u8 *dst,
93b7ddd0
JM
62 const u8 *data, size_t data_len,
63 enum p2p_send_action_result result);
b22128ef
JM
64int wpas_p2p_scan_result_text(const u8 *ies, size_t ies_len, char *buf,
65 char *end);
66enum p2p_discovery_type;
67int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout,
046ef4aa 68 enum p2p_discovery_type type,
6d92fa6e 69 unsigned int num_req_dev_types, const u8 *req_dev_types,
51775096 70 const u8 *dev_id, unsigned int search_delay,
fa9f381f 71 u8 seek_cnt, const char **seek_string, int freq);
b22128ef
JM
72void wpas_p2p_stop_find(struct wpa_supplicant *wpa_s);
73int wpas_p2p_listen(struct wpa_supplicant *wpa_s, unsigned int timeout);
49e1e9ca 74int wpas_p2p_listen_start(struct wpa_supplicant *wpa_s, unsigned int timeout);
4c08c0bd 75int wpas_p2p_assoc_req_ie(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
b22128ef 76 u8 *buf, size_t len, int p2p_group);
b22128ef 77void wpas_p2p_scan_ie(struct wpa_supplicant *wpa_s, struct wpabuf *ies);
7165c5dc
JM
78u64 wpas_p2p_sd_request(struct wpa_supplicant *wpa_s, const u8 *dst,
79 const struct wpabuf *tlvs);
5a4102ce
KV
80u64 wpas_p2p_sd_request_asp(struct wpa_supplicant *wpa_s, const u8 *dst, u8 id,
81 const char *svc_str, const char *info_substr);
7165c5dc
JM
82u64 wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst,
83 u8 version, const char *query);
347d6a5b
JM
84u64 wpas_p2p_sd_request_wifi_display(struct wpa_supplicant *wpa_s,
85 const u8 *dst, const char *role);
7165c5dc 86int wpas_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, u64 req);
b22128ef
JM
87void wpas_p2p_sd_response(struct wpa_supplicant *wpa_s, int freq,
88 const u8 *dst, u8 dialog_token,
89 const struct wpabuf *resp_tlvs);
90void wpas_p2p_sd_service_update(struct wpa_supplicant *wpa_s);
91void wpas_p2p_service_flush(struct wpa_supplicant *wpa_s);
92int wpas_p2p_service_add_bonjour(struct wpa_supplicant *wpa_s,
93 struct wpabuf *query, struct wpabuf *resp);
94int wpas_p2p_service_del_bonjour(struct wpa_supplicant *wpa_s,
95 const struct wpabuf *query);
96int wpas_p2p_service_add_upnp(struct wpa_supplicant *wpa_s, u8 version,
97 const char *service);
98int wpas_p2p_service_del_upnp(struct wpa_supplicant *wpa_s, u8 version,
99 const char *service);
ae9d45f3
KV
100int wpas_p2p_service_add_asp(struct wpa_supplicant *wpa_s, int auto_accept,
101 u32 adv_id, const char *adv_str, u8 svc_state,
e2b7fbf2
MS
102 u16 config_methods, const char *svc_info,
103 const u8 *cpt_priority);
ae9d45f3 104int wpas_p2p_service_del_asp(struct wpa_supplicant *wpa_s, u32 adv_id);
c40a8918 105void wpas_p2p_service_flush_asp(struct wpa_supplicant *wpa_s);
ae9d45f3 106int wpas_p2p_service_p2ps_id_exists(struct wpa_supplicant *wpa_s, u32 adv_id);
0f893285
JM
107void wpas_sd_request(void *ctx, int freq, const u8 *sa, u8 dialog_token,
108 u16 update_indic, const u8 *tlvs, size_t tlvs_len);
109void wpas_sd_response(void *ctx, const u8 *sa, u16 update_indic,
110 const u8 *tlvs, size_t tlvs_len);
b22128ef
JM
111int wpas_p2p_reject(struct wpa_supplicant *wpa_s, const u8 *addr);
112int wpas_p2p_invite(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
4d32c0c4 113 struct wpa_ssid *ssid, const u8 *go_dev_addr, int freq,
20ea1ca4 114 int ht40, int vht, int pref_freq);
b22128ef
JM
115int wpas_p2p_invite_group(struct wpa_supplicant *wpa_s, const char *ifname,
116 const u8 *peer_addr, const u8 *go_dev_addr);
b22128ef
JM
117int wpas_p2p_presence_req(struct wpa_supplicant *wpa_s, u32 duration1,
118 u32 interval1, u32 duration2, u32 interval2);
119int wpas_p2p_ext_listen(struct wpa_supplicant *wpa_s, unsigned int period,
120 unsigned int interval);
0aadd568
JM
121int wpas_p2p_deauth_notif(struct wpa_supplicant *wpa_s, const u8 *bssid,
122 u16 reason_code, const u8 *ie, size_t ie_len,
123 int locally_generated);
b22128ef 124void wpas_p2p_disassoc_notif(struct wpa_supplicant *wpa_s, const u8 *bssid,
3fc14102
JM
125 u16 reason_code, const u8 *ie, size_t ie_len,
126 int locally_generated);
aefb53bd
JM
127int wpas_p2p_set_noa(struct wpa_supplicant *wpa_s, u8 count, int start,
128 int duration);
72044390 129int wpas_p2p_set_cross_connect(struct wpa_supplicant *wpa_s, int enabled);
59eba7a2 130int wpas_p2p_cancel(struct wpa_supplicant *wpa_s);
9d562b79 131int wpas_p2p_unauthorize(struct wpa_supplicant *wpa_s, const char *addr);
3103f345 132int wpas_p2p_disconnect(struct wpa_supplicant *wpa_s);
87f841a1 133struct wpa_ssid * wpas_p2p_get_persistent(struct wpa_supplicant *wpa_s,
c427ac92
JM
134 const u8 *addr, const u8 *ssid,
135 size_t ssid_len);
fbdcfd57
JM
136void wpas_p2p_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s,
137 const u8 *addr);
aa9bb764 138int wpas_p2p_scan_no_go_seen(struct wpa_supplicant *wpa_s);
7aeac985
RM
139int wpas_p2p_get_ht40_mode(struct wpa_supplicant *wpa_s,
140 struct hostapd_hw_modes *mode, u8 channel);
ca9bc5b5
EP
141int wpas_p2p_get_vht80_center(struct wpa_supplicant *wpa_s,
142 struct hostapd_hw_modes *mode, u8 channel);
bee5d8e0
AK
143int wpas_p2p_get_vht160_center(struct wpa_supplicant *wpa_s,
144 struct hostapd_hw_modes *mode, u8 channel);
05a77b3b 145unsigned int wpas_p2p_search_delay(struct wpa_supplicant *wpa_s);
01a57fe4
JM
146void wpas_p2p_new_psk_cb(struct wpa_supplicant *wpa_s, const u8 *mac_addr,
147 const u8 *p2p_dev_addr,
148 const u8 *psk, size_t psk_len);
f2c56602
JM
149void wpas_p2p_remove_client(struct wpa_supplicant *wpa_s, const u8 *peer,
150 int iface_addr);
93588780
JM
151struct wpabuf * wpas_p2p_nfc_handover_req(struct wpa_supplicant *wpa_s,
152 int ndef);
153struct wpabuf * wpas_p2p_nfc_handover_sel(struct wpa_supplicant *wpa_s,
154 int ndef, int tag);
dd37a938 155int wpas_p2p_nfc_tag_process(struct wpa_supplicant *wpa_s,
b56f6c88 156 const struct wpabuf *data, int forced_freq);
db6ae69e
JM
157int wpas_p2p_nfc_report_handover(struct wpa_supplicant *wpa_s, int init,
158 const struct wpabuf *req,
b56f6c88 159 const struct wpabuf *sel, int forced_freq);
c4f87a70 160int wpas_p2p_nfc_tag_enabled(struct wpa_supplicant *wpa_s, int enabled);
ace0fbdb 161void wpas_p2p_pbc_overlap_cb(void *eloop_ctx, void *timeout_ctx);
b22128ef 162
f85f545e 163#ifdef CONFIG_P2P
bd10d938
JM
164
165int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s);
166void wpas_p2p_deinit(struct wpa_supplicant *wpa_s);
167void wpas_p2p_completed(struct wpa_supplicant *wpa_s);
168void wpas_p2p_update_config(struct wpa_supplicant *wpa_s);
169int wpas_p2p_probe_req_rx(struct wpa_supplicant *wpa_s, const u8 *addr,
170 const u8 *dst, const u8 *bssid,
171 const u8 *ie, size_t ie_len,
734ddf61 172 unsigned int rx_freq, int ssi_signal);
bd10d938
JM
173void wpas_p2p_wps_success(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
174 int registrar);
3a8f008a
IP
175
176void wpas_p2p_update_channel_list(struct wpa_supplicant *wpa_s,
177 enum wpas_p2p_channel_update_trig trig);
178
bd10d938
JM
179void wpas_p2p_update_best_channels(struct wpa_supplicant *wpa_s,
180 int freq_24, int freq_5, int freq_overall);
181void wpas_p2p_rx_action(struct wpa_supplicant *wpa_s, const u8 *da,
182 const u8 *sa, const u8 *bssid,
183 u8 category, const u8 *data, size_t len, int freq);
184void wpas_p2p_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
185 unsigned int freq, unsigned int duration);
186void wpas_p2p_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
187 unsigned int freq);
188void wpas_p2p_interface_unavailable(struct wpa_supplicant *wpa_s);
189void wpas_p2p_notif_connected(struct wpa_supplicant *wpa_s);
190void wpas_p2p_notif_disconnected(struct wpa_supplicant *wpa_s);
191int wpas_p2p_notif_pbc_overlap(struct wpa_supplicant *wpa_s);
5bf9a6c8 192int wpas_p2p_4way_hs_failed(struct wpa_supplicant *wpa_s);
b2b688d1 193void wpas_p2p_ap_setup_failed(struct wpa_supplicant *wpa_s);
bd10d938
JM
194void wpas_p2p_indicate_state_change(struct wpa_supplicant *wpa_s);
195void wpas_p2p_deinit_iface(struct wpa_supplicant *wpa_s);
196void wpas_p2p_ap_deinit(struct wpa_supplicant *wpa_s);
197void wpas_p2p_network_removed(struct wpa_supplicant *wpa_s,
198 struct wpa_ssid *ssid);
199int wpas_p2p_in_progress(struct wpa_supplicant *wpa_s);
200int wpas_p2p_wps_eapol_cb(struct wpa_supplicant *wpa_s);
201void wpas_p2p_wps_failed(struct wpa_supplicant *wpa_s,
202 struct wps_event_fail *fail);
26fc96e8 203int wpas_p2p_group_remove(struct wpa_supplicant *wpa_s, const char *ifname);
bd10d938 204
f85f545e 205#else /* CONFIG_P2P */
bd10d938
JM
206
207static inline int
208wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
209{
210 return 0;
211}
212
213static inline void wpas_p2p_deinit(struct wpa_supplicant *wpa_s)
214{
215}
216
217static inline void wpas_p2p_completed(struct wpa_supplicant *wpa_s)
218{
219}
220
221static inline void wpas_p2p_update_config(struct wpa_supplicant *wpa_s)
222{
223}
224
225static inline int wpas_p2p_probe_req_rx(struct wpa_supplicant *wpa_s,
226 const u8 *addr,
227 const u8 *dst, const u8 *bssid,
228 const u8 *ie, size_t ie_len,
734ddf61 229 unsigned int rx_freq, int ssi_signal)
bd10d938
JM
230{
231 return 0;
232}
233
234static inline void wpas_p2p_wps_success(struct wpa_supplicant *wpa_s,
235 const u8 *peer_addr, int registrar)
236{
237}
238
3a8f008a
IP
239static inline void
240wpas_p2p_update_channel_list(struct wpa_supplicant *wpa_s,
241 enum wpas_p2p_channel_update_trig trig)
bd10d938
JM
242{
243}
244
245static inline void wpas_p2p_update_best_channels(struct wpa_supplicant *wpa_s,
246 int freq_24, int freq_5,
247 int freq_overall)
248{
249}
250
251static inline void wpas_p2p_rx_action(struct wpa_supplicant *wpa_s,
252 const u8 *da,
253 const u8 *sa, const u8 *bssid,
254 u8 category, const u8 *data, size_t len,
255 int freq)
256{
257}
258
259static inline void wpas_p2p_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
260 unsigned int freq,
261 unsigned int duration)
262{
263}
264
265static inline void
266wpas_p2p_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
267 unsigned int freq)
268{
269}
270
271static inline void wpas_p2p_interface_unavailable(struct wpa_supplicant *wpa_s)
272{
273}
274
275static inline void wpas_p2p_notif_connected(struct wpa_supplicant *wpa_s)
276{
277}
278
279static inline void wpas_p2p_notif_disconnected(struct wpa_supplicant *wpa_s)
280{
281}
282
283static inline int wpas_p2p_notif_pbc_overlap(struct wpa_supplicant *wpa_s)
284{
285 return 0;
286}
287
5bf9a6c8
JM
288static inline int wpas_p2p_4way_hs_failed(struct wpa_supplicant *wpa_s)
289{
290 return 0;
291}
b2b688d1
VKE
292
293static inline void wpas_p2p_ap_setup_failed(struct wpa_supplicant *wpa_s)
294{
295}
bd10d938
JM
296
297static inline void wpas_p2p_indicate_state_change(struct wpa_supplicant *wpa_s)
298{
299}
300
301static inline void wpas_p2p_deinit_iface(struct wpa_supplicant *wpa_s)
302{
303}
304
305static inline void wpas_p2p_ap_deinit(struct wpa_supplicant *wpa_s)
306{
307}
308
309static inline void wpas_p2p_network_removed(struct wpa_supplicant *wpa_s,
310 struct wpa_ssid *ssid)
311{
312}
313
314static inline int wpas_p2p_in_progress(struct wpa_supplicant *wpa_s)
315{
316 return 0;
317}
318
319static inline int wpas_p2p_wps_eapol_cb(struct wpa_supplicant *wpa_s)
320{
321 return 0;
322}
323
324static inline void wpas_p2p_wps_failed(struct wpa_supplicant *wpa_s,
325 struct wps_event_fail *fail)
326{
327}
328
26fc96e8
JM
329static inline int wpas_p2p_group_remove(struct wpa_supplicant *wpa_s,
330 const char *ifname)
331{
332 return 0;
333}
334
f85f545e
JM
335#endif /* CONFIG_P2P */
336
b22128ef 337#endif /* P2P_SUPPLICANT_H */