summaryrefslogtreecommitdiff
path: root/client/services.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/services.c')
-rw-r--r--client/services.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/client/services.c b/client/services.c
index e4f177cd..ff2c7294 100644
--- a/client/services.c
+++ b/client/services.c
@@ -496,3 +496,34 @@ int set_service_property(DBusConnection *connection, DBusMessage *message,
return 0;
}
+
+int remove_service(DBusConnection *connection, DBusMessage *message,
+ char *name)
+{
+ struct service_data service;
+ DBusMessage *message_send;
+ const char *path_name;
+ char *path;
+
+ path_name = find_service(connection, message, name, &service);
+ if (path_name == NULL)
+ return -ENXIO;
+
+ if (service.favorite == FALSE)
+ return 0;
+
+ path = g_strdup_printf("/net/connman/service/%s", path_name);
+ message_send = dbus_message_new_method_call(CONNMAN_SERVICE, path,
+ CONNMAN_SERVICE_INTERFACE,
+ "Remove");
+ if (message_send == NULL) {
+ g_free(path);
+ return -ENOMEM;
+ }
+
+ dbus_connection_send(connection, message_send, NULL);
+ dbus_message_unref(message_send);
+ g_free(path);
+
+ return 0;
+}