1 /*
2  * WPA Supplicant - privilege separation commands
3  * Copyright (c) 2007-2009, 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 PRIVSEP_COMMANDS_H
10 #define PRIVSEP_COMMANDS_H
11 
12 #include "common/ieee802_11_defs.h"
13 
14 enum privsep_cmd {
15 	PRIVSEP_CMD_REGISTER,
16 	PRIVSEP_CMD_UNREGISTER,
17 	PRIVSEP_CMD_SCAN,
18 	PRIVSEP_CMD_GET_SCAN_RESULTS,
19 	PRIVSEP_CMD_ASSOCIATE,
20 	PRIVSEP_CMD_GET_BSSID,
21 	PRIVSEP_CMD_GET_SSID,
22 	PRIVSEP_CMD_SET_KEY,
23 	PRIVSEP_CMD_GET_CAPA,
24 	PRIVSEP_CMD_L2_REGISTER,
25 	PRIVSEP_CMD_L2_UNREGISTER,
26 	PRIVSEP_CMD_L2_NOTIFY_AUTH_START,
27 	PRIVSEP_CMD_L2_SEND,
28 	PRIVSEP_CMD_SET_COUNTRY,
29 	PRIVSEP_CMD_AUTHENTICATE,
30 };
31 
32 struct privsep_cmd_authenticate
33 {
34 	int freq;
35 	u8 bssid[ETH_ALEN];
36 	u8 ssid[SSID_MAX_LEN];
37 	size_t ssid_len;
38 	int auth_alg;
39 	size_t ie_len;
40 	u8 wep_key[4][16];
41 	size_t wep_key_len[4];
42 	int wep_tx_keyidx;
43 	int local_state_change;
44 	int p2p;
45 	size_t sae_data_len;
46 	/* followed by ie_len bytes of ie */
47 	/* followed by sae_data_len bytes of sae_data */
48 };
49 
50 struct privsep_cmd_associate
51 {
52 	u8 bssid[ETH_ALEN];
53 	u8 ssid[SSID_MAX_LEN];
54 	size_t ssid_len;
55 	int hwmode;
56 	int freq;
57 	int channel;
58 	int pairwise_suite;
59 	int group_suite;
60 	int key_mgmt_suite;
61 	int auth_alg;
62 	int mode;
63 	size_t wpa_ie_len;
64 	/* followed by wpa_ie_len bytes of wpa_ie */
65 };
66 
67 struct privsep_cmd_set_key
68 {
69 	int alg;
70 	u8 addr[ETH_ALEN];
71 	int key_idx;
72 	int set_tx;
73 	u8 seq[8];
74 	size_t seq_len;
75 	u8 key[32];
76 	size_t key_len;
77 };
78 
79 enum privsep_event {
80 	PRIVSEP_EVENT_SCAN_RESULTS,
81 	PRIVSEP_EVENT_ASSOC,
82 	PRIVSEP_EVENT_DISASSOC,
83 	PRIVSEP_EVENT_ASSOCINFO,
84 	PRIVSEP_EVENT_MICHAEL_MIC_FAILURE,
85 	PRIVSEP_EVENT_INTERFACE_STATUS,
86 	PRIVSEP_EVENT_PMKID_CANDIDATE,
87 	PRIVSEP_EVENT_STKSTART,
88 	PRIVSEP_EVENT_FT_RESPONSE,
89 	PRIVSEP_EVENT_RX_EAPOL,
90 	PRIVSEP_EVENT_SCAN_STARTED,
91 	PRIVSEP_EVENT_AUTH,
92 };
93 
94 struct privsep_event_auth {
95 	u8 peer[ETH_ALEN];
96 	u8 bssid[ETH_ALEN];
97 	u16 auth_type;
98 	u16 auth_transaction;
99 	u16 status_code;
100 	size_t ies_len;
101 	/* followed by ies_len bytes of ies */
102 };
103 
104 #endif /* PRIVSEP_COMMANDS_H */
105