diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/agent.c | 14 | ||||
-rw-r--r-- | client/commands.c | 128 | ||||
-rw-r--r-- | client/dbus_helpers.c | 33 | ||||
-rw-r--r-- | client/dbus_helpers.h | 2 | ||||
-rw-r--r-- | client/vpnconnections.c | 2 |
5 files changed, 113 insertions, 66 deletions
diff --git a/client/agent.c b/client/agent.c index d0208892..1cad3e03 100644 --- a/client/agent.c +++ b/client/agent.c @@ -710,8 +710,8 @@ static const GDBusMethodTable agent_methods[] = { { }, }; -static int agent_register_return(DBusMessageIter *iter, const char *error, - void *user_data) +static int agent_register_return(DBusMessageIter *iter, int errnum, + const char *error, void *user_data) { DBusConnection *connection = user_data; @@ -768,8 +768,8 @@ int __connmanctl_agent_register(DBusConnection *connection) return result; } -static int agent_unregister_return(DBusMessageIter *iter, const char *error, - void *user_data) +static int agent_unregister_return(DBusMessageIter *iter, int errnum, + const char *error, void *user_data) { if (error) { fprintf(stderr, "Error unregistering Agent: %s\n", error); @@ -819,8 +819,8 @@ static const GDBusMethodTable vpn_agent_methods[] = { { }, }; -static int vpn_agent_register_return(DBusMessageIter *iter, const char *error, - void *user_data) +static int vpn_agent_register_return(DBusMessageIter *iter, int errnum, + const char *error, void *user_data) { DBusConnection *connection = user_data; @@ -872,7 +872,7 @@ int __connmanctl_vpn_agent_register(DBusConnection *connection) return result; } -static int vpn_agent_unregister_return(DBusMessageIter *iter, +static int vpn_agent_unregister_return(DBusMessageIter *iter, int errnum, const char *error, void *user_data) { if (error) { diff --git a/client/commands.c b/client/commands.c index 097d293a..94c375dd 100644 --- a/client/commands.c +++ b/client/commands.c @@ -142,7 +142,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; @@ -154,10 +154,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); @@ -191,7 +200,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; @@ -203,10 +212,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); @@ -240,7 +258,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; @@ -267,7 +285,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; @@ -294,7 +312,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) { @@ -307,7 +325,7 @@ static int services_list(DBusMessageIter *iter, const char *error, return 0; } -static int peers_list(DBusMessageIter *iter, +static int peers_list(DBusMessageIter *iter, int errnum, const char *error, void *user_data) { if (!error) { @@ -319,7 +337,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) { @@ -331,7 +349,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; @@ -429,7 +447,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; @@ -476,8 +494,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; @@ -553,8 +571,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; @@ -569,8 +587,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; @@ -663,7 +681,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; @@ -699,8 +717,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; @@ -740,8 +758,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; @@ -787,8 +805,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; @@ -845,8 +863,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; @@ -903,8 +921,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; @@ -1560,8 +1578,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; @@ -1590,8 +1608,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); @@ -1782,8 +1800,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); @@ -1801,8 +1819,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); @@ -1817,8 +1835,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; @@ -1990,8 +2008,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); @@ -2022,8 +2040,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; @@ -2462,8 +2480,8 @@ static char *lookup_session(const char *text, int state) return lookup_options(session_options, text, state); } -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); @@ -2972,8 +2990,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); @@ -3030,8 +3048,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; @@ -3104,8 +3122,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); @@ -3169,8 +3187,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); diff --git a/client/dbus_helpers.c b/client/dbus_helpers.c index 6ca407d4..929ebe1c 100644 --- a/client/dbus_helpers.c +++ b/client/dbus_helpers.c @@ -30,6 +30,34 @@ #define TIMEOUT 120000 +#ifndef DBUS_ERROR_UNKNOWN_METHOD +#define DBUS_ERROR_UNKNOWN_METHOD "org.freedesktop.DBus.Error.UnknownMethod" +#endif + +#ifndef DBUS_ERROR_UNKNOWN_PROPERTY +#define DBUS_ERROR_UNKNOWN_PROPERTY "org.freedesktop.DBus.Error.UnknownProperty" +#endif + +#ifndef DBUS_ERROR_UNKNOWN_OBJECT +#define DBUS_ERROR_UNKNOWN_OBJECT "org.freedesktop.DBus.Error.UnknownObject" +#endif + +static int string2errno(const char *error) +{ + if (!g_strcmp0(error, DBUS_ERROR_UNKNOWN_METHOD)) + return -ENOTSUP; + if (!g_strcmp0(error, DBUS_ERROR_UNKNOWN_PROPERTY)) + return -ENOENT; + if (!g_strcmp0(error, DBUS_ERROR_UNKNOWN_OBJECT)) + return -ENODEV; + if (!g_strcmp0(error, "net.connman.Error.AlreadyEnabled")) + return -EALREADY; + if (!g_strcmp0(error, "net.connman.Error.AlreadyDisabled")) + return -EALREADY; + + return -EINVAL; +} + void __connmanctl_dbus_print(DBusMessageIter *iter, const char *pre, const char *dict, const char *sep) { @@ -159,14 +187,15 @@ static void dbus_method_reply(DBusPendingCall *call, void *user_data) dbus_error_init(&err); dbus_set_error_from_message(&err, reply); - callback->cb(NULL, err.message, callback->user_data); + callback->cb(NULL, string2errno(err.name), err.message, + callback->user_data); dbus_error_free(&err); goto end; } dbus_message_iter_init(reply, &iter); - res = callback->cb(&iter, NULL, callback->user_data); + res = callback->cb(&iter, 0, NULL, callback->user_data); end: __connmanctl_redraw_rl(); diff --git a/client/dbus_helpers.h b/client/dbus_helpers.h index 395808ac..d3326a48 100644 --- a/client/dbus_helpers.h +++ b/client/dbus_helpers.h @@ -38,7 +38,7 @@ void __connmanctl_dbus_print(DBusMessageIter *iter, const char *pre, const char *dict, const char *sep); typedef int (*connmanctl_dbus_method_return_func_t)(DBusMessageIter *iter, - const char *error, void *user_data); + int errnum, const char *error, void *user_data); typedef void (*connmanctl_dbus_append_func_t)(DBusMessageIter *iter, void *user_data); diff --git a/client/vpnconnections.c b/client/vpnconnections.c index d7bcbfee..7cef6bbe 100644 --- a/client/vpnconnections.c +++ b/client/vpnconnections.c @@ -72,7 +72,7 @@ static void print_connection(char *path, DBusMessageIter *iter) else str = path; - fprintf(stdout, " %c %-20s %s", state, name, str); + fprintf(stdout, " %c %-20s vpn_%s", state, name, str); } void __connmanctl_vpnconnections_list(DBusMessageIter *iter) |