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:
@@ -121,12 +121,12 @@ secrets_requested (NMSecretAgentSimple *agent,
|
|||||||
success ? secrets : NULL);
|
success ? secrets : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* Create secret agent */
|
/* Create secret agent */
|
||||||
nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-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"));
|
g_string_printf (nmc->return_text, _("Error: secret agent initialization failed"));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -163,14 +161,14 @@ polkit_error (gpointer instance,
|
|||||||
g_main_loop_quit (loop);
|
g_main_loop_quit (loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_free_error GError *error = NULL;
|
gs_free_error GError *error = NULL;
|
||||||
|
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (!nmc_polkit_agent_init (nmc, TRUE, &error)) {
|
if (!nmc_polkit_agent_init (nmc, TRUE, &error)) {
|
||||||
g_dbus_error_strip_remote_error (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 */
|
/* keep running */
|
||||||
nmc->should_wait++;
|
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)
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* Run both secret and polkit agent */
|
/* Run both secret and polkit agent */
|
||||||
secret_res = do_agent_secret (cmd, nmc, argc, argv);
|
do_agent_secret (cmd, nmc, argc, argv);
|
||||||
if (secret_res != NMC_RESULT_SUCCESS) {
|
r = nmc->return_value;
|
||||||
|
if (r != NMC_RESULT_SUCCESS) {
|
||||||
g_printerr ("%s\n", nmc->return_text->str);
|
g_printerr ("%s\n", nmc->return_text->str);
|
||||||
g_string_truncate (nmc->return_text, 0);
|
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) {
|
if (nmc->return_value != NMC_RESULT_SUCCESS) {
|
||||||
g_printerr ("%s\n", nmc->return_text->str);
|
g_printerr ("%s\n", nmc->return_text->str);
|
||||||
g_string_truncate (nmc->return_text, 0);
|
g_string_truncate (nmc->return_text, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->return_value == NMC_RESULT_SUCCESS && secret_res != NMC_RESULT_SUCCESS)
|
if (r != NMC_RESULT_SUCCESS)
|
||||||
nmc->return_value = secret_res;
|
nmc->return_value = r;
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NMCResultCode
|
void
|
||||||
nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
@@ -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,
|
g_task_return_new_error (task, NMCLI_ERROR, NMC_RESULT_ERROR_NM_NOT_RUNNING,
|
||||||
_("Error: NetworkManager is not running."));
|
_("Error: NetworkManager is not running."));
|
||||||
} else {
|
} else {
|
||||||
nmc->return_value = cmd->func (cmd, nmc, argc, argv);
|
cmd->func (cmd, nmc, argc, argv);
|
||||||
g_task_return_boolean (task, TRUE);
|
g_task_return_boolean (task, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2027,7 +2027,7 @@ get_connection (NmCli *nmc,
|
|||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connections_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connections_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_free_error GError *err = NULL;
|
gs_free_error GError *err = NULL;
|
||||||
@@ -2284,7 +2284,6 @@ finish:
|
|||||||
g_string_printf (nmc->return_text, _("Error: %s."), err->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), err->message);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
}
|
}
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMActiveConnection *
|
static NMActiveConnection *
|
||||||
@@ -2854,7 +2853,7 @@ nmc_activate_connection (NmCli *nmc,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
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);
|
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error);
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
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++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
ifname = *argv;
|
||||||
@@ -2921,7 +2922,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
ap = *argv;
|
||||||
@@ -2933,7 +2935,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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)
|
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) {
|
else if (!nmc->complete) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* Use nowait_flag instead of should_wait because exiting has to be postponed till
|
/* 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
|
* 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."),
|
g_string_printf (nmc->return_text, _("Error: %s."),
|
||||||
error->message);
|
error->message);
|
||||||
nmc->should_wait--;
|
nmc->should_wait--;
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start progress indication */
|
/* Start progress indication */
|
||||||
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
|
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
|
||||||
progress_id = g_timeout_add (120, progress_cb, _("preparing"));
|
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;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMActiveConnection *active;
|
NMActiveConnection *active;
|
||||||
@@ -3145,7 +3148,8 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
|
|||||||
}
|
}
|
||||||
if (arg_num == 0) {
|
if (arg_num == 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: No connection specified."));
|
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++;
|
arg_ptr++;
|
||||||
if (!arg_num) {
|
if (!arg_num) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector);
|
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) {
|
if (!found_active_cons) {
|
||||||
g_string_printf (nmc->return_text, _("Error: no active connection provided."));
|
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);
|
nm_assert (found_active_cons->len > 0);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (nmc->timeout > 0) {
|
if (nmc->timeout > 0) {
|
||||||
nmc->should_wait++;
|
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;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_add (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_add (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_unref_object NMConnection *connection = NULL;
|
gs_unref_object NMConnection *connection = NULL;
|
||||||
@@ -5506,7 +5510,6 @@ read_properties:
|
|||||||
|
|
||||||
finish:
|
finish:
|
||||||
reset_options ();
|
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)
|
do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
const GPtrArray *connections;
|
const GPtrArray *connections;
|
||||||
@@ -8390,7 +8393,8 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
|
|||||||
else {
|
else {
|
||||||
if (!nmc_parse_args (exp_args, TRUE, &argc, &argv, &error)) {
|
if (!nmc_parse_args (exp_args, TRUE, &argc, &argv, &error)) {
|
||||||
g_string_assign (nmc->return_text, error->message);
|
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 {
|
} else {
|
||||||
g_string_printf (nmc->return_text,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: only one of 'id', 'filename', uuid, or 'path' can be provided."));
|
_("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);
|
found_con = nmc_find_connection (connections, selector, con, NULL, nmc->complete);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (!found_con) {
|
if (!found_con) {
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), 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
|
/* 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 (nmc->complete) {
|
||||||
if (type && argc == 0)
|
if (type && argc == 0)
|
||||||
nmc_complete_connection_type (type);
|
nmc_complete_connection_type (type);
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
connection_type = check_valid_name_toplevel (type, &slave_type, &err1);
|
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);
|
nm_clear_g_free (&nmc_tab_completion.con_type);
|
||||||
nmc_tab_completion.connection = NULL;
|
nmc_tab_completion.connection = NULL;
|
||||||
|
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -8573,7 +8579,7 @@ modify_connection_cb (GObject *connection,
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
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);
|
connection = get_connection (nmc, &argc, &argv, NULL, NULL, NULL, &error);
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
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,
|
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) {
|
if (!rc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."),
|
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."),
|
||||||
nm_connection_get_uuid (connection));
|
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)) {
|
if (!nmc_process_connection_properties (nmc, NM_CONNECTION (rc), &argc, &argv, TRUE, &error)) {
|
||||||
g_string_assign (nmc->return_text, error->message);
|
g_string_assign (nmc->return_text, error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
update_connection (rc, temporary, modify_connection_cb, nmc);
|
update_connection (rc, temporary, modify_connection_cb, nmc);
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -8641,7 +8648,7 @@ clone_connection_cb (GObject *client,
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
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);
|
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error);
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (argv[0])
|
if (argv[0])
|
||||||
new_name = *argv;
|
new_name = *argv;
|
||||||
@@ -8693,12 +8701,14 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
|
|||||||
_("New connection name: "));
|
_("New connection name: "));
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: <new name> argument is missing."));
|
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) {
|
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);
|
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);
|
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,
|
clone_connection_cb,
|
||||||
_add_connection_info_new (nmc, connection, new_connection));
|
_add_connection_info_new (nmc, connection, new_connection));
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
do_connection_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection;
|
NMConnection *connection;
|
||||||
@@ -8843,7 +8851,6 @@ finish:
|
|||||||
invalid_cons->str);
|
invalid_cons->str);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
}
|
}
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -8888,7 +8895,7 @@ connection_removed (NMClient *client, NMRemoteConnection *con, NmCli *nmc)
|
|||||||
connection_unwatch (nmc, connection);
|
connection_unwatch (nmc, connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
@@ -8910,7 +8917,8 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
if (!nmc->complete)
|
if (!nmc->complete)
|
||||||
g_printerr (_("Error: %s.\n"), error->message);
|
g_printerr (_("Error: %s.\n"), error->message);
|
||||||
g_string_printf (nmc->return_text, _("Error: not all connections found."));
|
g_string_printf (nmc->return_text, _("Error: not all connections found."));
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
@@ -8921,7 +8929,7 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < connections->len; i++)
|
for (i = 0; i < connections->len; i++)
|
||||||
connection_watch (nmc, connections->pdata[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);
|
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)
|
do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_unref_variant GVariant *result = NULL;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
result = nmc_dbus_call_sync (nmc,
|
result = nmc_dbus_call_sync (nmc,
|
||||||
"/org/freedesktop/NetworkManager/Settings",
|
"/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_error_get_simple_message (error));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
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)
|
do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: No connection specified."));
|
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)
|
if (nmc->complete) {
|
||||||
return NMC_RESULT_COMPLETE_FILE;
|
nmc->return_value = NMC_RESULT_COMPLETE_FILE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
filenames = (const char **) nm_utils_strv_dup ((char **) argv, argc, FALSE);
|
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++)
|
for (i = 0; failures[i]; i++)
|
||||||
g_printerr (_("Could not load file '%s'\n"), failures[i]);
|
g_printerr (_("Could not load file '%s'\n"), failures[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PROMPT_IMPORT_FILE N_("File to import: ")
|
#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)
|
do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_free_error GError *error = NULL;
|
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);
|
filename = nm_strstrip (filename_ask);
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: No arguments provided."));
|
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++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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
|
if ( argc == 1
|
||||||
@@ -9069,7 +9076,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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)
|
if (argc == 1 && nmc->complete)
|
||||||
nmc->return_value = NMC_RESULT_COMPLETE_FILE;
|
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"));
|
g_printerr (_("Warning: 'file' already specified, ignoring extra one.\n"));
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (!type) {
|
if (!type) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'type' argument is required."));
|
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) {
|
if (!filename) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'file' argument is required."));
|
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"))
|
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);
|
service_type = nm_vpn_plugin_info_list_find_service_type (nm_vpn_get_plugin_infos (), type);
|
||||||
if (!service_type) {
|
if (!service_type) {
|
||||||
g_string_printf (nmc->return_text, _("Error: failed to find VPN plugin for %s."), 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 */
|
/* Import VPN configuration */
|
||||||
@@ -9111,7 +9123,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
|
|||||||
if (!plugin) {
|
if (!plugin) {
|
||||||
g_string_printf (nmc->return_text, _("Error: failed to load VPN plugin: %s."),
|
g_string_printf (nmc->return_text, _("Error: failed to load VPN plugin: %s."),
|
||||||
error->message);
|
error->message);
|
||||||
return NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
connection = nm_vpn_editor_plugin_import (plugin, filename, &error);
|
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) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: failed to import '%s': %s."),
|
g_string_printf (nmc->return_text, _("Error: failed to import '%s': %s."),
|
||||||
filename, error->message);
|
filename, error->message);
|
||||||
return NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_connection (nmc->client,
|
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_cb,
|
||||||
_add_connection_info_new (nmc, NULL, connection));
|
_add_connection_info_new (nmc, NULL, connection));
|
||||||
nmc->should_wait++;
|
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)
|
do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
NMConnection *connection = NULL;
|
||||||
@@ -9174,7 +9186,7 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
out_name = *argv;
|
out_name = *argv;
|
||||||
|
|
||||||
@@ -9244,7 +9256,6 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c
|
|||||||
finish:
|
finish:
|
||||||
if (!out_name && path)
|
if (!out_name && path)
|
||||||
unlink (path);
|
unlink (path);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@@ -9336,7 +9347,7 @@ nmcli_con_tab_completion (const char *text, int start, int end)
|
|||||||
return match_array;
|
return match_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
NMCResultCode
|
void
|
||||||
nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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;
|
rl_attempted_completion_function = nmcli_con_tab_completion;
|
||||||
|
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -1728,7 +1728,7 @@ nmc_device_state_to_color (NMDeviceState state)
|
|||||||
return NM_META_COLOR_DEVICE_UNKNOWN;
|
return NM_META_COLOR_DEVICE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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)
|
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)) {
|
&error)) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'device status': %s"), error->message);
|
g_string_printf (nmc->return_text, _("Error: 'device status': %s"), error->message);
|
||||||
g_error_free (error);
|
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)
|
do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_free_error GError *error = NULL;
|
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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
show_device_info (device, nmc);
|
show_device_info (device, nmc);
|
||||||
} else {
|
} else {
|
||||||
@@ -1812,8 +1814,6 @@ do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a
|
|||||||
|
|
||||||
g_free (devices);
|
g_free (devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
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);
|
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)
|
do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device = NULL;
|
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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*argv) {
|
if (*argv) {
|
||||||
g_string_printf (nmc->return_text, _("Error: extra argument not allowed: '%s'."), *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)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use nowait_flag instead of should_wait, because exiting has to be postponed
|
* 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 */
|
/* Start progress indication */
|
||||||
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
|
if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY)
|
||||||
progress_id = g_timeout_add (120, progress_cb, device);
|
progress_id = g_timeout_add (120, progress_cb, device);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
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)
|
do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device;
|
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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
nmc->nowait_flag = (nmc->timeout == 0);
|
nmc->nowait_flag = (nmc->timeout == 0);
|
||||||
nmc->should_wait++;
|
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 */
|
/* Now reapply the connection to the device */
|
||||||
nm_device_reapply_async (device, NULL, 0, 0, NULL, reapply_device_cb, info);
|
nm_device_reapply_async (device, NULL, 0, 0, NULL, reapply_device_cb, info);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
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);
|
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)
|
do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device = NULL;
|
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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->timeout == -1)
|
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);
|
info->argv = nm_utils_strv_dup ((char **) argv, argc, TRUE);
|
||||||
|
|
||||||
nm_device_get_applied_connection_async (device, 0, NULL, modify_get_applied_cb, info);
|
nm_device_get_applied_connection_async (device, 0, NULL, modify_get_applied_cb, info);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device;
|
NMDevice *device;
|
||||||
@@ -2404,7 +2403,7 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
queue = get_device_list (nmc, argc, argv);
|
queue = get_device_list (nmc, argc, argv);
|
||||||
if (!queue)
|
if (!queue)
|
||||||
return nmc->return_value;
|
return;
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
goto out;
|
goto out;
|
||||||
queue = g_slist_reverse (queue);
|
queue = g_slist_reverse (queue);
|
||||||
@@ -2435,7 +2434,6 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
g_slist_free (queue);
|
g_slist_free (queue);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
queue = get_device_list (nmc, argc, argv);
|
queue = get_device_list (nmc, argc, argv);
|
||||||
if (!queue)
|
if (!queue)
|
||||||
return nmc->return_value;
|
return;
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
goto out;
|
goto out;
|
||||||
queue = g_slist_reverse (queue);
|
queue = g_slist_reverse (queue);
|
||||||
@@ -2500,10 +2498,9 @@ do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
g_slist_free (queue);
|
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)
|
do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
#define DEV_SET_AUTOCONNECT 0
|
#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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: No property specified."));
|
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;
|
i = 0;
|
||||||
@@ -2546,14 +2545,16 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
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)
|
if (argc == 1 && nmc->complete)
|
||||||
nmc_complete_bool (*argv);
|
nmc_complete_bool (*argv);
|
||||||
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'managed': %s."),
|
g_string_printf (nmc->return_text, _("Error: 'managed': %s."),
|
||||||
error->message);
|
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].idx = ++i;
|
||||||
values[DEV_SET_MANAGED].value = flag;
|
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++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
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)
|
if (argc == 1 && nmc->complete)
|
||||||
nmc_complete_bool (*argv);
|
nmc_complete_bool (*argv);
|
||||||
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'autoconnect': %s."),
|
g_string_printf (nmc->return_text, _("Error: 'autoconnect': %s."),
|
||||||
error->message);
|
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].idx = ++i;
|
||||||
values[DEV_SET_AUTOCONNECT].value = flag;
|
values[DEV_SET_AUTOCONNECT].value = flag;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv);
|
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);
|
} while (next_arg (nmc, &argc, &argv, NULL) == 0);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* when multiple properties are specified, set them in the order as they
|
/* when multiple properties are specified, set them in the order as they
|
||||||
* are specified on the command line. */
|
* 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);
|
nm_device_set_autoconnect (device, values[DEV_SET_AUTOCONNECT].value);
|
||||||
if (values[DEV_SET_MANAGED].idx >= 0)
|
if (values[DEV_SET_MANAGED].idx >= 0)
|
||||||
nm_device_set_managed (device, values[DEV_SET_MANAGED].value);
|
nm_device_set_managed (device, values[DEV_SET_MANAGED].value);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2662,11 +2664,11 @@ device_removed (NMClient *client, NMDevice *device, NmCli *nmc)
|
|||||||
device_unwatch (nmc, device);
|
device_unwatch (nmc, device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
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);
|
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);
|
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)
|
do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
@@ -3061,7 +3062,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
ifname = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
if (argc == 1 && nmc->complete)
|
||||||
@@ -3073,7 +3075,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
bssid_user = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
if (argc == 1 && nmc->complete)
|
||||||
@@ -3084,7 +3087,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
rescan = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
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)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0)
|
if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0)
|
||||||
fields_str = NMC_FIELDS_DEV_WIFI_LIST_COMMON;
|
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) {
|
if (error) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'device wifi': %s"), error->message);
|
g_string_printf (nmc->return_text, _("Error: 'device wifi': %s"), error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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"))
|
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 ();
|
rescan_cutoff_msec = nm_utils_get_timestamp_msec ();
|
||||||
else {
|
else {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid rescan argument: '%s' not among [auto, no, yes]"), rescan);
|
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);
|
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."),
|
_("Error: Device '%s' is not a Wi-Fi device."),
|
||||||
ifname);
|
ifname);
|
||||||
}
|
}
|
||||||
return NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!devices[0]) {
|
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;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
|
g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
|
||||||
bssid_user);
|
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);
|
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);
|
scan_info->devices = g_steal_pointer (&devices);
|
||||||
|
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
do_device_wifi_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device = NULL;
|
NMDevice *device = NULL;
|
||||||
@@ -3710,8 +3717,6 @@ finish:
|
|||||||
g_byte_array_free (bssid2_arr, TRUE);
|
g_byte_array_free (bssid2_arr, TRUE);
|
||||||
g_free (ssid_ask);
|
g_free (ssid_ask);
|
||||||
nm_free_secret (passwd_ask);
|
nm_free_secret (passwd_ask);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GBytes *
|
static GBytes *
|
||||||
@@ -3940,7 +3945,7 @@ create_hotspot_conn (const GPtrArray *connections,
|
|||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
const char *ifname = NULL;
|
const char *ifname = NULL;
|
||||||
@@ -3978,7 +3983,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
ifname = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
if (argc == 1 && nmc->complete)
|
||||||
@@ -3988,7 +3994,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
con_name = *argv;
|
||||||
} else if (strcmp (*argv, "ssid") == 0) {
|
} else if (strcmp (*argv, "ssid") == 0) {
|
||||||
@@ -3996,11 +4003,13 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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) {
|
if (strlen (*argv) > 32) {
|
||||||
g_string_printf (nmc->return_text, _("Error: ssid is too long."));
|
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));
|
ssid_bytes = g_bytes_new (*argv, strlen (*argv));
|
||||||
} else if (strcmp (*argv, "band") == 0) {
|
} else if (strcmp (*argv, "band") == 0) {
|
||||||
@@ -4008,7 +4017,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
band = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
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")) {
|
if (strcmp (band, "a") && strcmp (band, "bg")) {
|
||||||
g_string_printf (nmc->return_text, _("Error: band argument value '%s' is invalid; use 'a' or 'bg'."),
|
g_string_printf (nmc->return_text, _("Error: band argument value '%s' is invalid; use 'a' or 'bg'."),
|
||||||
band);
|
band);
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else if (strcmp (*argv, "channel") == 0) {
|
} else if (strcmp (*argv, "channel") == 0) {
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
channel = *argv;
|
||||||
} else if (strcmp (*argv, "password") == 0) {
|
} else if (strcmp (*argv, "password") == 0) {
|
||||||
@@ -4031,7 +4043,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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;
|
password = *argv;
|
||||||
/* --show-password is deprecated in favour of global --show-secrets option */
|
/* --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;
|
show_password = TRUE;
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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);
|
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;
|
show_password = nmc->nmc_config.show_secrets || show_password;
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* Verify band and channel parameters */
|
/* Verify band and channel parameters */
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
@@ -4062,13 +4076,15 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
|
|
||||||
if (!band) {
|
if (!band) {
|
||||||
g_string_printf (nmc->return_text, _("Error: channel requires band too."));
|
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)
|
if ( !nmc_string_to_uint (channel, TRUE, 1, 5825, &value)
|
||||||
|| !nm_utils_wifi_is_channel_valid (value, band)) {
|
|| !nm_utils_wifi_is_channel_valid (value, band)) {
|
||||||
g_string_printf (nmc->return_text, _("Error: channel '%s' not valid for band '%s'."),
|
g_string_printf (nmc->return_text, _("Error: channel '%s' not valid for band '%s'."),
|
||||||
channel, band);
|
channel, band);
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
channel_int = value;
|
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);
|
g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), ifname);
|
||||||
else
|
else
|
||||||
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check device supported mode */
|
/* Check device supported mode */
|
||||||
@@ -4093,7 +4110,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char
|
|||||||
else {
|
else {
|
||||||
g_string_printf (nmc->return_text, _("Error: Device '%s' supports neither AP nor Ad-Hoc mode."),
|
g_string_printf (nmc->return_text, _("Error: Device '%s' supports neither AP nor Ad-Hoc mode."),
|
||||||
nm_device_get_iface (device));
|
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);
|
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)) {
|
if (password || !NM_IS_REMOTE_CONNECTION (connection)) {
|
||||||
s_wsec = nm_connection_get_setting_wireless_security (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)) {
|
if (!set_wireless_security_for_hotspot (s_wsec, wifi_mode, caps, password, show_password, &error)) {
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
g_string_printf (nmc->return_text, _("Error: Invalid 'password': %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: Invalid 'password': %s."), error->message);
|
||||||
g_clear_error (&error);
|
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++;
|
nmc->should_wait++;
|
||||||
|
|
||||||
save_and_activate_connection (nmc, device, connection, TRUE, NULL);
|
save_and_activate_connection (nmc, device, connection, TRUE, NULL);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -4143,7 +4160,7 @@ request_rescan_cb (GObject *object, GAsyncResult *result, gpointer user_data)
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device;
|
NMDevice *device;
|
||||||
@@ -4167,14 +4184,14 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
if (ifname) {
|
if (ifname) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
return;
|
||||||
}
|
}
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
return;
|
||||||
}
|
}
|
||||||
ifname = *argv;
|
ifname = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
if (argc == 1 && nmc->complete)
|
||||||
@@ -4185,20 +4202,20 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *
|
|||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
return;
|
||||||
}
|
}
|
||||||
g_ptr_array_add (ssids, (gpointer) *argv);
|
g_ptr_array_add (ssids, (gpointer) *argv);
|
||||||
} else if (!nmc->complete) {
|
} else if (!nmc->complete) {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
goto finish;
|
return;
|
||||||
|
|
||||||
/* Find Wi-Fi device to scan on. When no ifname is provided, the first Wi-Fi is used. */
|
/* 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);
|
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
|
else
|
||||||
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
|
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
goto finish;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ssids->len) {
|
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);
|
NULL, request_rescan_cb, nmc);
|
||||||
|
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
finish:
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -4373,7 +4388,7 @@ wifi_show_device (const NmcConfig *nmc_config, NMDevice *device, GError **error)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
const char *ifname = NULL;
|
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,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: '%s' cannot repeat."),
|
_("Error: '%s' cannot repeat."),
|
||||||
*(argv-1));
|
*(argv-1));
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
@@ -4402,7 +4418,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
|
|||||||
g_string_printf (nmc->return_text,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: %s argument is missing."),
|
_("Error: %s argument is missing."),
|
||||||
*(argv-1));
|
*(argv-1));
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
ifname = *argv;
|
ifname = *argv;
|
||||||
if (argc == 1 && nmc->complete)
|
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,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: invalid extra argument '%s'."),
|
_("Error: invalid extra argument '%s'."),
|
||||||
*argv);
|
*argv);
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
for (i = 0; devices[i]; i++) {
|
for (i = 0; devices[i]; i++) {
|
||||||
if (ifname && g_strcmp0 (nm_device_get_iface (devices[i]), ifname) != 0)
|
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) {
|
if (ifname) {
|
||||||
g_string_printf (nmc->return_text,
|
g_string_printf (nmc->return_text,
|
||||||
_("%s"), error->message);
|
_("%s"), error->message);
|
||||||
return NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
@@ -4442,10 +4461,9 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const
|
|||||||
if (!found) {
|
if (!found) {
|
||||||
g_string_printf (nmc->return_text,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: No Wi-Fi device found."));
|
_("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[] = {
|
static NMCCommand device_wifi_cmds[] = {
|
||||||
@@ -4457,13 +4475,11 @@ static NMCCommand device_wifi_cmds[] = {
|
|||||||
{ NULL, do_device_wifi_list, NULL, TRUE, TRUE },
|
{ 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)
|
do_device_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
nmc_do_cmd (nmc, device_wifi_cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, device_wifi_cmds, *argv, argc, argv);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -4551,7 +4567,7 @@ show_device_lldp_list (NMDevice *device, NmCli *nmc, const char *fields_str, int
|
|||||||
return neighbors->len;
|
return neighbors->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice *device = NULL;
|
NMDevice *device = NULL;
|
||||||
@@ -4570,17 +4586,20 @@ do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
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);
|
device = get_device (nmc, &argc, &argv, &error);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
return error->code;
|
nmc->return_value = error->code;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv);
|
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);
|
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) {
|
if (error) {
|
||||||
g_string_printf (nmc->return_text, _("Error: 'device lldp list': %s"), error->message);
|
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)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (device) {
|
if (device) {
|
||||||
show_device_lldp_list (device, nmc, fields_str, &counter);
|
show_device_lldp_list (device, nmc, fields_str, &counter);
|
||||||
} else {
|
} else {
|
||||||
NMDevice **devices = nmc_get_devices_sorted (nmc->client);
|
gs_free NMDevice **devices = nmc_get_devices_sorted (nmc->client);
|
||||||
int i;
|
guint i;
|
||||||
|
|
||||||
for (i = 0; devices[i]; i++)
|
for (i = 0; devices[i]; i++)
|
||||||
show_device_lldp_list (devices[i], nmc, fields_str, &counter);
|
show_device_lldp_list (devices[i], nmc, fields_str, &counter);
|
||||||
|
|
||||||
g_free (devices);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCCommand device_lldp_cmds[] = {
|
static NMCCommand device_lldp_cmds[] = {
|
||||||
@@ -4622,7 +4638,7 @@ static NMCCommand device_lldp_cmds[] = {
|
|||||||
{ NULL, do_device_lldp_list, NULL, TRUE, TRUE },
|
{ 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)
|
do_device_lldp (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
if (!nmc->mode_specified)
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
nmc_do_cmd (nmc, device_lldp_cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, device_lldp_cmds, *argv, argc, argv);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -4676,7 +4690,7 @@ nmcli_device_tab_completion (const char *text, int start, int end)
|
|||||||
return match_array;
|
return match_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
NMCResultCode
|
void
|
||||||
nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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;
|
rl_attempted_completion_function = (rl_completion_func_t *) nmcli_device_tab_completion;
|
||||||
|
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -489,15 +489,14 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_general_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_general_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
show_nm_status (nmc, NULL, NULL);
|
show_nm_status (nmc, NULL, NULL);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -608,7 +607,7 @@ show_nm_permissions (NmCli *nmc)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gs_unref_variant GVariant *result = NULL;
|
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 (nmc->complete) {
|
||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
values = nm_utils_enum_get_values (nm_manager_reload_flags_get_type (),
|
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);
|
NM_MANAGER_RELOAD_FLAG_ALL);
|
||||||
nmc_complete_strv (*argv, -1, values);
|
nmc_complete_strv (*argv, -1, values);
|
||||||
}
|
}
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 0) {
|
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"),
|
_("Error: invalid reload flag '%s'. Allowed flags are: %s"),
|
||||||
err_token,
|
err_token,
|
||||||
joined);
|
joined);
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
@@ -651,7 +651,8 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
|
|||||||
|
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: extra argument '%s'"), *argv);
|
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,
|
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,
|
g_string_printf (nmc->return_text,
|
||||||
_("Error: failed to reload: %s"),
|
_("Error: failed to reload: %s"),
|
||||||
nmc_error_get_simple_message (error));
|
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)
|
do_general_permissions (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
show_nm_permissions (nmc);
|
show_nm_permissions (nmc);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -746,13 +744,13 @@ _set_logging_cb (GObject *object, GAsyncResult *result, gpointer user_data)
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
show_general_logging (nmc);
|
show_general_logging (nmc);
|
||||||
} else {
|
} else {
|
||||||
@@ -769,7 +767,8 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
|
|||||||
argv++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
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) {
|
if (argc == 1 && nmc->complete) {
|
||||||
nmc_complete_strings_nocase (*argv, "TRACE", "DEBUG", "INFO", "WARN",
|
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++;
|
argv++;
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
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) {
|
if (argc == 1 && nmc->complete) {
|
||||||
nmc_complete_strings_nocase (*argv, "PLATFORM", "RFKILL", "ETHER", "WIFI", "BT",
|
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;
|
domains = *argv;
|
||||||
} else {
|
} else {
|
||||||
g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv);
|
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);
|
} while (next_arg (nmc, &argc, &argv, NULL) == 0);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
nm_client_dbus_call (nmc->client,
|
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,
|
_set_logging_cb,
|
||||||
nmc);
|
nmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_hostname_cb (GObject *object, GAsyncResult *result, gpointer user_data)
|
save_hostname_cb (GObject *object, GAsyncResult *result, gpointer user_data)
|
||||||
{
|
{
|
||||||
NmCli *nmc = (NmCli *) user_data;
|
NmCli *nmc = user_data;
|
||||||
GError *error = NULL;
|
gs_free_error GError *error = NULL;
|
||||||
|
|
||||||
nm_client_save_hostname_finish (NM_CLIENT (object), result, &error);
|
nm_client_save_hostname_finish (NM_CLIENT (object), result, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
g_string_printf (nmc->return_text, _("Error: failed to set hostname: %s"),
|
g_string_printf (nmc->return_text, _("Error: failed to set hostname: %s"),
|
||||||
error->message);
|
error->message);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||||
g_error_free (error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_general_hostname (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_general_hostname (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
|
const char *hostname;
|
||||||
|
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
/* no arguments -> get hostname */
|
/* no arguments -> get hostname */
|
||||||
char *hostname = NULL;
|
gs_free char *s = NULL;
|
||||||
|
|
||||||
g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &hostname, NULL);
|
g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &s, NULL);
|
||||||
if (hostname)
|
if (s)
|
||||||
g_print ("%s\n", hostname);
|
g_print ("%s\n", s);
|
||||||
g_free (hostname);
|
return;
|
||||||
} else {
|
|
||||||
/* hostname provided -> set it */
|
|
||||||
const char *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;
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
NMCResultCode
|
void
|
||||||
nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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_start_polkit_agent_start_try (nmc);
|
||||||
|
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -949,7 +944,7 @@ _do_networking_on_off_cb (GObject *object, GAsyncResult *result, gpointer user_d
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gboolean enable = nm_streq (cmd->cmd, "on");
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
nmc_start_polkit_agent_start_try (nmc);
|
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,
|
NULL,
|
||||||
_do_networking_on_off_cb,
|
_do_networking_on_off_cb,
|
||||||
nmc);
|
nmc);
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete) {
|
if (nmc->complete) {
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
nmc_complete_strings (*argv, "check");
|
nmc_complete_strings (*argv, "check");
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!argc) {
|
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);
|
g_string_printf (nmc->return_text, _("Error: 'networking' command '%s' is not valid."), *argv);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
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)
|
do_networking_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
nmc_switch_show (nmc, NMC_FIELDS_NM_NETWORKING, N_("Networking"));
|
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)
|
nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
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)
|
do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gboolean enable_flag;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* no argument, show all radio switches */
|
/* no argument, show all radio switches */
|
||||||
show_nm_status (nmc, N_("Radio switches"), NMC_FIELDS_NM_STATUS_RADIO);
|
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 (nmc->complete) {
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
nmc_complete_bool (*argv);
|
nmc_complete_bool (*argv);
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
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_wireless_set_enabled (nmc->client, enable_flag);
|
||||||
nm_client_wimax_set_enabled (nmc->client, enable_flag);
|
nm_client_wimax_set_enabled (nmc->client, enable_flag);
|
||||||
nm_client_wwan_set_enabled (nmc->client, enable_flag);
|
nm_client_wwan_set_enabled (nmc->client, enable_flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1082,7 +1068,7 @@ _do_radio_wifi_cb (GObject *object, GAsyncResult *result, gpointer user_data)
|
|||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gboolean enable_flag;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* no argument, show current Wi-Fi state */
|
/* no argument, show current Wi-Fi state */
|
||||||
nmc_switch_show (nmc, NMC_FIELDS_NM_WIFI, N_("Wi-Fi radio switch"));
|
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 (nmc->complete) {
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
nmc_complete_bool (*argv);
|
nmc_complete_bool (*argv);
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
nmc_start_polkit_agent_start_try (nmc);
|
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,
|
_do_radio_wifi_cb,
|
||||||
nmc);
|
nmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static void
|
||||||
do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
gboolean enable_flag;
|
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);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
/* no argument, show current WWAN (mobile broadband) state */
|
/* no argument, show current WWAN (mobile broadband) state */
|
||||||
nmc_switch_show (nmc, NMC_FIELDS_NM_WWAN, N_("WWAN radio switch"));
|
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 (nmc->complete) {
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
nmc_complete_bool (*argv);
|
nmc_complete_bool (*argv);
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
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);
|
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)
|
nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
static const NMCCommand cmds[] = {
|
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_start_polkit_agent_start_try (nmc);
|
||||||
|
|
||||||
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
nmc_do_cmd (nmc, cmds, *argv, argc, argv);
|
||||||
return nmc->return_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1402,7 +1383,7 @@ ac_overview (NmCli *nmc, NMActiveConnection *ac)
|
|||||||
g_string_free (outbuf, TRUE);
|
g_string_free (outbuf, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
NMCResultCode
|
void
|
||||||
nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
NMDevice **devices;
|
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"
|
"\"nmcli connection show\" to get an overview on active connection profiles.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.\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)
|
nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv)
|
||||||
{
|
{
|
||||||
next_arg (nmc, &argc, &argv, NULL);
|
next_arg (nmc, &argc, &argv, NULL);
|
||||||
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return;
|
||||||
|
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
if (!nmc_arg_is_help (*argv)) {
|
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 ();
|
usage_monitor ();
|
||||||
return nmc->return_value;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!nm_client_get_nm_running (nmc->client)) {
|
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_devices (nmc);
|
||||||
monitor_connections (nmc);
|
monitor_connections (nmc);
|
||||||
|
|
||||||
return NMC_RESULT_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
@@ -170,20 +170,20 @@ struct _NMCCommand;
|
|||||||
|
|
||||||
typedef struct _NMCCommand {
|
typedef struct _NMCCommand {
|
||||||
const char *cmd;
|
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);
|
void (*usage) (void);
|
||||||
bool needs_client;
|
bool needs_client;
|
||||||
bool needs_nm_running;
|
bool needs_nm_running;
|
||||||
} NMCCommand;
|
} NMCCommand;
|
||||||
|
|
||||||
NMCResultCode nmc_command_func_agent (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);
|
||||||
NMCResultCode nmc_command_func_general (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);
|
||||||
NMCResultCode nmc_command_func_networking (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);
|
||||||
NMCResultCode nmc_command_func_radio (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);
|
||||||
NMCResultCode nmc_command_func_monitor (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);
|
||||||
NMCResultCode nmc_command_func_overview (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);
|
||||||
NMCResultCode nmc_command_func_connection (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);
|
||||||
NMCResultCode nmc_command_func_device (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);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user