X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fservice.c;h=0c9c8977d629a1f0a9e3868ae332c41e8bd22036;hb=24635d218777f5480c2a99592d710ae986726197;hp=035930bf6d9a643accb040055e1ae81051600282;hpb=ecd2497d0cde6e54ac592734bf79e32191ce086d;p=platform%2Fupstream%2Fconnman.git diff --git a/src/service.c b/src/service.c index 035930b..0c9c897 100755 --- a/src/service.c +++ b/src/service.c @@ -58,6 +58,10 @@ static unsigned int vpn_autoconnect_timeout = 0; static struct connman_service *current_default = NULL; static bool services_dirty = false; +#if defined TIZEN_EXT +static bool auto_connect_mode = TRUE; +#endif + struct connman_stats { bool valid; bool enabled; @@ -612,6 +616,8 @@ static int service_load_passphrase(struct connman_service *service) if (str) service->passphrase = str; + g_key_file_free(keyfile); + return 0; } @@ -1357,6 +1363,7 @@ static int nameserver_add_all(struct connman_service *service) DBG("type %d add service->nameservers_config[%d]:%s",type, i, service->nameservers_config[i]); if(strncmp(service->nameservers_config[i], "::", 2) == 0) { + DBG("Invalid nameserver"); i++; continue; } @@ -1486,6 +1493,9 @@ static int nameserver_remove(struct connman_service *service, if (index < 0) return -ENXIO; +#if defined TIZEN_EXT + DBG("Resolver remove nameserver: %s", nameserver); +#endif return connman_resolver_remove(index, NULL, nameserver); } @@ -1735,9 +1745,6 @@ int __connman_service_nameserver_append(struct connman_service *service, return -ENOMEM; nameservers[len] = g_strdup(nameserver); - if (!nameservers[len]) - return -ENOMEM; - nameservers[len + 1] = NULL; #ifdef TIZEN_EXT @@ -1830,6 +1837,9 @@ set_servers: service->nameservers_auto = nameservers; } else { service->nameservers = nameservers; +#if defined TIZEN_EXT + DBG("nameserver remove ip_type: %d", type); +#endif nameserver_remove(service, nameserver); } @@ -2194,7 +2204,9 @@ static void state_changed(struct connman_service *service) if (!allow_property_changed(service)) return; #endif - +#if defined TIZEN_EXT + DBG(" %s, %s", str, service->path); +#endif connman_dbus_property_changed_basic(service->path, CONNMAN_SERVICE_INTERFACE, "State", DBUS_TYPE_STRING, &str); @@ -3147,13 +3159,17 @@ static void append_wifi_ext_info(DBusMessageIter *dict, { char bssid_buff[WIFI_BSSID_STR_LEN] = {0,}; char *bssid_str = bssid_buff; + const void *ssid; + unsigned int ssid_len; unsigned char *bssid; unsigned int maxrate; unsigned int keymgmt; uint16_t frequency; const char *enc_mode; + const char *str; gboolean passpoint; + ssid = connman_network_get_blob(network, "WiFi.SSID", &ssid_len); bssid = connman_network_get_bssid(network); maxrate = connman_network_get_maxrate(network); frequency = connman_network_get_frequency(network); @@ -3165,6 +3181,8 @@ static void append_wifi_ext_info(DBusMessageIter *dict, bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]); + connman_dbus_dict_append_fixed_array(dict, "SSID", + DBUS_TYPE_BYTE, &ssid, ssid_len); connman_dbus_dict_append_basic(dict, "BSSID", DBUS_TYPE_STRING, &bssid_str); connman_dbus_dict_append_basic(dict, "MaxRate", @@ -3177,6 +3195,41 @@ static void append_wifi_ext_info(DBusMessageIter *dict, DBUS_TYPE_BOOLEAN, &passpoint); connman_dbus_dict_append_basic(dict, "Keymgmt", DBUS_TYPE_UINT32, &keymgmt); + + str = connman_network_get_string(network, "WiFi.Security"); + if (str != NULL && g_str_equal(str, "ieee8021x") == TRUE) { + str = connman_network_get_string(network, "WiFi.EAP"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "EAP", + DBUS_TYPE_STRING, &str); + + str = connman_network_get_string(network, "WiFi.Phase2"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "Phase2", + DBUS_TYPE_STRING, &str); + + str = connman_network_get_string(network, "WiFi.Identity"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "Identity", + DBUS_TYPE_STRING, &str); + + str = connman_network_get_string(network, "WiFi.CACertFile"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "CACertFile", + DBUS_TYPE_STRING, &str); + + str = connman_network_get_string(network, + "WiFi.ClientCertFile"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "ClientCertFile", + DBUS_TYPE_STRING, &str); + + str = connman_network_get_string(network, + "WiFi.PrivateKeyFile"); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "PrivateKeyFile", + DBUS_TYPE_STRING, &str); + } } #endif @@ -3269,7 +3322,7 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, append_ethernet, service); connman_dbus_dict_append_basic(dict, "DisconnectReason", - DBUS_TYPE_UINT32, &service->disconnect_reason); + DBUS_TYPE_INT32, &service->disconnect_reason); break; #endif @@ -3368,6 +3421,53 @@ void __connman_service_list_struct(DBusMessageIter *iter) g_list_foreach(service_list, append_struct, iter); } +#if defined TIZEN_EXT +static void append_wifi_vsie_properties(DBusMessageIter *iter, + struct connman_service *service) +{ + DBusMessageIter dict; + const void *wifi_vsie; + unsigned int wifi_vsie_len; + + connman_dbus_dict_open(iter, &dict); + + wifi_vsie = connman_network_get_blob(service->network, "WiFi.Vsie", &wifi_vsie_len); + + if(wifi_vsie_len > 0) { + DBG("ConnMan, service->path=%s vsie length=%d", service->path, wifi_vsie_len); + } + + connman_dbus_dict_append_fixed_array(&dict, "Vsie", DBUS_TYPE_BYTE, + &wifi_vsie, wifi_vsie_len); + + connman_dbus_dict_close(iter, &dict); +} + +void __connman_wifi_vsie_list_struct(DBusMessageIter *iter) +{ + GList *list; + DBusMessageIter entry; + + DBG("ConnMan, __connman_wifi_vsie_list_struct API called"); + + for (list = service_list; list; list = list->next) { + struct connman_service *service = list->data; + + if (!service->path || + service->type != CONNMAN_SERVICE_TYPE_WIFI || + service->network == NULL) + continue; + + dbus_message_iter_open_container(iter, DBUS_TYPE_STRUCT, + NULL, &entry); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH, + &service->path); + append_wifi_vsie_properties(&entry, service); + dbus_message_iter_close_container(iter, &entry); + } +} +#endif + bool __connman_service_is_hidden(struct connman_service *service) { return service->hidden; @@ -4835,9 +4935,21 @@ static bool auto_connect_service(GList *services, if (preferred) continue; +#if defined TIZEN_EXT + DBG("Service is not favorite, autoconnecting %d", + autoconnecting); +#endif return autoconnecting; } +#if defined TIZEN_EXT + DBG("service %p identifier %s roaming %d ignore %d " + "ipconfig_usable %d autoconnect %d state %d", + service, + service->identifier, service->roaming, + service->ignore, is_ipconfig_usable(service), + service->autoconnect, service->state); +#endif if (is_ignore(service) || service->state != CONNMAN_SERVICE_STATE_IDLE) continue; @@ -4890,6 +5002,21 @@ static gboolean run_auto_connect(gpointer data) return FALSE; } +#if defined TIZEN_EXT +bool __connman_service_get_auto_connect_mode(void) +{ + return auto_connect_mode; +} + +void __connman_service_set_auto_connect_mode(bool enable) +{ + DBG("set auto_connect_mode = %d", enable); + + if (auto_connect_mode != enable) + auto_connect_mode = enable; +} +#endif + void __connman_service_auto_connect(enum connman_service_connect_reason reason) { DBG(""); @@ -4897,6 +5024,13 @@ void __connman_service_auto_connect(enum connman_service_connect_reason reason) if (autoconnect_timeout != 0) return; +#if defined TIZEN_EXT + if (auto_connect_mode == FALSE) { + DBG("Currently, not auto connection mode"); + return; + } +#endif + if (!__connman_session_policy_autoconnect(reason)) return; @@ -5121,6 +5255,9 @@ static DBusMessage *connect_service(DBusConnection *conn, */ if (service->type == CONNMAN_SERVICE_TYPE_CELLULAR) connman_service_user_pdn_connection_ref(service); + + /*Reset the Disconnect Reason while issue connect request*/ + service->disconnect_reason = 0; #endif if (service->pending) @@ -5623,17 +5760,23 @@ static void service_append_added_foreach(gpointer data, gpointer user_data) DBusMessageIter *iter = user_data; if (!service || !service->path) { +#if !defined TIZEN_EXT DBG("service %p or path is NULL", service); +#endif return; } if (g_hash_table_lookup(services_notify->add, service->path)) { +#if !defined TIZEN_EXT DBG("new %s", service->path); +#endif append_struct(service, iter); g_hash_table_remove(services_notify->add, service->path); } else { +#if !defined TIZEN_EXT DBG("changed %s", service->path); +#endif append_struct_service(iter, NULL, service); } @@ -7627,6 +7770,7 @@ static int service_connect(struct connman_service *service) * or EAP-AKA (EAP-TLS, EAP-SIM and EAP-AKA networks * need to be fully provisioned) */ + DBG("service eap: %s", service->eap); if (g_str_equal(service->eap, "tls") || g_str_equal(service->eap, "sim") || g_str_equal(service->eap, "aka"))