1  /*
2   * wpa_supplicant/hostapd control interface library
3   * Copyright (c) 2004-2017, Jouni Malinen <j@w1.fi>
4   *
5   * This software may be distributed under the terms of the BSD license.
6   * See README for more details.
7   */
8  
9  #ifndef WPA_CTRL_H
10  #define WPA_CTRL_H
11  
12  #ifdef  __cplusplus
13  extern "C" {
14  #endif
15  
16  #define WPA_CTRL_IFACE_LINK_NAME	"link"
17  
18  /* wpa_supplicant control interface - fixed message prefixes */
19  
20  /** Interactive request for identity/password/pin */
21  #define WPA_CTRL_REQ "CTRL-REQ-"
22  
23  /** Response to identity/password/pin request */
24  #define WPA_CTRL_RSP "CTRL-RSP-"
25  
26  /* Event messages with fixed prefix */
27  /** Authentication completed successfully and data connection enabled */
28  #define WPA_EVENT_CONNECTED "CTRL-EVENT-CONNECTED "
29  /** Disconnected, data connection is not available */
30  #define WPA_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED "
31  /** Association rejected during connection attempt */
32  #define WPA_EVENT_ASSOC_REJECT "CTRL-EVENT-ASSOC-REJECT "
33  /** Authentication rejected during connection attempt */
34  #define WPA_EVENT_AUTH_REJECT "CTRL-EVENT-AUTH-REJECT "
35  /** wpa_supplicant is exiting */
36  #define WPA_EVENT_TERMINATING "CTRL-EVENT-TERMINATING "
37  /** Password change was completed successfully */
38  #define WPA_EVENT_PASSWORD_CHANGED "CTRL-EVENT-PASSWORD-CHANGED "
39  /** EAP-Request/Notification received */
40  #define WPA_EVENT_EAP_NOTIFICATION "CTRL-EVENT-EAP-NOTIFICATION "
41  /** EAP authentication started (EAP-Request/Identity received) */
42  #define WPA_EVENT_EAP_STARTED "CTRL-EVENT-EAP-STARTED "
43  /** EAP method proposed by the server */
44  #define WPA_EVENT_EAP_PROPOSED_METHOD "CTRL-EVENT-EAP-PROPOSED-METHOD "
45  /** EAP method selected */
46  #define WPA_EVENT_EAP_METHOD "CTRL-EVENT-EAP-METHOD "
47  /** EAP peer certificate from TLS */
48  #define WPA_EVENT_EAP_PEER_CERT "CTRL-EVENT-EAP-PEER-CERT "
49  /** EAP peer certificate alternative subject name component from TLS */
50  #define WPA_EVENT_EAP_PEER_ALT "CTRL-EVENT-EAP-PEER-ALT "
51  /** EAP TLS certificate chain validation error */
52  #define WPA_EVENT_EAP_TLS_CERT_ERROR "CTRL-EVENT-EAP-TLS-CERT-ERROR "
53  /** EAP status */
54  #define WPA_EVENT_EAP_STATUS "CTRL-EVENT-EAP-STATUS "
55  /** Retransmit the previous request packet */
56  #define WPA_EVENT_EAP_RETRANSMIT "CTRL-EVENT-EAP-RETRANSMIT "
57  #define WPA_EVENT_EAP_RETRANSMIT2 "CTRL-EVENT-EAP-RETRANSMIT2 "
58  /** EAP authentication completed successfully */
59  #define WPA_EVENT_EAP_SUCCESS "CTRL-EVENT-EAP-SUCCESS "
60  #define WPA_EVENT_EAP_SUCCESS2 "CTRL-EVENT-EAP-SUCCESS2 "
61  /** EAP authentication failed (EAP-Failure received) */
62  #define WPA_EVENT_EAP_FAILURE "CTRL-EVENT-EAP-FAILURE "
63  #define WPA_EVENT_EAP_FAILURE2 "CTRL-EVENT-EAP-FAILURE2 "
64  /** EAP authentication failed due to no response received */
65  #define WPA_EVENT_EAP_TIMEOUT_FAILURE "CTRL-EVENT-EAP-TIMEOUT-FAILURE "
66  #define WPA_EVENT_EAP_TIMEOUT_FAILURE2 "CTRL-EVENT-EAP-TIMEOUT-FAILURE2 "
67  #define WPA_EVENT_EAP_ERROR_CODE "EAP-ERROR-CODE "
68  /** Network block temporarily disabled (e.g., due to authentication failure) */
69  #define WPA_EVENT_TEMP_DISABLED "CTRL-EVENT-SSID-TEMP-DISABLED "
70  /** Temporarily disabled network block re-enabled */
71  #define WPA_EVENT_REENABLED "CTRL-EVENT-SSID-REENABLED "
72  /** New scan started */
73  #define WPA_EVENT_SCAN_STARTED "CTRL-EVENT-SCAN-STARTED "
74  /** New scan results available */
75  #define WPA_EVENT_SCAN_RESULTS "CTRL-EVENT-SCAN-RESULTS "
76  /** Scan command failed */
77  #define WPA_EVENT_SCAN_FAILED "CTRL-EVENT-SCAN-FAILED "
78  /** wpa_supplicant state change */
79  #define WPA_EVENT_STATE_CHANGE "CTRL-EVENT-STATE-CHANGE "
80  /** A new BSS entry was added (followed by BSS entry id and BSSID) */
81  #define WPA_EVENT_BSS_ADDED "CTRL-EVENT-BSS-ADDED "
82  /** A BSS entry was removed (followed by BSS entry id and BSSID) */
83  #define WPA_EVENT_BSS_REMOVED "CTRL-EVENT-BSS-REMOVED "
84  /** No suitable network was found */
85  #define WPA_EVENT_NETWORK_NOT_FOUND "CTRL-EVENT-NETWORK-NOT-FOUND "
86  /** Change in the signal level was reported by the driver */
87  #define WPA_EVENT_SIGNAL_CHANGE "CTRL-EVENT-SIGNAL-CHANGE "
88  /** Beacon loss reported by the driver */
89  #define WPA_EVENT_BEACON_LOSS "CTRL-EVENT-BEACON-LOSS "
90  /** Regulatory domain channel */
91  #define WPA_EVENT_REGDOM_CHANGE "CTRL-EVENT-REGDOM-CHANGE "
92  /** Regulatory beacon hint */
93  #define WPA_EVENT_REGDOM_BEACON_HINT "CTRL-EVENT-REGDOM-BEACON-HINT "
94  /** Channel switch started (followed by freq=<MHz> and other channel parameters)
95   */
96  #define WPA_EVENT_CHANNEL_SWITCH_STARTED "CTRL-EVENT-STARTED-CHANNEL-SWITCH "
97  /** Channel switch (followed by freq=<MHz> and other channel parameters) */
98  #define WPA_EVENT_CHANNEL_SWITCH "CTRL-EVENT-CHANNEL-SWITCH "
99  /** MLO link channel switch started (followed by freq=<MHz> and other channel
100   * parameters)
101   */
102  #define WPA_EVENT_LINK_CHANNEL_SWITCH_STARTED \
103  	"CTRL-EVENT-STARTED-LINK-CHANNEL-SWITCH "
104  /** MLO link channel switch (followed by freq=<MHz> and other channel
105   * parameters)
106   */
107  #define WPA_EVENT_LINK_CHANNEL_SWITCH "CTRL-EVENT-LINK-CHANNEL-SWITCH "
108  /** SAE authentication failed due to unknown password identifier */
109  #define WPA_EVENT_SAE_UNKNOWN_PASSWORD_IDENTIFIER \
110  	"CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER "
111  /** Unprotected Beacon frame dropped */
112  #define WPA_EVENT_UNPROT_BEACON "CTRL-EVENT-UNPROT-BEACON "
113  /** Decision made to do a within-ESS roam */
114  #define WPA_EVENT_DO_ROAM "CTRL-EVENT-DO-ROAM "
115  /** Decision made to skip a within-ESS roam */
116  #define WPA_EVENT_SKIP_ROAM "CTRL-EVENT-SKIP-ROAM "
117  /** TID-to-link mapping response event */
118  #define WPA_EVENT_T2LM_UPDATE "CTRL-EVENT-T2LM-UPDATE "
119  /** MLO link reconfiguration event */
120  #define WPA_EVENT_LINK_RECONFIG "CTRL-EVENT-LINK-RECONFIG "
121  
122  /** IP subnet status change notification
123   *
124   * When using an offloaded roaming mechanism where driver/firmware takes care
125   * of roaming and IP subnet validation checks post-roaming, this event can
126   * indicate whether IP subnet has changed.
127   *
128   * The event has a status=<0/1/2> parameter where
129   * 0 = unknown
130   * 1 = IP subnet unchanged (can continue to use the old IP address)
131   * 2 = IP subnet changed (need to get a new IP address)
132   */
133  #define WPA_EVENT_SUBNET_STATUS_UPDATE "CTRL-EVENT-SUBNET-STATUS-UPDATE "
134  
135  /** RSN IBSS 4-way handshakes completed with specified peer */
136  #define IBSS_RSN_COMPLETED "IBSS-RSN-COMPLETED "
137  
138  /** Notification of frequency conflict due to a concurrent operation.
139   *
140   * The indicated network is disabled and needs to be re-enabled before it can
141   * be used again.
142   */
143  #define WPA_EVENT_FREQ_CONFLICT "CTRL-EVENT-FREQ-CONFLICT "
144  /** Frequency ranges that the driver recommends to avoid */
145  #define WPA_EVENT_AVOID_FREQ "CTRL-EVENT-AVOID-FREQ "
146  /** A new network profile was added (followed by network entry id) */
147  #define WPA_EVENT_NETWORK_ADDED "CTRL-EVENT-NETWORK-ADDED "
148  /** A network profile was removed (followed by prior network entry id) */
149  #define WPA_EVENT_NETWORK_REMOVED "CTRL-EVENT-NETWORK-REMOVED "
150  /** Result of MSCS setup */
151  #define WPA_EVENT_MSCS_RESULT "CTRL-EVENT-MSCS-RESULT "
152  /** WPS overlap detected in PBC mode */
153  #define WPS_EVENT_OVERLAP "WPS-OVERLAP-DETECTED "
154  /** Available WPS AP with active PBC found in scan results */
155  #define WPS_EVENT_AP_AVAILABLE_PBC "WPS-AP-AVAILABLE-PBC "
156  /** Available WPS AP with our address as authorized in scan results */
157  #define WPS_EVENT_AP_AVAILABLE_AUTH "WPS-AP-AVAILABLE-AUTH "
158  /** Available WPS AP with recently selected PIN registrar found in scan results
159   */
160  #define WPS_EVENT_AP_AVAILABLE_PIN "WPS-AP-AVAILABLE-PIN "
161  /** Available WPS AP found in scan results */
162  #define WPS_EVENT_AP_AVAILABLE "WPS-AP-AVAILABLE "
163  /** A new credential received */
164  #define WPS_EVENT_CRED_RECEIVED "WPS-CRED-RECEIVED "
165  /** M2D received */
166  #define WPS_EVENT_M2D "WPS-M2D "
167  /** WPS registration failed after M2/M2D */
168  #define WPS_EVENT_FAIL "WPS-FAIL "
169  /** WPS registration completed successfully */
170  #define WPS_EVENT_SUCCESS "WPS-SUCCESS "
171  /** WPS enrollment attempt timed out and was terminated */
172  #define WPS_EVENT_TIMEOUT "WPS-TIMEOUT "
173  /* PBC mode was activated */
174  #define WPS_EVENT_ACTIVE "WPS-PBC-ACTIVE "
175  /* PBC mode was disabled */
176  #define WPS_EVENT_DISABLE "WPS-PBC-DISABLE "
177  
178  #define WPS_EVENT_ENROLLEE_SEEN "WPS-ENROLLEE-SEEN "
179  
180  #define WPS_EVENT_OPEN_NETWORK "WPS-OPEN-NETWORK "
181  /** Result of SCS setup */
182  #define WPA_EVENT_SCS_RESULT "CTRL-EVENT-SCS-RESULT "
183  /* Event indicating DSCP policy */
184  #define WPA_EVENT_DSCP_POLICY "CTRL-EVENT-DSCP-POLICY "
185  
186  /* WPS ER events */
187  #define WPS_EVENT_ER_AP_ADD "WPS-ER-AP-ADD "
188  #define WPS_EVENT_ER_AP_REMOVE "WPS-ER-AP-REMOVE "
189  #define WPS_EVENT_ER_ENROLLEE_ADD "WPS-ER-ENROLLEE-ADD "
190  #define WPS_EVENT_ER_ENROLLEE_REMOVE "WPS-ER-ENROLLEE-REMOVE "
191  #define WPS_EVENT_ER_AP_SETTINGS "WPS-ER-AP-SETTINGS "
192  #define WPS_EVENT_ER_SET_SEL_REG "WPS-ER-AP-SET-SEL-REG "
193  
194  /* DPP events */
195  #define DPP_EVENT_AUTH_SUCCESS "DPP-AUTH-SUCCESS "
196  #define DPP_EVENT_AUTH_INIT_FAILED "DPP-AUTH-INIT-FAILED "
197  #define DPP_EVENT_NOT_COMPATIBLE "DPP-NOT-COMPATIBLE "
198  #define DPP_EVENT_RESPONSE_PENDING "DPP-RESPONSE-PENDING "
199  #define DPP_EVENT_SCAN_PEER_QR_CODE "DPP-SCAN-PEER-QR-CODE "
200  #define DPP_EVENT_AUTH_DIRECTION "DPP-AUTH-DIRECTION "
201  #define DPP_EVENT_CONF_RECEIVED "DPP-CONF-RECEIVED "
202  #define DPP_EVENT_CONF_SENT "DPP-CONF-SENT "
203  #define DPP_EVENT_CONF_FAILED "DPP-CONF-FAILED "
204  #define DPP_EVENT_CONN_STATUS_RESULT "DPP-CONN-STATUS-RESULT "
205  #define DPP_EVENT_CONFOBJ_AKM "DPP-CONFOBJ-AKM "
206  #define DPP_EVENT_CONFOBJ_SSID "DPP-CONFOBJ-SSID "
207  #define DPP_EVENT_CONFOBJ_SSID_CHARSET "DPP-CONFOBJ-SSID-CHARSET "
208  #define DPP_EVENT_CONFOBJ_PASS "DPP-CONFOBJ-PASS "
209  #define DPP_EVENT_CONFOBJ_IDPASS "DPP-CONFOBJ-IDPASS "
210  #define DPP_EVENT_CONFOBJ_PSK "DPP-CONFOBJ-PSK "
211  #define DPP_EVENT_CONNECTOR "DPP-CONNECTOR "
212  #define DPP_EVENT_C_SIGN_KEY "DPP-C-SIGN-KEY "
213  #define DPP_EVENT_PP_KEY "DPP-PP-KEY "
214  #define DPP_EVENT_NET_ACCESS_KEY "DPP-NET-ACCESS-KEY "
215  #define DPP_EVENT_SERVER_NAME "DPP-SERVER-NAME "
216  #define DPP_EVENT_CERTBAG "DPP-CERTBAG "
217  #define DPP_EVENT_CACERT "DPP-CACERT "
218  #define DPP_EVENT_MISSING_CONNECTOR "DPP-MISSING-CONNECTOR "
219  #define DPP_EVENT_NETWORK_ID "DPP-NETWORK-ID "
220  #define DPP_EVENT_CONFIGURATOR_ID "DPP-CONFIGURATOR-ID "
221  #define DPP_EVENT_RX "DPP-RX "
222  #define DPP_EVENT_TX "DPP-TX "
223  #define DPP_EVENT_TX_STATUS "DPP-TX-STATUS "
224  #define DPP_EVENT_FAIL "DPP-FAIL "
225  #define DPP_EVENT_PKEX_T_LIMIT "DPP-PKEX-T-LIMIT "
226  #define DPP_EVENT_INTRO "DPP-INTRO "
227  #define DPP_EVENT_CONF_REQ_RX "DPP-CONF-REQ-RX "
228  #define DPP_EVENT_CHIRP_STOPPED "DPP-CHIRP-STOPPED "
229  #define DPP_EVENT_MUD_URL "DPP-MUD-URL "
230  #define DPP_EVENT_BAND_SUPPORT "DPP-BAND-SUPPORT "
231  #define DPP_EVENT_ENROLLEE_CAPABILITY "DPP-ENROLLEE-CAPABILITY "
232  #define DPP_EVENT_CSR "DPP-CSR "
233  #define DPP_EVENT_CHIRP_RX "DPP-CHIRP-RX "
234  #define DPP_EVENT_CONF_NEEDED "DPP-CONF-NEEDED "
235  #define DPP_EVENT_PB_STATUS "DPP-PB-STATUS "
236  #define DPP_EVENT_PB_RESULT "DPP-PB-RESULT "
237  #define DPP_EVENT_RELAY_NEEDS_CONTROLLER "DPP-RELAY-NEEDS-CONTROLLER "
238  
239  /* Wi-Fi Aware (NAN USD) events */
240  #define NAN_DISCOVERY_RESULT "NAN-DISCOVERY-RESULT "
241  #define NAN_REPLIED "NAN-REPLIED "
242  #define NAN_PUBLISH_TERMINATED "NAN-PUBLISH-TERMINATED "
243  #define NAN_SUBSCRIBE_TERMINATED "NAN-SUBSCRIBE-TERMINATED "
244  #define NAN_RECEIVE "NAN-RECEIVE "
245  
246  /* MESH events */
247  #define MESH_GROUP_STARTED "MESH-GROUP-STARTED "
248  #define MESH_GROUP_REMOVED "MESH-GROUP-REMOVED "
249  #define MESH_PEER_CONNECTED "MESH-PEER-CONNECTED "
250  #define MESH_PEER_DISCONNECTED "MESH-PEER-DISCONNECTED "
251  /** Mesh SAE authentication failure. Wrong password suspected. */
252  #define MESH_SAE_AUTH_FAILURE "MESH-SAE-AUTH-FAILURE "
253  #define MESH_SAE_AUTH_BLOCKED "MESH-SAE-AUTH-BLOCKED "
254  
255  /* WMM AC events */
256  #define WMM_AC_EVENT_TSPEC_ADDED "TSPEC-ADDED "
257  #define WMM_AC_EVENT_TSPEC_REMOVED "TSPEC-REMOVED "
258  #define WMM_AC_EVENT_TSPEC_REQ_FAILED "TSPEC-REQ-FAILED "
259  
260  /** P2P device found */
261  #define P2P_EVENT_DEVICE_FOUND "P2P-DEVICE-FOUND "
262  
263  /** P2P device lost */
264  #define P2P_EVENT_DEVICE_LOST "P2P-DEVICE-LOST "
265  
266  /** A P2P device requested GO negotiation, but we were not ready to start the
267   * negotiation */
268  #define P2P_EVENT_GO_NEG_REQUEST "P2P-GO-NEG-REQUEST "
269  #define P2P_EVENT_GO_NEG_SUCCESS "P2P-GO-NEG-SUCCESS "
270  #define P2P_EVENT_GO_NEG_FAILURE "P2P-GO-NEG-FAILURE "
271  #define P2P_EVENT_GROUP_FORMATION_SUCCESS "P2P-GROUP-FORMATION-SUCCESS "
272  #define P2P_EVENT_GROUP_FORMATION_FAILURE "P2P-GROUP-FORMATION-FAILURE "
273  #define P2P_EVENT_GROUP_STARTED "P2P-GROUP-STARTED "
274  #define P2P_EVENT_GROUP_REMOVED "P2P-GROUP-REMOVED "
275  #define P2P_EVENT_CROSS_CONNECT_ENABLE "P2P-CROSS-CONNECT-ENABLE "
276  #define P2P_EVENT_CROSS_CONNECT_DISABLE "P2P-CROSS-CONNECT-DISABLE "
277  /* parameters: <peer address> <PIN> */
278  #define P2P_EVENT_PROV_DISC_SHOW_PIN "P2P-PROV-DISC-SHOW-PIN "
279  /* parameters: <peer address> */
280  #define P2P_EVENT_PROV_DISC_ENTER_PIN "P2P-PROV-DISC-ENTER-PIN "
281  /* parameters: <peer address> */
282  #define P2P_EVENT_PROV_DISC_PBC_REQ "P2P-PROV-DISC-PBC-REQ "
283  /* parameters: <peer address> */
284  #define P2P_EVENT_PROV_DISC_PBC_RESP "P2P-PROV-DISC-PBC-RESP "
285  /* parameters: <peer address> <status> */
286  #define P2P_EVENT_PROV_DISC_FAILURE "P2P-PROV-DISC-FAILURE"
287  /* parameters: <freq> <src addr> <dialog token> <update indicator> <TLVs> */
288  #define P2P_EVENT_SERV_DISC_REQ "P2P-SERV-DISC-REQ "
289  /* parameters: <src addr> <update indicator> <TLVs> */
290  #define P2P_EVENT_SERV_DISC_RESP "P2P-SERV-DISC-RESP "
291  #define P2P_EVENT_SERV_ASP_RESP "P2P-SERV-ASP-RESP "
292  #define P2P_EVENT_INVITATION_RECEIVED "P2P-INVITATION-RECEIVED "
293  #define P2P_EVENT_INVITATION_RESULT "P2P-INVITATION-RESULT "
294  #define P2P_EVENT_INVITATION_ACCEPTED "P2P-INVITATION-ACCEPTED "
295  #define P2P_EVENT_FIND_STOPPED "P2P-FIND-STOPPED "
296  #define P2P_EVENT_PERSISTENT_PSK_FAIL "P2P-PERSISTENT-PSK-FAIL id="
297  #define P2P_EVENT_PRESENCE_RESPONSE "P2P-PRESENCE-RESPONSE "
298  #define P2P_EVENT_NFC_BOTH_GO "P2P-NFC-BOTH-GO "
299  #define P2P_EVENT_NFC_PEER_CLIENT "P2P-NFC-PEER-CLIENT "
300  #define P2P_EVENT_NFC_WHILE_CLIENT "P2P-NFC-WHILE-CLIENT "
301  #define P2P_EVENT_FALLBACK_TO_GO_NEG "P2P-FALLBACK-TO-GO-NEG "
302  #define P2P_EVENT_FALLBACK_TO_GO_NEG_ENABLED "P2P-FALLBACK-TO-GO-NEG-ENABLED "
303  
304  /* parameters: <PMF enabled> <timeout in ms> <Session Information URL> */
305  #define ESS_DISASSOC_IMMINENT "ESS-DISASSOC-IMMINENT "
306  #define P2P_EVENT_REMOVE_AND_REFORM_GROUP "P2P-REMOVE-AND-REFORM-GROUP "
307  
308  #define P2P_EVENT_P2PS_PROVISION_START "P2PS-PROV-START "
309  #define P2P_EVENT_P2PS_PROVISION_DONE "P2PS-PROV-DONE "
310  
311  #define P2P_EVENT_BOOTSTRAP_REQUEST "P2P-BOOTSTRAP-REQUEST "
312  #define P2P_EVENT_BOOTSTRAP_SUCCESS "P2P-BOOTSTRAP-SUCCESS "
313  #define P2P_EVENT_BOOTSTRAP_FAILURE "P2P-BOOTSTRAP-FAILURE "
314  
315  #define INTERWORKING_AP "INTERWORKING-AP "
316  #define INTERWORKING_EXCLUDED "INTERWORKING-BLACKLISTED "
317  #define INTERWORKING_NO_MATCH "INTERWORKING-NO-MATCH "
318  #define INTERWORKING_ALREADY_CONNECTED "INTERWORKING-ALREADY-CONNECTED "
319  #define INTERWORKING_SELECTED "INTERWORKING-SELECTED "
320  
321  /* Credential block added; parameters: <id> */
322  #define CRED_ADDED "CRED-ADDED "
323  /* Credential block modified; parameters: <id> <field> */
324  #define CRED_MODIFIED "CRED-MODIFIED "
325  /* Credential block removed; parameters: <id> */
326  #define CRED_REMOVED "CRED-REMOVED "
327  
328  #define GAS_RESPONSE_INFO "GAS-RESPONSE-INFO "
329  /* parameters: <addr> <dialog_token> <freq> */
330  #define GAS_QUERY_START "GAS-QUERY-START "
331  /* parameters: <addr> <dialog_token> <freq> <status_code> <result> */
332  #define GAS_QUERY_DONE "GAS-QUERY-DONE "
333  
334  /* parameters: <addr> <result> */
335  #define ANQP_QUERY_DONE "ANQP-QUERY-DONE "
336  
337  #define RX_ANQP "RX-ANQP "
338  #define RX_HS20_ANQP "RX-HS20-ANQP "
339  #define RX_HS20_ANQP_ICON "RX-HS20-ANQP-ICON "
340  #define RX_HS20_ICON "RX-HS20-ICON "
341  #define RX_MBO_ANQP "RX-MBO-ANQP "
342  
343  /* parameters: <Venue Number> <Venue URL> */
344  #define RX_VENUE_URL "RX-VENUE-URL "
345  
346  #define HS20_DEAUTH_IMMINENT_NOTICE "HS20-DEAUTH-IMMINENT-NOTICE "
347  #define HS20_T_C_ACCEPTANCE "HS20-T-C-ACCEPTANCE "
348  
349  #define EXT_RADIO_WORK_START "EXT-RADIO-WORK-START "
350  #define EXT_RADIO_WORK_TIMEOUT "EXT-RADIO-WORK-TIMEOUT "
351  
352  #define RRM_EVENT_NEIGHBOR_REP_RXED "RRM-NEIGHBOR-REP-RECEIVED "
353  #define RRM_EVENT_NEIGHBOR_REP_FAILED "RRM-NEIGHBOR-REP-REQUEST-FAILED "
354  
355  /* hostapd control interface - fixed message prefixes */
356  #define WPS_EVENT_PIN_NEEDED "WPS-PIN-NEEDED "
357  #define WPS_EVENT_NEW_AP_SETTINGS "WPS-NEW-AP-SETTINGS "
358  #define WPS_EVENT_REG_SUCCESS "WPS-REG-SUCCESS "
359  #define WPS_EVENT_AP_SETUP_LOCKED "WPS-AP-SETUP-LOCKED "
360  #define WPS_EVENT_AP_SETUP_UNLOCKED "WPS-AP-SETUP-UNLOCKED "
361  #define WPS_EVENT_AP_PIN_ENABLED "WPS-AP-PIN-ENABLED "
362  #define WPS_EVENT_AP_PIN_DISABLED "WPS-AP-PIN-DISABLED "
363  #define WPS_EVENT_PIN_ACTIVE "WPS-PIN-ACTIVE "
364  #define WPS_EVENT_CANCEL "WPS-CANCEL "
365  #define AP_STA_CONNECTED "AP-STA-CONNECTED "
366  #define AP_STA_DISCONNECTED "AP-STA-DISCONNECTED "
367  #define AP_STA_POSSIBLE_PSK_MISMATCH "AP-STA-POSSIBLE-PSK-MISMATCH "
368  #define AP_STA_POLL_OK "AP-STA-POLL-OK "
369  
370  #define AP_REJECTED_MAX_STA "AP-REJECTED-MAX-STA "
371  #define AP_REJECTED_BLOCKED_STA "AP-REJECTED-BLOCKED-STA "
372  
373  #define HS20_T_C_FILTERING_ADD "HS20-T-C-FILTERING-ADD "
374  #define HS20_T_C_FILTERING_REMOVE "HS20-T-C-FILTERING-REMOVE "
375  
376  #define AP_EVENT_ENABLED "AP-ENABLED "
377  #define AP_EVENT_DISABLED "AP-DISABLED "
378  #define AP_EVENT_NO_IR "AP-NO_IR"
379  
380  #define INTERFACE_ENABLED "INTERFACE-ENABLED "
381  #define INTERFACE_DISABLED "INTERFACE-DISABLED "
382  
383  #define ACS_EVENT_STARTED "ACS-STARTED "
384  #define ACS_EVENT_COMPLETED "ACS-COMPLETED "
385  #define ACS_EVENT_FAILED "ACS-FAILED "
386  
387  #define DFS_EVENT_RADAR_DETECTED "DFS-RADAR-DETECTED "
388  #define DFS_EVENT_NEW_CHANNEL "DFS-NEW-CHANNEL "
389  #define DFS_EVENT_CAC_START "DFS-CAC-START "
390  #define DFS_EVENT_CAC_COMPLETED "DFS-CAC-COMPLETED "
391  #define DFS_EVENT_NOP_FINISHED "DFS-NOP-FINISHED "
392  #define DFS_EVENT_PRE_CAC_EXPIRED "DFS-PRE-CAC-EXPIRED "
393  
394  #define AP_CSA_FINISHED "AP-CSA-FINISHED "
395  
396  #define P2P_EVENT_LISTEN_OFFLOAD_STOP "P2P-LISTEN-OFFLOAD-STOPPED "
397  #define P2P_LISTEN_OFFLOAD_STOP_REASON "P2P-LISTEN-OFFLOAD-STOP-REASON "
398  
399  /* BSS Transition Management Query frame received */
400  #define BSS_TM_QUERY "BSS-TM-QUERY "
401  
402  /* BSS Transition Management Response frame received */
403  #define BSS_TM_RESP "BSS-TM-RESP "
404  
405  /* Collocated Interference Request frame received;
406   * parameters: <dialog token> <automatic report enabled> <report timeout> */
407  #define COLOC_INTF_REQ "COLOC-INTF-REQ "
408  /* Collocated Interference Report frame received;
409   * parameters: <STA address> <dialog token> <hexdump of report elements> */
410  #define COLOC_INTF_REPORT "COLOC-INTF-REPORT "
411  
412  /* MBO IE with cellular data connection preference received */
413  #define MBO_CELL_PREFERENCE "MBO-CELL-PREFERENCE "
414  
415  /* BSS Transition Management Request received with MBO transition reason */
416  #define MBO_TRANSITION_REASON "MBO-TRANSITION-REASON "
417  
418  /* parameters: <STA address> <dialog token> <ack=0/1> */
419  #define BEACON_REQ_TX_STATUS "BEACON-REQ-TX-STATUS "
420  /* parameters: <STA address> <dialog token> <report mode> <beacon report> */
421  #define BEACON_RESP_RX "BEACON-RESP-RX "
422  
423  /* parameters: <STA address> <dialog token> <link measurement report> */
424  #define LINK_MSR_RESP_RX "LINK-MSR-RESP-RX "
425  
426  /* PMKSA cache entry added; parameters: <BSSID> <network_id> */
427  #define PMKSA_CACHE_ADDED "PMKSA-CACHE-ADDED "
428  /* PMKSA cache entry removed; parameters: <BSSID> <network_id> */
429  #define PMKSA_CACHE_REMOVED "PMKSA-CACHE-REMOVED "
430  
431  /* FILS HLP Container receive; parameters: dst=<addr> src=<addr> frame=<hexdump>
432   */
433  #define FILS_HLP_RX "FILS-HLP-RX "
434  
435  /* Event to indicate Probe Request frame;
436   * parameters: sa=<STA MAC address> signal=<signal> */
437  #define RX_PROBE_REQUEST "RX-PROBE-REQUEST "
438  
439  /* Event to indicate station's HT/VHT operation mode change information */
440  #define STA_OPMODE_MAX_BW_CHANGED "STA-OPMODE-MAX-BW-CHANGED "
441  #define STA_OPMODE_SMPS_MODE_CHANGED "STA-OPMODE-SMPS-MODE-CHANGED "
442  #define STA_OPMODE_N_SS_CHANGED "STA-OPMODE-N_SS-CHANGED "
443  
444  /* New interface addition or removal for 4addr WDS SDA */
445  #define WDS_STA_INTERFACE_ADDED "WDS-STA-INTERFACE-ADDED "
446  #define WDS_STA_INTERFACE_REMOVED "WDS-STA-INTERFACE-REMOVED "
447  
448  /* Transition mode disabled indication - followed by bitmap */
449  #define TRANSITION_DISABLE "TRANSITION-DISABLE "
450  
451  /* OCV validation failure; parameters: addr=<src addr>
452   * frame=<saqueryreq/saqueryresp> error=<error string> */
453  #define OCV_FAILURE "OCV-FAILURE "
454  
455  /* Event triggered for received management frame */
456  #define AP_MGMT_FRAME_RECEIVED "AP-MGMT-FRAME-RECEIVED "
457  
458  /* Event triggerred on AP receiving Wi-Fi Alliance Generational Capabilities
459   * indication.
460   * Parameters: <STA addr> <Generational Capabilities Indication body> */
461  #define WFA_GEN_CAPAB_RX "WFA-GEN-CAPAB "
462  
463  #ifndef BIT
464  #define BIT(x) (1U << (x))
465  #endif
466  
467  /* PASN authentication status */
468  #define PASN_AUTH_STATUS "PASN-AUTH-STATUS "
469  
470  /* BSS command information masks */
471  
472  #define WPA_BSS_MASK_ALL		0xFFFDFFFF
473  #define WPA_BSS_MASK_ID			BIT(0)
474  #define WPA_BSS_MASK_BSSID		BIT(1)
475  #define WPA_BSS_MASK_FREQ		BIT(2)
476  #define WPA_BSS_MASK_BEACON_INT		BIT(3)
477  #define WPA_BSS_MASK_CAPABILITIES	BIT(4)
478  #define WPA_BSS_MASK_QUAL		BIT(5)
479  #define WPA_BSS_MASK_NOISE		BIT(6)
480  #define WPA_BSS_MASK_LEVEL		BIT(7)
481  #define WPA_BSS_MASK_TSF		BIT(8)
482  #define WPA_BSS_MASK_AGE		BIT(9)
483  #define WPA_BSS_MASK_IE			BIT(10)
484  #define WPA_BSS_MASK_FLAGS		BIT(11)
485  #define WPA_BSS_MASK_SSID		BIT(12)
486  #define WPA_BSS_MASK_WPS_SCAN		BIT(13)
487  #define WPA_BSS_MASK_P2P_SCAN		BIT(14)
488  #define WPA_BSS_MASK_INTERNETW		BIT(15)
489  #define WPA_BSS_MASK_WIFI_DISPLAY	BIT(16)
490  #define WPA_BSS_MASK_DELIM		BIT(17)
491  #define WPA_BSS_MASK_MESH_SCAN		BIT(18)
492  #define WPA_BSS_MASK_SNR		BIT(19)
493  #define WPA_BSS_MASK_EST_THROUGHPUT	BIT(20)
494  #define WPA_BSS_MASK_FST		BIT(21)
495  #define WPA_BSS_MASK_UPDATE_IDX		BIT(22)
496  #define WPA_BSS_MASK_BEACON_IE		BIT(23)
497  #define WPA_BSS_MASK_FILS_INDICATION	BIT(24)
498  #define WPA_BSS_MASK_RNR		BIT(25)
499  #define WPA_BSS_MASK_ML			BIT(26)
500  #define WPA_BSS_MASK_AP_MLD_ADDR	BIT(27)
501  
502  
503  /* VENDOR_ELEM_* frame id values */
504  enum wpa_vendor_elem_frame {
505  	VENDOR_ELEM_PROBE_REQ_P2P = 0,
506  	VENDOR_ELEM_PROBE_RESP_P2P = 1,
507  	VENDOR_ELEM_PROBE_RESP_P2P_GO = 2,
508  	VENDOR_ELEM_BEACON_P2P_GO = 3,
509  	VENDOR_ELEM_P2P_PD_REQ = 4,
510  	VENDOR_ELEM_P2P_PD_RESP = 5,
511  	VENDOR_ELEM_P2P_GO_NEG_REQ = 6,
512  	VENDOR_ELEM_P2P_GO_NEG_RESP = 7,
513  	VENDOR_ELEM_P2P_GO_NEG_CONF = 8,
514  	VENDOR_ELEM_P2P_INV_REQ = 9,
515  	VENDOR_ELEM_P2P_INV_RESP = 10,
516  	VENDOR_ELEM_P2P_ASSOC_REQ = 11,
517  	VENDOR_ELEM_P2P_ASSOC_RESP = 12,
518  	VENDOR_ELEM_ASSOC_REQ = 13,
519  	VENDOR_ELEM_PROBE_REQ = 14,
520  	NUM_VENDOR_ELEM_FRAMES
521  };
522  
523  
524  /* wpa_supplicant/hostapd control interface access */
525  
526  /**
527   * wpa_ctrl_open - Open a control interface to wpa_supplicant/hostapd
528   * @ctrl_path: Path for UNIX domain sockets; ignored if UDP sockets are used.
529   * Returns: Pointer to abstract control interface data or %NULL on failure
530   *
531   * This function is used to open a control interface to wpa_supplicant/hostapd.
532   * ctrl_path is usually /var/run/wpa_supplicant or /var/run/hostapd. This path
533   * is configured in wpa_supplicant/hostapd and other programs using the control
534   * interface need to use matching path configuration.
535   */
536  struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path);
537  
538  /**
539   * wpa_ctrl_open2 - Open a control interface to wpa_supplicant/hostapd
540   * @ctrl_path: Path for UNIX domain sockets; ignored if UDP sockets are used.
541   * @cli_path: Path for client UNIX domain sockets; ignored if UDP socket
542   *            is used.
543   * Returns: Pointer to abstract control interface data or %NULL on failure
544   *
545   * This function is used to open a control interface to wpa_supplicant/hostapd
546   * when the socket path for client need to be specified explicitly. Default
547   * ctrl_path is usually /var/run/wpa_supplicant or /var/run/hostapd and client
548   * socket path is /tmp.
549   */
550  struct wpa_ctrl * wpa_ctrl_open2(const char *ctrl_path, const char *cli_path);
551  
552  
553  /**
554   * wpa_ctrl_close - Close a control interface to wpa_supplicant/hostapd
555   * @ctrl: Control interface data from wpa_ctrl_open()
556   *
557   * This function is used to close a control interface.
558   */
559  void wpa_ctrl_close(struct wpa_ctrl *ctrl);
560  
561  
562  /**
563   * wpa_ctrl_request - Send a command to wpa_supplicant/hostapd
564   * @ctrl: Control interface data from wpa_ctrl_open()
565   * @cmd: Command; usually, ASCII text, e.g., "PING"
566   * @cmd_len: Length of the cmd in bytes
567   * @reply: Buffer for the response
568   * @reply_len: Reply buffer length
569   * @msg_cb: Callback function for unsolicited messages or %NULL if not used
570   * Returns: 0 on success, -1 on error (send or receive failed), -2 on timeout
571   *
572   * This function is used to send commands to wpa_supplicant/hostapd. Received
573   * response will be written to reply and reply_len is set to the actual length
574   * of the reply. This function will block for up to 10 seconds while waiting
575   * for the reply. If unsolicited messages are received, the blocking time may
576   * be longer.
577   *
578   * msg_cb can be used to register a callback function that will be called for
579   * unsolicited messages received while waiting for the command response. These
580   * messages may be received if wpa_ctrl_request() is called at the same time as
581   * wpa_supplicant/hostapd is sending such a message. This can happen only if
582   * the program has used wpa_ctrl_attach() to register itself as a monitor for
583   * event messages. Alternatively to msg_cb, programs can register two control
584   * interface connections and use one of them for commands and the other one for
585   * receiving event messages, in other words, call wpa_ctrl_attach() only for
586   * the control interface connection that will be used for event messages.
587   */
588  int wpa_ctrl_request(struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len,
589  		     char *reply, size_t *reply_len,
590  		     void (*msg_cb)(char *msg, size_t len));
591  
592  
593  /**
594   * wpa_ctrl_attach - Register as an event monitor for the control interface
595   * @ctrl: Control interface data from wpa_ctrl_open()
596   * Returns: 0 on success, -1 on failure, -2 on timeout
597   *
598   * This function registers the control interface connection as a monitor for
599   * wpa_supplicant/hostapd events. After a success wpa_ctrl_attach() call, the
600   * control interface connection starts receiving event messages that can be
601   * read with wpa_ctrl_recv().
602   */
603  int wpa_ctrl_attach(struct wpa_ctrl *ctrl);
604  
605  
606  /**
607   * wpa_ctrl_detach - Unregister event monitor from the control interface
608   * @ctrl: Control interface data from wpa_ctrl_open()
609   * Returns: 0 on success, -1 on failure, -2 on timeout
610   *
611   * This function unregisters the control interface connection as a monitor for
612   * wpa_supplicant/hostapd events, i.e., cancels the registration done with
613   * wpa_ctrl_attach().
614   */
615  int wpa_ctrl_detach(struct wpa_ctrl *ctrl);
616  
617  
618  /**
619   * wpa_ctrl_recv - Receive a pending control interface message
620   * @ctrl: Control interface data from wpa_ctrl_open()
621   * @reply: Buffer for the message data
622   * @reply_len: Length of the reply buffer
623   * Returns: 0 on success, -1 on failure
624   *
625   * This function will receive a pending control interface message. The received
626   * response will be written to reply and reply_len is set to the actual length
627   * of the reply.
628  
629   * wpa_ctrl_recv() is only used for event messages, i.e., wpa_ctrl_attach()
630   * must have been used to register the control interface as an event monitor.
631   */
632  int wpa_ctrl_recv(struct wpa_ctrl *ctrl, char *reply, size_t *reply_len);
633  
634  
635  /**
636   * wpa_ctrl_pending - Check whether there are pending event messages
637   * @ctrl: Control interface data from wpa_ctrl_open()
638   * Returns: 1 if there are pending messages, 0 if no, or -1 on error
639   *
640   * This function will check whether there are any pending control interface
641   * message available to be received with wpa_ctrl_recv(). wpa_ctrl_pending() is
642   * only used for event messages, i.e., wpa_ctrl_attach() must have been used to
643   * register the control interface as an event monitor.
644   */
645  int wpa_ctrl_pending(struct wpa_ctrl *ctrl);
646  
647  
648  /**
649   * wpa_ctrl_get_fd - Get file descriptor used by the control interface
650   * @ctrl: Control interface data from wpa_ctrl_open()
651   * Returns: File descriptor used for the connection
652   *
653   * This function can be used to get the file descriptor that is used for the
654   * control interface connection. The returned value can be used, e.g., with
655   * select() while waiting for multiple events.
656   *
657   * The returned file descriptor must not be used directly for sending or
658   * receiving packets; instead, the library functions wpa_ctrl_request() and
659   * wpa_ctrl_recv() must be used for this.
660   */
661  int wpa_ctrl_get_fd(struct wpa_ctrl *ctrl);
662  
663  #ifdef ANDROID
664  /**
665   * wpa_ctrl_cleanup() - Delete any local UNIX domain socket files that
666   * may be left over from clients that were previously connected to
667   * wpa_supplicant. This keeps these files from being orphaned in the
668   * event of crashes that prevented them from being removed as part
669   * of the normal orderly shutdown.
670   */
671  void wpa_ctrl_cleanup(void);
672  #endif /* ANDROID */
673  
674  #ifdef CONFIG_CTRL_IFACE_UDP
675  /* Port range for multiple wpa_supplicant instances and multiple VIFs */
676  #define WPA_CTRL_IFACE_PORT 9877
677  #define WPA_CTRL_IFACE_PORT_LIMIT 50 /* decremented from start */
678  #define WPA_GLOBAL_CTRL_IFACE_PORT 9878
679  #define WPA_GLOBAL_CTRL_IFACE_PORT_LIMIT 20 /* incremented from start */
680  
681  char * wpa_ctrl_get_remote_ifname(struct wpa_ctrl *ctrl);
682  #endif /* CONFIG_CTRL_IFACE_UDP */
683  
684  
685  #ifdef  __cplusplus
686  }
687  #endif
688  
689  #endif /* WPA_CTRL_H */
690