Imported Upstream connman version 1.38
[platform/upstream/connman.git] / client / commands.c
old mode 100644 (file)
new mode 100755 (executable)
index 6abe7db..dab6209
@@ -39,6 +39,9 @@
 #include "dbus_helpers.h"
 #include "input.h"
 #include "services.h"
+#if defined TIZEN_EXT_INS
+#include "ins.h"
+#endif
 #include "tethering.h"
 #include "peers.h"
 #include "commands.h"
@@ -145,7 +148,7 @@ static int parse_args(char *arg, struct connman_option *options)
        return '?';
 }
 
-static int enable_return(DBusMessageIter *iter, const char *error,
+static int enable_return(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        char *tech = user_data;
@@ -157,10 +160,19 @@ static int enable_return(DBusMessageIter *iter, const char *error,
        else
                str = tech;
 
-       if (!error)
+       switch (errnum) {
+       case 0:
                fprintf(stdout, "Enabled %s\n", str);
-       else
+               break;
+       case -ENODEV:
+               fprintf(stderr, "%s is not available\n", str);
+               break;
+       case -EALREADY:
+               fprintf(stderr, "%s is already enabled\n", str);
+               break;
+       default:
                fprintf(stderr, "Error %s: %s\n", str, error);
+       }
 
        g_free(user_data);
 
@@ -194,7 +206,7 @@ static int cmd_enable(char *args[], int num, struct connman_option *options)
                                "Powered", DBUS_TYPE_BOOLEAN, &b);
 }
 
-static int disable_return(DBusMessageIter *iter, const char *error,
+static int disable_return(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        char *tech = user_data;
@@ -206,10 +218,19 @@ static int disable_return(DBusMessageIter *iter, const char *error,
        else
                str = tech;
 
-       if (!error)
-               fprintf(stdout, "Disabled %s\n", str);
-       else
+       switch (errnum) {
+       case 0:
+               fprintf(stdout, "Disable %s\n", str);
+               break;
+       case -ENODEV:
+               fprintf(stderr, "%s is not available\n", str);
+               break;
+       case -EALREADY:
+               fprintf(stderr, "%s is already disabled\n", str);
+               break;
+       default:
                fprintf(stderr, "Error %s: %s\n", str, error);
+       }
 
        g_free(user_data);
 
@@ -243,7 +264,7 @@ static int cmd_disable(char *args[], int num, struct connman_option *options)
                                "Powered", DBUS_TYPE_BOOLEAN, &b);
 }
 
-static int state_print(DBusMessageIter *iter, const char *error,
+static int state_print(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        DBusMessageIter entry;
@@ -270,7 +291,7 @@ static int cmd_state(char *args[], int num, struct connman_option *options)
                        state_print, NULL, NULL, NULL);
 }
 
-static int clock_print(DBusMessageIter *iter, const char *error,
+static int clock_print(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        DBusMessageIter entry;
@@ -297,7 +318,7 @@ static int cmd_clock(char *args[], int num, struct connman_option *options)
                        clock_print, NULL, NULL, NULL);
 }
 
-static int services_list(DBusMessageIter *iter, const char *error,
+static int services_list(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        if (!error) {
@@ -310,7 +331,26 @@ static int services_list(DBusMessageIter *iter, const char *error,
        return 0;
 }
 
-static int peers_list(DBusMessageIter *iter,
+#if defined TIZEN_EXT_INS
+static int ins_list(DBusMessageIter *iter, const char *error,
+               void *user_data)
+{
+       char *filter = user_data;
+
+       if (!error) {
+               __connmanctl_ins_list(iter, filter);
+               fprintf(stdout, "\n");
+       } else {
+               fprintf(stderr, "Error: %s\n", error);
+       }
+
+       g_free(filter);
+
+       return 0;
+}
+#endif
+
+static int peers_list(DBusMessageIter *iter, int errnum,
                                        const char *error, void *user_data)
 {
        if (!error) {
@@ -322,7 +362,7 @@ static int peers_list(DBusMessageIter *iter,
        return 0;
 }
 
-static int tethering_clients_list(DBusMessageIter *iter,
+static int tethering_clients_list(DBusMessageIter *iter, int errnum,
                                        const char *error, void *user_data)
 {
        if (!error) {
@@ -334,7 +374,7 @@ static int tethering_clients_list(DBusMessageIter *iter,
        return 0;
 }
 
-static int object_properties(DBusMessageIter *iter,
+static int object_properties(DBusMessageIter *iter, int errnum,
                                        const char *error, void *user_data)
 {
        char *path = user_data;
@@ -405,6 +445,24 @@ static int cmd_services(char *args[], int num, struct connman_option *options)
                        object_properties, path, NULL, NULL);
 }
 
+#if defined TIZEN_EXT_INS
+static int cmd_ins(char *args[], int num, struct connman_option *options)
+{
+       char *filter = NULL;
+
+       if (num > 2)
+               return -E2BIG;
+
+       if (num == 2)
+               filter = g_strdup(args[1]);
+
+       return __connmanctl_dbus_method_call(connection,
+                               CONNMAN_SERVICE, CONNMAN_PATH,
+                               "net.connman.Manager", "GetINS",
+                               ins_list, filter, NULL, NULL);
+}
+#endif
+
 static int cmd_peers(char *args[], int num, struct connman_option *options)
 {
        char *peer_name = NULL;
@@ -432,7 +490,7 @@ static int cmd_peers(char *args[], int num, struct connman_option *options)
                                object_properties, path, NULL, NULL);
 }
 
-static int technology_print(DBusMessageIter *iter, const char *error,
+static int technology_print(DBusMessageIter *iter, int errnum, const char *error,
                void *user_data)
 {
        DBusMessageIter array;
@@ -479,8 +537,8 @@ struct tether_enable {
        dbus_bool_t enable;
 };
 
-static int tether_set_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int tether_set_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        struct tether_enable *tether = user_data;
        char *str;
@@ -556,8 +614,8 @@ static int tether_update(struct tether_properties *tether)
        return -EINPROGRESS;
 }
 
-static int tether_set_ssid_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int tether_set_ssid_return(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        struct tether_properties *tether = user_data;
 
@@ -572,8 +630,8 @@ static int tether_set_ssid_return(DBusMessageIter *iter, const char *error,
        return tether_update(tether);
 }
 
-static int tether_set_passphrase_return(DBusMessageIter *iter,
-               const char *error, void *user_data)
+static int tether_set_passphrase_return(DBusMessageIter *iter, int errnum,
+                                       const char *error, void *user_data)
 {
        struct tether_properties *tether = user_data;
 
@@ -1238,7 +1296,7 @@ static int cmd_tethering_clients(char *args[], int num, struct connman_option *o
                                tethering_clients_list, NULL, NULL, NULL);
 }
 
-static int scan_return(DBusMessageIter *iter, const char *error,
+static int scan_return(DBusMessageIter *iter, int ernnum, const char *error,
                void *user_data)
 {
        char *path = user_data;
@@ -1274,8 +1332,8 @@ static int cmd_scan(char *args[], int num, struct connman_option *options)
                        scan_return, path, NULL, NULL);
 }
 
-static int connect_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int connect_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        char *path = user_data;
 
@@ -1315,8 +1373,8 @@ static int cmd_connect(char *args[], int num, struct connman_option *options)
                        iface, "Connect", connect_return, path, NULL, NULL);
 }
 
-static int disconnect_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int disconnect_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        char *path = user_data;
 
@@ -1362,8 +1420,8 @@ struct move_service {
        char *target;
 };
 
-static int move_before_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int move_before_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        struct move_service *services = user_data;
        char *service;
@@ -1420,8 +1478,8 @@ static int cmd_service_move_before(char *args[], int num,
                                        services->target);
 }
 
-static int move_after_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int move_after_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        struct move_service *services = user_data;
        char *service;
@@ -1478,8 +1536,8 @@ static int cmd_service_move_after(char *args[], int num,
                                        services->target);
 }
 
-static int config_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int config_return(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        char *service_name = user_data;
 
@@ -2135,8 +2193,8 @@ static int cmd_agent(char *args[], int num, struct connman_option *options)
        return 0;
 }
 
-static int vpnconnections_properties(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int vpnconnections_properties(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        char *path = user_data;
        char *str;
@@ -2165,8 +2223,8 @@ static int vpnconnections_properties(DBusMessageIter *iter, const char *error,
        return 0;
 }
 
-static int vpnconnections_list(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int vpnconnections_list(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        if (!error)
                __connmanctl_vpnconnections_list(iter);
@@ -2357,8 +2415,8 @@ static void session_notify_remove(void)
        session_notify_path = NULL;
 }
 
-static int session_connect_cb(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int session_connect_cb(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        if (error) {
                fprintf(stderr, "Error: %s\n", error);
@@ -2376,8 +2434,8 @@ static int session_connect(void)
                        session_connect_cb, NULL, NULL, NULL);
 }
 
-static int session_disconnect_cb(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int session_disconnect_cb(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        if (error)
                fprintf(stderr, "Error: %s\n", error);
@@ -2392,8 +2450,8 @@ static int session_disconnect(void)
                        session_disconnect_cb, NULL, NULL, NULL);
 }
 
-static int session_create_cb(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int session_create_cb(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        gboolean connect = GPOINTER_TO_INT(user_data);
        char *str;
@@ -2565,8 +2623,8 @@ static int session_create(gboolean connect, char *args[], int num,
        return res;
 }
 
-static int session_destroy_cb(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int session_destroy_cb(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        if (error) {
                fprintf(stderr, "Error destroying session: %s", error);
@@ -2597,8 +2655,8 @@ static int session_destroy(void)
                        session_destroy_append, session_path);
 }
 
-static int session_config_return(DBusMessageIter *iter, const char *error,
-               void *user_data)
+static int session_config_return(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        char *property_name = user_data;
 
@@ -2950,6 +3008,15 @@ static struct connman_option service_options[] = {
        { NULL, }
 };
 
+#if defined TIZEN_EXT_INS
+static struct connman_option ins_options[] = {
+       {"all",         'a', ""},
+       {"filter-ssid", 's', "ssid"},
+       {"filter-name", 'n', "[<service_name>]"},
+       { NULL, }
+};
+#endif
+
 static struct connman_option config_options[] = {
        {"nameservers", 'n', "<dns1> [<dns2>] [<dns3>]"},
        {"timeservers", 't', "<ntp1> [<ntp2>] [...]"},
@@ -3076,8 +3143,8 @@ static char *lookup_mesh(const char *text, int state)
 }
 #endif
 
-static int peer_service_cb(DBusMessageIter *iter, const char *error,
-                                                       void *user_data)
+static int peer_service_cb(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        bool registration = GPOINTER_TO_INT(user_data);
 
@@ -3400,6 +3467,10 @@ static const struct {
          "Display tethering clients", NULL },
        { "services",     "[<service>]",  service_options, cmd_services,
          "Display services", lookup_service_arg },
+#if defined TIZEN_EXT_INS
+       { "ins",                  NULL,      ins_options, cmd_ins,
+         "Display intelligent network selection", NULL },
+#endif
        { "peers",        "[peer]",       NULL,            cmd_peers,
          "Display peers", lookup_peer_arg },
        { "scan",         "<technology>", NULL,            cmd_scan,
@@ -3614,8 +3685,8 @@ static void update_services(DBusMessageIter *iter)
        }
 }
 
-static int populate_service_hash(DBusMessageIter *iter, const char *error,
-                               void *user_data)
+static int populate_service_hash(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        if (error) {
                fprintf(stderr, "Error getting services: %s", error);
@@ -3672,8 +3743,8 @@ static void add_vpnconnections(DBusMessageIter *iter)
        }
 }
 
-static int populate_vpnconnection_hash(DBusMessageIter *iter, const char *error,
-                               void *user_data)
+static int populate_vpnconnection_hash(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        DBusMessageIter array;
 
@@ -3746,8 +3817,8 @@ static void update_peers(DBusMessageIter *iter)
        }
 }
 
-static int populate_peer_hash(DBusMessageIter *iter,
-                                       const char *error, void *user_data)
+static int populate_peer_hash(DBusMessageIter *iter, int errnum,
+                       const char *error, void *user_data)
 {
        if (error) {
                fprintf(stderr, "Error getting peers: %s", error);
@@ -3811,8 +3882,8 @@ static void update_technologies(DBusMessageIter *iter)
        }
 }
 
-static int populate_technology_hash(DBusMessageIter *iter, const char *error,
-                               void *user_data)
+static int populate_technology_hash(DBusMessageIter *iter, int errnum,
+                               const char *error, void *user_data)
 {
        if (error) {
                fprintf(stderr, "Error getting technologies: %s\n", error);