1/* 2 * wpa_supplicant - IBSS RSN 3 * Copyright (c) 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 IBSS_RSN_H 10#define IBSS_RSN_H 11 12struct ibss_rsn; 13 14/* not authenticated */ 15#define IBSS_RSN_AUTH_NOT_AUTHENTICATED 0x00 16/* remote peer sent an EAPOL message */ 17#define IBSS_RSN_AUTH_EAPOL_BY_PEER 0x01 18/* we sent an AUTH message with seq 1 */ 19#define IBSS_RSN_AUTH_BY_US 0x02 20/* we sent an EAPOL message */ 21#define IBSS_RSN_AUTH_EAPOL_BY_US 0x04 22/* PTK derived as supplicant */ 23#define IBSS_RSN_SET_PTK_SUPP 0x08 24/* PTK derived as authenticator */ 25#define IBSS_RSN_SET_PTK_AUTH 0x10 26/* PTK completion reported */ 27#define IBSS_RSN_REPORTED_PTK 0x20 28 29struct ibss_rsn_peer { 30 struct ibss_rsn_peer *next; 31 struct ibss_rsn *ibss_rsn; 32 33 u8 addr[ETH_ALEN]; 34 35 struct wpa_sm *supp; 36 enum wpa_states supp_state; 37 u8 supp_ie[80]; 38 size_t supp_ie_len; 39 40 struct wpa_state_machine *auth; 41 int authentication_status; 42 43 struct os_time own_auth_tx; 44}; 45 46struct ibss_rsn { 47 struct wpa_supplicant *wpa_s; 48 struct wpa_authenticator *auth_group; 49 struct ibss_rsn_peer *peers; 50 u8 psk[PMK_LEN]; 51}; 52 53 54struct ibss_rsn * ibss_rsn_init(struct wpa_supplicant *wpa_s); 55void ibss_rsn_deinit(struct ibss_rsn *ibss_rsn); 56int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr); 57void ibss_rsn_stop(struct ibss_rsn *ibss_rsn, const u8 *peermac); 58int ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr, 59 const u8 *buf, size_t len); 60void ibss_rsn_set_psk(struct ibss_rsn *ibss_rsn, const u8 *psk); 61void ibss_rsn_handle_auth(struct ibss_rsn *ibss_rsn, const u8 *auth_frame, 62 size_t len); 63 64#endif /* IBSS_RSN_H */ 65