5 #ifndef P2P_SUPPLICANT_H
6 #define P2P_SUPPLICANT_H
10 enum p2p_send_action_result;
13 struct wps_event_fail;
16 enum wpas_p2p_channel_update_trig {
17 WPAS_P2P_CHANNEL_UPDATE_ANY,
18 WPAS_P2P_CHANNEL_UPDATE_DRIVER,
19 WPAS_P2P_CHANNEL_UPDATE_STATE_CHANGE,
20 WPAS_P2P_CHANNEL_UPDATE_AVOID,
21 WPAS_P2P_CHANNEL_UPDATE_DISALLOW,
22 WPAS_P2P_CHANNEL_UPDATE_CS,
26 const char *conf_p2p_dev);
28 const u8 *ssid,
size_t ssid_len);
30 const u8 *peer_dev_addr);
32 const char *pin,
enum p2p_wps_method wps_method,
33 int persistent_group,
int auto_join,
int join,
34 int auth,
int go_intent,
int freq,
int persistent_id,
35 int pd,
int ht40,
int vht);
36 int wpas_p2p_handle_frequency_conflicts(
struct wpa_supplicant *wpa_s,
39 int freq,
int ht40,
int vht);
41 struct wpa_ssid *ssid,
int addr_allocated,
42 int force_freq,
int neg_freq,
int ht40,
44 int connection_timeout,
int force_scan);
47 enum wpas_p2p_prov_disc_use {
48 WPAS_P2P_PD_FOR_GO_NEG,
53 int wpas_p2p_prov_disc(
struct wpa_supplicant *wpa_s,
const u8 *peer_addr,
54 const char *config_method,
55 enum wpas_p2p_prov_disc_use use,
57 void wpas_send_action_tx_status(
struct wpa_supplicant *wpa_s,
const u8 *dst,
58 const u8 *data,
size_t data_len,
59 enum p2p_send_action_result result);
60 int wpas_p2p_scan_result_text(
const u8 *ies,
size_t ies_len,
char *buf,
62 enum p2p_discovery_type;
63 int wpas_p2p_find(
struct wpa_supplicant *wpa_s,
unsigned int timeout,
64 enum p2p_discovery_type type,
65 unsigned int num_req_dev_types,
const u8 *req_dev_types,
66 const u8 *dev_id,
unsigned int search_delay,
67 u8 seek_cnt,
const char **seek_string,
int freq);
69 int wpas_p2p_listen(
struct wpa_supplicant *wpa_s,
unsigned int timeout);
70 int wpas_p2p_listen_start(
struct wpa_supplicant *wpa_s,
unsigned int timeout);
74 u64 wpas_p2p_sd_request(
struct wpa_supplicant *wpa_s,
const u8 *dst,
75 const struct wpabuf *tlvs);
76 u64 wpas_p2p_sd_request_asp(
struct wpa_supplicant *wpa_s,
const u8 *dst, u8
id,
77 const char *svc_str,
const char *info_substr);
78 u64 wpas_p2p_sd_request_upnp(
struct wpa_supplicant *wpa_s,
const u8 *dst,
79 u8 version,
const char *query);
81 const u8 *dst,
const char *role);
82 int wpas_p2p_sd_cancel_request(
struct wpa_supplicant *wpa_s, u64 req);
84 const u8 *dst, u8 dialog_token,
85 const struct wpabuf *resp_tlvs);
91 const struct wpabuf *query);
92 int wpas_p2p_service_add_upnp(
struct wpa_supplicant *wpa_s, u8 version,
94 int wpas_p2p_service_del_upnp(
struct wpa_supplicant *wpa_s, u8 version,
96 int wpas_p2p_service_add_asp(
struct wpa_supplicant *wpa_s,
int auto_accept,
97 u32 adv_id,
const char *adv_str, u8 svc_state,
98 u16 config_methods,
const char *svc_info,
99 const u8 *cpt_priority);
100 int wpas_p2p_service_del_asp(
struct wpa_supplicant *wpa_s, u32 adv_id);
102 int wpas_p2p_service_p2ps_id_exists(
struct wpa_supplicant *wpa_s, u32 adv_id);
103 void wpas_sd_request(
void *ctx,
int freq,
const u8 *sa, u8 dialog_token,
104 u16 update_indic,
const u8 *tlvs,
size_t tlvs_len);
105 void wpas_sd_response(
void *ctx,
const u8 *sa, u16 update_indic,
106 const u8 *tlvs,
size_t tlvs_len);
107 int wpas_p2p_reject(
struct wpa_supplicant *wpa_s,
const u8 *addr);
108 int wpas_p2p_invite(
struct wpa_supplicant *wpa_s,
const u8 *peer_addr,
109 struct wpa_ssid *ssid,
const u8 *go_dev_addr,
int freq,
110 int ht40,
int vht,
int pref_freq);
111 int wpas_p2p_invite_group(
struct wpa_supplicant *wpa_s,
const char *ifname,
112 const u8 *peer_addr,
const u8 *go_dev_addr);
113 int wpas_p2p_presence_req(
struct wpa_supplicant *wpa_s, u32 duration1,
114 u32 interval1, u32 duration2, u32 interval2);
115 int wpas_p2p_ext_listen(
struct wpa_supplicant *wpa_s,
unsigned int period,
116 unsigned int interval);
117 int wpas_p2p_deauth_notif(
struct wpa_supplicant *wpa_s,
const u8 *bssid,
118 u16 reason_code,
const u8 *ie,
size_t ie_len,
119 int locally_generated);
120 void wpas_p2p_disassoc_notif(
struct wpa_supplicant *wpa_s,
const u8 *bssid,
121 u16 reason_code,
const u8 *ie,
size_t ie_len,
122 int locally_generated);
123 int wpas_p2p_set_noa(
struct wpa_supplicant *wpa_s, u8 count,
int start,
125 int wpas_p2p_set_cross_connect(
struct wpa_supplicant *wpa_s,
int enabled);
127 int wpas_p2p_unauthorize(
struct wpa_supplicant *wpa_s,
const char *addr);
130 const u8 *addr,
const u8 *
ssid,
132 void wpas_p2p_notify_ap_sta_authorized(
struct wpa_supplicant *wpa_s,
141 const u8 *p2p_dev_addr,
142 const u8 *
psk,
size_t psk_len);
143 void wpas_p2p_remove_client(
struct wpa_supplicant *wpa_s,
const u8 *peer,
150 const struct wpabuf *data,
int forced_freq);
151 int wpas_p2p_nfc_report_handover(
struct wpa_supplicant *wpa_s,
int init,
153 const struct wpabuf *sel,
int forced_freq);
154 int wpas_p2p_nfc_tag_enabled(
struct wpa_supplicant *wpa_s,
int enabled);
155 void wpas_p2p_pbc_overlap_cb(
void *eloop_ctx,
void *timeout_ctx);
163 int wpas_p2p_probe_req_rx(
struct wpa_supplicant *wpa_s,
const u8 *addr,
164 const u8 *dst,
const u8 *bssid,
165 const u8 *ie,
size_t ie_len,
166 unsigned int rx_freq,
int ssi_signal);
167 void wpas_p2p_wps_success(
struct wpa_supplicant *wpa_s,
const u8 *peer_addr,
171 enum wpas_p2p_channel_update_trig trig);
174 int freq_24,
int freq_5,
int freq_overall);
175 void wpas_p2p_rx_action(
struct wpa_supplicant *wpa_s,
const u8 *da,
176 const u8 *sa,
const u8 *bssid,
177 u8 category,
const u8 *data,
size_t len,
int freq);
179 unsigned int freq,
unsigned int duration);
182 void wpas_p2p_interface_unavailable(
struct wpa_supplicant *wpa_s);
188 void wpas_p2p_indicate_state_change(
struct wpa_supplicant *wpa_s);
196 struct wps_event_fail *fail);
211 static inline void wpas_p2p_completed(
struct wpa_supplicant *wpa_s)
215 static inline void wpas_p2p_update_config(
struct wpa_supplicant *wpa_s)
219 static inline int wpas_p2p_probe_req_rx(
struct wpa_supplicant *wpa_s,
221 const u8 *dst,
const u8 *bssid,
222 const u8 *ie,
size_t ie_len,
223 unsigned int rx_freq,
int ssi_signal)
228 static inline void wpas_p2p_wps_success(
struct wpa_supplicant *wpa_s,
229 const u8 *peer_addr,
int registrar)
235 enum wpas_p2p_channel_update_trig trig)
239 static inline void wpas_p2p_update_best_channels(
struct wpa_supplicant *wpa_s,
240 int freq_24,
int freq_5,
245 static inline void wpas_p2p_rx_action(
struct wpa_supplicant *wpa_s,
247 const u8 *sa,
const u8 *bssid,
248 u8 category,
const u8 *data,
size_t len,
255 unsigned int duration)
265 static inline void wpas_p2p_interface_unavailable(
struct wpa_supplicant *wpa_s)
269 static inline void wpas_p2p_notif_connected(
struct wpa_supplicant *wpa_s)
273 static inline void wpas_p2p_notif_disconnected(
struct wpa_supplicant *wpa_s)
277 static inline int wpas_p2p_notif_pbc_overlap(
struct wpa_supplicant *wpa_s)
282 static inline int wpas_p2p_4way_hs_failed(
struct wpa_supplicant *wpa_s)
287 static inline void wpas_p2p_ap_setup_failed(
struct wpa_supplicant *wpa_s)
291 static inline void wpas_p2p_indicate_state_change(
struct wpa_supplicant *wpa_s)
295 static inline void wpas_p2p_deinit_iface(
struct wpa_supplicant *wpa_s)
299 static inline void wpas_p2p_ap_deinit(
struct wpa_supplicant *wpa_s)
308 static inline int wpas_p2p_in_progress(
struct wpa_supplicant *wpa_s)
313 static inline int wpas_p2p_wps_eapol_cb(
struct wpa_supplicant *wpa_s)
318 static inline void wpas_p2p_wps_failed(
struct wpa_supplicant *wpa_s,
319 struct wps_event_fail *fail)
P2P peer information.
Definition: p2p.h:344
void wpas_p2p_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s, unsigned int freq)
Remain-on-channel timeout.
Definition: p2p_supplicant.c:5261
int wpas_p2p_disconnect(struct wpa_supplicant *wpa_s)
Disconnect from a P2P Group.
Definition: p2p_supplicant.c:7307
int mac_addr
MAC address policy.
Definition: config_ssid.h:780
int wpas_p2p_group_remove(struct wpa_supplicant *wpa_s, const char *ifname)
Remove a P2P group.
Definition: p2p_supplicant.c:5302
size_t ssid_len
Length of the SSID.
Definition: config_ssid.h:121
Internal, global data for all wpa_supplicant interfaces.
Definition: wpa_supplicant_i.h:273
u8 psk[32]
WPA pre-shared key (256 bits)
Definition: config_ssid.h:165
int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
Initialize P2P module for wpa_supplicant.
Definition: p2p_supplicant.c:4062
int wpas_p2p_group_add(struct wpa_supplicant *wpa_s, int persistent_group, int freq, int ht40, int vht)
Add a new P2P group with local end as Group Owner.
Definition: p2p_supplicant.c:5750
List of supported channels.
Definition: p2p.h:44
Supported hardware mode information.
Definition: driver.h:132
void wpas_p2p_remain_on_channel_cb(struct wpa_supplicant *wpa_s, unsigned int freq, unsigned int duration)
Indication of remain-on-channel start.
Definition: p2p_supplicant.c:5221
int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr, const char *pin, enum p2p_wps_method wps_method, int persistent_group, int auto_join, int join, int auth, int go_intent, int freq, int persistent_id, int pd, int ht40, int vht)
Request P2P Group Formation to be started.
Definition: p2p_supplicant.c:5074
P2P Group Owner Negotiation results.
Definition: p2p.h:85
void wpas_p2p_deinit(struct wpa_supplicant *wpa_s)
Deinitialize per-interface P2P data.
Definition: p2p_supplicant.c:4241
BSS table.
Definition: bss.h:52
u8 * ssid
Service set identifier (network name)
Definition: config_ssid.h:115
void wpas_p2p_network_removed(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
Definition: p2p_supplicant.c:7359
Internal data for wpa_supplicant interface.
Definition: wpa_supplicant_i.h:451
Internal P2P module per-group data.
Definition: p2p_group.c:31
Network configuration data.
Definition: config_ssid.h:52