Fix setup of udev context before loading any plugins
[platform/upstream/connman.git] / src / network.c
index 5f3ae9c..4567d9a 100644 (file)
@@ -37,6 +37,7 @@ struct connman_network {
        connman_bool_t secondary;
        connman_bool_t available;
        connman_bool_t connected;
+       connman_bool_t hidden;
        connman_uint8_t strength;
        connman_uint16_t frequency;
        char *identifier;
@@ -211,76 +212,12 @@ static DBusMessage *set_property(DBusConnection *conn,
        } else
                return __connman_error_invalid_property(msg);
 
-       __connman_storage_save_network(network);
-
-       return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-}
-
-static DBusMessage *do_connect(DBusConnection *conn,
-                                       DBusMessage *msg, void *data)
-{
-       struct connman_network *network = data;
-       int err;
-
-       DBG("conn %p", conn);
-
-       if (__connman_security_check_privilege(msg,
-                                       CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
-               return __connman_error_permission_denied(msg);
-
-       if (network->connected == TRUE)
-               return __connman_error_failed(msg, EALREADY);
-
-       if (network->driver && network->driver->connect) {
-               enum connman_device_mode mode;
-
-               mode = connman_device_get_mode(network->device);
-               if (mode == CONNMAN_DEVICE_MODE_NETWORK_SINGLE)
-                       __connman_device_disconnect(network->device);
-
-               err = network->driver->connect(network);
-               if (err < 0 && err != -EINPROGRESS)
-                       return __connman_error_failed(msg, -err);
-       } else
-               network->connected = TRUE;
-
-       return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-}
-
-static DBusMessage *do_disconnect(DBusConnection *conn,
-                                       DBusMessage *msg, void *data)
-{
-       struct connman_network *network = data;
-       int err;
-
-       DBG("conn %p", conn);
-
-       if (__connman_security_check_privilege(msg,
-                                       CONNMAN_SECURITY_PRIVILEGE_MODIFY) < 0)
-               return __connman_error_permission_denied(msg);
-
-       if (network->connected == FALSE)
-               return __connman_error_failed(msg, EINVAL);
-
-       connman_element_unregister_children(&network->element);
-
-       connman_device_set_disconnected(network->device, TRUE);
-
-       if (network->driver && network->driver->disconnect) {
-               err = network->driver->disconnect(network);
-               if (err < 0 && err != -EINPROGRESS)
-                       return __connman_error_failed(msg, -err);
-       } else
-               network->connected = FALSE;
-
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }
 
 static GDBusMethodTable network_methods[] = {
        { "GetProperties", "",   "a{sv}", get_properties },
        { "SetProperty",   "sv", "",      set_property   },
-       { "Connect",       "",   "",      do_connect     },
-       { "Disconnect",    "",   "",      do_disconnect  },
        { },
 };
 
@@ -461,7 +398,12 @@ struct connman_network *connman_network_create(const char *identifier,
        __connman_element_initialize(&network->element);
 
        //temp = connman_dbus_encode_string(identifier);
-       temp = g_strdup(identifier);
+       if (identifier == NULL) {
+               temp = g_strdup("hidden");
+               network->hidden = TRUE;
+       } else
+               temp = g_strdup(identifier);
+
        if (temp == NULL) {
                g_free(network);
                return NULL;
@@ -481,7 +423,7 @@ struct connman_network *connman_network_create(const char *identifier,
 
        network->type       = type;
        network->secondary  = FALSE;
-       network->identifier = g_strdup(identifier);
+       network->identifier = g_strdup(temp);
 
        network->ipconfig = connman_ipconfig_create();
        if (network->ipconfig == NULL) {
@@ -702,6 +644,9 @@ int connman_network_set_available(struct connman_network *network,
  */
 connman_bool_t connman_network_get_available(struct connman_network *network)
 {
+       if (network->hidden == TRUE)
+               return TRUE;
+
        return network->available;
 }
 
@@ -777,6 +722,7 @@ static gboolean set_connected(gpointer user_data)
                connman_element_unregister_children(&network->element);
 
                __connman_device_set_network(network->device, NULL);
+               network->hidden = FALSE;
 
                __connman_device_decrease_connections(network->device);
 
@@ -899,6 +845,8 @@ int __connman_network_connect(struct connman_network *network)
        if (err < 0) {
                if (err == -EINPROGRESS)
                        connman_network_set_associating(network, TRUE);
+               else
+                       network->hidden = FALSE;
 
                return err;
        }