Modified logic to process each VSIE of all vendors.
[platform/upstream/connman.git] / src / service.c
index 468a327..033c8f8 100755 (executable)
@@ -3175,7 +3175,7 @@ static void append_wifi_ext_info(DBusMessageIter *dict,
        maxrate = connman_network_get_maxrate(network);
        frequency = connman_network_get_frequency(network);
        enc_mode = connman_network_get_enc_mode(network);
-       passpoint = connman_network_get_is_hs20AP(network);
+       passpoint = connman_network_get_bool(network, "WiFi.HS20AP");
        keymgmt = connman_network_get_keymgmt(network);
 
        snprintf(bssid_str, WIFI_BSSID_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
@@ -3248,6 +3248,25 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
                connman_dbus_dict_append_basic(dict, "Frequency",
                                DBUS_TYPE_UINT16, &frequency);
        }
+
+       unsigned char *wifi_vsie;
+       unsigned int wifi_vsie_len;
+       GSList *vsie_list = NULL;
+
+       if (service->network)
+               vsie_list = (GSList *)connman_network_get_vsie_list(service->network);
+
+       if (vsie_list) {
+               DBG("ConnMan, service->path=%s No.of elements in list: %d", service->path, g_slist_length(vsie_list));
+               GSList *list;
+               for (list = vsie_list; list; list = list->next) {
+                       wifi_vsie = (unsigned char *)list->data;
+                       wifi_vsie_len = wifi_vsie[1] + 2;
+
+                       connman_dbus_dict_append_fixed_array(dict, "Vsie", DBUS_TYPE_BYTE,
+                                       &wifi_vsie, wifi_vsie_len);
+               }
+       }
 #endif
 
        str = __connman_service_type2string(service->type);
@@ -3325,6 +3344,9 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
                connman_dbus_dict_append_basic(dict, "DisconnectReason",
                                DBUS_TYPE_INT32, &service->disconnect_reason);
 
+               connman_dbus_dict_append_basic(dict, "AssocStatusCode",
+                               DBUS_TYPE_INT32, &service->assoc_status_code);
+
                break;
 #endif
        case CONNMAN_SERVICE_TYPE_ETHERNET:
@@ -3422,53 +3444,6 @@ 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;
@@ -3996,7 +3971,14 @@ int __connman_service_set_passphrase(struct connman_service *service,
        if (service->immutable &&
                        service->security != CONNMAN_SERVICE_SECURITY_8021X)
                return -EINVAL;
-
+#if defined TIZEN_EXT
+       /* The encrypted passphrase is used here
+        * and validation is done by net-config before being encrypted.
+        */
+       if (service->security != CONNMAN_SERVICE_SECURITY_PSK &&
+                       service->security != CONNMAN_SERVICE_SECURITY_RSN &&
+                       service->security != CONNMAN_SERVICE_SECURITY_WEP)
+#endif
        err = check_passphrase(service->security, passphrase);
 
        if (err < 0)
@@ -5259,6 +5241,9 @@ static DBusMessage *connect_service(DBusConnection *conn,
 
        /*Reset the Disconnect Reason while issue connect request*/
        service->disconnect_reason = 0;
+
+       /*Reset the association status code while issue connect request*/
+       service->assoc_status_code = 0;
 #endif
 
        if (service->pending)
@@ -7133,6 +7118,7 @@ static int service_indicate_state(struct connman_service *service)
 
                def_service = __connman_service_get_default();
                service->disconnect_reason = connman_network_get_disconnect_reason(service->network);
+               service->assoc_status_code = connman_network_get_assoc_status_code(service->network);
 
                if (!__connman_notifier_is_connected() &&
                        def_service &&
@@ -8561,6 +8547,20 @@ static enum connman_service_security convert_wifi_security(const char *security)
                return CONNMAN_SERVICE_SECURITY_UNKNOWN;
 }
 
+#if defined TIZEN_EXT
+int check_passphrase_ext(struct connman_network *network,
+                                       const char *passphrase)
+{
+       const char *str;
+       enum connman_service_security security;
+
+       str = connman_network_get_string(network, "WiFi.Security");
+       security = convert_wifi_security(str);
+
+       return check_passphrase(security, passphrase);
+}
+#endif
+
 static void update_from_network(struct connman_service *service,
                                        struct connman_network *network)
 {