diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-09-12 23:13:28 +0200 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-09-13 00:07:39 +0200 |
commit | f820c5f8ebb63ad9f8ec80a78c12eee37150a46d (patch) | |
tree | 115ad0fb5d9509046aac652be19d851df9a0ee31 | |
parent | bfe10a24bbf013304ac22dd1b7ac0380004f6394 (diff) | |
download | hardware_replicant_wlan-wip/replican-11/generic-wifi.tar.gz hardware_replicant_wlan-wip/replican-11/generic-wifi.tar.bz2 hardware_replicant_wlan-wip/replican-11/generic-wifi.zip |
Revert "Add wpa_supplicant_8_lib"wip/replican-11/generic-wifi
This reverts commit c210319a321c3fc6a3afbc24dc368f5c7da2304b.
-rw-r--r-- | wpa_supplicant_8_lib/Android.mk | 74 | ||||
-rw-r--r-- | wpa_supplicant_8_lib/MODULE_LICENSE_BSD | 0 | ||||
-rw-r--r-- | wpa_supplicant_8_lib/NOTICE | 38 | ||||
-rw-r--r-- | wpa_supplicant_8_lib/driver_cmd_nl80211.c | 201 | ||||
-rw-r--r-- | wpa_supplicant_8_lib/driver_cmd_wext.c | 391 | ||||
-rw-r--r-- | wpa_supplicant_8_lib/driver_cmd_wext.h | 32 |
6 files changed, 0 insertions, 736 deletions
diff --git a/wpa_supplicant_8_lib/Android.mk b/wpa_supplicant_8_lib/Android.mk deleted file mode 100644 index 0d8a47f..0000000 --- a/wpa_supplicant_8_lib/Android.mk +++ /dev/null @@ -1,74 +0,0 @@ -# -# Copyright (C) 2008 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -LOCAL_PATH := $(call my-dir) - -ifeq ($(WPA_SUPPLICANT_VERSION),VER_0_8_X) - -ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) - CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y -endif - -WPA_SUPPL_DIR = external/wpa_supplicant_8 -WPA_SRC_FILE := - -include $(WPA_SUPPL_DIR)/wpa_supplicant/android.config - -WPA_SUPPL_DIR_INCLUDE = $(WPA_SUPPL_DIR)/src \ - $(WPA_SUPPL_DIR)/src/common \ - $(WPA_SUPPL_DIR)/src/drivers \ - $(WPA_SUPPL_DIR)/src/l2_packet \ - $(WPA_SUPPL_DIR)/src/utils \ - $(WPA_SUPPL_DIR)/src/wps \ - $(WPA_SUPPL_DIR)/wpa_supplicant - -ifdef CONFIG_DRIVER_NL80211 -WPA_SUPPL_DIR_INCLUDE += external/libnl/include -WPA_SRC_FILE += driver_cmd_nl80211.c -endif - -ifdef CONFIG_DRIVER_WEXT -WPA_SRC_FILE += driver_cmd_wext.c -endif - -ifeq ($(TARGET_ARCH),arm) -# To force sizeof(enum) = 4 -L_CFLAGS += -mabi=aapcs-linux -endif - -ifdef CONFIG_ANDROID_LOG -L_CFLAGS += -DCONFIG_ANDROID_LOG -endif - -ifdef CONFIG_P2P -L_CFLAGS += -DCONFIG_P2P -endif - -L_CFLAGS += -Wall -Werror -Wno-unused-parameter -Wno-macro-redefined - -######################## - -include $(CLEAR_VARS) -LOCAL_MODULE := lib_driver_cmd_rtl -LOCAL_SHARED_LIBRARIES := libc libcutils -LOCAL_CFLAGS := $(L_CFLAGS) -LOCAL_SRC_FILES := $(WPA_SRC_FILE) -LOCAL_C_INCLUDES := $(WPA_SUPPL_DIR_INCLUDE) -LOCAL_VENDOR_MODULE := true -include $(BUILD_STATIC_LIBRARY) - -######################## - -endif diff --git a/wpa_supplicant_8_lib/MODULE_LICENSE_BSD b/wpa_supplicant_8_lib/MODULE_LICENSE_BSD deleted file mode 100644 index e69de29..0000000 --- a/wpa_supplicant_8_lib/MODULE_LICENSE_BSD +++ /dev/null diff --git a/wpa_supplicant_8_lib/NOTICE b/wpa_supplicant_8_lib/NOTICE deleted file mode 100644 index d4d14d0..0000000 --- a/wpa_supplicant_8_lib/NOTICE +++ /dev/null @@ -1,38 +0,0 @@ - -Copyright (c) 2005-2010, The Android Open Source Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of The Android Open Source Project nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - - * Copyright (c) 2002-2010, Jouni Malinen <j@w1.fi> - * Copyright (c) 2003-2004, Instant802 Networks, Inc. - * Copyright (c) 2005-2006, Devicescape Software, Inc. - * Copyright (c) 2007, Johannes Berg <johannes@sipsolutions.net> - * Copyright (c) 2009-2010, Atheros Communications - * - * This software is distributed under the terms of BSD license. diff --git a/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/wpa_supplicant_8_lib/driver_cmd_nl80211.c deleted file mode 100644 index 9b4c5e3..0000000 --- a/wpa_supplicant_8_lib/driver_cmd_nl80211.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Driver interaction with extended Linux CFG8021 - * - * This software is distributed under the terms of BSD license. - * - */ - -#include "includes.h" -#include <sys/types.h> -#include <fcntl.h> -#include <net/if.h> - -#include "common.h" -#include "linux_ioctl.h" -#include "driver_nl80211.h" -#include "wpa_supplicant_i.h" -#include "config.h" -#ifdef ANDROID -#include "android_drv.h" -#endif - -typedef struct android_wifi_priv_cmd { - char *bufaddr; - int used_len; - int total_len; -} android_wifi_priv_cmd; - -static int drv_errors = 0; - -static void wpa_driver_send_hang_msg(struct wpa_driver_nl80211_data *drv) -{ - drv_errors++; - if (drv_errors > DRV_NUMBER_SEQUENTIAL_ERRORS) { - drv_errors = 0; - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED"); - } -} - -static void wpa_driver_notify_country_change(void *ctx, char *cmd) -{ - if ((os_strncasecmp(cmd, "COUNTRY", 7) == 0) || - (os_strncasecmp(cmd, "SETBAND", 7) == 0)) { - union wpa_event_data event; - - os_memset(&event, 0, sizeof(event)); - event.channel_list_changed.initiator = REGDOM_SET_BY_USER; - if (os_strncasecmp(cmd, "COUNTRY", 7) == 0) { - event.channel_list_changed.type = REGDOM_TYPE_COUNTRY; - if (os_strlen(cmd) > 9) { - event.channel_list_changed.alpha2[0] = cmd[8]; - event.channel_list_changed.alpha2[1] = cmd[9]; - } - } else { - event.channel_list_changed.type = REGDOM_TYPE_UNKNOWN; - } - wpa_supplicant_event(ctx, EVENT_CHANNEL_LIST_CHANGED, &event); - } -} - -int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf, - size_t buf_len ) -{ - struct i802_bss *bss = priv; - struct wpa_driver_nl80211_data *drv = bss->drv; - struct ifreq ifr; - android_wifi_priv_cmd priv_cmd; - int ret = 0; - - if (bss->ifindex <= 0 && bss->wdev_id > 0) { - /* DRIVER CMD received on the DEDICATED P2P Interface which doesn't - * have an NETDEVICE associated with it. So we have to re-route the - * command to the parent NETDEVICE - */ - struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx); - - wpa_printf(MSG_DEBUG, "Re-routing DRIVER cmd to parent iface"); - if (wpa_s && wpa_s->parent) { - /* Update the nl80211 pointers corresponding to parent iface */ - bss = wpa_s->parent->drv_priv; - drv = bss->drv; - wpa_printf(MSG_DEBUG, "Re-routing command to iface: %s" - " cmd (%s)", bss->ifname, cmd); - } - } - - if (os_strcasecmp(cmd, "STOP") == 0) { - linux_set_iface_flags(drv->global->ioctl_sock, bss->ifname, 0); - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STOPPED"); - } else if (os_strcasecmp(cmd, "START") == 0) { - linux_set_iface_flags(drv->global->ioctl_sock, bss->ifname, 1); - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STARTED"); - } else if (os_strcasecmp(cmd, "MACADDR") == 0) { - u8 macaddr[ETH_ALEN] = {}; - - ret = linux_get_ifhwaddr(drv->global->ioctl_sock, bss->ifname, macaddr); - if (!ret) - ret = os_snprintf(buf, buf_len, - "Macaddr = " MACSTR "\n", MAC2STR(macaddr)); - } else { /* Use private command */ - os_memcpy(buf, cmd, strlen(cmd) + 1); - memset(&ifr, 0, sizeof(ifr)); - memset(&priv_cmd, 0, sizeof(priv_cmd)); - os_strlcpy(ifr.ifr_name, bss->ifname, IFNAMSIZ); - priv_cmd.bufaddr = buf; - priv_cmd.used_len = buf_len; - priv_cmd.total_len = buf_len; - ifr.ifr_data = &priv_cmd; - - if ((ret = ioctl(drv->global->ioctl_sock, SIOCDEVPRIVATE + 1, &ifr)) < 0) { - wpa_printf(MSG_ERROR, "%s: failed to issue private command: %s", __func__, cmd); - wpa_driver_send_hang_msg(drv); - } else { - drv_errors = 0; - ret = 0; - if ((os_strcasecmp(cmd, "LINKSPEED") == 0) || - (os_strcasecmp(cmd, "RSSI") == 0) || - (os_strcasecmp(cmd, "GETBAND") == 0) || - (os_strncasecmp(cmd, "WLS_BATCHING", 12) == 0)) - ret = strlen(buf); - wpa_driver_notify_country_change(drv->ctx, cmd); - wpa_printf(MSG_DEBUG, "%s %s len = %d, %zu", __func__, buf, ret, strlen(buf)); - } - } - return ret; -} - -int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, int duration) -{ - char buf[MAX_DRV_CMD_SIZE]; - - memset(buf, 0, sizeof(buf)); - wpa_printf(MSG_DEBUG, "%s: Entry", __func__); - snprintf(buf, sizeof(buf), "P2P_SET_NOA %d %d %d", count, start, duration); - return wpa_driver_nl80211_driver_cmd(priv, buf, buf, strlen(buf)+1); -} - -int wpa_driver_get_p2p_noa(void *priv __unused, u8 *buf __unused, size_t len __unused) -{ - /* Return 0 till we handle p2p_presence request completely in the driver */ - return 0; -} - -int wpa_driver_set_p2p_ps(void *priv, int legacy_ps, int opp_ps, int ctwindow) -{ - char buf[MAX_DRV_CMD_SIZE]; - - memset(buf, 0, sizeof(buf)); - wpa_printf(MSG_DEBUG, "%s: Entry", __func__); - snprintf(buf, sizeof(buf), "P2P_SET_PS %d %d %d", legacy_ps, opp_ps, ctwindow); - return wpa_driver_nl80211_driver_cmd(priv, buf, buf, strlen(buf) + 1); -} - -int wpa_driver_set_ap_wps_p2p_ie(void *priv, const struct wpabuf *beacon, - const struct wpabuf *proberesp, - const struct wpabuf *assocresp) -{ - char *buf; - const struct wpabuf *ap_wps_p2p_ie = NULL; - - char *_cmd = "SET_AP_WPS_P2P_IE"; - char *pbuf; - int ret = 0; - int i, buf_len; - struct cmd_desc { - int cmd; - const struct wpabuf *src; - } cmd_arr[] = { - {0x1, beacon}, - {0x2, proberesp}, - {0x4, assocresp}, - {-1, NULL} - }; - - wpa_printf(MSG_DEBUG, "%s: Entry", __func__); - for (i = 0; cmd_arr[i].cmd != -1; i++) { - ap_wps_p2p_ie = cmd_arr[i].src; - if (ap_wps_p2p_ie) { - buf_len = strlen(_cmd) + 3 + wpabuf_len(ap_wps_p2p_ie); - buf = os_zalloc(buf_len); - if (NULL == buf) { - wpa_printf(MSG_ERROR, "%s: Out of memory", - __func__); - ret = -1; - break; - } - } else { - continue; - } - pbuf = buf; - pbuf += snprintf(pbuf, buf_len - wpabuf_len(ap_wps_p2p_ie), - "%s %d",_cmd, cmd_arr[i].cmd); - *pbuf++ = '\0'; - os_memcpy(pbuf, wpabuf_head(ap_wps_p2p_ie), wpabuf_len(ap_wps_p2p_ie)); - ret = wpa_driver_nl80211_driver_cmd(priv, buf, buf, buf_len); - os_free(buf); - if (ret < 0) - break; - } - - return ret; -} diff --git a/wpa_supplicant_8_lib/driver_cmd_wext.c b/wpa_supplicant_8_lib/driver_cmd_wext.c deleted file mode 100644 index 7331964..0000000 --- a/wpa_supplicant_8_lib/driver_cmd_wext.c +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Driver interaction with extended Linux Wireless Extensions - * - * This software is distributed under the terms of BSD license. - * - */ - -#include "includes.h" -#include <sys/ioctl.h> -#include <net/if_arp.h> -#include <net/if.h> - -#include "linux_wext.h" -#include "common.h" -#include "driver.h" -#include "eloop.h" -#include "priv_netlink.h" -#include "driver_wext.h" -#include "ieee802_11_defs.h" -#include "wpa_common.h" -#include "wpa_ctrl.h" -#include "wpa_supplicant_i.h" -#include "config.h" -#include "linux_ioctl.h" -#include "scan.h" - -#include "driver_cmd_wext.h" -#ifdef ANDROID -#include "android_drv.h" -#endif /* ANDROID */ - -#define RSSI_CMD "RSSI" -#define LINKSPEED_CMD "LINKSPEED" - -/** - * wpa_driver_wext_set_scan_timeout - Set scan timeout to report scan completion - * @priv: Pointer to private wext data from wpa_driver_wext_init() - * - * This function can be used to set registered timeout when starting a scan to - * generate a scan completed event if the driver does not report this. - */ -static void wpa_driver_wext_set_scan_timeout(void *priv) -{ - struct wpa_driver_wext_data *drv = priv; - int timeout = 10; /* In case scan A and B bands it can be long */ - - /* Not all drivers generate "scan completed" wireless event, so try to - * read results after a timeout. */ - if (drv->scan_complete_events) { - /* - * The driver seems to deliver SIOCGIWSCAN events to notify - * when scan is complete, so use longer timeout to avoid race - * conditions with scanning and following association request. - */ - timeout = 30; - } - wpa_printf(MSG_DEBUG, "Scan requested - scan timeout %d seconds", - timeout); - eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx); - eloop_register_timeout(timeout, 0, wpa_driver_wext_scan_timeout, drv, - drv->ctx); -} - -/** - * wpa_driver_wext_combo_scan - Request the driver to initiate combo scan - * @priv: Pointer to private wext data from wpa_driver_wext_init() - * @params: Scan parameters - * Returns: 0 on success, -1 on failure - */ -int wpa_driver_wext_combo_scan(void *priv, struct wpa_driver_scan_params *params) -{ - char buf[WEXT_CSCAN_BUF_LEN]; - struct wpa_driver_wext_data *drv = priv; - struct iwreq iwr; - int ret, bp; - unsigned i; - - if (!drv->driver_is_started) { - wpa_printf(MSG_DEBUG, "%s: Driver stopped", __func__); - return 0; - } - - wpa_printf(MSG_DEBUG, "%s: Start", __func__); - - /* Set list of SSIDs */ - bp = WEXT_CSCAN_HEADER_SIZE; - os_memcpy(buf, WEXT_CSCAN_HEADER, bp); - for(i=0; i < params->num_ssids; i++) { - if ((bp + IW_ESSID_MAX_SIZE + 10) >= (int)sizeof(buf)) - break; - wpa_printf(MSG_DEBUG, "For Scan: %s", params->ssids[i].ssid); - buf[bp++] = WEXT_CSCAN_SSID_SECTION; - buf[bp++] = params->ssids[i].ssid_len; - os_memcpy(&buf[bp], params->ssids[i].ssid, params->ssids[i].ssid_len); - bp += params->ssids[i].ssid_len; - } - - /* Set list of channels */ - buf[bp++] = WEXT_CSCAN_CHANNEL_SECTION; - buf[bp++] = 0; - - /* Set passive dwell time (default is 250) */ - buf[bp++] = WEXT_CSCAN_PASV_DWELL_SECTION; - buf[bp++] = (u8)WEXT_CSCAN_PASV_DWELL_TIME; - buf[bp++] = (u8)(WEXT_CSCAN_PASV_DWELL_TIME >> 8); - - /* Set home dwell time (default is 40) */ - buf[bp++] = WEXT_CSCAN_HOME_DWELL_SECTION; - buf[bp++] = (u8)WEXT_CSCAN_HOME_DWELL_TIME; - buf[bp++] = (u8)(WEXT_CSCAN_HOME_DWELL_TIME >> 8); - - os_memset(&iwr, 0, sizeof(iwr)); - os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); - iwr.u.data.pointer = buf; - iwr.u.data.length = bp; - - if ((ret = ioctl(drv->ioctl_sock, SIOCSIWPRIV, &iwr)) < 0) { - if (!drv->bgscan_enabled) - wpa_printf(MSG_ERROR, "ioctl[SIOCSIWPRIV] (cscan): %d", ret); - else - ret = 0; /* Hide error in case of bg scan */ - } - return ret; -} - -static int wpa_driver_wext_set_cscan_params(char *buf, size_t buf_len, char *cmd) -{ - char *pasv_ptr; - int bp, i; - u16 pasv_dwell = WEXT_CSCAN_PASV_DWELL_TIME_DEF; - u8 channel; - - wpa_printf(MSG_DEBUG, "%s: %s", __func__, cmd); - - /* Get command parameters */ - pasv_ptr = os_strstr(cmd, ",TIME="); - if (pasv_ptr) { - *pasv_ptr = '\0'; - pasv_ptr += 6; - pasv_dwell = (u16)atoi(pasv_ptr); - if (pasv_dwell == 0) - pasv_dwell = WEXT_CSCAN_PASV_DWELL_TIME_DEF; - } - channel = (u8)atoi(cmd + 5); - - bp = WEXT_CSCAN_HEADER_SIZE; - os_memcpy(buf, WEXT_CSCAN_HEADER, bp); - - /* Set list of channels */ - buf[bp++] = WEXT_CSCAN_CHANNEL_SECTION; - buf[bp++] = channel; - if (channel != 0) { - i = (pasv_dwell - 1) / WEXT_CSCAN_PASV_DWELL_TIME_DEF; - for (; i > 0; i--) { - if ((size_t)(bp + 12) >= buf_len) - break; - buf[bp++] = WEXT_CSCAN_CHANNEL_SECTION; - buf[bp++] = channel; - } - } else { - if (pasv_dwell > WEXT_CSCAN_PASV_DWELL_TIME_MAX) - pasv_dwell = WEXT_CSCAN_PASV_DWELL_TIME_MAX; - } - - /* Set passive dwell time (default is 250) */ - buf[bp++] = WEXT_CSCAN_PASV_DWELL_SECTION; - if (channel != 0) { - buf[bp++] = (u8)WEXT_CSCAN_PASV_DWELL_TIME_DEF; - buf[bp++] = (u8)(WEXT_CSCAN_PASV_DWELL_TIME_DEF >> 8); - } else { - buf[bp++] = (u8)pasv_dwell; - buf[bp++] = (u8)(pasv_dwell >> 8); - } - - /* Set home dwell time (default is 40) */ - buf[bp++] = WEXT_CSCAN_HOME_DWELL_SECTION; - buf[bp++] = (u8)WEXT_CSCAN_HOME_DWELL_TIME; - buf[bp++] = (u8)(WEXT_CSCAN_HOME_DWELL_TIME >> 8); - - /* Set cscan type */ - buf[bp++] = WEXT_CSCAN_TYPE_SECTION; - buf[bp++] = WEXT_CSCAN_TYPE_PASSIVE; - return bp; -} - -static char *wpa_driver_get_country_code(int channels) -{ - char *country = "US"; /* WEXT_NUMBER_SCAN_CHANNELS_FCC */ - - if (channels == WEXT_NUMBER_SCAN_CHANNELS_ETSI) - country = "EU"; - else if( channels == WEXT_NUMBER_SCAN_CHANNELS_MKK1) - country = "JP"; - return country; -} - -static int wpa_driver_set_backgroundscan_params(void *priv) -{ - struct wpa_driver_wext_data *drv = priv; - struct wpa_supplicant *wpa_s; - struct iwreq iwr; - int ret = 0, i = 0, bp; - char buf[WEXT_PNO_MAX_COMMAND_SIZE]; - struct wpa_ssid *ssid_conf; - - if (drv == NULL) { - wpa_printf(MSG_ERROR, "%s: drv is NULL. Exiting", __func__); - return -1; - } - if (drv->ctx == NULL) { - wpa_printf(MSG_ERROR, "%s: drv->ctx is NULL. Exiting", __func__); - return -1; - } - wpa_s = (struct wpa_supplicant *)(drv->ctx); - if (wpa_s->conf == NULL) { - wpa_printf(MSG_ERROR, "%s: wpa_s->conf is NULL. Exiting", __func__); - return -1; - } - ssid_conf = wpa_s->conf->ssid; - - bp = WEXT_PNOSETUP_HEADER_SIZE; - os_memcpy(buf, WEXT_PNOSETUP_HEADER, bp); - buf[bp++] = WEXT_PNO_TLV_PREFIX; - buf[bp++] = WEXT_PNO_TLV_VERSION; - buf[bp++] = WEXT_PNO_TLV_SUBVERSION; - buf[bp++] = WEXT_PNO_TLV_RESERVED; - - while ((i < WEXT_PNO_AMOUNT) && (ssid_conf != NULL)) { - /* Check that there is enough space needed for 1 more SSID, the other sections and null termination */ - if ((bp + WEXT_PNO_SSID_HEADER_SIZE + IW_ESSID_MAX_SIZE + WEXT_PNO_NONSSID_SECTIONS_SIZE + 1) >= (int)sizeof(buf)) - break; - if ((!ssid_conf->disabled) && (ssid_conf->ssid_len <= IW_ESSID_MAX_SIZE)){ - wpa_printf(MSG_DEBUG, "For PNO Scan: %s", ssid_conf->ssid); - buf[bp++] = WEXT_PNO_SSID_SECTION; - buf[bp++] = ssid_conf->ssid_len; - os_memcpy(&buf[bp], ssid_conf->ssid, ssid_conf->ssid_len); - bp += ssid_conf->ssid_len; - i++; - } - ssid_conf = ssid_conf->next; - } - - buf[bp++] = WEXT_PNO_SCAN_INTERVAL_SECTION; - os_snprintf(&buf[bp], WEXT_PNO_SCAN_INTERVAL_LENGTH + 1, "%x", WEXT_PNO_SCAN_INTERVAL); - bp += WEXT_PNO_SCAN_INTERVAL_LENGTH; - - buf[bp++] = WEXT_PNO_REPEAT_SECTION; - os_snprintf(&buf[bp], WEXT_PNO_REPEAT_LENGTH + 1, "%x", WEXT_PNO_REPEAT); - bp += WEXT_PNO_REPEAT_LENGTH; - - buf[bp++] = WEXT_PNO_MAX_REPEAT_SECTION; - os_snprintf(&buf[bp], WEXT_PNO_MAX_REPEAT_LENGTH + 1, "%x", WEXT_PNO_MAX_REPEAT); - bp += WEXT_PNO_MAX_REPEAT_LENGTH + 1; - - os_memset(&iwr, 0, sizeof(iwr)); - os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); - iwr.u.data.pointer = buf; - iwr.u.data.length = bp; - - ret = ioctl(drv->ioctl_sock, SIOCSIWPRIV, &iwr); - - if (ret < 0) { - wpa_printf(MSG_ERROR, "ioctl[SIOCSIWPRIV] (pnosetup): %d", ret); - drv->errors++; - if (drv->errors > DRV_NUMBER_SEQUENTIAL_ERRORS) { - drv->errors = 0; - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED"); - } - } else { - drv->errors = 0; - } - return ret; - -} - -int wpa_driver_wext_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len ) -{ - struct wpa_driver_wext_data *drv = priv; - struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx); - struct iwreq iwr; - int ret = 0, flags; - - wpa_printf(MSG_DEBUG, "%s %s len = %d", __func__, cmd, buf_len); - - if (!drv->driver_is_started && (os_strcasecmp(cmd, "START") != 0)) { - wpa_printf(MSG_ERROR,"WEXT: Driver not initialized yet"); - return -1; - } - - if (os_strcasecmp(cmd, "RSSI-APPROX") == 0) { - os_strlcpy(cmd, RSSI_CMD, MAX_DRV_CMD_SIZE); - } else if( os_strncasecmp(cmd, "SCAN-CHANNELS", 13) == 0 ) { - int no_of_chan; - - no_of_chan = atoi(cmd + 13); - os_snprintf(cmd, MAX_DRV_CMD_SIZE, "COUNTRY %s", - wpa_driver_get_country_code(no_of_chan)); - } else if (os_strcasecmp(cmd, "STOP") == 0) { - linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 0); - } else if( os_strcasecmp(cmd, "RELOAD") == 0 ) { - wpa_printf(MSG_DEBUG,"Reload command"); - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED"); - return ret; - } else if( os_strcasecmp(cmd, "BGSCAN-START") == 0 ) { - ret = wpa_driver_set_backgroundscan_params(priv); - if (ret < 0) { - return ret; - } - os_strlcpy(cmd, "PNOFORCE 1", MAX_DRV_CMD_SIZE); - drv->bgscan_enabled = 1; - } else if( os_strcasecmp(cmd, "BGSCAN-STOP") == 0 ) { - os_strlcpy(cmd, "PNOFORCE 0", MAX_DRV_CMD_SIZE); - drv->bgscan_enabled = 0; - } - - os_memset(&iwr, 0, sizeof(iwr)); - os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); - os_memcpy(buf, cmd, strlen(cmd) + 1); - iwr.u.data.pointer = buf; - iwr.u.data.length = buf_len; - - if( os_strncasecmp(cmd, "CSCAN", 5) == 0 ) { - if (!wpa_s->scanning && ((wpa_s->wpa_state <= WPA_SCANNING) || - (wpa_s->wpa_state >= WPA_COMPLETED))) { - iwr.u.data.length = wpa_driver_wext_set_cscan_params(buf, buf_len, cmd); - } else { - wpa_printf(MSG_ERROR, "Ongoing Scan action..."); - return ret; - } - } - - ret = ioctl(drv->ioctl_sock, SIOCSIWPRIV, &iwr); - - if (ret < 0) { - wpa_printf(MSG_ERROR, "%s failed (%d): %s", __func__, ret, cmd); - drv->errors++; - if (drv->errors > DRV_NUMBER_SEQUENTIAL_ERRORS) { - drv->errors = 0; - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED"); - } - } else { - drv->errors = 0; - ret = 0; - if ((os_strcasecmp(cmd, RSSI_CMD) == 0) || - (os_strcasecmp(cmd, LINKSPEED_CMD) == 0) || - (os_strcasecmp(cmd, "MACADDR") == 0) || - (os_strcasecmp(cmd, "GETPOWER") == 0) || - (os_strcasecmp(cmd, "GETBAND") == 0)) { - ret = strlen(buf); - } else if (os_strcasecmp(cmd, "START") == 0) { - drv->driver_is_started = TRUE; - linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1); - /* os_sleep(0, WPA_DRIVER_WEXT_WAIT_US); - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STARTED"); */ - } else if (os_strcasecmp(cmd, "STOP") == 0) { - drv->driver_is_started = FALSE; - /* wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STOPPED"); */ - } else if (os_strncasecmp(cmd, "CSCAN", 5) == 0) { - wpa_driver_wext_set_scan_timeout(priv); - wpa_supplicant_notify_scanning(wpa_s, 1); - } - wpa_printf(MSG_DEBUG, "%s %s len = %d, %d", __func__, buf, ret, strlen(buf)); - } - return ret; -} - -int wpa_driver_signal_poll(void *priv, struct wpa_signal_info *si) -{ - char buf[MAX_DRV_CMD_SIZE]; - struct wpa_driver_wext_data *drv = priv; - char *prssi; - int res; - - os_memset(si, 0, sizeof(*si)); - res = wpa_driver_wext_driver_cmd(priv, RSSI_CMD, buf, sizeof(buf)); - /* Answer: SSID rssi -Val */ - if (res < 0) - return res; - prssi = strcasestr(buf, RSSI_CMD); - if (!prssi) - return -1; - si->current_signal = atoi(prssi + strlen(RSSI_CMD) + 1); - - res = wpa_driver_wext_driver_cmd(priv, LINKSPEED_CMD, buf, sizeof(buf)); - /* Answer: LinkSpeed Val */ - if (res < 0) - return res; - si->current_txrate = atoi(buf + strlen(LINKSPEED_CMD) + 1) * 1000; - - return 0; -} diff --git a/wpa_supplicant_8_lib/driver_cmd_wext.h b/wpa_supplicant_8_lib/driver_cmd_wext.h deleted file mode 100644 index 116f902..0000000 --- a/wpa_supplicant_8_lib/driver_cmd_wext.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Driver interaction with extended Linux Wireless Extensions - * - * This software is distributed under the terms of BSD license. - * - */ -#ifndef DRIVER_CMD_WEXT_H -#define DRIVER_CMD_WEXT_H - -#define WEXT_NUMBER_SCAN_CHANNELS_FCC 11 -#define WEXT_NUMBER_SCAN_CHANNELS_ETSI 13 -#define WEXT_NUMBER_SCAN_CHANNELS_MKK1 14 - -#define WPA_DRIVER_WEXT_WAIT_US 400000 -#define WEXT_CSCAN_BUF_LEN 360 -#define WEXT_CSCAN_HEADER "CSCAN S\x01\x00\x00S\x00" -#define WEXT_CSCAN_HEADER_SIZE 12 -#define WEXT_CSCAN_SSID_SECTION 'S' -#define WEXT_CSCAN_CHANNEL_SECTION 'C' -#define WEXT_CSCAN_NPROBE_SECTION 'N' -#define WEXT_CSCAN_ACTV_DWELL_SECTION 'A' -#define WEXT_CSCAN_PASV_DWELL_SECTION 'P' -#define WEXT_CSCAN_HOME_DWELL_SECTION 'H' -#define WEXT_CSCAN_TYPE_SECTION 'T' -#define WEXT_CSCAN_TYPE_DEFAULT 0 -#define WEXT_CSCAN_TYPE_PASSIVE 1 -#define WEXT_CSCAN_PASV_DWELL_TIME 130 -#define WEXT_CSCAN_PASV_DWELL_TIME_DEF 250 -#define WEXT_CSCAN_PASV_DWELL_TIME_MAX 3000 -#define WEXT_CSCAN_HOME_DWELL_TIME 130 - -#endif /* DRIVER_CMD_WEXT_H */ |