1189251Ssam/*
2189251Ssam * WPA Supplicant - privilege separation commands
3189251Ssam * Copyright (c) 2007-2009, Jouni Malinen <j@w1.fi>
4189251Ssam *
5252726Srpaulo * This software may be distributed under the terms of the BSD license.
6252726Srpaulo * See README for more details.
7189251Ssam */
8189251Ssam
9189251Ssam#ifndef PRIVSEP_COMMANDS_H
10189251Ssam#define PRIVSEP_COMMANDS_H
11189251Ssam
12346981Scy#include "drivers/driver.h"
13289549Srpaulo#include "common/ieee802_11_defs.h"
14289549Srpaulo
15189251Ssamenum privsep_cmd {
16189251Ssam	PRIVSEP_CMD_REGISTER,
17189251Ssam	PRIVSEP_CMD_UNREGISTER,
18189251Ssam	PRIVSEP_CMD_SCAN,
19189251Ssam	PRIVSEP_CMD_GET_SCAN_RESULTS,
20189251Ssam	PRIVSEP_CMD_ASSOCIATE,
21189251Ssam	PRIVSEP_CMD_GET_BSSID,
22189251Ssam	PRIVSEP_CMD_GET_SSID,
23189251Ssam	PRIVSEP_CMD_SET_KEY,
24189251Ssam	PRIVSEP_CMD_GET_CAPA,
25189251Ssam	PRIVSEP_CMD_L2_REGISTER,
26189251Ssam	PRIVSEP_CMD_L2_UNREGISTER,
27189251Ssam	PRIVSEP_CMD_L2_NOTIFY_AUTH_START,
28189251Ssam	PRIVSEP_CMD_L2_SEND,
29189251Ssam	PRIVSEP_CMD_SET_COUNTRY,
30289549Srpaulo	PRIVSEP_CMD_AUTHENTICATE,
31189251Ssam};
32189251Ssam
33346981Scy#define PRIVSEP_MAX_SCAN_FREQS 50
34346981Scy
35346981Scystruct privsep_cmd_scan {
36346981Scy	unsigned int num_ssids;
37346981Scy	u8 ssids[WPAS_MAX_SCAN_SSIDS][32];
38346981Scy	u8 ssid_lens[WPAS_MAX_SCAN_SSIDS];
39346981Scy	unsigned int num_freqs;
40346981Scy	u16 freqs[PRIVSEP_MAX_SCAN_FREQS];
41346981Scy};
42346981Scy
43346981Scystruct privsep_cmd_authenticate {
44289549Srpaulo	int freq;
45289549Srpaulo	u8 bssid[ETH_ALEN];
46289549Srpaulo	u8 ssid[SSID_MAX_LEN];
47289549Srpaulo	size_t ssid_len;
48289549Srpaulo	int auth_alg;
49289549Srpaulo	size_t ie_len;
50289549Srpaulo	u8 wep_key[4][16];
51289549Srpaulo	size_t wep_key_len[4];
52289549Srpaulo	int wep_tx_keyidx;
53289549Srpaulo	int local_state_change;
54289549Srpaulo	int p2p;
55346981Scy	size_t auth_data_len;
56289549Srpaulo	/* followed by ie_len bytes of ie */
57346981Scy	/* followed by auth_data_len bytes of auth_data */
58289549Srpaulo};
59289549Srpaulo
60346981Scystruct privsep_cmd_associate {
61189251Ssam	u8 bssid[ETH_ALEN];
62289549Srpaulo	u8 ssid[SSID_MAX_LEN];
63189251Ssam	size_t ssid_len;
64281806Srpaulo	int hwmode;
65189251Ssam	int freq;
66281806Srpaulo	int channel;
67189251Ssam	int pairwise_suite;
68189251Ssam	int group_suite;
69189251Ssam	int key_mgmt_suite;
70189251Ssam	int auth_alg;
71189251Ssam	int mode;
72189251Ssam	size_t wpa_ie_len;
73189251Ssam	/* followed by wpa_ie_len bytes of wpa_ie */
74189251Ssam};
75189251Ssam
76346981Scystruct privsep_cmd_set_key {
77189251Ssam	int alg;
78189251Ssam	u8 addr[ETH_ALEN];
79189251Ssam	int key_idx;
80189251Ssam	int set_tx;
81189251Ssam	u8 seq[8];
82189251Ssam	size_t seq_len;
83189251Ssam	u8 key[32];
84189251Ssam	size_t key_len;
85189251Ssam};
86189251Ssam
87189251Ssamenum privsep_event {
88189251Ssam	PRIVSEP_EVENT_SCAN_RESULTS,
89189251Ssam	PRIVSEP_EVENT_ASSOC,
90189251Ssam	PRIVSEP_EVENT_DISASSOC,
91189251Ssam	PRIVSEP_EVENT_ASSOCINFO,
92189251Ssam	PRIVSEP_EVENT_MICHAEL_MIC_FAILURE,
93189251Ssam	PRIVSEP_EVENT_INTERFACE_STATUS,
94189251Ssam	PRIVSEP_EVENT_PMKID_CANDIDATE,
95189251Ssam	PRIVSEP_EVENT_FT_RESPONSE,
96189251Ssam	PRIVSEP_EVENT_RX_EAPOL,
97289549Srpaulo	PRIVSEP_EVENT_SCAN_STARTED,
98289549Srpaulo	PRIVSEP_EVENT_AUTH,
99189251Ssam};
100189251Ssam
101289549Srpaulostruct privsep_event_auth {
102289549Srpaulo	u8 peer[ETH_ALEN];
103289549Srpaulo	u8 bssid[ETH_ALEN];
104289549Srpaulo	u16 auth_type;
105289549Srpaulo	u16 auth_transaction;
106289549Srpaulo	u16 status_code;
107289549Srpaulo	size_t ies_len;
108289549Srpaulo	/* followed by ies_len bytes of ies */
109289549Srpaulo};
110289549Srpaulo
111189251Ssam#endif /* PRIVSEP_COMMANDS_H */
112