1 1.1 christos /* 2 1.1 christos * wpa_supplicant - IBSS RSN 3 1.1 christos * Copyright (c) 2009, Jouni Malinen <j (at) w1.fi> 4 1.1 christos * 5 1.1.1.3 christos * This software may be distributed under the terms of the BSD license. 6 1.1.1.3 christos * See README for more details. 7 1.1 christos */ 8 1.1 christos 9 1.1 christos #ifndef IBSS_RSN_H 10 1.1 christos #define IBSS_RSN_H 11 1.1 christos 12 1.1 christos struct ibss_rsn; 13 1.1 christos 14 1.1.1.4 christos /* not authenticated */ 15 1.1.1.4 christos #define IBSS_RSN_AUTH_NOT_AUTHENTICATED 0x00 16 1.1.1.4 christos /* remote peer sent an EAPOL message */ 17 1.1.1.4 christos #define IBSS_RSN_AUTH_EAPOL_BY_PEER 0x01 18 1.1.1.4 christos /* we sent an AUTH message with seq 1 */ 19 1.1.1.4 christos #define IBSS_RSN_AUTH_BY_US 0x02 20 1.1.1.4 christos /* we sent an EAPOL message */ 21 1.1.1.4 christos #define IBSS_RSN_AUTH_EAPOL_BY_US 0x04 22 1.1.1.4 christos /* PTK derived as supplicant */ 23 1.1.1.4 christos #define IBSS_RSN_SET_PTK_SUPP 0x08 24 1.1.1.4 christos /* PTK derived as authenticator */ 25 1.1.1.4 christos #define IBSS_RSN_SET_PTK_AUTH 0x10 26 1.1.1.4 christos /* PTK completion reported */ 27 1.1.1.4 christos #define IBSS_RSN_REPORTED_PTK 0x20 28 1.1.1.4 christos 29 1.1 christos struct ibss_rsn_peer { 30 1.1 christos struct ibss_rsn_peer *next; 31 1.1 christos struct ibss_rsn *ibss_rsn; 32 1.1 christos 33 1.1 christos u8 addr[ETH_ALEN]; 34 1.1 christos 35 1.1 christos struct wpa_sm *supp; 36 1.1 christos enum wpa_states supp_state; 37 1.1 christos u8 supp_ie[80]; 38 1.1 christos size_t supp_ie_len; 39 1.1 christos 40 1.1 christos struct wpa_state_machine *auth; 41 1.1.1.4 christos int authentication_status; 42 1.1.1.4 christos 43 1.1.1.4 christos struct os_reltime own_auth_tx; 44 1.1 christos }; 45 1.1 christos 46 1.1 christos struct ibss_rsn { 47 1.1 christos struct wpa_supplicant *wpa_s; 48 1.1 christos struct wpa_authenticator *auth_group; 49 1.1 christos struct ibss_rsn_peer *peers; 50 1.1 christos u8 psk[PMK_LEN]; 51 1.1 christos }; 52 1.1 christos 53 1.1 christos 54 1.1 christos struct ibss_rsn * ibss_rsn_init(struct wpa_supplicant *wpa_s); 55 1.1 christos void ibss_rsn_deinit(struct ibss_rsn *ibss_rsn); 56 1.1 christos int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr); 57 1.1.1.2 christos void ibss_rsn_stop(struct ibss_rsn *ibss_rsn, const u8 *peermac); 58 1.1 christos int ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr, 59 1.1 christos const u8 *buf, size_t len); 60 1.1 christos void ibss_rsn_set_psk(struct ibss_rsn *ibss_rsn, const u8 *psk); 61 1.1.1.4 christos void ibss_rsn_handle_auth(struct ibss_rsn *ibss_rsn, const u8 *auth_frame, 62 1.1.1.4 christos size_t len); 63 1.1 christos 64 1.1 christos #endif /* IBSS_RSN_H */ 65