ibss_rsn.h revision 1.1.1.5 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.1.5 christos struct ibss_rsn * ibss_rsn_init(struct wpa_supplicant *wpa_s,
55 1.1.1.5 christos struct wpa_ssid *ssid);
56 1.1 christos void ibss_rsn_deinit(struct ibss_rsn *ibss_rsn);
57 1.1 christos int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr);
58 1.1.1.2 christos void ibss_rsn_stop(struct ibss_rsn *ibss_rsn, const u8 *peermac);
59 1.1 christos int ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr,
60 1.1 christos const u8 *buf, size_t len);
61 1.1 christos void ibss_rsn_set_psk(struct ibss_rsn *ibss_rsn, const u8 *psk);
62 1.1.1.4 christos void ibss_rsn_handle_auth(struct ibss_rsn *ibss_rsn, const u8 *auth_frame,
63 1.1.1.4 christos size_t len);
64 1.1 christos
65 1.1 christos #endif /* IBSS_RSN_H */
66