⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver.h

📁 最新的Host AP 新添加了许多pcmcia 的驱动
💻 H
📖 第 1 页 / 共 4 页
字号:
	short chan; /* channel number (IEEE 802.11) */	short freq; /* frequency in MHz */	int flag; /* flag for user space use (WPA_CHAN_*) */};#define WPA_RATE_ERP 0x00000001#define WPA_RATE_BASIC 0x00000002#define WPA_RATE_PREAMBLE2 0x00000004#define WPA_RATE_SUPPORTED 0x00000010#define WPA_RATE_OFDM 0x00000020#define WPA_RATE_CCK 0x00000040#define WPA_RATE_MANDATORY 0x00000100struct wpa_rate_data {	int rate; /* rate in 100 kbps */	int flags; /* WPA_RATE_ flags */};typedef enum {	WPA_MODE_IEEE80211B,	WPA_MODE_IEEE80211G,	WPA_MODE_IEEE80211A,	NUM_WPA_MODES} wpa_hw_mode;struct wpa_hw_modes {	wpa_hw_mode mode;	int num_channels;	struct wpa_channel_data *channels;	int num_rates;	struct wpa_rate_data *rates;};struct ieee80211_rx_status {        int channel;        int ssi;};/** * struct wpa_driver_ops - Driver interface API definition * * This structure defines the API that each driver interface needs to implement * for core wpa_supplicant code. All driver specific functionality is captured * in this wrapper. */struct wpa_driver_ops {	/** Name of the driver interface */	const char *name;	/** One line description of the driver interface */	const char *desc;	/**	 * get_bssid - Get the current BSSID	 * @priv: private driver interface data	 * @bssid: buffer for BSSID (ETH_ALEN = 6 bytes)	 *	 * Returns: 0 on success, -1 on failure	 *	 * Query kernel driver for the current BSSID and copy it to bssid.	 * Setting bssid to 00:00:00:00:00:00 is recommended if the STA is not	 * associated.	 */	int (*get_bssid)(void *priv, u8 *bssid);	/**	 * get_ssid - Get the current SSID	 * @priv: private driver interface data	 * @ssid: buffer for SSID (at least 32 bytes)	 *	 * Returns: Length of the SSID on success, -1 on failure	 *	 * Query kernel driver for the current SSID and copy it to ssid.	 * Returning zero is recommended if the STA is not associated.	 *	 * Note: SSID is an array of octets, i.e., it is not nul terminated and	 * can, at least in theory, contain control characters (including nul)	 * and as such, should be processed as binary data, not a printable	 * string.	 */	int (*get_ssid)(void *priv, u8 *ssid);	/**	 * set_wpa - Enable/disable WPA support (OBSOLETE)	 * @priv: private driver interface data	 * @enabled: 1 = enable, 0 = disable	 *	 * Returns: 0 on success, -1 on failure	 *	 * Note: This function is included for backwards compatibility. This is	 * called only just after init and just before deinit, so these	 * functions can be used to implement same functionality and the driver	 * interface need not define this function.	 *	 * Configure the kernel driver to enable/disable WPA support. This may	 * be empty function, if WPA support is always enabled. Common	 * configuration items are WPA IE (clearing it when WPA support is	 * disabled), Privacy flag configuration for capability field (note:	 * this the value need to set in associate handler to allow plaintext	 * mode to be used) when trying to associate with, roaming mode (can	 * allow wpa_supplicant to control roaming if ap_scan=1 is used;	 * however, drivers can also implement roaming if desired, especially	 * ap_scan=2 mode is used for this).	 */	int (*set_wpa)(void *priv, int enabled);	/**	 * set_key - Configure encryption key	 * @priv: private driver interface data	 * @alg: encryption algorithm (%WPA_ALG_NONE, %WPA_ALG_WEP,	 *	%WPA_ALG_TKIP, %WPA_ALG_CCMP, %WPA_ALG_IGTK, %WPA_ALG_PMK);	 *	%WPA_ALG_NONE clears the key.	 * @addr: address of the peer STA or ff:ff:ff:ff:ff:ff for	 *	broadcast/default keys	 * @key_idx: key index (0..3), usually 0 for unicast keys; 0..4095 for	 *	IGTK	 * @set_tx: configure this key as the default Tx key (only used when	 *	driver does not support separate unicast/individual key	 * @seq: sequence number/packet number, seq_len octets, the next	 *	packet number to be used for in replay protection; configured	 *	for Rx keys (in most cases, this is only used with broadcast	 *	keys and set to zero for unicast keys)	 * @seq_len: length of the seq, depends on the algorithm:	 *	TKIP: 6 octets, CCMP: 6 octets, IGTK: 6 octets	 * @key: key buffer; TKIP: 16-byte temporal key, 8-byte Tx Mic key,	 *	8-byte Rx Mic Key	 * @key_len: length of the key buffer in octets (WEP: 5 or 13,	 *	TKIP: 32, CCMP: 16, IGTK: 16)	 *	 * Returns: 0 on success, -1 on failure	 *	 * Configure the given key for the kernel driver. If the driver	 * supports separate individual keys (4 default keys + 1 individual),	 * addr can be used to determine whether the key is default or	 * individual. If only 4 keys are supported, the default key with key	 * index 0 is used as the individual key. STA must be configured to use	 * it as the default Tx key (set_tx is set) and accept Rx for all the	 * key indexes. In most cases, WPA uses only key indexes 1 and 2 for	 * broadcast keys, so key index 0 is available for this kind of	 * configuration.	 *	 * Please note that TKIP keys include separate TX and RX MIC keys and	 * some drivers may expect them in different order than wpa_supplicant	 * is using. If the TX/RX keys are swapped, all TKIP encrypted packets	 * will tricker Michael MIC errors. This can be fixed by changing the	 * order of MIC keys by swapping te bytes 16..23 and 24..31 of the key	 * in driver_*.c set_key() implementation, see driver_ndis.c for an	 * example on how this can be done.	 */	int (*set_key)(void *priv, wpa_alg alg, const u8 *addr,		       int key_idx, int set_tx, const u8 *seq, size_t seq_len,		       const u8 *key, size_t key_len);	/**	 * init - Initialize driver interface	 * @ctx: context to be used when calling wpa_supplicant functions,	 * e.g., wpa_supplicant_event()	 * @ifname: interface name, e.g., wlan0	 *	 * Returns: Pointer to private data, %NULL on failure	 *	 * Initialize driver interface, including event processing for kernel	 * driver events (e.g., associated, scan results, Michael MIC failure).	 * This function can allocate a private configuration data area for	 * @ctx, file descriptor, interface name, etc. information that may be	 * needed in future driver operations. If this is not used, non-NULL	 * value will need to be returned because %NULL is used to indicate	 * failure. The returned value will be used as 'void *priv' data for	 * all other driver_ops functions.	 *	 * The main event loop (eloop.c) of wpa_supplicant can be used to	 * register callback for read sockets (eloop_register_read_sock()).	 *	 * See below for more information about events and	 * wpa_supplicant_event() function.	 */	void * (*init)(void *ctx, const char *ifname);	/**	 * deinit - Deinitialize driver interface	 * @priv: private driver interface data from init()	 *	 * Shut down driver interface and processing of driver events. Free	 * private data buffer if one was allocated in init() handler.	 */	void (*deinit)(void *priv);	/**	 * set_param - Set driver configuration parameters	 * @priv: private driver interface data from init()	 * @param: driver specific configuration parameters	 *	 * Returns: 0 on success, -1 on failure	 *	 * Optional handler for notifying driver interface about configuration	 * parameters (driver_param).	 */	int (*set_param)(void *priv, const char *param);	/**	 * set_countermeasures - Enable/disable TKIP countermeasures	 * @priv: private driver interface data	 * @enabled: 1 = countermeasures enabled, 0 = disabled	 *	 * Returns: 0 on success, -1 on failure	 *	 * Configure TKIP countermeasures. When these are enabled, the driver	 * should drop all received and queued frames that are using TKIP.	 */	int (*set_countermeasures)(void *priv, int enabled);	/**	 * set_drop_unencrypted - Enable/disable unencrypted frame filtering	 * @priv: private driver interface data	 * @enabled: 1 = unencrypted Tx/Rx frames will be dropped, 0 = disabled	 *	 * Returns: 0 on success, -1 on failure	 *	 * Configure the driver to drop all non-EAPOL frames (both receive and	 * transmit paths). Unencrypted EAPOL frames (ethertype 0x888e) must	 * still be allowed for key negotiation.	 */	int (*set_drop_unencrypted)(void *priv, int enabled);	/**	 * scan - Request the driver to initiate scan	 * @priv: private driver interface data	 * @ssid: specific SSID to scan for (ProbeReq) or %NULL to scan for	 *	all SSIDs (either active scan with broadcast SSID or passive	 *	scan	 * @ssid_len: length of the SSID	 *	 * Returns: 0 on success, -1 on failure	 *	 * Once the scan results are ready, the driver should report scan	 * results event for wpa_supplicant which will eventually request the	 * results with wpa_driver_get_scan_results().	 */	int (*scan)(void *priv, const u8 *ssid, size_t ssid_len);	/**	 * get_scan_results - Fetch the latest scan results (old version)	 * @priv: private driver interface data	 * @results: pointer to buffer for scan results	 * @max_size: maximum number of entries (buffer size)	 *	 * Returns: Number of scan result entries used on success, -1 on	 * failure	 *	 * If scan results include more than max_size BSSes, max_size will be	 * returned and the remaining entries will not be included in the	 * buffer.	 *	 * This function is depracated. New driver wrapper implementations	 * should implement support for get_scan_results2().	 */	int (*get_scan_results)(void *priv,				struct wpa_scan_result *results,				size_t max_size);	/**	 * deauthenticate - Request driver to deauthenticate	 * @priv: private driver interface data	 * @addr: peer address (BSSID of the AP)	 * @reason_code: 16-bit reason code to be sent in the deauthentication	 *	frame	 *	 * Returns: 0 on success, -1 on failure	 */	int (*deauthenticate)(void *priv, const u8 *addr, int reason_code);	/**	 * disassociate - Request driver to disassociate	 * @priv: private driver interface data	 * @addr: peer address (BSSID of the AP)	 * @reason_code: 16-bit reason code to be sent in the disassociation	 *	frame	 *	 * Returns: 0 on success, -1 on failure	 */	int (*disassociate)(void *priv, const u8 *addr, int reason_code);	/**	 * associate - Request driver to associate	 * @priv: private driver interface data	 * @params: association parameters	 *	 * Returns: 0 on success, -1 on failure	 */	int (*associate)(void *priv,			 struct wpa_driver_associate_params *params);	/**	 * set_auth_alg - Set IEEE 802.11 authentication algorithm	 * @priv: private driver interface data	 * @auth_alg: bit field of AUTH_ALG_*	 *	 * If the driver supports more than one authentication algorithm at the	 * same time, it should configure all supported algorithms. If not, one	 * algorithm needs to be selected arbitrarily. Open System	 * authentication should be ok for most cases and it is recommended to	 * be used if other options are not supported. Static WEP configuration	 * may also use Shared Key authentication and LEAP requires its own	 * algorithm number. For LEAP, user can make sure that only one	 * algorithm is used at a time by configuring LEAP as the only	 * supported EAP method. This information is also available in	 * associate() params, so set_auth_alg may not be needed in case of	 * most drivers.	 *	 * Returns: 0 on success, -1 on failure	 */	int (*set_auth_alg)(void *priv, int auth_alg);	/**	 * add_pmkid - Add PMKSA cache entry to the driver	 * @priv: private driver interface data	 * @bssid: BSSID for the PMKSA cache entry	 * @pmkid: PMKID for the PMKSA cache entry	 *	 * Returns: 0 on success, -1 on failure	 *	 * This function is called when a new PMK is received, as a result of	 * either normal authentication or RSN pre-authentication.	 *	 * If the driver generates RSN IE, i.e., it does not use wpa_ie in	 * associate(), add_pmkid() can be used to add new PMKSA cache entries	 * in the driver. If the driver uses wpa_ie from wpa_supplicant, this	 * driver_ops function does not need to be implemented. Likewise, if	 * the driver does not support WPA, this function is not needed.	 */	int (*add_pmkid)(void *priv, const u8 *bssid, const u8 *pmkid);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -