+ struct connman_element *element = data;
+ struct connman_element *network;
+ DBusMessageIter iter, array;
+ const char *ssid = NULL, *security = NULL, *passphrase = NULL;
+
+ DBG("conn %p", conn);
+
+ if (dbus_message_iter_init(msg, &iter) == FALSE)
+ return __connman_error_invalid_arguments(msg);
+
+ dbus_message_iter_recurse(&iter, &array);
+ parse_network_dict(&array, &ssid, &security, &passphrase);
+ if (ssid == NULL)
+ return __connman_error_invalid_arguments(msg);
+
+ DBG("ssid %s security %s passphrase %s", ssid, security, passphrase);
+
+ network = connman_element_create(ssid);
+
+ network->type = CONNMAN_ELEMENT_TYPE_NETWORK;
+ network->index = element->index;
+
+ connman_element_add_static_property(network, "Name",
+ DBUS_TYPE_STRING, &ssid);
+
+ connman_element_add_static_array_property(element, "WiFi.SSID",
+ DBUS_TYPE_BYTE, &ssid, strlen(ssid));
+
+ network->wifi.security = g_strdup(security);
+ network->wifi.passphrase = g_strdup(passphrase);
+
+ connman_element_register(network, element);
+
+ return g_dbus_create_reply(msg, DBUS_TYPE_OBJECT_PATH, &network->path,
+ DBUS_TYPE_INVALID);