16d49e1aeSJan Lentfer /* 26d49e1aeSJan Lentfer * WPA Supplicant - privilege separation commands 36d49e1aeSJan Lentfer * Copyright (c) 2007-2009, Jouni Malinen <j@w1.fi> 46d49e1aeSJan Lentfer * 53ff40c12SJohn Marino * This software may be distributed under the terms of the BSD license. 63ff40c12SJohn Marino * See README for more details. 76d49e1aeSJan Lentfer */ 86d49e1aeSJan Lentfer 96d49e1aeSJan Lentfer #ifndef PRIVSEP_COMMANDS_H 106d49e1aeSJan Lentfer #define PRIVSEP_COMMANDS_H 116d49e1aeSJan Lentfer 12*a1157835SDaniel Fojt #include "drivers/driver.h" 13*a1157835SDaniel Fojt #include "common/ieee802_11_defs.h" 14*a1157835SDaniel Fojt 156d49e1aeSJan Lentfer enum privsep_cmd { 166d49e1aeSJan Lentfer PRIVSEP_CMD_REGISTER, 176d49e1aeSJan Lentfer PRIVSEP_CMD_UNREGISTER, 186d49e1aeSJan Lentfer PRIVSEP_CMD_SCAN, 196d49e1aeSJan Lentfer PRIVSEP_CMD_GET_SCAN_RESULTS, 206d49e1aeSJan Lentfer PRIVSEP_CMD_ASSOCIATE, 216d49e1aeSJan Lentfer PRIVSEP_CMD_GET_BSSID, 226d49e1aeSJan Lentfer PRIVSEP_CMD_GET_SSID, 236d49e1aeSJan Lentfer PRIVSEP_CMD_SET_KEY, 246d49e1aeSJan Lentfer PRIVSEP_CMD_GET_CAPA, 256d49e1aeSJan Lentfer PRIVSEP_CMD_L2_REGISTER, 266d49e1aeSJan Lentfer PRIVSEP_CMD_L2_UNREGISTER, 276d49e1aeSJan Lentfer PRIVSEP_CMD_L2_NOTIFY_AUTH_START, 286d49e1aeSJan Lentfer PRIVSEP_CMD_L2_SEND, 296d49e1aeSJan Lentfer PRIVSEP_CMD_SET_COUNTRY, 30*a1157835SDaniel Fojt PRIVSEP_CMD_AUTHENTICATE, 316d49e1aeSJan Lentfer }; 326d49e1aeSJan Lentfer 33*a1157835SDaniel Fojt #define PRIVSEP_MAX_SCAN_FREQS 50 34*a1157835SDaniel Fojt 35*a1157835SDaniel Fojt struct privsep_cmd_scan { 36*a1157835SDaniel Fojt unsigned int num_ssids; 37*a1157835SDaniel Fojt u8 ssids[WPAS_MAX_SCAN_SSIDS][32]; 38*a1157835SDaniel Fojt u8 ssid_lens[WPAS_MAX_SCAN_SSIDS]; 39*a1157835SDaniel Fojt unsigned int num_freqs; 40*a1157835SDaniel Fojt u16 freqs[PRIVSEP_MAX_SCAN_FREQS]; 41*a1157835SDaniel Fojt }; 42*a1157835SDaniel Fojt 43*a1157835SDaniel Fojt struct privsep_cmd_authenticate { 446d49e1aeSJan Lentfer int freq; 45*a1157835SDaniel Fojt u8 bssid[ETH_ALEN]; 46*a1157835SDaniel Fojt u8 ssid[SSID_MAX_LEN]; 47*a1157835SDaniel Fojt size_t ssid_len; 48*a1157835SDaniel Fojt int auth_alg; 49*a1157835SDaniel Fojt size_t ie_len; 50*a1157835SDaniel Fojt u8 wep_key[4][16]; 51*a1157835SDaniel Fojt size_t wep_key_len[4]; 52*a1157835SDaniel Fojt int wep_tx_keyidx; 53*a1157835SDaniel Fojt int local_state_change; 54*a1157835SDaniel Fojt int p2p; 55*a1157835SDaniel Fojt size_t auth_data_len; 56*a1157835SDaniel Fojt /* followed by ie_len bytes of ie */ 57*a1157835SDaniel Fojt /* followed by auth_data_len bytes of auth_data */ 58*a1157835SDaniel Fojt }; 59*a1157835SDaniel Fojt 60*a1157835SDaniel Fojt struct privsep_cmd_associate { 61*a1157835SDaniel Fojt u8 bssid[ETH_ALEN]; 62*a1157835SDaniel Fojt u8 ssid[SSID_MAX_LEN]; 63*a1157835SDaniel Fojt size_t ssid_len; 64*a1157835SDaniel Fojt int hwmode; 65*a1157835SDaniel Fojt int freq; 66*a1157835SDaniel Fojt int channel; 676d49e1aeSJan Lentfer int pairwise_suite; 686d49e1aeSJan Lentfer int group_suite; 696d49e1aeSJan Lentfer int key_mgmt_suite; 706d49e1aeSJan Lentfer int auth_alg; 716d49e1aeSJan Lentfer int mode; 726d49e1aeSJan Lentfer size_t wpa_ie_len; 736d49e1aeSJan Lentfer /* followed by wpa_ie_len bytes of wpa_ie */ 746d49e1aeSJan Lentfer }; 756d49e1aeSJan Lentfer 76*a1157835SDaniel Fojt struct privsep_cmd_set_key { 776d49e1aeSJan Lentfer int alg; 786d49e1aeSJan Lentfer u8 addr[ETH_ALEN]; 796d49e1aeSJan Lentfer int key_idx; 806d49e1aeSJan Lentfer int set_tx; 816d49e1aeSJan Lentfer u8 seq[8]; 826d49e1aeSJan Lentfer size_t seq_len; 836d49e1aeSJan Lentfer u8 key[32]; 846d49e1aeSJan Lentfer size_t key_len; 856d49e1aeSJan Lentfer }; 866d49e1aeSJan Lentfer 876d49e1aeSJan Lentfer enum privsep_event { 886d49e1aeSJan Lentfer PRIVSEP_EVENT_SCAN_RESULTS, 896d49e1aeSJan Lentfer PRIVSEP_EVENT_ASSOC, 906d49e1aeSJan Lentfer PRIVSEP_EVENT_DISASSOC, 916d49e1aeSJan Lentfer PRIVSEP_EVENT_ASSOCINFO, 926d49e1aeSJan Lentfer PRIVSEP_EVENT_MICHAEL_MIC_FAILURE, 936d49e1aeSJan Lentfer PRIVSEP_EVENT_INTERFACE_STATUS, 946d49e1aeSJan Lentfer PRIVSEP_EVENT_PMKID_CANDIDATE, 956d49e1aeSJan Lentfer PRIVSEP_EVENT_FT_RESPONSE, 966d49e1aeSJan Lentfer PRIVSEP_EVENT_RX_EAPOL, 97*a1157835SDaniel Fojt PRIVSEP_EVENT_SCAN_STARTED, 98*a1157835SDaniel Fojt PRIVSEP_EVENT_AUTH, 99*a1157835SDaniel Fojt }; 100*a1157835SDaniel Fojt 101*a1157835SDaniel Fojt struct privsep_event_auth { 102*a1157835SDaniel Fojt u8 peer[ETH_ALEN]; 103*a1157835SDaniel Fojt u8 bssid[ETH_ALEN]; 104*a1157835SDaniel Fojt u16 auth_type; 105*a1157835SDaniel Fojt u16 auth_transaction; 106*a1157835SDaniel Fojt u16 status_code; 107*a1157835SDaniel Fojt size_t ies_len; 108*a1157835SDaniel Fojt /* followed by ies_len bytes of ies */ 1096d49e1aeSJan Lentfer }; 1106d49e1aeSJan Lentfer 1116d49e1aeSJan Lentfer #endif /* PRIVSEP_COMMANDS_H */ 112