client: Add Remove() method support for service
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Wed, 17 Oct 2012 07:46:15 +0000 (10:46 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Wed, 17 Oct 2012 09:19:33 +0000 (12:19 +0300)
client/commands.c
client/services.c
client/services.h

index 73a92ebeed8869964789f073872f4eea7f8570e8..4cc3b2d0378ff0462eab2fd2e0615b1e0494a961 100644 (file)
@@ -88,6 +88,7 @@ void show_help(void)
        "          [METHOD|URL|SERVERS|EXCLUDES]\n"
        "          if METHOD = manual, enter 'servers' then the list of servers\n"
        "                         then enter 'excludes' then the list of excludes\n"
+       "        --remove                     Remove the service from favorite\n"
        "  monitor                            Monitor signals from all Connman interfaces\n"
        "        --services                   Monitor signals from the Service interface\n"
        "        --tech                       Monitor signals from the Technology interface\n"
@@ -202,6 +203,9 @@ int config_switch(int argc, char *argv[], int c, DBusConnection *conn)
                        error = -EINVAL;
                }
                break;
+       case 'r':
+               error = remove_service(conn, message, argv[1]);
+               break;
        default:
                fprintf(stderr, "Command not recognized, please check help\n");
                error = -EINVAL;
@@ -392,6 +396,7 @@ int commands_options(DBusConnection *connection, char *argv[], int argc)
                {"proxy", required_argument, 0, 'x'},
                {"autoconnect", required_argument, 0, 'a'},
                {"ipv4", required_argument, 0, 'i'},
+               {"remove", 0, 0, 'r'},
                {0, 0, 0, 0}
        };
 
index e4f177cd1d4255380d766dec3215abc9d796fc92..ff2c729482ae6affe27ee087bf3dbcaa1271c6c6 100644 (file)
@@ -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;
+}
index cdcc7b20ea291047d11aa85c45b87f595294403b..15805b4b2633c4255a8e752574faf3c4b14a9807 100644 (file)
@@ -39,6 +39,8 @@ void extract_service_name(DBusMessageIter *dict, struct service_data *service);
 int set_service_property(DBusConnection *connection, DBusMessage *message,
                                char *name, char *property, char **keys,
                                void *data, int num_args);
+int remove_service(DBusConnection *connection, DBusMessage *message,
+                                                               char *name);
 int set_proxy_manual(DBusConnection *connection, DBusMessage *message,
                                char *name, char **servers, char **excludes,
                                int num_servers, int num_excludes);