- * If the service which goes down is the default service and is
- * online, we downgrade directly its state to ready so:
- * the service which goes up, needs to recompute its state which
- * is triggered via downgrading it - if relevant - to state ready.
- */
- if (before == TRUE)
- switch_default_service(target, service);
- else
- switch_default_service(service, target);
-
- __connman_connection_update_gateway();
-
- return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-}
-
-static DBusMessage *move_before(DBusConnection *conn,
- DBusMessage *msg, void *user_data)
-{
- return move_service(conn, msg, user_data, TRUE);
-}
-
-static DBusMessage *move_after(DBusConnection *conn,
- DBusMessage *msg, void *user_data)
-{
- return move_service(conn, msg, user_data, FALSE);
-}
-
-static DBusMessage *reset_counters(DBusConnection *conn,
- DBusMessage *msg, void *user_data)
-{
- struct connman_service *service = user_data;
-
- reset_stats(service);
-
- return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
-}
-
-static struct _services_notify {
- int id;
- GHashTable *add;
- GHashTable *remove;
-} *services_notify;
-
-static void service_append_added_foreach(gpointer data, gpointer user_data)
-{
- struct connman_service *service = data;
- DBusMessageIter *iter = user_data;
-
- if (service == NULL || service->path == NULL) {
- DBG("service %p or path is NULL", service);
- return;
- }
-
- if (g_hash_table_lookup(services_notify->add, service->path) != NULL) {
- DBG("new %s", service->path);
-
- append_struct(service, iter);
- g_hash_table_remove(services_notify->add, service->path);
- } else {
- DBG("changed %s", service->path);
-
- append_struct_service(iter, NULL, service);
- }
-}
-
-static void service_append_ordered(DBusMessageIter *iter, void *user_data)
-{
- if (service_list != NULL)
- g_sequence_foreach(service_list,
- service_append_added_foreach, iter);
-}
-
-static void append_removed(gpointer key, gpointer value, gpointer user_data)
-{
- char *objpath = key;
- DBusMessageIter *iter = user_data;
-
- DBG("removed %s", objpath);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &objpath);
-}
-
-static gboolean service_send_changed(gpointer data)
-{
- DBusMessage *signal;
- DBusMessageIter iter, array;
-
- DBG("");
-
- services_notify->id = 0;
-
- signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
- CONNMAN_MANAGER_INTERFACE, "ServicesChanged");
- if (signal == NULL)
- return FALSE;
-
- __connman_dbus_append_objpath_dict_array(signal,
- service_append_ordered, NULL);
-
- dbus_message_iter_init_append(signal, &iter);
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
- DBUS_TYPE_OBJECT_PATH_AS_STRING, &array);