static void wpa_ndiswrapper_deinit(void *priv)
{
	struct wpa_driver_ndiswrapper_data *drv = priv;
	wpa_driver_wext_deinit(drv->wext);
	close(drv->sock);
	free(drv);
}
Esempio n. 2
0
void wpa_driver_awext_deinit(void *priv)
{
	struct wpa_driver_awext_data *drv = priv;
	wpa_driver_wext_deinit(drv->wext);
	close(drv->ioctl_sock);
	os_free(drv);
}
static void wpa_driver_madwifi_deinit(void *priv)
{
	struct wpa_driver_madwifi_data *drv = priv;

	if (wpa_driver_madwifi_set_wpa_ie(drv, NULL, 0) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to clear WPA IE",
			   __FUNCTION__);
	}
	if (set80211param(drv, IEEE80211_PARAM_ROAMING, 0, 1) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to enable driver-based "
			   "roaming", __FUNCTION__);
	}
	if (set80211param(drv, IEEE80211_PARAM_PRIVACY, 0, 1) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to disable forced Privacy "
			   "flag", __FUNCTION__);
	}
	if (set80211param(drv, IEEE80211_PARAM_WPA, 0, 1) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to disable WPA",
			   __FUNCTION__);
	}

	wpa_driver_wext_deinit(drv->wext);

	close(drv->sock);
	os_free(drv);
}
Esempio n. 4
0
void * wpa_driver_awext_init(void *ctx, const char *ifname)
{
	struct wpa_driver_awext_data *drv;
	drv = os_zalloc(sizeof(*drv));
	if (drv == NULL)
		return NULL;
	drv->wext = wpa_driver_wext_init(ctx, ifname);
	if (drv->wext == NULL)
	{
		os_free(drv);
		return NULL;
	}

	drv->ctx = ctx;

	os_strncpy(drv->ifname, ifname, sizeof(drv->ifname));
	drv->ioctl_sock = socket(PF_INET, SOCK_DGRAM, 0);
	if (drv->ioctl_sock < 0)
	{
		wpa_driver_wext_deinit(drv->wext);
		os_free(drv);
		return NULL;
	}

	return drv;
}
Esempio n. 5
0
static void wpa_driver_prism54_deinit(void *priv)
{
	struct wpa_driver_prism54_data *drv = priv;
	wpa_driver_wext_deinit(drv->wext);
	close(drv->sock);
	os_free(drv);
}
Esempio n. 6
0
static void * wpa_driver_madwifi_init(void *ctx, const char *ifname)
{
	struct wpa_driver_madwifi_data *drv;

	drv = malloc(sizeof(*drv));
	if (drv == NULL)
		return NULL;
	memset(drv, 0, sizeof(*drv));
	drv->wext = wpa_driver_wext_init(ctx, ifname);
	if (drv->wext == NULL) {
		free(drv);
		return NULL;
	}

	drv->ctx = ctx;
	strncpy(drv->ifname, ifname, sizeof(drv->ifname));
	drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
	if (drv->sock < 0) {
		wpa_driver_wext_deinit(drv->wext);
		free(drv);
		return NULL;
	}

	return drv;
}
Esempio n. 7
0
static void * wpa_driver_ipw_init(void *ctx, const char *ifname)
{
    struct wpa_driver_ipw_data *drv;
    int ver;

    wpa_printf(MSG_DEBUG, "%s is called", __FUNCTION__);
    drv = os_zalloc(sizeof(*drv));
    if (drv == NULL)
        return NULL;
    drv->wext = wpa_driver_wext_init(ctx, ifname);
    if (drv->wext == NULL) {
        os_free(drv);
        return NULL;
    }

    ver = wpa_driver_wext_get_version(drv->wext);
    if (ver >= 18) {
        wpa_printf(MSG_WARNING, "Linux wireless extensions version %d "
                   "detected.", ver);
        wpa_printf(MSG_WARNING, "ipw2x00 driver uses driver_wext "
                   "(-Dwext) instead of driver_ipw.");
    }

    drv->ctx = ctx;
    os_strncpy(drv->ifname, ifname, sizeof(drv->ifname));
    drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
    if (drv->sock < 0) {
        wpa_driver_wext_deinit(drv->wext);
        os_free(drv);
        return NULL;
    }

    return drv;
}
Esempio n. 8
0
static void wpa_driver_ipw_deinit(void *priv)
{
	struct wpa_driver_ipw_data *drv = priv;
	wpa_driver_ipw_set_wpa(drv, 0);
	wpa_driver_wext_deinit(drv->wext);
	close(drv->sock);
	os_free(drv);
}
Esempio n. 9
0
/**
 * wpa_driver_tista_deinit - Deinitialize WE driver interface
 * @priv: Pointer to private wext data from wpa_driver_tista_init()
 *
 * Shut down driver interface and processing of driver events. Free
 * private data buffer if one was allocated in wpa_driver_tista_init().
 */
void wpa_driver_tista_deinit(void *priv)
{
    struct wpa_driver_ti_data *drv = priv;

    wpa_driver_wext_deinit(drv->wext);
    close(drv->ioctl_sock);
    scan_exit(drv);
#ifdef CONFIG_WPS
    wpabuf_free(drv->probe_req_ie);
    drv->probe_req_ie = NULL;
#endif
    os_free(drv);
}
Esempio n. 10
0
/**
 * wpa_driver_tista_init - Initialize WE 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
 */
void * wpa_driver_tista_init(void *ctx, const char *ifname)
{
    struct wpa_driver_ti_data *drv;

    drv = os_zalloc(sizeof(*drv));
    if (drv == NULL)
        return NULL;
    drv->wext = wpa_driver_wext_init(ctx, ifname);
    if (drv->wext == NULL) {
        os_free(drv);
        return NULL;
    }

    drv->ctx = ctx;
    os_strncpy(drv->ifname, ifname, sizeof(drv->ifname));
    drv->ioctl_sock = socket(PF_INET, SOCK_DGRAM, 0);
    if (drv->ioctl_sock < 0) {
        perror("socket");
        wpa_driver_wext_deinit(drv->wext);
        os_free(drv);
        return NULL;
    }

    /* Signal that driver is not stopped */
    drv->driver_is_loaded = TRUE;

    /* Set default scan type */
    drv->scan_type = SCAN_TYPE_NORMAL_ACTIVE;
    drv->force_merge_flag = 0;
    scan_init(drv);

    /* Set default amount of channels */
    drv->scan_channels = check_and_get_build_channels();

    /* Link Speed will be set by the message from the driver */
    drv->link_speed = 0;

    /* BtCoex mode is read from tiwlan.ini file */
    drv->btcoex_mode = 0; /* SG_DISABLE */

#ifdef CONFIG_WPS
    /* The latest probe_req_ie for WSC */
    drv->probe_req_ie = NULL;
#endif

    /* Number of sequential errors */
    drv->errors = 0;
    return drv;
}
static void * wpa_driver_madwifi_init(void *ctx, const char *ifname)
{
	struct wpa_driver_madwifi_data *drv;

	drv = malloc(sizeof(*drv));
	if (drv == NULL)
		return NULL;
	memset(drv, 0, sizeof(*drv));
	drv->wext = wpa_driver_wext_init(ctx, ifname);
	if (drv->wext == NULL)
		goto fail;

	drv->ctx = ctx;
	strncpy(drv->ifname, ifname, sizeof(drv->ifname));
	drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
	if (drv->sock < 0)
		goto fail2;

	if (set80211param(drv, IEEE80211_PARAM_ROAMING, 2, 1) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to set wpa_supplicant-based "
			   "roaming", __FUNCTION__);
		goto fail3;
	}

	if (set80211param(drv, IEEE80211_PARAM_WPA, 3, 1) < 0) {
		wpa_printf(MSG_DEBUG, "%s: failed to enable WPA support",
			   __FUNCTION__);
		goto fail3;
	}

	return drv;

fail3:
	close(drv->sock);
fail2:
	wpa_driver_wext_deinit(drv->wext);
fail:
	free(drv);
	return NULL;
}
Esempio n. 12
0
static void * wpa_driver_hostap_init(void *ctx, const char *ifname)
{
	struct wpa_driver_hostap_data *drv;

	drv = os_zalloc(sizeof(*drv));
	if (drv == NULL)
		return NULL;
	drv->wext = wpa_driver_wext_init(ctx, ifname);
	if (drv->wext == NULL) {
		os_free(drv);
		return NULL;
	}

	drv->ctx = ctx;
	os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
	drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
	if (drv->sock < 0) {
		perror("socket");
		wpa_driver_wext_deinit(drv->wext);
		os_free(drv);
		return NULL;
	}

	if (os_strncmp(ifname, "wlan", 4) == 0) {
		/*
		 * Host AP driver may use both wlan# and wifi# interface in
		 * wireless events.
		 */
		char ifname2[IFNAMSIZ + 1];
		os_strlcpy(ifname2, ifname, sizeof(ifname2));
		os_memcpy(ifname2, "wifi", 4);
		wpa_driver_wext_alternative_ifindex(drv->wext, ifname2);
	}

	wpa_driver_hostap_set_wpa(drv, 1);

	return drv;
}
static void * wpa_ndiswrapper_init(void *ctx, const char *ifname)
{
	struct wpa_driver_ndiswrapper_data *drv;

	drv = wpa_zalloc(sizeof(*drv));
	if (drv == NULL)
		return NULL;
	drv->wext = wpa_driver_wext_init(ctx, ifname);
	if (drv->wext == NULL) {
		free(drv);
		return NULL;
	}

	drv->ctx = ctx;
	strncpy(drv->ifname, ifname, sizeof(drv->ifname));
	drv->sock = get_socket();
	if (drv->sock < 0) {
		wpa_driver_wext_deinit(drv->wext);
		free(drv);
		return NULL;
	}

	return drv;
}