static int wpa_driver_hostap_associate(void *priv, struct wpa_driver_associate_params *params) { struct wpa_driver_hostap_data *drv = priv; int ret = 0; int allow_unencrypted_eapol; wpa_printf(MSG_DEBUG, "%s", __FUNCTION__); if (params->mode != drv->current_mode) { /* At the moment, Host AP driver requires host_roaming=2 for * infrastructure mode and host_roaming=0 for adhoc. */ if (prism2param(drv, PRISM2_PARAM_HOST_ROAMING, params->mode == IEEE80211_MODE_IBSS ? 0 : 2) < 0) { wpa_printf(MSG_DEBUG, "%s: failed to set host_roaming", __func__); } drv->current_mode = params->mode; } if (prism2param(drv, PRISM2_PARAM_PRIVACY_INVOKED, params->key_mgmt_suite != KEY_MGMT_NONE) < 0) ret = -1; if (wpa_driver_hostap_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0) ret = -1; if (wpa_driver_wext_set_mode(drv->wext, params->mode) < 0) ret = -1; if (params->freq && wpa_driver_wext_set_freq(drv->wext, params->freq) < 0) ret = -1; if (wpa_driver_wext_set_ssid(drv->wext, params->ssid, params->ssid_len) < 0) ret = -1; if (wpa_driver_wext_set_bssid(drv->wext, params->bssid) < 0) ret = -1; /* Allow unencrypted EAPOL messages even if pairwise keys are set when * not using WPA. IEEE 802.1X specifies that these frames are not * encrypted, but WPA encrypts them when pairwise keys are in use. */ if (params->key_mgmt_suite == KEY_MGMT_802_1X || params->key_mgmt_suite == KEY_MGMT_PSK) allow_unencrypted_eapol = 0; else allow_unencrypted_eapol = 1; if (prism2param(drv, PRISM2_PARAM_IEEE_802_1X, allow_unencrypted_eapol) < 0) { wpa_printf(MSG_DEBUG, "hostap: Failed to configure " "ieee_802_1x param"); /* Ignore this error.. driver_hostap.c can also be used with * other drivers that do not support this prism2_param. */ } return ret; }
static int wpa_driver_prism54_associate(void *priv, struct wpa_driver_associate_params *params) { struct wpa_driver_prism54_data *drv = priv; int ret = 0; if (wpa_driver_prism54_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0) ret = -1; if (wpa_driver_wext_set_freq(drv->wext, params->freq) < 0) ret = -1; if (wpa_driver_wext_set_ssid(drv->wext, params->ssid, params->ssid_len) < 0) ret = -1; if (wpa_driver_wext_set_bssid(drv->wext, params->bssid) < 0) ret = -1; return ret; }
static int wpa_driver_hostap_associate(const char *ifname, const char *bssid, const char *ssid, size_t ssid_len, int freq, const char *wpa_ie, size_t wpa_ie_len, wpa_cipher pairwise_suite, wpa_cipher group_suite, wpa_key_mgmt key_mgmt_suite) { int ret = 0; int allow_unencrypted_eapol; wpa_printf(MSG_DEBUG, "%s", __FUNCTION__); if (wpa_driver_hostap_set_wpa_ie(ifname, wpa_ie, wpa_ie_len) < 0) ret = -1; if (wpa_driver_wext_set_freq(ifname, freq) < 0) ret = -1; if (wpa_driver_wext_set_ssid(ifname, ssid, ssid_len) < 0) ret = -1; if (wpa_driver_wext_set_bssid(ifname, bssid) < 0) ret = -1; /* Allow unencrypted EAPOL messages even if pairwise keys are set when * not using WPA. IEEE 802.1X specifies that these frames are not * encrypted, but WPA encrypts them when pairwise keys are in use. */ if (key_mgmt_suite == KEY_MGMT_802_1X || key_mgmt_suite == KEY_MGMT_PSK) allow_unencrypted_eapol = 0; else allow_unencrypted_eapol = 1; if (prism2param(ifname, PRISM2_PARAM_IEEE_802_1X, allow_unencrypted_eapol) < 0) { wpa_printf(MSG_DEBUG, "hostap: Failed to configure " "ieee_802_1x param"); /* Ignore this error.. driver_hostap.c can also be used with * other drivers that do not support this prism2_param. */ } return ret; }
static int wpa_driver_atmel_associate(const char *ifname, const char *bssid, const char *ssid, size_t ssid_len, int freq, const char *wpa_ie, size_t wpa_ie_len, wpa_cipher pairwise_suite, wpa_cipher group_suite, wpa_key_mgmt key_mgmt_suite) { int ret = 0; u8 pairwise_suite_driver; u8 group_suite_driver; u8 key_mgmt_suite_driver; pairwise_suite_driver = convertSuiteToDriver(pairwise_suite); group_suite_driver = convertSuiteToDriver(group_suite); key_mgmt_suite_driver = convertSuiteToDriver(key_mgmt_suite); #if 0 if (wpa_driver_atmel_set_suites(ifname, pairwise_suite_driver, group_suite_driver, key_mgmt_suite_driver) < 0) { printf("wpa_driver_atmel_set_suites.\n"); ret = -1; } if (wpa_driver_wext_set_freq(ifname, freq) < 0) { printf("wpa_driver_atmel_set_freq.\n"); ret = -1; } #endif if (wpa_driver_wext_set_ssid(ifname, ssid, ssid_len) < 0) { printf("FAILED : wpa_driver_atmel_set_ssid.\n"); ret = -1; } if (wpa_driver_wext_set_bssid(ifname, bssid) < 0) { printf("FAILED : wpa_driver_atmel_set_bssid.\n"); ret = -1; } return ret; }
static int wpa_driver_atmel_associate(void *priv, struct wpa_driver_associate_params *params) { struct wpa_driver_atmel_data *drv = priv; int ret = 0; u8 pairwise_suite_driver; u8 group_suite_driver; u8 key_mgmt_suite_driver; pairwise_suite_driver = convertSuiteToDriver(params->pairwise_suite); group_suite_driver = convertSuiteToDriver(params->group_suite); key_mgmt_suite_driver = convertSuiteToDriver(params->key_mgmt_suite); #if 0 if (wpa_driver_atmel_set_suites(drv, pairwise_suite_driver, group_suite_driver, key_mgmt_suite_driver) < 0){ printf("wpa_driver_atmel_set_suites.\n"); ret = -1; } if (wpa_driver_wext_set_freq(drv->wext, params->freq) < 0) { printf("wpa_driver_atmel_set_freq.\n"); ret = -1; } #endif if (wpa_driver_wext_set_ssid(drv->wext, params->ssid, params->ssid_len) < 0) { printf("FAILED : wpa_driver_atmel_set_ssid.\n"); ret = -1; } if (wpa_driver_wext_set_bssid(drv->wext, params->bssid) < 0) { printf("FAILED : wpa_driver_atmel_set_bssid.\n"); ret = -1; } return ret; }
static int wpa_driver_tista_associate(void *priv, struct wpa_driver_associate_params *params) { struct wpa_driver_ti_data *drv = priv; int allow_unencrypted_eapol; int value, flags, ret = 0; wpa_printf(MSG_DEBUG, "%s", __FUNCTION__); TI_CHECK_DRIVER( drv->driver_is_loaded, -1 ); #ifdef WPA_SUPPLICANT_VER_0_6_X #ifdef ANDROID ((struct wpa_driver_wext_data *)(drv->wext))->skip_disconnect = 0; #endif #endif if (wpa_driver_wext_get_ifflags(drv->wext, &flags) == 0) { if (!(flags & IFF_UP)) { wpa_driver_wext_set_ifflags(drv->wext, flags | IFF_UP); } } #if 0 if (!params->bssid) wpa_driver_wext_set_bssid(drv->wext, NULL); #endif #ifdef WPA_SUPPLICANT_VER_0_5_X /* Set driver network mode (Adhoc/Infrastructure) according to supplied parameters */ wpa_driver_wext_set_mode(drv->wext, params->mode); #endif wpa_driver_tista_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len); if (params->wpa_ie == NULL || params->wpa_ie_len == 0) value = IW_AUTH_WPA_VERSION_DISABLED; #ifdef WPA_SUPPLICANT_VER_0_6_X else if (params->wpa_ie[0] == WLAN_EID_RSN) #else else if (params->wpa_ie[0] == RSN_INFO_ELEM) #endif value = IW_AUTH_WPA_VERSION_WPA2; #ifdef CONFIG_WPS else if (params->key_mgmt_suite == KEY_MGMT_WPS) value = IW_AUTH_WPA_VERSION_DISABLED; #endif else value = IW_AUTH_WPA_VERSION_WPA; wpa_driver_tista_set_auth_param(drv, IW_AUTH_WPA_VERSION, value); value = wpa_driver_tista_cipher2wext(params->pairwise_suite); wpa_driver_tista_set_auth_param(drv, IW_AUTH_CIPHER_PAIRWISE, value); value = wpa_driver_tista_cipher2wext(params->group_suite); wpa_driver_tista_set_auth_param(drv, IW_AUTH_CIPHER_GROUP, value); value = wpa_driver_tista_keymgmt2wext(params->key_mgmt_suite); wpa_driver_tista_set_auth_param(drv, IW_AUTH_KEY_MGMT, value); value = params->key_mgmt_suite != KEY_MGMT_NONE || params->pairwise_suite != CIPHER_NONE || params->group_suite != CIPHER_NONE || #ifdef WPA_SUPPLICANT_VER_0_6_X (params->wpa_ie_len && (params->key_mgmt_suite != KEY_MGMT_WPS)); #else params->wpa_ie_len; #endif wpa_driver_tista_set_auth_param(drv, IW_AUTH_PRIVACY_INVOKED, value); /* Allow unencrypted EAPOL messages even if pairwise keys are set when * not using WPA. IEEE 802.1X specifies that these frames are not * encrypted, but WPA encrypts them when pairwise keys are in use. */ if (params->key_mgmt_suite == KEY_MGMT_802_1X || params->key_mgmt_suite == KEY_MGMT_PSK) allow_unencrypted_eapol = 0; else allow_unencrypted_eapol = 1; wpa_driver_tista_set_auth_param(drv, IW_AUTH_RX_UNENCRYPTED_EAPOL, allow_unencrypted_eapol); if (params->freq) wpa_driver_wext_set_freq(drv->wext, params->freq); if (params->bssid) { wpa_printf(MSG_DEBUG, "wpa_driver_tista_associate: BSSID=" MACSTR, MAC2STR(params->bssid)); /* if there is bssid -> set it */ if (os_memcmp(params->bssid, "\x00\x00\x00\x00\x00\x00", ETH_ALEN) != 0) { wpa_driver_wext_set_bssid(drv->wext, params->bssid); } } ret = wpa_driver_wext_set_ssid(drv->wext, params->ssid, params->ssid_len); return ret; }
int wpa_driver_awext_set_freq(void *priv, int freq) { struct wpa_driver_awext_data *drv = priv; return wpa_driver_wext_set_freq(drv->wext, freq); }
static int wpa_driver_wext_associate(void *priv, struct wpa_driver_associate_params *params) { struct wpa_driver_wext_data *drv = priv; int ret = 0; int allow_unencrypted_eapol; int value; wpa_printf(MSG_DEBUG, "%s", __FUNCTION__); if (!params->bssid && wpa_driver_wext_set_bssid(drv, NULL) < 0) ret = -1; if (wpa_driver_wext_set_mode(drv, params->mode) < 0) ret = -1; /* TODO: should consider getting wpa version and cipher/key_mgmt suites * from configuration, not from here, where only the selected suite is * available */ if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0) ret = -1; if (params->wpa_ie == NULL || params->wpa_ie_len == 0) value = IW_AUTH_WPA_VERSION_DISABLED; else if (params->wpa_ie[0] == RSN_INFO_ELEM) value = IW_AUTH_WPA_VERSION_WPA2; else value = IW_AUTH_WPA_VERSION_WPA; if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_VERSION, value) < 0) ret = -1; value = wpa_driver_wext_cipher2wext(params->pairwise_suite); if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_CIPHER_PAIRWISE, value) < 0) ret = -1; value = wpa_driver_wext_cipher2wext(params->group_suite); if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_CIPHER_GROUP, value) < 0) ret = -1; value = wpa_driver_wext_keymgmt2wext(params->key_mgmt_suite); if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_KEY_MGMT, value) < 0) ret = -1; value = params->key_mgmt_suite != KEY_MGMT_NONE; if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_PRIVACY_INVOKED, value) < 0) ret = -1; /* Allow unencrypted EAPOL messages even if pairwise keys are set when * not using WPA. IEEE 802.1X specifies that these frames are not * encrypted, but WPA encrypts them when pairwise keys are in use. */ if (params->key_mgmt_suite == KEY_MGMT_802_1X || params->key_mgmt_suite == KEY_MGMT_PSK) allow_unencrypted_eapol = 0; else allow_unencrypted_eapol = 1; if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_RX_UNENCRYPTED_EAPOL, allow_unencrypted_eapol) < 0) ret = -1; if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0) ret = -1; if (wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) ret = -1; if (params->bssid && wpa_driver_wext_set_bssid(drv, params->bssid) < 0) ret = -1; return ret; }