wpa_driver_ops Struct Reference

Driver interface API definition. More...

#include <driver.h>

Data Fields

const char * name
const char * desc
int(* get_bssid )(void *priv, u8 *bssid)
 Get the current BSSID.
int(* get_ssid )(void *priv, u8 *ssid)
 Get the current SSID.
int(* set_key )(const char *ifname, 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)
 Configure encryption key.
void *(* init )(void *ctx, const char *ifname)
 Initialize driver interface.
void(* deinit )(void *priv)
 Deinitialize driver interface.
int(* set_param )(void *priv, const char *param)
 Set driver configuration parameters.
int(* set_countermeasures )(void *priv, int enabled)
 Enable/disable TKIP countermeasures.
int(* deauthenticate )(void *priv, const u8 *addr, int reason_code)
 Request driver to deauthenticate.
int(* disassociate )(void *priv, const u8 *addr, int reason_code)
 Request driver to disassociate.
int(* associate )(void *priv, struct wpa_driver_associate_params *params)
 Request driver to associate.
int(* add_pmkid )(void *priv, const u8 *bssid, const u8 *pmkid)
 Add PMKSA cache entry to the driver.
int(* remove_pmkid )(void *priv, const u8 *bssid, const u8 *pmkid)
 Remove PMKSA cache entry to the driver.
int(* flush_pmkid )(void *priv)
 Flush PMKSA cache.
int(* get_capa )(void *priv, struct wpa_driver_capa *capa)
 Get driver capabilities.
void(* poll )(void *priv)
 Poll driver for association information.
const char *(* get_ifname )(void *priv)
 Get interface name.
const u8 *(* get_mac_addr )(void *priv)
 Get own MAC address.
int(* send_eapol )(void *priv, const u8 *dest, u16 proto, const u8 *data, size_t data_len)
 Optional function for sending EAPOL packets.
int(* set_operstate )(void *priv, int state)
 Sets device operating state to DORMANT or UP.
int(* mlme_setprotection )(void *priv, const u8 *addr, int protect_type, int key_type)
 MLME-SETPROTECTION.request primitive.
struct hostapd_hw_modes *(* get_hw_feature_data )(void *priv, u16 *num_modes, u16 *flags)
 Get hardware support data (channels and rates).
int(* set_channel )(void *priv, hostapd_hw_mode phymode, int chan, int freq)
 Set channel.
int(* set_ssid )(void *priv, const u8 *ssid, size_t ssid_len)
 Set SSID.
int(* set_bssid )(void *priv, const u8 *bssid)
 Set BSSID.
int(* send_mlme )(void *priv, const u8 *data, size_t data_len)
 Send management frame from MLME.
int(* mlme_add_sta )(void *priv, const u8 *addr, const u8 *supp_rates, size_t supp_rates_len)
 Add a STA entry into the driver/netstack.
int(* mlme_remove_sta )(void *priv, const u8 *addr)
 Remove a STA entry from the driver/netstack.
int(* update_ft_ies )(void *priv, const u8 *md, const u8 *ies, size_t ies_len)
 Update FT (IEEE 802.11r) IEs.
int(* send_ft_action )(void *priv, u8 action, const u8 *target_ap, const u8 *ies, size_t ies_len)
 Send FT Action frame (IEEE 802.11r).
struct wpa_scan_results *(* get_scan_results2 )(void *priv)
 Fetch the latest scan results.
int(* set_country )(void *priv, const char *alpha2)
 Set country.
void *(* global_init )(void)
 Global driver initialization.
void(* global_deinit )(void *priv)
 Global driver deinitialization.
void *(* init2 )(void *ctx, const char *ifname, void *global_priv)
 Initialize driver interface (with global data).
struct wpa_interface_info *(* get_interfaces )(void *global_priv)
 Get information about available interfaces.
int(* scan2 )(void *priv, struct wpa_driver_scan_params *params)
 Request the driver to initiate scan.
int(* authenticate )(void *priv, struct wpa_driver_auth_params *params)
 Request driver to authenticate.
int(* set_beacon )(const char *ifname, void *priv, const u8 *head, size_t head_len, const u8 *tail, size_t tail_len, int dtim_period, int beacon_int)
void *(* hapd_init )(struct hostapd_data *hapd, struct wpa_init_params *params)
void(* hapd_deinit )(void *priv)
int(* set_ieee8021x )(const char *ifname, void *priv, int enabled)
 enable/disable IEEE 802.1X support
int(* set_privacy )(const char *ifname, void *priv, int enabled)
 enable/disable privacy
int(* get_seqnum )(const char *ifname, void *priv, const u8 *addr, int idx, u8 *seq)
int(* get_seqnum_igtk )(const char *ifname, void *priv, const u8 *addr, int idx, u8 *seq)
int(* flush )(void *priv)
int(* set_generic_elem )(const char *ifname, void *priv, const u8 *elem, size_t elem_len)
int(* read_sta_data )(void *priv, struct hostap_sta_driver_data *data, const u8 *addr)
int(* hapd_send_eapol )(void *priv, const u8 *addr, const u8 *data, size_t data_len, int encrypt, const u8 *own_addr)
int(* sta_deauth )(void *priv, const u8 *own_addr, const u8 *addr, int reason)
int(* sta_disassoc )(void *priv, const u8 *own_addr, const u8 *addr, int reason)
int(* sta_remove )(void *priv, const u8 *addr)
int(* hapd_get_ssid )(const char *ifname, void *priv, u8 *buf, int len)
int(* hapd_set_ssid )(const char *ifname, void *priv, const u8 *buf, int len)
int(* hapd_set_countermeasures )(void *priv, int enabled)
int(* sta_add )(const char *ifname, void *priv, struct hostapd_sta_add_params *params)
int(* get_inact_sec )(void *priv, const u8 *addr)
int(* sta_clear_stats )(void *priv, const u8 *addr)
int(* set_freq )(void *priv, struct hostapd_freq_params *freq)
int(* set_rts )(void *priv, int rts)
int(* set_frag )(void *priv, int frag)
int(* sta_set_flags )(void *priv, const u8 *addr, int total_flags, int flags_or, int flags_and)
int(* set_rate_sets )(void *priv, int *supp_rates, int *basic_rates, int mode)
int(* set_internal_bridge )(void *priv, int value)
int(* set_cts_protect )(void *priv, int value)
int(* set_preamble )(void *priv, int value)
int(* set_short_slot_time )(void *priv, int value)
int(* set_tx_queue_params )(void *priv, int queue, int aifs, int cw_min, int cw_max, int burst_time)
int(* bss_add )(void *priv, const char *ifname, const u8 *bssid)
int(* bss_remove )(void *priv, const char *ifname)
int(* valid_bss_mask )(void *priv, const u8 *addr, const u8 *mask)
int(* if_add )(const char *iface, void *priv, enum hostapd_driver_if_type type, char *ifname, const u8 *addr)
int(* if_update )(void *priv, enum hostapd_driver_if_type type, char *ifname, const u8 *addr)
int(* if_remove )(void *priv, enum hostapd_driver_if_type type, const char *ifname, const u8 *addr)
int(* set_sta_vlan )(void *priv, const u8 *addr, const char *ifname, int vlan_id)
int(* commit )(void *priv)
 Optional commit changes handler.
int(* send_ether )(void *priv, const u8 *dst, const u8 *src, u16 proto, const u8 *data, size_t data_len)
int(* set_radius_acl_auth )(void *priv, const u8 *mac, int accepted, u32 session_timeout)
int(* set_radius_acl_expire )(void *priv, const u8 *mac)
int(* set_ht_params )(const char *ifname, void *priv, const u8 *ht_capab, size_t ht_capab_len, const u8 *ht_oper, size_t ht_oper_len)
int(* set_wps_beacon_ie )(const char *ifname, void *priv, const u8 *ie, size_t len)
int(* set_wps_probe_resp_ie )(const char *ifname, void *priv, const u8 *ie, size_t len)
int(* set_supp_port )(void *priv, int authorized)
 Set IEEE 802.1X Supplicant Port status.

Detailed Description

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.


Field Documentation

int(* wpa_driver_ops::add_pmkid)(void *priv, const u8 *bssid, const u8 *pmkid)

Add PMKSA cache entry to the driver.

Parameters:
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(* wpa_driver_ops::associate)(void *priv, struct wpa_driver_associate_params *params)

Request driver to associate.

Parameters:
priv private driver interface data
params association parameters
Returns:
0 on success, -1 on failure
int(* wpa_driver_ops::authenticate)(void *priv, struct wpa_driver_auth_params *params)

Request driver to authenticate.

Parameters:
priv private driver interface data
params authentication parameters
Returns:
0 on success, -1 on failure

This is an optional function that can be used with drivers that support separate authentication and association steps, i.e., when wpa_supplicant can act as the SME. If not implemented, associate() function is expected to take care of IEEE 802.11 authentication, too.

int(* wpa_driver_ops::commit)(void *priv)

Optional commit changes handler.

Parameters:
priv driver private data
Returns:
0 on success, -1 on failure

This optional handler function can be registered if the driver interface implementation needs to commit changes (e.g., by setting network interface up) at the end of initial configuration. If set, this handler will be called after initial setup has been completed.

int(* wpa_driver_ops::deauthenticate)(void *priv, const u8 *addr, int reason_code)

Request driver to deauthenticate.

Parameters:
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
void(* wpa_driver_ops::deinit)(void *priv)

Deinitialize driver interface.

Parameters:
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.

const char* wpa_driver_ops::desc

One line description of the driver interface

int(* wpa_driver_ops::disassociate)(void *priv, const u8 *addr, int reason_code)

Request driver to disassociate.

Parameters:
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(* wpa_driver_ops::flush_pmkid)(void *priv)

Flush PMKSA cache.

Parameters:
priv private driver interface data
Returns:
0 on success, -1 on failure

This function is called when the supplicant drops all PMKSA cache entries for any reason.

If the driver generates RSN IE, i.e., it does not use wpa_ie in associate(), remove_pmkid() can be used to synchronize PMKSA caches between the driver and wpa_supplicant. 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(* wpa_driver_ops::get_bssid)(void *priv, u8 *bssid)

Get the current BSSID.

Parameters:
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(* wpa_driver_ops::get_capa)(void *priv, struct wpa_driver_capa *capa)

Get driver capabilities.

Parameters:
priv private driver interface data
Returns:
0 on success, -1 on failure

Get driver/firmware/hardware capabilities.

struct hostapd_hw_modes*(* wpa_driver_ops::get_hw_feature_data)(void *priv, u16 *num_modes, u16 *flags) [read]

Get hardware support data (channels and rates).

Parameters:
priv Private driver interface data
num_modes Variable for returning the number of returned modes flags: Variable for returning hardware feature flags
Returns:
Pointer to allocated hardware data on success or NULL on failure. Caller is responsible for freeing this.

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

const char*(* wpa_driver_ops::get_ifname)(void *priv)

Get interface name.

Parameters:
priv private driver interface data
Returns:
Pointer to the interface name. This can differ from the interface name used in init() call. Init() is called first.

This optional function can be used to allow the driver interface to replace the interface name with something else, e.g., based on an interface mapping from a more descriptive name.

struct wpa_interface_info*(* wpa_driver_ops::get_interfaces)(void *global_priv) [read]

Get information about available interfaces.

Parameters:
global_priv private driver global data from global_init()
Returns:
Allocated buffer of interface information (caller is responsible for freeing the data structure) on success, NULL on failure
const u8*(* wpa_driver_ops::get_mac_addr)(void *priv)

Get own MAC address.

Parameters:
priv private driver interface data
Returns:
Pointer to own MAC address or NULL on failure

This optional function can be used to get the own MAC address of the device from the driver interface code. This is only needed if the l2_packet implementation for the OS does not provide easy access to a MAC address.

struct wpa_scan_results*(* wpa_driver_ops::get_scan_results2)(void *priv) [read]

Fetch the latest scan results.

Parameters:
priv private driver interface data
Returns:
Allocated buffer of scan results (caller is responsible for freeing the data structure) on success, NULL on failure
int(* wpa_driver_ops::get_ssid)(void *priv, u8 *ssid)

Get the current SSID.

Parameters:
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.

void(* wpa_driver_ops::global_deinit)(void *priv)

Global driver deinitialization.

Parameters:
priv private driver global data from global_init()

Terminate any global driver related functionality and free the global data structure.

Global driver initialization.

Returns:
Pointer to private data (global), NULL on failure

This optional function is called to initialize the driver wrapper for global data, i.e., data that applies to all interfaces. If this function is implemented, global_deinit() will also need to be implemented to free the private data. The driver will also likely use init2() function instead of init() to get the pointer to global data available to per-interface initializer.

void*(* wpa_driver_ops::init)(void *ctx, const char *ifname)

Initialize driver interface.

Parameters:
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

Parameters:
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*(* wpa_driver_ops::init2)(void *ctx, const char *ifname, void *global_priv)

Initialize driver interface (with global data).

Parameters:
ctx context to be used when calling wpa_supplicant functions, e.g., wpa_supplicant_event()
ifname interface name, e.g., wlan0
global_priv private driver global data from global_init()
Returns:
Pointer to private data, NULL on failure

This function can be used instead of init() if the driver wrapper uses global data.

int(* wpa_driver_ops::mlme_add_sta)(void *priv, const u8 *addr, const u8 *supp_rates, size_t supp_rates_len)

Add a STA entry into the driver/netstack.

Parameters:
priv Private driver interface data
addr MAC address of the STA (e.g., BSSID of the AP)
supp_rates Supported rate set (from (Re)AssocResp); in IEEE 802.11 format (one octet per rate, 1 = 0.5 Mbps)
supp_rates_len Number of entries in supp_rates
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant. When the MLME code completes association with an AP, this function is called to configure the driver/netstack with a STA entry for data frame processing (TX rate control, encryption/decryption).

int(* wpa_driver_ops::mlme_remove_sta)(void *priv, const u8 *addr)

Remove a STA entry from the driver/netstack.

Parameters:
priv Private driver interface data
addr MAC address of the STA (e.g., BSSID of the AP)
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

int(* wpa_driver_ops::mlme_setprotection)(void *priv, const u8 *addr, int protect_type, int key_type)

MLME-SETPROTECTION.request primitive.

Parameters:
priv Private driver interface data
addr Address of the station for which to set protection (may be NULL for group keys)
protect_type MLME_SETPROTECTION_PROTECT_TYPE_*
key_type MLME_SETPROTECTION_KEY_TYPE_*
Returns:
0 on success, -1 on failure

This is an optional function that can be used to set the driver to require protection for Tx and/or Rx frames. This uses the layer interface defined in IEEE 802.11i-2004 clause 10.3.22.1 (MLME-SETPROTECTION.request). Many drivers do not use explicit set protection operation; instead, they set protection implicitly based on configured keys.

const char* wpa_driver_ops::name

Name of the driver interface

void(* wpa_driver_ops::poll)(void *priv)

Poll driver for association information.

Parameters:
priv private driver interface data

This is an option callback that can be used when the driver does not provide event mechanism for association events. This is called when receiving WPA EAPOL-Key messages that require association information. The driver interface is supposed to generate associnfo event before returning from this callback function. In addition, the driver interface should generate an association event after having sent out associnfo.

int(* wpa_driver_ops::remove_pmkid)(void *priv, const u8 *bssid, const u8 *pmkid)

Remove PMKSA cache entry to the driver.

Parameters:
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 the supplicant drops a PMKSA cache entry for any reason.

If the driver generates RSN IE, i.e., it does not use wpa_ie in associate(), remove_pmkid() can be used to synchronize PMKSA caches between the driver and wpa_supplicant. 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(* wpa_driver_ops::scan2)(void *priv, struct wpa_driver_scan_params *params)

Request the driver to initiate scan.

Parameters:
priv private driver interface data
params Scan parameters
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_results2().

int(* wpa_driver_ops::send_eapol)(void *priv, const u8 *dest, u16 proto, const u8 *data, size_t data_len)

Optional function for sending EAPOL packets.

Parameters:
priv private driver interface data
dest Destination MAC address
proto Ethertype
data EAPOL packet starting with IEEE 802.1X header
data_len Size of the EAPOL packet
Returns:
0 on success, -1 on failure

This optional function can be used to override l2_packet operations with driver specific functionality. If this function pointer is set, l2_packet module is not used at all and the driver interface code is responsible for receiving and sending all EAPOL packets. The received EAPOL packets are sent to core code by calling wpa_supplicant_rx_eapol(). The driver interface is required to implement get_mac_addr() handler if send_eapol() is used.

int(* wpa_driver_ops::send_ft_action)(void *priv, u8 action, const u8 *target_ap, const u8 *ies, size_t ies_len)

Send FT Action frame (IEEE 802.11r).

Parameters:
priv Private driver interface data
action Action field value
target_ap Target AP address
ies FT IEs (MDIE, FTIE, ...) (FT Request action frame body)
ies_len Length of FT IEs in bytes
Returns:
0 on success, -1 on failure

The supplicant uses this callback to request the driver to transmit an FT Action frame (action category 6) for over-the-DS fast BSS transition.

int(* wpa_driver_ops::send_mlme)(void *priv, const u8 *data, size_t data_len)

Send management frame from MLME.

Parameters:
priv Private driver interface data
data IEEE 802.11 management frame with IEEE 802.11 header
data_len Size of the management frame
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

int(* wpa_driver_ops::set_bssid)(void *priv, const u8 *bssid)

Set BSSID.

Parameters:
priv Private driver interface data
bssid BSSID
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

int(* wpa_driver_ops::set_channel)(void *priv, hostapd_hw_mode phymode, int chan, int freq)

Set channel.

Parameters:
priv Private driver interface data
phymode HOSTAPD_MODE_IEEE80211B, ..
chan IEEE 802.11 channel number
freq Frequency of the channel in MHz
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

int(* wpa_driver_ops::set_countermeasures)(void *priv, int enabled)

Enable/disable TKIP countermeasures.

Parameters:
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(* wpa_driver_ops::set_country)(void *priv, const char *alpha2)

Set country.

Parameters:
priv Private driver interface data
alpha2 country to which to switch to
Returns:
0 on success, -1 on failure

This function is for drivers which support some form of setting a regulatory domain.

int(* wpa_driver_ops::set_ieee8021x)(const char *ifname, void *priv, int enabled)

enable/disable IEEE 802.1X support

Parameters:
ifname Interface name (for multi-SSID/VLAN support)
priv driver private data
enabled 1 = enable, 0 = disable
Returns:
0 on success, -1 on failure

Configure the kernel driver to enable/disable 802.1X support. This may be an empty function if 802.1X support is always enabled.

int(* wpa_driver_ops::set_key)(const char *ifname, 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)

Configure encryption key.

Parameters:
ifname Interface name (for multi-SSID/VLAN support)
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(* wpa_driver_ops::set_operstate)(void *priv, int state)

Sets device operating state to DORMANT or UP.

Parameters:
priv private driver interface data
state 0 = dormant, 1 = up
Returns:
0 on success, -1 on failure

This is an optional function that can be used on operating systems that support a concept of controlling network device state from user space applications. This function, if set, gets called with state = 1 when authentication has been completed and with state = 0 when connection is lost.

int(* wpa_driver_ops::set_param)(void *priv, const char *param)

Set driver configuration parameters.

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(* wpa_driver_ops::set_privacy)(const char *ifname, void *priv, int enabled)

enable/disable privacy

Parameters:
priv driver private data
enabled 1 = privacy enabled, 0 = disabled

Return: 0 on success, -1 on failure

Configure privacy.

int(* wpa_driver_ops::set_ssid)(void *priv, const u8 *ssid, size_t ssid_len)

Set SSID.

Parameters:
priv Private driver interface data
ssid SSID
ssid_len SSID length
Returns:
0 on success, -1 on failure

This function is only needed for drivers that export MLME (management frame processing) to wpa_supplicant.

int(* wpa_driver_ops::set_supp_port)(void *priv, int authorized)

Set IEEE 802.1X Supplicant Port status.

Parameters:
priv Private driver interface data
authorized Whether the port is authorized
Returns:
0 on success, -1 on failure
int(* wpa_driver_ops::update_ft_ies)(void *priv, const u8 *md, const u8 *ies, size_t ies_len)

Update FT (IEEE 802.11r) IEs.

Parameters:
priv Private driver interface data
md Mobility domain (2 octets) (also included inside ies)
ies FT IEs (MDIE, FTIE, ...) or NULL to remove IEs
ies_len Length of FT IEs in bytes
Returns:
0 on success, -1 on failure

The supplicant uses this callback to let the driver know that keying material for FT is available and that the driver can use the provided IEs in the next message in FT authentication sequence.

This function is only needed for driver that support IEEE 802.11r (Fast BSS Transition).


The documentation for this struct was generated from the following file:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on Sat Nov 28 23:07:52 2009 for wpa_supplicant/hostapd by  doxygen 1.6.1