diff options
Diffstat (limited to 'client/services.c')
-rw-r--r-- | client/services.c | 31 |
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; +} |