cli: remove redundant return value from NMCCommand funcs

Many func implementations are asynchronous, that means, they
cannot return right away. Instead, they record the return value
in nmc->result_value.

The return value from the command functions was thus redundant.
In the best case, the return value agrees with the cached result
in nmc->result_value, in which it was unnecessary. In the worst case,
they disagree, and overwrite each other.

nmc->result_value is state. Tracking state is hard, and there should
be fewer places where the state gets mutated. Also, the rules how that
happened should be clearer. Drop the redundant, conflicting mechanism.
This commit is contained in:
Thomas Haller
2020-04-05 15:36:30 +02:00
parent c5d45848dd
commit aede8fa554
6 changed files with 308 additions and 313 deletions

View File

@@ -121,12 +121,12 @@ secrets_requested (NMSecretAgentSimple *agent,
success ? secrets : NULL);
}
static NMCResultCode
static void
do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
/* Create secret agent */
nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-agent");
@@ -144,8 +144,6 @@ do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*
g_string_printf (nmc->return_text, _("Error: secret agent initialization failed"));
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
}
return nmc->return_value;
}
static void
@@ -163,14 +161,14 @@ polkit_error (gpointer instance,
g_main_loop_quit (loop);
}
static NMCResultCode
static void
do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_free_error GError *error = NULL;
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
if (!nmc_polkit_agent_init (nmc, TRUE, &error)) {
g_dbus_error_strip_remote_error (error);
@@ -193,39 +191,37 @@ do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*
/* keep running */
nmc->should_wait++;
}
return nmc->return_value;
}
static NMCResultCode
static void
do_agent_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMCResultCode secret_res;
NMCResultCode r;
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
/* Run both secret and polkit agent */
secret_res = do_agent_secret (cmd, nmc, argc, argv);
if (secret_res != NMC_RESULT_SUCCESS) {
do_agent_secret (cmd, nmc, argc, argv);
r = nmc->return_value;
if (r != NMC_RESULT_SUCCESS) {
g_printerr ("%s\n", nmc->return_text->str);
g_string_truncate (nmc->return_text, 0);
nmc->return_value = NMC_RESULT_SUCCESS;
}
nmc->return_value = do_agent_polkit (cmd, nmc, argc, argv);
do_agent_polkit (cmd, nmc, argc, argv);
if (nmc->return_value != NMC_RESULT_SUCCESS) {
g_printerr ("%s\n", nmc->return_text->str);
g_string_truncate (nmc->return_text, 0);
}
if (nmc->return_value == NMC_RESULT_SUCCESS && secret_res != NMC_RESULT_SUCCESS)
nmc->return_value = secret_res;
return nmc->return_value;
if (r != NMC_RESULT_SUCCESS)
nmc->return_value = r;
}
NMCResultCode
void
nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -237,5 +233,4 @@ nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char
next_arg (nmc, &argc, &argv, NULL);
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}

View File

@@ -1264,7 +1264,7 @@ call_cmd (NmCli *nmc, GTask *task, const NMCCommand *cmd, int argc, const char *
g_task_return_new_error (task, NMCLI_ERROR, NMC_RESULT_ERROR_NM_NOT_RUNNING,
_("Error: NetworkManager is not running."));
} else {
nmc->return_value = cmd->func (cmd, nmc, argc, argv);
cmd->func (cmd, nmc, argc, argv);
g_task_return_boolean (task, TRUE);
}

View File

@@ -2027,7 +2027,7 @@ get_connection (NmCli *nmc,
return connection;
}
static NMCResultCode
static void
do_connections_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_free_error GError *err = NULL;
@@ -2284,7 +2284,6 @@ finish:
g_string_printf (nmc->return_text, _("Error: %s."), err->message);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
}
return nmc->return_value;
}
static NMActiveConnection *
@@ -2854,7 +2853,7 @@ nmc_activate_connection (NmCli *nmc,
return TRUE;
}
static NMCResultCode
static void
do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMConnection *connection = NULL;
@@ -2896,7 +2895,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error);
if (!connection) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
}
@@ -2909,7 +2909,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ifname = *argv;
@@ -2921,7 +2922,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ap = *argv;
@@ -2933,7 +2935,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete)
@@ -2943,14 +2946,15 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
}
else if (!nmc->complete) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
next_arg (nmc, &argc, &argv, NULL);
}
if (nmc->complete)
return nmc->return_value;
return;
/* Use nowait_flag instead of should_wait because exiting has to be postponed till
* active_connection_state_cb() is called. That gives NM time to check our permissions
@@ -2963,14 +2967,13 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
g_string_printf (nmc->return_text, _("Error: %s."),
error->message);
nmc->should_wait--;
return error->code;
nmc->return_value = error->code;
return;
}
/* Start progress indication */
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
progress_id = g_timeout_add (120, progress_cb, _("preparing"));
return nmc->return_value;
}
/*****************************************************************************/
@@ -3112,7 +3115,7 @@ connection_op_timeout_cb (gpointer user_data)
return G_SOURCE_REMOVE;
}
static NMCResultCode
static void
do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMActiveConnection *active;
@@ -3145,7 +3148,8 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
}
if (arg_num == 0) {
g_string_printf (nmc->return_text, _("Error: No connection specified."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
}
@@ -3163,7 +3167,8 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
arg_ptr++;
if (!arg_num) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
}
@@ -3184,12 +3189,13 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
if (!found_active_cons) {
g_string_printf (nmc->return_text, _("Error: no active connection provided."));
return NMC_RESULT_ERROR_NOT_FOUND;
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
return;
}
nm_assert (found_active_cons->len > 0);
if (nmc->complete)
return nmc->return_value;
return;
if (nmc->timeout > 0) {
nmc->should_wait++;
@@ -3226,8 +3232,6 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
}
}
}
return nmc->return_value;
}
/*****************************************************************************/
@@ -5348,7 +5352,7 @@ again:
return TRUE;
}
static NMCResultCode
static void
do_connection_add (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_unref_object NMConnection *connection = NULL;
@@ -5506,7 +5510,6 @@ read_properties:
finish:
reset_options ();
return nmc->return_value;
}
/*****************************************************************************/
@@ -8354,7 +8357,7 @@ nmc_complete_connection_type (const char *prefix)
}
}
static NMCResultCode
static void
do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
const GPtrArray *connections;
@@ -8390,7 +8393,8 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
else {
if (!nmc_parse_args (exp_args, TRUE, &argc, &argv, &error)) {
g_string_assign (nmc->return_text, error->message);
return error->code;
nmc->return_value = error->code;
return;
}
}
@@ -8420,7 +8424,8 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
} else {
g_string_printf (nmc->return_text,
_("Error: only one of 'id', 'filename', uuid, or 'path' can be provided."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
}
@@ -8430,11 +8435,12 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
found_con = nmc_find_connection (connections, selector, con, NULL, nmc->complete);
if (nmc->complete)
return nmc->return_value;
return;
if (!found_con) {
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), con);
return NMC_RESULT_ERROR_NOT_FOUND;
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
return;
}
/* Duplicate the connection and use that so that we need not
@@ -8469,7 +8475,7 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
if (nmc->complete) {
if (type && argc == 0)
nmc_complete_connection_type (type);
return nmc->return_value;
return;
}
connection_type = check_valid_name_toplevel (type, &slave_type, &err1);
@@ -8545,7 +8551,7 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
nm_clear_g_free (&nmc_tab_completion.con_type);
nmc_tab_completion.connection = NULL;
return nmc->return_value;
return;
}
static void
@@ -8573,7 +8579,7 @@ modify_connection_cb (GObject *connection,
quit ();
}
static NMCResultCode
static void
do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMConnection *connection = NULL;
@@ -8589,7 +8595,8 @@ do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
connection = get_connection (nmc, &argc, &argv, NULL, NULL, NULL, &error);
if (!connection) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
rc = nm_client_get_connection_by_uuid (nmc->client,
@@ -8597,21 +8604,21 @@ do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
if (!rc) {
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."),
nm_connection_get_uuid (connection));
return NMC_RESULT_ERROR_NOT_FOUND;
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
return;
}
if (!nmc_process_connection_properties (nmc, NM_CONNECTION (rc), &argc, &argv, TRUE, &error)) {
g_string_assign (nmc->return_text, error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
update_connection (rc, temporary, modify_connection_cb, nmc);
nmc->should_wait++;
return nmc->return_value;
}
static void
@@ -8641,7 +8648,7 @@ clone_connection_cb (GObject *client,
quit ();
}
static NMCResultCode
static void
do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMConnection *connection = NULL;
@@ -8680,11 +8687,12 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error);
if (!connection) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
if (argv[0])
new_name = *argv;
@@ -8693,12 +8701,14 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
_("New connection name: "));
} else {
g_string_printf (nmc->return_text, _("Error: <new name> argument is missing."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (next_arg (nmc->ask ? NULL : nmc, argc_ptr, argv_ptr, NULL) == 0) {
g_string_printf (nmc->return_text, _("Error: unknown extra argument: '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
new_connection = nm_simple_connection_new_clone (connection);
@@ -8717,8 +8727,6 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
clone_connection_cb,
_add_connection_info_new (nmc, connection, new_connection));
nmc->should_wait++;
return nmc->return_value;
}
static void
@@ -8742,7 +8750,7 @@ delete_cb (GObject *con, GAsyncResult *result, gpointer user_data)
}
}
static NMCResultCode
static void
do_connection_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMConnection *connection;
@@ -8843,7 +8851,6 @@ finish:
invalid_cons->str);
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
}
return nmc->return_value;
}
static void
@@ -8888,7 +8895,7 @@ connection_removed (NMClient *client, NMRemoteConnection *con, NmCli *nmc)
connection_unwatch (nmc, connection);
}
static NMCResultCode
static void
do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
GError *error = NULL;
@@ -8910,7 +8917,8 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
if (!nmc->complete)
g_printerr (_("Error: %s.\n"), error->message);
g_string_printf (nmc->return_text, _("Error: not all connections found."));
return error->code;
nmc->return_value = error->code;
return;
}
if (nmc->complete)
@@ -8921,7 +8929,7 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
}
if (nmc->complete)
return nmc->return_value;
return;
for (i = 0; i < connections->len; i++)
connection_watch (nmc, connections->pdata[i]);
@@ -8933,11 +8941,9 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
}
g_signal_connect (nmc->client, NM_CLIENT_CONNECTION_REMOVED, G_CALLBACK (connection_removed), nmc);
return NMC_RESULT_SUCCESS;
}
static NMCResultCode
static void
do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_unref_variant GVariant *result = NULL;
@@ -8945,7 +8951,7 @@ do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
result = nmc_dbus_call_sync (nmc,
"/org/freedesktop/NetworkManager/Settings",
@@ -8959,11 +8965,9 @@ do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
nmc_error_get_simple_message (error));
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
}
return nmc->return_value;
}
static NMCResultCode
static void
do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
GError *error = NULL;
@@ -8974,11 +8978,14 @@ do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
g_string_printf (nmc->return_text, _("Error: No connection specified."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nmc->complete)
return NMC_RESULT_COMPLETE_FILE;
if (nmc->complete) {
nmc->return_value = NMC_RESULT_COMPLETE_FILE;
return;
}
filenames = (const char **) nm_utils_strv_dup ((char **) argv, argc, FALSE);
@@ -8994,13 +9001,11 @@ do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
for (i = 0; failures[i]; i++)
g_printerr (_("Could not load file '%s'\n"), failures[i]);
}
return nmc->return_value;
}
#define PROMPT_IMPORT_FILE N_("File to import: ")
static NMCResultCode
static void
do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_free_error GError *error = NULL;
@@ -9032,7 +9037,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
filename = nm_strstrip (filename_ask);
} else {
g_string_printf (nmc->return_text, _("Error: No arguments provided."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
}
@@ -9048,7 +9054,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if ( argc == 1
@@ -9069,7 +9076,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete)
nmc->return_value = NMC_RESULT_COMPLETE_FILE;
@@ -9079,22 +9087,25 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
g_printerr (_("Warning: 'file' already specified, ignoring extra one.\n"));
} else {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
next_arg (nmc, &argc, &argv, NULL);
}
if (nmc->complete)
return nmc->return_value;
return;
if (!type) {
g_string_printf (nmc->return_text, _("Error: 'type' argument is required."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (!filename) {
g_string_printf (nmc->return_text, _("Error: 'file' argument is required."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nm_streq (type, "wireguard"))
@@ -9103,7 +9114,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
service_type = nm_vpn_plugin_info_list_find_service_type (nm_vpn_get_plugin_infos (), type);
if (!service_type) {
g_string_printf (nmc->return_text, _("Error: failed to find VPN plugin for %s."), type);
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
/* Import VPN configuration */
@@ -9111,7 +9123,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
if (!plugin) {
g_string_printf (nmc->return_text, _("Error: failed to load VPN plugin: %s."),
error->message);
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
connection = nm_vpn_editor_plugin_import (plugin, filename, &error);
@@ -9120,7 +9133,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
if (!connection) {
g_string_printf (nmc->return_text, _("Error: failed to import '%s': %s."),
filename, error->message);
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
add_connection (nmc->client,
@@ -9129,11 +9143,9 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
add_connection_cb,
_add_connection_info_new (nmc, NULL, connection));
nmc->should_wait++;
return nmc->return_value;
}
static NMCResultCode
static void
do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMConnection *connection = NULL;
@@ -9174,7 +9186,7 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
}
if (nmc->complete)
return nmc->return_value;
return;
out_name = *argv;
@@ -9244,7 +9256,6 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
finish:
if (!out_name && path)
unlink (path);
return nmc->return_value;
}
static char *
@@ -9336,7 +9347,7 @@ nmcli_con_tab_completion (const char *text, int start, int end)
return match_array;
}
NMCResultCode
void
nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -9364,7 +9375,6 @@ nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const
rl_attempted_completion_function = nmcli_con_tab_completion;
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}
void

View File

@@ -1728,7 +1728,7 @@ nmc_device_state_to_color (NMDeviceState state)
return NM_META_COLOR_DEVICE_UNKNOWN;
}
static NMCResultCode
static void
do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
GError *error = NULL;
@@ -1738,11 +1738,12 @@ do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
if (argc) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0)
@@ -1762,13 +1763,12 @@ do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
&error)) {
g_string_printf (nmc->return_text, _("Error: 'device status': %s"), error->message);
g_error_free (error);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
return NMC_RESULT_SUCCESS;
}
static NMCResultCode
static void
do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_free_error GError *error = NULL;
@@ -1783,16 +1783,18 @@ do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (argc) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
show_device_info (device, nmc);
} else {
@@ -1812,8 +1814,6 @@ do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a
g_free (devices);
}
return nmc->return_value;
}
static gboolean
@@ -2036,7 +2036,7 @@ connect_device_cb (GObject *client, GAsyncResult *result, gpointer user_data)
g_timeout_add_seconds (nmc->timeout, timeout_cb, nmc);
}
static NMCResultCode
static void
do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device = NULL;
@@ -2051,16 +2051,18 @@ do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (*argv) {
g_string_printf (nmc->return_text, _("Error: extra argument not allowed: '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
/*
* Use nowait_flag instead of should_wait, because exiting has to be postponed
@@ -2091,8 +2093,6 @@ do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
/* Start progress indication */
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
progress_id = g_timeout_add (120, progress_cb, device);
return nmc->return_value;
}
typedef struct {
@@ -2206,7 +2206,7 @@ reapply_device_cb (GObject *object, GAsyncResult *result, gpointer user_data)
}
}
static NMCResultCode
static void
do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device;
@@ -2221,16 +2221,18 @@ do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (argc) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
nmc->nowait_flag = (nmc->timeout == 0);
nmc->should_wait++;
@@ -2241,8 +2243,6 @@ do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
/* Now reapply the connection to the device */
nm_device_reapply_async (device, NULL, 0, 0, NULL, reapply_device_cb, info);
return nmc->return_value;
}
typedef struct {
@@ -2323,7 +2323,7 @@ modify_get_applied_cb (GObject *object,
nm_device_reapply_async (device, connection, version_id, 0, NULL, modify_reapply_cb, info);
}
static NMCResultCode
static void
do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device = NULL;
@@ -2334,7 +2334,8 @@ do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (nmc->timeout == -1)
@@ -2349,8 +2350,6 @@ do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
info->argv = nm_utils_strv_dup ((char **) argv, argc, TRUE);
nm_device_get_applied_connection_async (device, 0, NULL, modify_get_applied_cb, info);
return nmc->return_value;
}
static void
@@ -2390,7 +2389,7 @@ disconnect_device_cb (GObject *object, GAsyncResult *result, gpointer user_data)
}
}
static NMCResultCode
static void
do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device;
@@ -2404,7 +2403,7 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
next_arg (nmc, &argc, &argv, NULL);
queue = get_device_list (nmc, argc, argv);
if (!queue)
return nmc->return_value;
return;
if (nmc->complete)
goto out;
queue = g_slist_reverse (queue);
@@ -2435,7 +2434,6 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
out:
g_slist_free (queue);
return nmc->return_value;
}
static void
@@ -2462,7 +2460,7 @@ delete_device_cb (GObject *object, GAsyncResult *result, gpointer user_data)
}
}
static NMCResultCode
static void
do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device;
@@ -2476,7 +2474,7 @@ do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
next_arg (nmc, &argc, &argv, NULL);
queue = get_device_list (nmc, argc, argv);
if (!queue)
return nmc->return_value;
return;
if (nmc->complete)
goto out;
queue = g_slist_reverse (queue);
@@ -2500,10 +2498,9 @@ do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
out:
g_slist_free (queue);
return nmc->return_value;
}
static NMCResultCode
static void
do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
#define DEV_SET_AUTOCONNECT 0
@@ -2526,12 +2523,14 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
if (!argc) {
g_string_printf (nmc->return_text, _("Error: No property specified."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
i = 0;
@@ -2546,14 +2545,16 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete)
nmc_complete_bool (*argv);
if (!nmc_string_to_bool (*argv, &flag, &error)) {
g_string_printf (nmc->return_text, _("Error: 'managed': %s."),
error->message);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
values[DEV_SET_MANAGED].idx = ++i;
values[DEV_SET_MANAGED].value = flag;
@@ -2563,26 +2564,29 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete)
nmc_complete_bool (*argv);
if (!nmc_string_to_bool (*argv, &flag, &error)) {
g_string_printf (nmc->return_text, _("Error: 'autoconnect': %s."),
error->message);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
values[DEV_SET_AUTOCONNECT].idx = ++i;
values[DEV_SET_AUTOCONNECT].value = flag;
}
else {
g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
} while (next_arg (nmc, &argc, &argv, NULL) == 0);
if (nmc->complete)
return nmc->return_value;
return;
/* when multiple properties are specified, set them in the order as they
* are specified on the command line. */
@@ -2596,8 +2600,6 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
nm_device_set_autoconnect (device, values[DEV_SET_AUTOCONNECT].value);
if (values[DEV_SET_MANAGED].idx >= 0)
nm_device_set_managed (device, values[DEV_SET_MANAGED].value);
return nmc->return_value;
}
static void
@@ -2662,11 +2664,11 @@ device_removed (NMClient *client, NMDevice *device, NmCli *nmc)
device_unwatch (nmc, device);
}
static NMCResultCode
static void
do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
if (nmc->complete)
return nmc->return_value;
return;
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
@@ -2691,7 +2693,6 @@ do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
}
g_signal_connect (nmc->client, NM_CLIENT_DEVICE_REMOVED, G_CALLBACK (device_removed), nmc);
return nmc->return_value;
}
/*
@@ -3033,7 +3034,7 @@ nmc_complete_bssid (NMClient *client, const char *ifname, const char *bssid_pref
complete_aps (devices, ifname, bssid_prefix, NULL);
}
static NMCResultCode
static void
do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
GError *error = NULL;
@@ -3061,7 +3062,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ifname = *argv;
if (argc == 1 && nmc->complete)
@@ -3073,7 +3075,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
bssid_user = *argv;
if (argc == 1 && nmc->complete)
@@ -3084,7 +3087,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
rescan = *argv;
if (argc == 1 && nmc->complete)
@@ -3097,7 +3101,7 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
}
if (nmc->complete)
return nmc->return_value;
return;
if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0)
fields_str = NMC_FIELDS_DEV_WIFI_LIST_COMMON;
@@ -3111,12 +3115,14 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
if (error) {
g_string_printf (nmc->return_text, _("Error: 'device wifi': %s"), error->message);
g_error_free (error);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (NM_IN_STRSET (rescan, NULL, "auto"))
@@ -3127,7 +3133,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
rescan_cutoff_msec = nm_utils_get_timestamp_msec ();
else {
g_string_printf (nmc->return_text, _("Error: invalid rescan argument: '%s' not among [auto, no, yes]"), rescan);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ifname_handled = (ifname == NULL);
@@ -3176,7 +3183,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
_("Error: Device '%s' is not a Wi-Fi device."),
ifname);
}
return NMC_RESULT_ERROR_NOT_FOUND;
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
return;
}
if (!devices[0]) {
@@ -3184,9 +3192,9 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
bssid_user);
return NMC_RESULT_ERROR_NOT_FOUND;
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
}
return NMC_RESULT_SUCCESS;
return;
}
scan_info = g_slice_new (ScanInfo);
@@ -3235,7 +3243,6 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
scan_info->devices = g_steal_pointer (&devices);
nmc->should_wait++;
return nmc->return_value;
}
static void
@@ -3299,7 +3306,7 @@ save_and_activate_connection (NmCli *nmc,
}
}
static NMCResultCode
static void
do_device_wifi_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device = NULL;
@@ -3710,8 +3717,6 @@ finish:
g_byte_array_free (bssid2_arr, TRUE);
g_free (ssid_ask);
nm_free_secret (passwd_ask);
return nmc->return_value;
}
static GBytes *
@@ -3940,7 +3945,7 @@ create_hotspot_conn (const GPtrArray *connections,
return connection;
}
static NMCResultCode
static void
do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
const char *ifname = NULL;
@@ -3978,7 +3983,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ifname = *argv;
if (argc == 1 && nmc->complete)
@@ -3988,7 +3994,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
con_name = *argv;
} else if (strcmp (*argv, "ssid") == 0) {
@@ -3996,11 +4003,13 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (strlen (*argv) > 32) {
g_string_printf (nmc->return_text, _("Error: ssid is too long."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ssid_bytes = g_bytes_new (*argv, strlen (*argv));
} else if (strcmp (*argv, "band") == 0) {
@@ -4008,7 +4017,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
band = *argv;
if (argc == 1 && nmc->complete)
@@ -4016,14 +4026,16 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
if (strcmp (band, "a") && strcmp (band, "bg")) {
g_string_printf (nmc->return_text, _("Error: band argument value '%s' is invalid; use 'a' or 'bg'."),
band);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
} else if (strcmp (*argv, "channel") == 0) {
argc--;
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
channel = *argv;
} else if (strcmp (*argv, "password") == 0) {
@@ -4031,7 +4043,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
password = *argv;
/* --show-password is deprecated in favour of global --show-secrets option */
@@ -4040,7 +4053,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
show_password = TRUE;
} else {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
next_arg (nmc, &argc, &argv, NULL);
@@ -4048,7 +4062,7 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
show_password = nmc->nmc_config.show_secrets || show_password;
if (nmc->complete)
return nmc->return_value;
return;
/* Verify band and channel parameters */
if (!channel) {
@@ -4062,13 +4076,15 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
if (!band) {
g_string_printf (nmc->return_text, _("Error: channel requires band too."));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if ( !nmc_string_to_uint (channel, TRUE, 1, 5825, &value)
|| !nm_utils_wifi_is_channel_valid (value, band)) {
g_string_printf (nmc->return_text, _("Error: channel '%s' not valid for band '%s'."),
channel, band);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
channel_int = value;
@@ -4081,7 +4097,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), ifname);
else
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
/* Check device supported mode */
@@ -4093,7 +4110,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
else {
g_string_printf (nmc->return_text, _("Error: Device '%s' supports neither AP nor Ad-Hoc mode."),
nm_device_get_iface (device));
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
connections = nm_client_get_connections (nmc->client);
@@ -4109,13 +4127,14 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
if (password || !NM_IS_REMOTE_CONNECTION (connection)) {
s_wsec = nm_connection_get_setting_wireless_security (connection);
g_return_val_if_fail (s_wsec, NMC_RESULT_ERROR_UNKNOWN);
g_return_if_fail (s_wsec);
if (!set_wireless_security_for_hotspot (s_wsec, wifi_mode, caps, password, show_password, &error)) {
g_object_unref (connection);
g_string_printf (nmc->return_text, _("Error: Invalid 'password': %s."), error->message);
g_clear_error (&error);
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
}
@@ -4124,8 +4143,6 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
nmc->should_wait++;
save_and_activate_connection (nmc, device, connection, TRUE, NULL);
return nmc->return_value;
}
static void
@@ -4143,7 +4160,7 @@ request_rescan_cb (GObject *object, GAsyncResult *result, gpointer user_data)
quit ();
}
static NMCResultCode
static void
do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device;
@@ -4167,14 +4184,14 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
if (ifname) {
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto finish;
return;
}
argc--;
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto finish;
return;
}
ifname = *argv;
if (argc == 1 && nmc->complete)
@@ -4185,20 +4202,20 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto finish;
return;
}
g_ptr_array_add (ssids, (gpointer) *argv);
} else if (!nmc->complete) {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto finish;
return;
}
next_arg (nmc, &argc, &argv, NULL);
}
if (nmc->complete)
goto finish;
return;
/* Find Wi-Fi device to scan on. When no ifname is provided, the first Wi-Fi is used. */
device = find_wifi_device_by_iface (devices, ifname, NULL);
@@ -4209,7 +4226,7 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
else
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
goto finish;
return;
}
if (ssids->len) {
@@ -4233,8 +4250,6 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
NULL, request_rescan_cb, nmc);
nmc->should_wait++;
finish:
return nmc->return_value;
}
static void
@@ -4373,7 +4388,7 @@ wifi_show_device (const NmcConfig *nmc_config, NMDevice *device, GError **error)
return TRUE;
}
static NMCResultCode
static void
do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
const char *ifname = NULL;
@@ -4394,7 +4409,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
g_string_printf (nmc->return_text,
_("Error: '%s' cannot repeat."),
*(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
argc--;
argv++;
@@ -4402,7 +4418,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
g_string_printf (nmc->return_text,
_("Error: %s argument is missing."),
*(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
ifname = *argv;
if (argc == 1 && nmc->complete)
@@ -4411,14 +4428,15 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
g_string_printf (nmc->return_text,
_("Error: invalid extra argument '%s'."),
*argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
next_arg (nmc, &argc, &argv, NULL);
}
if (nmc->complete)
return nmc->return_value;
return;
for (i = 0; devices[i]; i++) {
if (ifname && g_strcmp0 (nm_device_get_iface (devices[i]), ifname) != 0)
@@ -4430,7 +4448,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
if (ifname) {
g_string_printf (nmc->return_text,
_("%s"), error->message);
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
g_clear_error (&error);
}
@@ -4442,10 +4461,9 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
if (!found) {
g_string_printf (nmc->return_text,
_("Error: No Wi-Fi device found."));
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
return;
}
return nmc->return_value;
}
static NMCCommand device_wifi_cmds[] = {
@@ -4457,13 +4475,11 @@ static NMCCommand device_wifi_cmds[] = {
{ NULL, do_device_wifi_list, NULL, TRUE, TRUE },
};
static NMCResultCode
static void
do_device_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
nmc_do_cmd (nmc, device_wifi_cmds, *argv, argc, argv);
return nmc->return_value;
}
static int
@@ -4551,7 +4567,7 @@ show_device_lldp_list (NMDevice *device, NmCli *nmc, const char *fields_str, int
return neighbors->len;
}
static NMCResultCode
static void
do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice *device = NULL;
@@ -4570,17 +4586,20 @@ do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
device = get_device (nmc, &argc, &argv, &error);
if (!device) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
return error->code;
nmc->return_value = error->code;
return;
}
} else {
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
next_arg (nmc, &argc, &argv, NULL);
@@ -4596,25 +4615,22 @@ do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
if (error) {
g_string_printf (nmc->return_text, _("Error: 'device lldp list': %s"), error->message);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (nmc->complete)
return nmc->return_value;
return;
if (device) {
show_device_lldp_list (device, nmc, fields_str, &counter);
} else {
NMDevice **devices = nmc_get_devices_sorted (nmc->client);
int i;
gs_free NMDevice **devices = nmc_get_devices_sorted (nmc->client);
guint i;
for (i = 0; devices[i]; i++)
show_device_lldp_list (devices[i], nmc, fields_str, &counter);
g_free (devices);
}
return nmc->return_value;
}
static NMCCommand device_lldp_cmds[] = {
@@ -4622,7 +4638,7 @@ static NMCCommand device_lldp_cmds[] = {
{ NULL, do_device_lldp_list, NULL, TRUE, TRUE },
};
static NMCResultCode
static void
do_device_lldp (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
if (!nmc->mode_specified)
@@ -4630,8 +4646,6 @@ do_device_lldp (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a
next_arg (nmc, &argc, &argv, NULL);
nmc_do_cmd (nmc, device_lldp_cmds, *argv, argc, argv);
return nmc->return_value;
}
static gboolean
@@ -4676,7 +4690,7 @@ nmcli_device_tab_completion (const char *text, int start, int end)
return match_array;
}
NMCResultCode
void
nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -4701,7 +4715,6 @@ nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char
rl_attempted_completion_function = (rl_completion_func_t *) nmcli_device_tab_completion;
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}
void

View File

@@ -489,15 +489,14 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl
return TRUE;
}
static NMCResultCode
static void
do_general_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
show_nm_status (nmc, NULL, NULL);
return nmc->return_value;
}
static gboolean
@@ -608,7 +607,7 @@ show_nm_permissions (NmCli *nmc)
return TRUE;
}
static NMCResultCode
static void
do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gs_unref_variant GVariant *result = NULL;
@@ -622,7 +621,7 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
if (nmc->complete) {
if (argc == 0)
return nmc->return_value;
return;
if (argc == 1) {
values = nm_utils_enum_get_values (nm_manager_reload_flags_get_type (),
@@ -630,7 +629,7 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
NM_MANAGER_RELOAD_FLAG_ALL);
nmc_complete_strv (*argv, -1, values);
}
return nmc->return_value;
return;
}
if (argc > 0) {
@@ -643,7 +642,8 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
_("Error: invalid reload flag '%s'. Allowed flags are: %s"),
err_token,
joined);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
argc--;
argv++;
@@ -651,7 +651,8 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
if (argc > 0) {
g_string_printf (nmc->return_text, _("Error: extra argument '%s'"), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
result = nmc_dbus_call_sync (nmc,
@@ -666,21 +667,18 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
g_string_printf (nmc->return_text,
_("Error: failed to reload: %s"),
nmc_error_get_simple_message (error));
return NMC_RESULT_ERROR_UNKNOWN;
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
}
return nmc->return_value;
}
static NMCResultCode
static void
do_general_permissions (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
show_nm_permissions (nmc);
return nmc->return_value;
}
static void
@@ -746,13 +744,13 @@ _set_logging_cb (GObject *object, GAsyncResult *result, gpointer user_data)
quit ();
}
static NMCResultCode
static void
do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
if (nmc->complete)
return nmc->return_value;
return;
show_general_logging (nmc);
} else {
@@ -769,7 +767,8 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete) {
nmc_complete_strings_nocase (*argv, "TRACE", "DEBUG", "INFO", "WARN",
@@ -781,7 +780,8 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
argv++;
if (!argc) {
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
if (argc == 1 && nmc->complete) {
nmc_complete_strings_nocase (*argv, "PLATFORM", "RFKILL", "ETHER", "WIFI", "BT",
@@ -795,12 +795,13 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
domains = *argv;
} else {
g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv);
return NMC_RESULT_ERROR_USER_INPUT;
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
return;
}
} while (next_arg (nmc, &argc, &argv, NULL) == 0);
if (nmc->complete)
return nmc->return_value;
return;
nmc->should_wait++;
nm_client_dbus_call (nmc->client,
@@ -816,57 +817,52 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
_set_logging_cb,
nmc);
}
return nmc->return_value;
}
static void
save_hostname_cb (GObject *object, GAsyncResult *result, gpointer user_data)
{
NmCli *nmc = (NmCli *) user_data;
GError *error = NULL;
NmCli *nmc = user_data;
gs_free_error GError *error = NULL;
nm_client_save_hostname_finish (NM_CLIENT (object), result, &error);
if (error) {
g_string_printf (nmc->return_text, _("Error: failed to set hostname: %s"),
error->message);
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
g_error_free (error);
}
quit ();
}
static NMCResultCode
static void
do_general_hostname (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
const char *hostname;
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
if (argc == 0) {
/* no arguments -> get hostname */
char *hostname = NULL;
gs_free char *s = NULL;
g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &hostname, NULL);
if (hostname)
g_print ("%s\n", hostname);
g_free (hostname);
} else {
/* hostname provided -> set it */
const char *hostname = *argv;
g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &s, NULL);
if (s)
g_print ("%s\n", s);
return;
}
hostname = *argv;
if (next_arg (nmc, &argc, &argv, NULL) == 0)
g_print ("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
nmc->should_wait++;
nm_client_save_hostname_async (nmc->client, hostname, NULL, save_hostname_cb, nmc);
}
return nmc->return_value;
}
NMCResultCode
void
nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -883,7 +879,6 @@ nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const cha
nmc_start_polkit_agent_start_try (nmc);
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}
static gboolean
@@ -949,7 +944,7 @@ _do_networking_on_off_cb (GObject *object, GAsyncResult *result, gpointer user_d
quit ();
}
static NMCResultCode
static void
do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gboolean enable = nm_streq (cmd->cmd, "on");
@@ -957,7 +952,7 @@ do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
nmc_start_polkit_agent_start_try (nmc);
@@ -972,18 +967,16 @@ do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
NULL,
_do_networking_on_off_cb,
nmc);
return nmc->return_value;
}
static NMCResultCode
static void
do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete) {
if (argc == 1)
nmc_complete_strings (*argv, "check");
return nmc->return_value;
return;
}
if (!argc) {
@@ -1006,23 +999,19 @@ do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const c
g_string_printf (nmc->return_text, _("Error: 'networking' command '%s' is not valid."), *argv);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
}
return nmc->return_value;
}
static NMCResultCode
static void
do_networking_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
nmc_switch_show (nmc, NMC_FIELDS_NM_NETWORKING, N_("Networking"));
return nmc->return_value;
}
NMCResultCode
void
nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -1034,10 +1023,9 @@ nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const
next_arg (nmc, &argc, &argv, NULL);
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}
static NMCResultCode
static void
do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gboolean enable_flag;
@@ -1045,7 +1033,7 @@ do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*arg
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
if (nmc->complete)
return nmc->return_value;
return;
/* no argument, show all radio switches */
show_nm_status (nmc, N_("Radio switches"), NMC_FIELDS_NM_STATUS_RADIO);
@@ -1053,18 +1041,16 @@ do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*arg
if (nmc->complete) {
if (argc == 1)
nmc_complete_bool (*argv);
return nmc->return_value;
return;
}
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
return nmc->return_value;
return;
nm_client_wireless_set_enabled (nmc->client, enable_flag);
nm_client_wimax_set_enabled (nmc->client, enable_flag);
nm_client_wwan_set_enabled (nmc->client, enable_flag);
}
return nmc->return_value;
}
static void
@@ -1082,7 +1068,7 @@ _do_radio_wifi_cb (GObject *object, GAsyncResult *result, gpointer user_data)
quit ();
}
static NMCResultCode
static void
do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gboolean enable_flag;
@@ -1090,7 +1076,7 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
if (nmc->complete)
return nmc->return_value;
return;
/* no argument, show current Wi-Fi state */
nmc_switch_show (nmc, NMC_FIELDS_NM_WIFI, N_("Wi-Fi radio switch"));
@@ -1098,10 +1084,10 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
if (nmc->complete) {
if (argc == 1)
nmc_complete_bool (*argv);
return nmc->return_value;
return;
}
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
return nmc->return_value;
return;
nmc_start_polkit_agent_start_try (nmc);
@@ -1116,11 +1102,9 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
_do_radio_wifi_cb,
nmc);
}
return nmc->return_value;
}
static NMCResultCode
static void
do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
gboolean enable_flag;
@@ -1128,7 +1112,7 @@ do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
if (nmc->complete)
return nmc->return_value;
return;
/* no argument, show current WWAN (mobile broadband) state */
nmc_switch_show (nmc, NMC_FIELDS_NM_WWAN, N_("WWAN radio switch"));
@@ -1136,18 +1120,16 @@ do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
if (nmc->complete) {
if (argc == 1)
nmc_complete_bool (*argv);
return nmc->return_value;
return;
}
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
return nmc->return_value;
return;
nm_client_wwan_set_enabled (nmc->client, enable_flag);
}
return nmc->return_value;
}
NMCResultCode
void
nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
static const NMCCommand cmds[] = {
@@ -1162,7 +1144,6 @@ nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char
nmc_start_polkit_agent_start_try (nmc);
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
return nmc->return_value;
}
static void
@@ -1402,7 +1383,7 @@ ac_overview (NmCli *nmc, NMActiveConnection *ac)
g_string_free (outbuf, TRUE);
}
NMCResultCode
void
nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
NMDevice **devices;
@@ -1513,17 +1494,15 @@ nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const ch
"\"nmcli connection show\" to get an overview on active connection profiles.\n"
"\n"
"Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.\n"));
return NMC_RESULT_SUCCESS;
}
NMCResultCode
void
nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
{
next_arg (nmc, &argc, &argv, NULL);
if (nmc->complete)
return nmc->return_value;
return;
if (argc > 0) {
if (!nmc_arg_is_help (*argv)) {
@@ -1532,7 +1511,7 @@ nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const cha
}
usage_monitor ();
return nmc->return_value;
return;
}
if (!nm_client_get_nm_running (nmc->client)) {
@@ -1559,6 +1538,4 @@ nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const cha
monitor_devices (nmc);
monitor_connections (nmc);
return NMC_RESULT_SUCCESS;
}

View File

@@ -170,20 +170,20 @@ struct _NMCCommand;
typedef struct _NMCCommand {
const char *cmd;
NMCResultCode (*func) (const struct _NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void (*func) (const struct _NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void (*usage) (void);
bool needs_client;
bool needs_nm_running;
} NMCCommand;
NMCResultCode nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
NMCResultCode nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
void nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv);
/*****************************************************************************/