summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-03-14 08:49:55 +0100
committerThomas Haller <thaller@redhat.com>2020-03-23 09:38:23 +0100
commit42edeb62a336a5165770f3d4b301cf1e8fbe636f (patch)
tree9622d53da36316cbc525ddbcdfc449e11f3cfd9c
parentc6c15c2c2500961f0561785cad1c5dbf5970a198 (diff)
downloadNetworkManager-42edeb62a336a5165770f3d4b301cf1e8fbe636f.tar.gz
cli: use async method D-Bus for `nmcli radio wifi on|off`
Showcase nm_client_dbus_set_property(). Thereby, also print error messages and return an error if the command fails. Also, enable PolicyKit authentication (although, I think there are some bugs with this still).
-rw-r--r--clients/cli/general.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/clients/cli/general.c b/clients/cli/general.c
index bd6bc5d671..2cc86aaaf2 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -1088,6 +1088,21 @@ do_radio_all (NmCli *nmc, int argc, char **argv)
return nmc->return_value;
}
+static void
+_do_radio_wifi_cb (GObject *object, GAsyncResult *result, gpointer user_data)
+{
+ NmCli *nmc = user_data;
+ gs_free_error GError *error = NULL;
+
+ if (!nm_client_dbus_set_property_finish (NM_CLIENT (object), result, &error)) {
+ g_dbus_error_strip_remote_error (error);
+ g_string_printf (nmc->return_text, _("Error: failed to set Wi-Fi radio: %s"),
+ nmc_error_get_simple_message (error));
+ nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+ }
+ quit ();
+}
+
static NMCResultCode
do_radio_wifi (NmCli *nmc, int argc, char **argv)
{
@@ -1109,7 +1124,18 @@ do_radio_wifi (NmCli *nmc, int argc, char **argv)
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
return nmc->return_value;
- nm_client_wireless_set_enabled (nmc->client, enable_flag);
+ nmc_start_polkit_agent_start_try (nmc);
+
+ nmc->should_wait++;
+ nm_client_dbus_set_property (nmc->client,
+ NM_DBUS_PATH,
+ NM_DBUS_INTERFACE,
+ "WirelessEnabled",
+ g_variant_new_boolean (enable_flag),
+ -1,
+ NULL,
+ _do_radio_wifi_cb,
+ nmc);
}
return nmc->return_value;