1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Structures used to hold wlan information.
7 use shared::basetsd::UINT8;
8 use shared::minwindef::{UCHAR, ULONG, USHORT};
9 ENUM!{enum DOT11_BSS_TYPE {
10     dot11_BSS_type_infrastructure = 1,
11     dot11_BSS_type_independent = 2,
12     dot11_BSS_type_any = 3,
13 }}
14 pub type PDOT11_BSS_TYPE = *mut DOT11_BSS_TYPE;
15 pub const DOT11_SSID_MAX_LENGTH: usize = 32;
16 STRUCT!{struct DOT11_SSID {
17     uSSIDLength: ULONG,
18     ucSSID: [UCHAR; DOT11_SSID_MAX_LENGTH],
19 }}
20 pub type PDOT11_SSID = *mut DOT11_SSID;
21 ENUM!{enum DOT11_AUTH_ALGORITHM {
22     DOT11_AUTH_ALGO_80211_OPEN = 1,
23     DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
24     DOT11_AUTH_ALGO_WPA = 3,
25     DOT11_AUTH_ALGO_WPA_PSK = 4,
26     DOT11_AUTH_ALGO_WPA_NONE = 5,
27     DOT11_AUTH_ALGO_RSNA = 6,
28     DOT11_AUTH_ALGO_RSNA_PSK = 7,
29     DOT11_AUTH_ALGO_IHV_START = 0x80000000,
30     DOT11_AUTH_ALGO_IHV_END = 0xffffffff,
31 }}
32 pub type PDOT11_AUTH_ALGORITHM = *mut DOT11_AUTH_ALGORITHM;
33 pub const DOT11_AUTH_ALGORITHM_OPEN_SYSTEM: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_80211_OPEN;
34 pub const DOT11_AUTH_ALGORITHM_SHARED_KEY: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_80211_SHARED_KEY;
35 pub const DOT11_AUTH_ALGORITHM_WPA: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_WPA;
36 pub const DOT11_AUTH_ALGORITHM_WPA_PSK: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_WPA_PSK;
37 pub const DOT11_AUTH_ALGORITHM_WPA_NONE: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_WPA_NONE;
38 pub const DOT11_AUTH_ALGORITHM_RSNA: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_RSNA;
39 pub const DOT11_AUTH_ALGORITHM_RSNA_PSK: DOT11_AUTH_ALGORITHM = DOT11_AUTH_ALGO_RSNA_PSK;
40 ENUM!{enum DOT11_CIPHER_ALGORITHM {
41     DOT11_CIPHER_ALGO_NONE = 0x00,
42     DOT11_CIPHER_ALGO_WEP40 = 0x01,
43     DOT11_CIPHER_ALGO_TKIP = 0x02,
44     DOT11_CIPHER_ALGO_CCMP = 0x04,
45     DOT11_CIPHER_ALGO_WEP104 = 0x05,
46     DOT11_CIPHER_ALGO_BIP = 0x06,
47     DOT11_CIPHER_ALGO_GCMP = 0x08,
48     DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100,
49     DOT11_CIPHER_ALGO_WEP = 0x101,
50     DOT11_CIPHER_ALGO_IHV_START = 0x80000000,
51     DOT11_CIPHER_ALGO_IHV_END = 0xffffffff,
52 }}
53 pub type PDOT11_CIPHER_ALGORITHM = *mut DOT11_CIPHER_ALGORITHM;
54 STRUCT!{struct DOT11_AUTH_CIPHER_PAIR {
55     AuthAlgoId: DOT11_AUTH_ALGORITHM,
56     CipherAlgoId: DOT11_CIPHER_ALGORITHM,
57 }}
58 pub type PDOT11_AUTH_CIPHER_PAIR = *mut DOT11_AUTH_CIPHER_PAIR;
59 pub const DOT11_OI_MAX_LENGTH: usize = 5;
60 pub const DOT11_OI_MIN_LENGTH: usize = 3;
61 STRUCT!{struct DOT11_OI {
62     OILength: USHORT,
63     OI: [UCHAR; DOT11_OI_MAX_LENGTH],
64 }}
65 pub type PDOT11_OI = *mut DOT11_OI;
66 STRUCT!{struct DOT11_ACCESSNETWORKOPTIONS {
67     AccessNetworkType: UINT8,
68     Internet: UINT8,
69     ASRA: UINT8,
70     ESR: UINT8,
71     UESA: UINT8,
72 }}
73 pub type PDOT11_ACCESSNETWORKOPTIONS = *mut DOT11_ACCESSNETWORKOPTIONS;
74 STRUCT!{struct DOT11_VENUEINFO {
75     VenueGroup: UINT8,
76     VenueType: UINT8,
77 }}
78 pub type PDOT11_VENUEINFO = *mut DOT11_VENUEINFO;
79