diff options
author | Martin Xu <martin.xu@intel.com> | 2013-07-04 01:48:09 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2013-07-04 01:48:09 -0700 |
commit | 0f836559a2cb3790e76aa0b1aa902cf5a32da9a2 (patch) | |
tree | fc3cff99ea0faee17f9ea614ccd7dbddb8248b2b | |
parent | 62729b224553f295fdfac665eccbd162e84ed502 (diff) | |
parent | ea93a2e906da2cd39162b269a38e0f1b34e50a7b (diff) | |
download | connman-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.c | 19 | ||||
-rw-r--r-- | src/service.c | 52 |
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 |