/* * Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef _IW_NDIS_H_ #define _IW_NDIS_H_ #include "ndis.h" #define WL_NOISE -96 /* typical noise level in dBm */ #define WL_SIGMAX -32 /* typical maximum signal level in dBm */ struct ndis_encr_key { ULONG struct_size; ULONG index; ULONG length; UCHAR key[NDIS_ENCODING_TOKEN_MAX]; }; struct ndis_add_key { ULONG struct_size; ndis_key_index index; ULONG length; mac_address bssid; UCHAR pad[6]; ndis_key_rsc rsc; UCHAR key[NDIS_ENCODING_TOKEN_MAX]; }; struct ndis_remove_key { ULONG struct_size; ndis_key_index index; mac_address bssid; }; struct ndis_fixed_ies { UCHAR time_stamp[8]; USHORT beacon_interval; USHORT capa; }; struct ndis_variable_ies { ULONG elem_id; UCHAR length; UCHAR data[1]; }; enum ndis_reload_defaults { Ndis802_11ReloadWEPKeys }; struct ndis_assoc_info { ULONG length; USHORT req_ies; struct req_ie { USHORT capa; USHORT listen_interval; mac_address cur_ap_address; } req_ie; ULONG req_ie_length; ULONG offset_req_ies; USHORT resp_ies; struct resp_ie { USHORT capa; USHORT status_code; USHORT assoc_id; } resp_ie; ULONG resp_ie_length; ULONG offset_resp_ies; }; struct ndis_configuration_fh { ULONG length; ULONG hop_pattern; ULONG hop_set; ULONG dwell_time; }; struct ndis_configuration { ULONG length; ULONG beacon_period; ULONG atim_window; ULONG ds_config; struct ndis_configuration_fh fh_config; }; struct ndis_wlan_bssid { ULONG length; mac_address mac; UCHAR reserved[2]; struct ndis_essid ssid; ULONG privacy; ndis_rssi rssi; UINT net_type; struct ndis_configuration config; UINT mode; ndis_rates rates; }; struct ndis_wlan_bssid_ex { ULONG length; mac_address mac; UCHAR reserved[2]; struct ndis_essid ssid; ULONG privacy; ndis_rssi rssi; UINT net_type; struct ndis_configuration config; UINT mode; ndis_rates_ex rates_ex; ULONG ie_length; UCHAR ies[1]; }; /* we use bssid_list as bssid_list_ex also */ struct ndis_bssid_list { ULONG num_items; struct ndis_wlan_bssid bssid[1]; }; enum ndis_priv_filter { Ndis802_11PrivFilterAcceptAll, Ndis802_11PrivFilter8021xWEP }; enum network_type { Ndis802_11FH, Ndis802_11DS, Ndis802_11OFDM5, Ndis802_11OFDM24, /* MSDN site uses Ndis802_11Automode, which is not mentioned * in DDK, so add one and assign it to * Ndis802_11NetworkTypeMax */ Ndis802_11Automode, Ndis802_11NetworkTypeMax = Ndis802_11Automode }; struct network_type_list { ULONG num; enum network_type types[1]; }; enum ndis_power { NDIS_POWER_OFF = 0, NDIS_POWER_MAX, NDIS_POWER_MIN, }; struct ndis_auth_req { ULONG length; mac_address bssid; ULONG flags; }; struct ndis_bssid_info { mac_address bssid; ndis_pmkid_vavlue pmkid; }; struct ndis_pmkid { ULONG length; ULONG bssid_info_count; struct ndis_bssid_info bssid_info[1]; }; int add_wep_key(struct ndis_device *wnd, char *key, int key_len, int index); int set_essid(struct ndis_device *wnd, const char *ssid, int ssid_len); int set_infra_mode(struct ndis_device *wnd, enum ndis_infrastructure_mode mode); int get_ap_address(struct ndis_device *wnd, mac_address mac); int set_ndis_auth_mode(struct ndis_device *wnd, ULONG auth_mode); int set_iw_auth_mode(struct ndis_device *wnd, int wpa_version, int auth_80211_alg); int set_auth_mode(struct ndis_device *wnd); int set_ndis_encr_mode(struct ndis_device *wnd, int cipher_pairwise, int cipher_groupwise); int get_ndis_encr_mode(struct ndis_device *wnd); int set_encr_mode(struct ndis_device *wnd); int set_iw_encr_mode(struct ndis_device *wnd, int cipher_pairwise, int cipher_groupwise); int get_ndis_auth_mode(struct ndis_device *wnd); int set_priv_filter(struct ndis_device *wnd); int set_scan(struct ndis_device *wnd); NDIS_STATUS disassociate(struct ndis_device *wnd, int reset_ssid); void set_default_iw_params(struct ndis_device *wnd); extern const struct iw_handler_def ndis_handler_def; #define PRIV_RESET SIOCIWFIRSTPRIV+16 #define PRIV_POWER_PROFILE SIOCIWFIRSTPRIV+17 #define PRIV_NETWORK_TYPE SIOCIWFIRSTPRIV+18 #define PRIV_DEAUTHENTICATE SIOCIWFIRSTPRIV+19 #define PRIV_MEDIA_STREAM_MODE SIOCIWFIRSTPRIV+20 #define PRIV_RELOAD_DEFAULTS SIOCIWFIRSTPRIV+23 #define RSN_INFO_ELEM 0x30 /* these have to match what is in wpa_supplicant */ typedef enum { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP } wpa_alg; typedef enum { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP, CIPHER_WEP104 } wpa_cipher; typedef enum { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE, KEY_MGMT_802_1X_NO_WPA, KEY_MGMT_WPA_NONE } wpa_key_mgmt; #endif // IW_NDIS_H