aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eap_peer/eap_proxy_qmi.c2
-rw-r--r--wpa_supplicant/Android.mk34
-rw-r--r--wpa_supplicant/wpa_supplicant.c6
-rw-r--r--wpa_supplicant/wpa_supplicant_conf.mk2
4 files changed, 42 insertions, 2 deletions
diff --git a/src/eap_peer/eap_proxy_qmi.c b/src/eap_peer/eap_proxy_qmi.c
index 0cfb9708..e95b0e10 100644
--- a/src/eap_peer/eap_proxy_qmi.c
+++ b/src/eap_peer/eap_proxy_qmi.c
@@ -1522,6 +1522,8 @@ static char bin_to_hexchar(u8 ch)
}
return ch + 'a' - 10;
}
+
+extern struct eap_peer_config * eap_get_config(struct eap_sm *sm) __attribute__((weak));
static Boolean eap_proxy_build_identity(struct eap_proxy_sm *eap_proxy, u8 id, struct eap_sm *eap_sm)
{
struct eap_hdr *resp;
diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk
index f65076c7..d4841ad5 100644
--- a/wpa_supplicant/Android.mk
+++ b/wpa_supplicant/Android.mk
@@ -550,7 +550,11 @@ endif
ifdef CONFIG_EAP_PROXY
L_CFLAGS += -DCONFIG_EAP_PROXY
+ifneq ($(CONFIG_EAP_PROXY),qmi)
+# QMI needs proprietary headers to build :(
+# Spin it into a blobbable lib
OBJS += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c
+endif
include $(LOCAL_PATH)/eap_proxy_$(CONFIG_EAP_PROXY).mk
CONFIG_IEEE8021X_EAPOL=y
endif
@@ -1556,6 +1560,32 @@ LOCAL_SRC_FILES := $(OBJS_c)
LOCAL_C_INCLUDES := $(INCLUDES)
include $(BUILD_EXECUTABLE)
+# This needs QMI artifacts to be built
+ifneq ($(QCPATH),)
+
+ifeq ($(CONFIG_EAP_PROXY),qmi)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE = libwpa_qmi_eap_proxy
+LOCAL_SHARED_LIBRARIES := libcutils liblog libwpa_client
+LOCAL_SRC_FILES += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c
+LOCAL_SRC_FILES += src/utils/wpa_debug.c
+LOCAL_SRC_FILES += src/utils/wpabuf.c
+LOCAL_SRC_FILES += src/utils/eloop.c
+LOCAL_SRC_FILES += src/utils/common.c
+include $(LOCAL_PATH)/eap_proxy_$(CONFIG_EAP_PROXY).mk
+LOCAL_C_INCLUDES := $(INCLUDES)
+LOCAL_CFLAGS = $(L_CFLAGS)
+
+LOCAL_STATIC_LIBRARIES += $(LIB_STATIC_EAP_PROXY)
+LOCAL_SHARED_LIBRARIES += $(LIB_SHARED_EAP_PROXY)
+
+include $(BUILD_SHARED_LIBRARY)
+
+endif # qmi EAP_PROXY
+endif # QCPATH
+
+
########################
include $(CLEAR_VARS)
LOCAL_MODULE := wpa_supplicant
@@ -1567,8 +1597,12 @@ LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
endif
LOCAL_SHARED_LIBRARIES := libc libcutils liblog
ifdef CONFIG_EAP_PROXY
+ifneq ($(CONFIG_EAP_PROXY),qmi)
LOCAL_STATIC_LIBRARIES += $(LIB_STATIC_EAP_PROXY)
LOCAL_SHARED_LIBRARIES += $(LIB_SHARED_EAP_PROXY)
+else
+LOCAL_SHARED_LIBRARIES += libwpa_qmi_eap_proxy
+endif
endif
ifeq ($(CONFIG_TLS), openssl)
LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore_binder
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index ef1c63fd..366dd6c6 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -5696,7 +5696,11 @@ int wpa_supplicant_ctrl_iface_ctrl_rsp_handle(struct wpa_supplicant *wpa_s,
eap->identity = (u8 *) os_strdup(value);
eap->identity_len = os_strlen(value);
eap->pending_req_identity = 0;
- if (ssid == wpa_s->current_ssid)
+ if (ssid == wpa_s->current_ssid
+#ifndef CONFIG_EAP_PROXY
+ && wpa_s->wpa_state < WPA_ASSOCIATING
+#endif
+ )
wpa_s->reassociate = 1;
break;
case WPA_CTRL_REQ_EAP_PASSWORD:
diff --git a/wpa_supplicant/wpa_supplicant_conf.mk b/wpa_supplicant/wpa_supplicant_conf.mk
index 74986ea6..8a5aca7f 100644
--- a/wpa_supplicant/wpa_supplicant_conf.mk
+++ b/wpa_supplicant/wpa_supplicant_conf.mk
@@ -20,7 +20,7 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/wifi
include $(BUILD_SYSTEM)/base_rules.mk
-WPA_SUPPLICANT_CONF_TEMPLATE := $(LOCAL_PATH)/wpa_supplicant_template.conf
+WPA_SUPPLICANT_CONF_TEMPLATE ?= $(LOCAL_PATH)/wpa_supplicant_template.conf
WPA_SUPPLICANT_CONF_SCRIPT := $(LOCAL_PATH)/wpa_supplicant_conf.sh
$(LOCAL_BUILT_MODULE): PRIVATE_WIFI_DRIVER_SOCKET_IFACE := $(WIFI_DRIVER_SOCKET_IFACE)
$(LOCAL_BUILT_MODULE): PRIVATE_WPA_SUPPLICANT_CONF_TEMPLATE := $(WPA_SUPPLICANT_CONF_TEMPLATE)