18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant - WPA/RSN IE and KDE definitions
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPA_IE_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPA_IE_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_sm;
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_eapol_ie_parse {
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *wpa_ie;
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t wpa_ie_len;
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *rsn_ie;
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t rsn_ie_len;
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *pmkid;
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *gtk;
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t gtk_len;
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *mac_addr;
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t mac_addr_len;
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_PEERKEY
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *smk;
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t smk_len;
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *nonce;
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t nonce_len;
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *lifetime;
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t lifetime_len;
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *error;
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t error_len;
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_PEERKEY */
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211W
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *igtk;
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t igtk_len;
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211W */
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *mdie;
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t mdie_len;
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *ftie;
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t ftie_len;
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *reassoc_deadline;
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *key_lifetime;
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *lnkid;
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t lnkid_len;
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *ext_capab;
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t ext_capab_len;
481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	const u8 *supp_rates;
491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	size_t supp_rates_len;
501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	const u8 *ext_supp_rates;
511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	size_t ext_supp_rates_len;
52f86232838cf712377867cb42417c1613ab5dc425Dmitry Shmidt	const u8 *ht_capabilities;
53f86232838cf712377867cb42417c1613ab5dc425Dmitry Shmidt	size_t ht_capabilities_len;
5433e38bfa7159cef089d6ee0d904778e184c72c47Dmitry Shmidt	const u8 *vht_capabilities;
5533e38bfa7159cef089d6ee0d904778e184c72c47Dmitry Shmidt	size_t vht_capabilities_len;
56344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt	const u8 *supp_channels;
57344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt	size_t supp_channels_len;
58344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt	const u8 *supp_oper_classes;
59344abd362cfe2d03ed956666527352826b67bde5Dmitry Shmidt	size_t supp_oper_classes_len;
60f86232838cf712377867cb42417c1613ab5dc425Dmitry Shmidt	u8 qosinfo;
6151b6ea882f234c14cd1fe1332a3840cf61fafccaDmitry Shmidt	u16 aid;
62b36ed7cd946148d829f311de8fe53ea3ffaaffe3Dmitry Shmidt	const u8 *wmm;
63b36ed7cd946148d829f311de8fe53ea3ffaaffe3Dmitry Shmidt	size_t wmm_len;
64cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#ifdef CONFIG_P2P
65cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt	const u8 *ip_addr_req;
66cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt	const u8 *ip_addr_alloc;
67cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#endif /* CONFIG_P2P */
688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_supplicant_parse_ies(const u8 *buf, size_t len,
718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			     struct wpa_eapol_ie_parse *ie);
728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_gen_wpa_ie(struct wpa_sm *sm, u8 *wpa_ie, size_t wpa_ie_len);
738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPA_IE_H */
75