summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Xu <martin.xu@intel.com>2013-07-04 01:48:09 -0700
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2013-07-04 01:48:09 -0700
commit0f836559a2cb3790e76aa0b1aa902cf5a32da9a2 (patch)
treefc3cff99ea0faee17f9ea614ccd7dbddb8248b2b
parent62729b224553f295fdfac665eccbd162e84ed502 (diff)
parentea93a2e906da2cd39162b269a38e0f1b34e50a7b (diff)
downloadconnman-0f836559a2cb3790e76aa0b1aa902cf5a32da9a2.tar.gz
connman-0f836559a2cb3790e76aa0b1aa902cf5a32da9a2.tar.bz2
connman-0f836559a2cb3790e76aa0b1aa902cf5a32da9a2.zip
Merge changes Iea93a2e9,Ic5591d5a into tizen
* changes: Tizen: Add always on feature Tizen: Fix wifi enterprise to support SIM and AKA
-rw-r--r--gsupplicant/supplicant.c19
-rw-r--r--src/service.c52
2 files changed, 71 insertions, 0 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 0f625bcb..cb2a31f3 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -3315,14 +3315,26 @@ static void add_network_security_eap(DBusMessageIter *dict,
{
char *eap_value;
+#if defined TIZEN_EXT
+ if (ssid->eap == NULL)
+#else
if (ssid->eap == NULL || ssid->identity == NULL)
+#endif
return;
if (g_strcmp0(ssid->eap, "tls") == 0) {
add_network_security_tls(dict, ssid);
} else if (g_strcmp0(ssid->eap, "peap") == 0 ||
g_strcmp0(ssid->eap, "ttls") == 0) {
+#if defined TIZEN_EXT
+ if (ssid->identity == NULL)
+ return;
+#endif
add_network_security_peap(dict, ssid);
+#if defined TIZEN_EXT
+ } else if (g_strcmp0(ssid->eap, "sim") == 0 ||
+ g_strcmp0(ssid->eap, "aka") == 0) {
+#endif
} else
return;
@@ -3331,9 +3343,16 @@ static void add_network_security_eap(DBusMessageIter *dict,
supplicant_dbus_dict_append_basic(dict, "eap",
DBUS_TYPE_STRING,
&eap_value);
+#if defined TIZEN_EXT
+ if (ssid->identity != NULL)
+ supplicant_dbus_dict_append_basic(dict, "identity",
+ DBUS_TYPE_STRING,
+ &ssid->identity);
+#else
supplicant_dbus_dict_append_basic(dict, "identity",
DBUS_TYPE_STRING,
&ssid->identity);
+#endif
g_free(eap_value);
}
diff --git a/src/service.c b/src/service.c
index 12d167f6..0623ab54 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1361,6 +1361,24 @@ static void reset_stats(struct connman_service *service)
g_timer_reset(service->stats_roaming.timer);
}
+#if defined TIZEN_EXT
+static connman_bool_t __connman_service_is_internet_profile(
+ struct connman_service *cellular)
+{
+ DBG("Service path: %s", cellular->path);
+
+ const char internet_suffix[] = "_1";
+ char *suffix = NULL;
+
+ suffix = strrchr(cellular->path, '_');
+ if (strcmp(suffix, internet_suffix) == 0)
+ return TRUE;
+
+ DBG("Not Internet profile.");
+ return FALSE;
+}
+#endif
+
struct connman_service *__connman_service_get_default(void)
{
struct connman_service *service;
@@ -1373,6 +1391,17 @@ struct connman_service *__connman_service_get_default(void)
service = g_sequence_get(iter);
+#if defined TIZEN_EXT
+ if (service->type == CONNMAN_SERVICE_TYPE_CELLULAR &&
+ __connman_service_is_internet_profile(service) == FALSE) {
+ iter = g_sequence_iter_next(iter);
+
+ if (g_sequence_iter_is_end(iter) == TRUE)
+ return NULL;
+
+ service = g_sequence_get(iter);
+ }
+#endif
if (is_connected(service) == FALSE)
return NULL;
@@ -3597,6 +3626,11 @@ static connman_bool_t auto_connect_service(GSequenceIter* iter,
if (is_connected(service) == TRUE)
return TRUE;
+#if defined TIZEN_EXT
+ if (service->type == CONNMAN_SERVICE_TYPE_CELLULAR &&
+ __connman_service_is_internet_profile(service) == FALSE)
+ goto next_service;
+#endif
if (is_ignore(service) == FALSE && service->state ==
CONNMAN_SERVICE_STATE_IDLE)
break;
@@ -5420,6 +5454,12 @@ static int service_indicate_state(struct connman_service *service)
} else
set_error(service, CONNMAN_SERVICE_ERROR_UNKNOWN);
+#if defined TIZEN_EXT
+ def_service = __connman_service_get_default();
+ if (def_service == NULL)
+ __connman_service_auto_connect();
+#endif
+
iter = g_hash_table_lookup(service_hash, service->identifier);
if (iter != NULL && g_sequence_get_length(service_list) > 1) {
g_sequence_sort_changed(iter, service_compare, NULL);
@@ -5855,12 +5895,24 @@ static int service_connect(struct connman_service *service)
if (service->eap == NULL)
return -EINVAL;
+#if defined TIZEN_EXT
+ /*
+ * never request credentials if using EAP-TLS, EAP-SIM
+ * or EAP-AKA (EAP-TLS, EAP-SIM and EAP-AKA networks
+ * need to be fully provisioned)
+ */
+ if (g_str_equal(service->eap, "tls") == TRUE ||
+ g_str_equal(service->eap, "sim") == TRUE ||
+ g_str_equal(service->eap, "aka") == TRUE)
+ break;
+#else
/*
* never request credentials if using EAP-TLS
* (EAP-TLS networks need to be fully provisioned)
*/
if (g_str_equal(service->eap, "tls") == TRUE)
break;
+#endif
/*
* Return -ENOKEY if either identity or passphrase is