123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /* Copyright (C) 2006, Red Hat, Inc. */
- #ifndef _LBS_ASSOC_H_
- #define _LBS_ASSOC_H_
- #include "defs.h"
- #include "host.h"
- struct lbs_private;
- /*
- * In theory, the IE is limited to the IE length, 255,
- * but in practice 64 bytes are enough.
- */
- #define MAX_WPA_IE_LEN 64
- struct lbs_802_11_security {
- u8 WPAenabled;
- u8 WPA2enabled;
- u8 wep_enabled;
- u8 auth_mode;
- u32 key_mgmt;
- };
- /** Current Basic Service Set State Structure */
- struct current_bss_params {
- /** bssid */
- u8 bssid[ETH_ALEN];
- /** ssid */
- u8 ssid[IEEE80211_MAX_SSID_LEN + 1];
- u8 ssid_len;
- /** band */
- u8 band;
- /** channel is directly in priv->channel */
- /** zero-terminated array of supported data rates */
- u8 rates[MAX_RATES + 1];
- };
- /**
- * @brief Structure used to store information for each beacon/probe response
- */
- struct bss_descriptor {
- u8 bssid[ETH_ALEN];
- u8 ssid[IEEE80211_MAX_SSID_LEN + 1];
- u8 ssid_len;
- u16 capability;
- u32 rssi;
- u32 channel;
- u16 beaconperiod;
- __le16 atimwindow;
- /* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
- u8 mode;
- /* zero-terminated array of supported data rates */
- u8 rates[MAX_RATES + 1];
- unsigned long last_scanned;
- union ieee_phy_param_set phy;
- union ieee_ss_param_set ss;
- u8 wpa_ie[MAX_WPA_IE_LEN];
- size_t wpa_ie_len;
- u8 rsn_ie[MAX_WPA_IE_LEN];
- size_t rsn_ie_len;
- u8 mesh;
- struct list_head list;
- };
- /** Association request
- *
- * Encapsulates all the options that describe a specific assocation request
- * or configuration of the wireless card's radio, mode, and security settings.
- */
- struct assoc_request {
- #define ASSOC_FLAG_SSID 1
- #define ASSOC_FLAG_CHANNEL 2
- #define ASSOC_FLAG_BAND 3
- #define ASSOC_FLAG_MODE 4
- #define ASSOC_FLAG_BSSID 5
- #define ASSOC_FLAG_WEP_KEYS 6
- #define ASSOC_FLAG_WEP_TX_KEYIDX 7
- #define ASSOC_FLAG_WPA_MCAST_KEY 8
- #define ASSOC_FLAG_WPA_UCAST_KEY 9
- #define ASSOC_FLAG_SECINFO 10
- #define ASSOC_FLAG_WPA_IE 11
- unsigned long flags;
- u8 ssid[IEEE80211_MAX_SSID_LEN + 1];
- u8 ssid_len;
- u8 channel;
- u8 band;
- u8 mode;
- u8 bssid[ETH_ALEN] __attribute__ ((aligned (2)));
- /** WEP keys */
- struct enc_key wep_keys[4];
- u16 wep_tx_keyidx;
- /** WPA keys */
- struct enc_key wpa_mcast_key;
- struct enc_key wpa_unicast_key;
- struct lbs_802_11_security secinfo;
- /** WPA Information Elements*/
- u8 wpa_ie[MAX_WPA_IE_LEN];
- u8 wpa_ie_len;
- /* BSS to associate with for infrastructure of Ad-Hoc join */
- struct bss_descriptor bss;
- };
- extern u8 lbs_bg_rates[MAX_RATES];
- void lbs_association_worker(struct work_struct *work);
- struct assoc_request *lbs_get_association_request(struct lbs_private *priv);
- int lbs_adhoc_stop(struct lbs_private *priv);
- int lbs_cmd_80211_deauthenticate(struct lbs_private *priv,
- u8 bssid[ETH_ALEN], u16 reason);
- int lbs_cmd_802_11_rssi(struct lbs_private *priv,
- struct cmd_ds_command *cmd);
- int lbs_ret_802_11_rssi(struct lbs_private *priv,
- struct cmd_ds_command *resp);
- int lbs_cmd_bcn_ctrl(struct lbs_private *priv,
- struct cmd_ds_command *cmd,
- u16 cmd_action);
- int lbs_ret_802_11_bcn_ctrl(struct lbs_private *priv,
- struct cmd_ds_command *resp);
- int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
- struct assoc_request *assoc);
- int lbs_cmd_802_11_enable_rsn(struct lbs_private *priv, uint16_t cmd_action,
- uint16_t *enable);
- int lbs_cmd_802_11_key_material(struct lbs_private *priv, uint16_t cmd_action,
- struct assoc_request *assoc);
- #endif /* _LBS_ASSOC_H */
|