summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2018-06-13 15:34:04 +0200
committerLubomir Rintel <lkundrak@v3.sk>2018-06-13 15:34:04 +0200
commit4bb1130ce684fa6dd9dfbbe8b05ea7de02491d08 (patch)
tree8a8f3338e0f1bae843cd0658abeab63eb3789f88
parentc2932dd7dbb8997b7c46b49506efbd16cd3f56ca (diff)
parent34412a8d3d0710ef18478030e4918c8dce1539fb (diff)
downloadNetworkManager-4bb1130ce684fa6dd9dfbbe8b05ea7de02491d08.tar.gz
merge: branch 'lr/cli-wifi-list-rescan'
https://github.com/NetworkManager/NetworkManager/pull/128
-rw-r--r--clients/cli/devices.c432
-rw-r--r--clients/cli/utils.c16
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-045.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-046.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-047.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-048.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-051.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-052.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-053.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-054.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-057.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-058.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-059.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-060.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-063.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-064.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-065.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-066.expected13
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-069.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-070.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-071.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-072.expected21
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-075.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-076.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-077.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-078.expected10
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-081.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-082.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-083.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-084.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-087.expected32
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-088.expected32
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-089.expected32
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-090.expected32
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-093.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-094.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-095.expected26
-rw-r--r--clients/tests/test-client.check-on-disk/test_004-096.expected26
-rwxr-xr-xclients/tests/test-client.py4
-rw-r--r--introspection/org.freedesktop.NetworkManager.Device.Wireless.xml10
-rw-r--r--libnm/libnm.ver1
-rw-r--r--libnm/nm-device-wifi.c42
-rw-r--r--libnm/nm-device-wifi.h4
-rw-r--r--man/nmcli.xml10
-rw-r--r--src/devices/wifi/nm-device-iwd.c15
-rw-r--r--src/devices/wifi/nm-device-iwd.h1
-rw-r--r--src/devices/wifi/nm-device-wifi.c13
-rw-r--r--src/devices/wifi/nm-device-wifi.h1
-rw-r--r--src/devices/wifi/nm-wifi-common.c1
-rwxr-xr-xtools/test-networkmanager-service.py2
50 files changed, 792 insertions, 448 deletions
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index 81f11415d4..0cd5f603e8 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -2488,41 +2488,6 @@ do_devices_monitor (NmCli *nmc, int argc, char **argv)
return nmc->return_value;
}
-static void
-show_access_point_info (NMDevice *device, NmCli *nmc, NmcOutputData *out)
-{
- NMAccessPoint *active_ap = NULL;
- const char *active_bssid = NULL;
- GPtrArray *aps;
- NmcOutputField *arr;
-
- if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) {
- active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device));
- active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL;
- }
-
- arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_dev_wifi_list,
- NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
- g_ptr_array_add (out->output_data, arr);
-
- {
- APInfo info = {
- .nmc = nmc,
- .index = 1,
- .output_flags = 0,
- .active_bssid = active_bssid,
- .device = nm_device_get_iface (device),
- .output_data = out->output_data,
- };
-
- aps = sort_access_points (nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device)));
- g_ptr_array_foreach (aps, fill_output_access_point, &info);
- g_ptr_array_free (aps, FALSE);
- }
-
- print_data_prepare_width (out->output_data);
-}
-
/*
* Find a Wi-Fi device with 'iface' in 'devices' array. If 'iface' is NULL,
* the first Wi-Fi device is returned. 'idx' parameter is updated to the point
@@ -2616,6 +2581,217 @@ find_ap_on_device (NMDevice *device, const char *bssid, const char *ssid, gboole
}
static void
+show_access_point_info (NMDeviceWifi *wifi, NmCli *nmc, NmcOutputData *out)
+{
+ NMAccessPoint *active_ap = NULL;
+ const char *active_bssid = NULL;
+ GPtrArray *aps;
+ NmcOutputField *arr;
+
+ if (nm_device_get_state (NM_DEVICE (wifi)) == NM_DEVICE_STATE_ACTIVATED) {
+ active_ap = nm_device_wifi_get_active_access_point (wifi);
+ active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL;
+ }
+
+ arr = nmc_dup_fields_array ((const NMMetaAbstractInfo *const*) nmc_fields_dev_wifi_list,
+ NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
+ g_ptr_array_add (out->output_data, arr);
+
+ {
+ APInfo info = {
+ .nmc = nmc,
+ .index = 1,
+ .output_flags = 0,
+ .active_bssid = active_bssid,
+ .device = nm_device_get_iface (NM_DEVICE (wifi)),
+ .output_data = out->output_data,
+ };
+
+ aps = sort_access_points (nm_device_wifi_get_access_points (wifi));
+ g_ptr_array_foreach (aps, fill_output_access_point, &info);
+ g_ptr_array_free (aps, FALSE);
+ }
+
+ print_data_prepare_width (out->output_data);
+}
+
+static void
+wifi_print_aps (NMDeviceWifi *wifi,
+ NmCli *nmc,
+ GArray *_out_indices,
+ const NMMetaAbstractInfo *const*tmpl,
+ const char *bssid_user)
+{
+ NMAccessPoint *ap = NULL;
+ const GPtrArray *aps;
+ APInfo *info;
+ guint i;
+ NmcOutputField *arr;
+ const char *base_hdr = _("Wi-Fi scan list");
+ NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
+ gs_free char *header_name = NULL;
+ static gboolean empty_line = FALSE;
+
+ if (empty_line)
+ g_print ("\n"); /* Empty line between devices' APs */
+
+ /* Main header name */
+ header_name = construct_header_name (base_hdr, nm_device_get_iface (NM_DEVICE (wifi)));
+
+ out_indices = g_array_ref (_out_indices);
+
+ if (bssid_user) {
+ /* Specific AP requested - list only that */
+ aps = nm_device_wifi_get_access_points (wifi);
+ for (i = 0; i < aps->len; i++) {
+ char *bssid_up;
+ NMAccessPoint *candidate_ap = g_ptr_array_index (aps, i);
+ const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
+
+ bssid_up = g_ascii_strup (bssid_user, -1);
+ if (!strcmp (bssid_up, candidate_bssid))
+ ap = candidate_ap;
+ g_free (bssid_up);
+ }
+ if (ap) {
+ /* Add headers (field names) */
+ arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
+ g_ptr_array_add (out.output_data, arr);
+
+ info = g_malloc0 (sizeof (APInfo));
+ info->nmc = nmc;
+ info->index = 1;
+ info->output_flags = 0;
+ info->active_bssid = NULL;
+ info->device = nm_device_get_iface (NM_DEVICE (wifi));
+ info->output_data = out.output_data;
+
+ fill_output_access_point (ap, info);
+
+ print_data_prepare_width (out.output_data);
+ print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
+ g_free (info);
+
+ nmc->return_value = NMC_RESULT_SUCCESS;
+ empty_line = TRUE;
+ }
+ } else {
+ show_access_point_info (wifi, nmc, &out);
+ print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
+ empty_line = TRUE;
+ }
+}
+
+typedef struct {
+ NmCli *nmc;
+ NMDeviceWifi *wifi;
+ const NMMetaAbstractInfo *const*tmpl;
+
+ const char *bssid_user;
+ gulong last_scan_id;
+ guint timeout_id;
+ GCancellable *scan_cancellable;
+ GArray *out_indices;
+} WifiListData;
+
+static void
+wifi_list_finish (WifiListData *data)
+{
+ NmCli *nmc = data->nmc;
+
+ wifi_print_aps (data->wifi, data->nmc, data->out_indices,
+ data->tmpl, data->bssid_user);
+
+ if (--nmc->should_wait == 0) {
+ if (nmc->return_value == NMC_RESULT_ERROR_NOT_FOUND) {
+ g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
+ data->bssid_user);
+ }
+ g_main_loop_quit (loop);
+ }
+
+ g_signal_handler_disconnect (data->wifi, data->last_scan_id);
+ nm_clear_g_source (&data->timeout_id);
+ nm_clear_g_cancellable (&data->scan_cancellable);
+ g_array_unref (data->out_indices);
+ g_object_unref (data->wifi);
+ g_slice_free (WifiListData, data);
+}
+
+static void
+wifi_last_scan_updated (GObject *gobject, GParamSpec *pspec, gpointer user_data)
+{
+ WifiListData *data = user_data;
+
+ wifi_list_finish (data);
+}
+
+static void
+wifi_list_rescan_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ NMDeviceWifi *wifi = NM_DEVICE_WIFI (source_object);
+ WifiListData *data = user_data;
+ gs_free_error GError *error = NULL;
+
+ if (!nm_device_wifi_request_scan_finish (wifi, res, &error)) {
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+
+ if (g_error_matches (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_NOT_ALLOWED)) {
+ /* This likely means that scanning is already in progress. There's
+ * a good chance we'll get updated results soon; wait for them. */
+ return;
+ }
+
+ /* Scanning could not be initiated for unknown reason,
+ * no point in waiting for results. */
+ wifi_list_finish (data);
+ }
+}
+
+static gboolean
+wifi_list_scan_timeout (gpointer user_data)
+{
+ WifiListData *data = user_data;
+
+ wifi_list_finish (data);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+wifi_list_aps (NMDeviceWifi *wifi,
+ NmCli *nmc,
+ GArray *out_indices,
+ const NMMetaAbstractInfo *const*tmpl,
+ const char *bssid_user,
+ int rescan_cutoff)
+{
+ gboolean needs_rescan;
+ WifiListData *data;
+
+ needs_rescan = rescan_cutoff < 0 || (rescan_cutoff > 0 && nm_device_wifi_get_last_scan (wifi) < rescan_cutoff);
+
+ if (needs_rescan) {
+ data = g_slice_new0 (WifiListData);
+ data->nmc = nmc;
+ data->wifi = g_object_ref (wifi);
+ data->tmpl = tmpl;
+ data->out_indices = g_array_ref (out_indices);;
+ data->bssid_user = bssid_user;
+ data->last_scan_id = g_signal_connect (wifi, "notify::" NM_DEVICE_WIFI_LAST_SCAN,
+ G_CALLBACK (wifi_last_scan_updated), data);
+ data->scan_cancellable = g_cancellable_new ();
+ data->timeout_id = g_timeout_add_seconds (15, wifi_list_scan_timeout, data);
+ nm_device_wifi_request_scan_async (wifi, data->scan_cancellable, wifi_list_rescan_cb, data);
+
+ nmc->should_wait++;
+ } else {
+ wifi_print_aps (wifi, nmc, out_indices, tmpl, bssid_user);
+ }
+}
+
+static void
complete_aps (NMDevice **devices, const char *ifname,
const char *bssid_prefix, const char *ssid_prefix)
{
@@ -2640,28 +2816,22 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
{
GError *error = NULL;
NMDevice *device = NULL;
- NMAccessPoint *ap = NULL;
const char *ifname = NULL;
const char *bssid_user = NULL;
+ const char *rescan = NULL;
gs_free NMDevice **devices = NULL;
- const GPtrArray *aps;
- APInfo *info;
- int i, j;
+ guint i;
const char *fields_str = NULL;
const NMMetaAbstractInfo *const*tmpl;
- NmcOutputField *arr;
- const char *base_hdr = _("Wi-Fi scan list");
- NMC_OUTPUT_DATA_DEFINE_SCOPED (out);
- gs_free char *header_name = NULL;
+ gs_unref_array GArray *out_indices = NULL;
+ int option;
+ int rescan_cutoff;
devices = nmc_get_devices_sorted (nmc->client);
- next_arg (nmc, &argc, &argv, NULL);
- while (argc > 0) {
- if (argc == 1 && nmc->complete)
- nmc_complete_strings (*argv, "ifname", "bssid", NULL);
-
- if (strcmp (*argv, "ifname") == 0) {
+ while ((option = next_arg (nmc, &argc, &argv, "ifname", "hwaddr", "bssid", "--rescan", NULL)) > 0) {
+ switch (option) {
+ case 1: /* ifname */
argc--;
argv++;
if (!argc) {
@@ -2671,8 +2841,9 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
ifname = *argv;
if (argc == 1 && nmc->complete)
complete_device (devices, ifname, TRUE);
- } else if (strcmp (*argv, "bssid") == 0 || strcmp (*argv, "hwaddr") == 0) {
- /* hwaddr is deprecated and will be removed later */
+ break;
+ case 2: /* hwaddr is deprecated and will be removed later */
+ case 3: /* bssid */
argc--;
argv++;
if (!argc) {
@@ -2682,11 +2853,24 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
bssid_user = *argv;
if (argc == 1 && nmc->complete)
complete_aps (devices, NULL, bssid_user, NULL);
- } else if (!nmc->complete) {
- g_printerr (_("Unknown parameter: %s\n"), *argv);
+ /* We'll switch this to NMC_RESULT_SUCCESS if we find an access point. */
+ nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
+ break;
+ case 4: /* --rescan */
+ argc--;
+ argv++;
+ if (!argc) {
+ g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
+ return NMC_RESULT_ERROR_USER_INPUT;
+ }
+ rescan = *argv;
+ if (argc == 1 && nmc->complete)
+ nmc_complete_strings (rescan, "auto", "no", "yes", NULL);
+ break;
+ default:
+ g_assert_not_reached();
+ break;
}
-
- next_arg (nmc, &argc, &argv, NULL);
}
if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0)
@@ -2707,55 +2891,36 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
if (nmc->complete)
return nmc->return_value;
- if (ifname) {
+ if (argc)
+ g_printerr (_("Unknown parameter: %s\n"), *argv);
+
+ if (rescan == NULL || strcmp (rescan, "auto") == 0) {
+ struct timespec tp;
+ if (clock_gettime (CLOCK_BOOTTIME, &tp) == -1) {
+ g_printerr (_("Failed to get CLOCK_BOOTTIME: %s\n"), strerror (errno));
+ rescan_cutoff = 0;
+ } else {
+ rescan_cutoff = MAX (tp.tv_sec - 30, 0);
+ }
+ } else if (strcmp (rescan, "no") == 0) {
+ rescan_cutoff = 0;
+ } else if (strcmp (rescan, "yes") == 0) {
+ rescan_cutoff = -1;
+ } else {
+ g_string_printf (nmc->return_text, _("Error: invalid rescan argument: '%s' not among [auto, no, yes]"), rescan);
+ return NMC_RESULT_ERROR_USER_INPUT;
+ }
+
+ if (ifname) {
device = find_wifi_device_by_iface (devices, ifname, NULL);
if (!device) {
g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), ifname);
return NMC_RESULT_ERROR_NOT_FOUND;
}
- /* Main header name */
- header_name = construct_header_name (base_hdr, ifname);
if (NM_IS_DEVICE_WIFI (device)) {
- if (bssid_user) {
- /* Specific AP requested - list only that */
- aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device));
- for (j = 0; j < aps->len; j++) {
- char *bssid_up;
- NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j);
- const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
-
- bssid_up = g_ascii_strup (bssid_user, -1);
- if (!strcmp (bssid_up, candidate_bssid))
- ap = candidate_ap;
- g_free (bssid_up);
- }
- if (!ap) {
- g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
- bssid_user);
- return NMC_RESULT_ERROR_NOT_FOUND;
- }
- /* Add headers (field names) */
- arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
- g_ptr_array_add (out.output_data, arr);
-
- info = g_malloc0 (sizeof (APInfo));
- info->nmc = nmc;
- info->index = 1;
- info->output_flags = 0;
- info->active_bssid = NULL;
- info->device = nm_device_get_iface (device);
-
- fill_output_access_point (ap, info);
-
- print_data_prepare_width (out.output_data);
- print_data (&nmc->nmc_config, out_indices, header_name, 0, &out);
- g_free (info);
- } else {
- show_access_point_info (device, nmc, &out);
- print_data (&nmc->nmc_config, out_indices, NULL, 0, &out);
- }
+ wifi_list_aps (NM_DEVICE_WIFI (device), nmc, out_indices, tmpl, bssid_user, rescan_cutoff);
} else {
if ( nm_device_get_device_type (device) == NM_DEVICE_TYPE_GENERIC
&& g_strcmp0 (nm_device_get_type_description (device), "wifi") == 0) {
@@ -2770,76 +2935,11 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
return NMC_RESULT_ERROR_UNKNOWN;
}
} else {
- gboolean empty_line = FALSE;
-
- /* List APs for all devices */
- if (bssid_user) {
- /* Specific AP requested - list only that */
- for (i = 0; devices[i]; i++) {
- NMDevice *dev = devices[i];
- NMC_OUTPUT_DATA_DEFINE_SCOPED (out2);
- gs_free char *header_name2 = NULL;
-
- if (!NM_IS_DEVICE_WIFI (dev))
- continue;
-
- /* Main header name */
- header_name2 = construct_header_name (base_hdr, nm_device_get_iface (dev));
- out2_indices = parse_output_fields (fields_str, tmpl, FALSE, NULL, NULL);
-
- arr = nmc_dup_fields_array (tmpl, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
- g_ptr_array_add (out2.output_data, arr);
-
- aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev));
- for (j = 0; j < aps->len; j++) {
- char *bssid_up;
- NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j);
- const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);
-
- bssid_up = g_ascii_strup (bssid_user, -1);
- if (!strcmp (bssid_up, candidate_bssid)) {
- ap = candidate_ap;
-
- info = g_malloc0 (sizeof (APInfo));
- info->nmc = nmc;
- info->index = 1;
- info->output_flags = 0;
- info->active_bssid = NULL;
- info->device = nm_device_get_iface (dev);
- fill_output_access_point (ap, info);
- g_free (info);
- }
- g_free (bssid_up);
- }
- if (empty_line)
- g_print ("\n"); /* Empty line between devices' APs */
- print_data_prepare_width (out2.output_data);
- print_data (&nmc->nmc_config, out2_indices, header_name2, 0, &out2);
- empty_line = TRUE;
- }
- if (!ap) {
- g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."),
- bssid_user);
- return NMC_RESULT_ERROR_NOT_FOUND;
- }
- } else {
- for (i = 0; devices[i]; i++) {
- NMDevice *dev = devices[i];
- NMC_OUTPUT_DATA_DEFINE_SCOPED (out2);
- gs_free char *header_name2 = NULL;
-
- /* Main header name */
- header_name2 = construct_header_name (base_hdr,
- nm_device_get_iface (dev));
- out2_indices = parse_output_fields (fields_str, tmpl, FALSE, NULL, NULL);
-
- if (NM_IS_DEVICE_WIFI (dev)) {
- if (empty_line)
- g_print ("\n"); /* Empty line between devices' APs */
- show_access_point_info (dev, nmc, &out2);
- print_data (&nmc->nmc_config, out2_indices, header_name2, 0, &out2);
- empty_line = TRUE;
- }
+ for (i = 0; devices[i]; i++) {
+ NMDevice *dev = devices[i];
+
+ if (NM_IS_DEVICE_WIFI (dev)) {
+ wifi_list_aps (NM_DEVICE_WIFI (dev), nmc, out_indices, tmpl, bssid_user, rescan_cutoff);
}
}
}
diff --git a/clients/cli/utils.c b/clients/cli/utils.c
index 9cc01c7240..7d687c2c29 100644
--- a/clients/cli/utils.c
+++ b/clients/cli/utils.c
@@ -199,10 +199,18 @@ next_arg (NmCli *nmc, int *argc, char ***argv, ...)
/* Check command dependent options first */
while ((cmd_option = va_arg (args, const char *))) {
- /* strip heading "--" form cmd_option */
- if (nmc_arg_is_option (**argv, cmd_option + 2)) {
- va_end (args);
- return cmd_option_pos;
+ if (cmd_option[0] == '-' && cmd_option[1] == '-') {
+ /* Match as an option (leading "--" stripped) */
+ if (nmc_arg_is_option (**argv, cmd_option + 2)) {
+ va_end (args);
+ return cmd_option_pos;
+ }
+ } else {
+ /* Match literally. */
+ if (strcmp (**argv, cmd_option) == 0) {
+ va_end (args);
+ return cmd_option_pos;
+ }
}
cmd_option_pos++;
}
diff --git a/clients/tests/test-client.check-on-disk/test_004-045.expected b/clients/tests/test-client.check-on-disk/test_004-045.expected
index f2c3d2fb78..c06dac37d4 100644
--- a/clients/tests/test-client.check-on-disk/test_004-045.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-045.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:986:test_004()/45
cmd: $NMCLI -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 568 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-046.expected b/clients/tests/test-client.check-on-disk/test_004-046.expected
index 0d5f081fc7..ff5481be75 100644
--- a/clients/tests/test-client.check-on-disk/test_004-046.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-046.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:986:test_004()/46
cmd: $NMCLI -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 586 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-047.expected b/clients/tests/test-client.check-on-disk/test_004-047.expected
index d28b864238..ce25b32153 100644
--- a/clients/tests/test-client.check-on-disk/test_004-047.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-047.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:989:test_004()/47
cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 568 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-048.expected b/clients/tests/test-client.check-on-disk/test_004-048.expected
index 15b474d90b..ed9a9070b3 100644
--- a/clients/tests/test-client.check-on-disk/test_004-048.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-048.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:989:test_004()/48
cmd: $NMCLI -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 586 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-051.expected b/clients/tests/test-client.check-on-disk/test_004-051.expected
index 37b4731ebc..4f1e37d7d8 100644
--- a/clients/tests/test-client.check-on-disk/test_004-051.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-051.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:986:test_004()/51
cmd: $NMCLI --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 757 bytes
+returncode: 0
+stdout: 962 bytes
>>>
===========================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-===========================
- Wi-Fi scan list (wlan1)
-===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-052.expected b/clients/tests/test-client.check-on-disk/test_004-052.expected
index a230a80a21..fc6748f932 100644
--- a/clients/tests/test-client.check-on-disk/test_004-052.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-052.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:986:test_004()/52
cmd: $NMCLI --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 861 bytes
+returncode: 0
+stdout: 1039 bytes
>>>
========================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-========================================
- Lista skanowania sieci Wi-Fi (wlan1)
-========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-053.expected b/clients/tests/test-client.check-on-disk/test_004-053.expected
index ffe51159ae..a9dece4945 100644
--- a/clients/tests/test-client.check-on-disk/test_004-053.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-053.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:989:test_004()/53
cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 757 bytes
+returncode: 0
+stdout: 962 bytes
>>>
===========================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-===========================
- Wi-Fi scan list (wlan1)
-===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-054.expected b/clients/tests/test-client.check-on-disk/test_004-054.expected
index 97392680c7..d449e41076 100644
--- a/clients/tests/test-client.check-on-disk/test_004-054.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-054.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:989:test_004()/54
cmd: $NMCLI --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 861 bytes
+returncode: 0
+stdout: 1039 bytes
>>>
========================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-========================================
- Lista skanowania sieci Wi-Fi (wlan1)
-========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-057.expected b/clients/tests/test-client.check-on-disk/test_004-057.expected
index 185a21e702..26d9e61478 100644
--- a/clients/tests/test-client.check-on-disk/test_004-057.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-057.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:986:test_004()/57
cmd: $NMCLI --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 255 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-058.expected b/clients/tests/test-client.check-on-disk/test_004-058.expected
index 6f2e500dff..8a399fb2d9 100644
--- a/clients/tests/test-client.check-on-disk/test_004-058.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-058.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:986:test_004()/58
cmd: $NMCLI --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 267 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-059.expected b/clients/tests/test-client.check-on-disk/test_004-059.expected
index 7b5e1974c6..b4d0dee25b 100644
--- a/clients/tests/test-client.check-on-disk/test_004-059.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-059.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:989:test_004()/59
cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 255 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-060.expected b/clients/tests/test-client.check-on-disk/test_004-060.expected
index 26ba1c8abe..53cb14c2b0 100644
--- a/clients/tests/test-client.check-on-disk/test_004-060.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-060.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:989:test_004()/60
cmd: $NMCLI --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 267 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-063.expected b/clients/tests/test-client.check-on-disk/test_004-063.expected
index 1e229b08f6..51de2ca212 100644
--- a/clients/tests/test-client.check-on-disk/test_004-063.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-063.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:986:test_004()/63
cmd: $NMCLI --mode tabular -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 568 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-064.expected b/clients/tests/test-client.check-on-disk/test_004-064.expected
index 6f5eb1f1e8..cf275aeb9e 100644
--- a/clients/tests/test-client.check-on-disk/test_004-064.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-064.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:986:test_004()/64
cmd: $NMCLI --mode tabular -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 586 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-065.expected b/clients/tests/test-client.check-on-disk/test_004-065.expected
index 59ee5b894e..81a0e0c02e 100644
--- a/clients/tests/test-client.check-on-disk/test_004-065.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-065.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:989:test_004()/65
cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 568 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-066.expected b/clients/tests/test-client.check-on-disk/test_004-066.expected
index 66a1cc8916..d8bc246d58 100644
--- a/clients/tests/test-client.check-on-disk/test_004-066.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-066.expected
@@ -1,15 +1,14 @@
location: clients/tests/test-client.py:989:test_004()/66
cmd: $NMCLI --mode tabular -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 269 bytes
+returncode: 0
+stdout: 586 bytes
>>>
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-069.expected b/clients/tests/test-client.check-on-disk/test_004-069.expected
index 3696dbeef5..78e3521b9f 100644
--- a/clients/tests/test-client.check-on-disk/test_004-069.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-069.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:986:test_004()/69
cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 757 bytes
+returncode: 0
+stdout: 962 bytes
>>>
===========================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-===========================
- Wi-Fi scan list (wlan1)
-===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-070.expected b/clients/tests/test-client.check-on-disk/test_004-070.expected
index 0bfe4ac2ab..94c1f34bdf 100644
--- a/clients/tests/test-client.check-on-disk/test_004-070.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-070.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:986:test_004()/70
cmd: $NMCLI --mode tabular --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 861 bytes
+returncode: 0
+stdout: 1039 bytes
>>>
========================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-========================================
- Lista skanowania sieci Wi-Fi (wlan1)
-========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-071.expected b/clients/tests/test-client.check-on-disk/test_004-071.expected
index dacdd97de4..2de78cf468 100644
--- a/clients/tests/test-client.check-on-disk/test_004-071.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-071.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:989:test_004()/71
cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 757 bytes
+returncode: 0
+stdout: 962 bytes
>>>
===========================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-===========================
- Wi-Fi scan list (wlan1)
-===========================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infra 1 2412 MHz 54 Mbit/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-072.expected b/clients/tests/test-client.check-on-disk/test_004-072.expected
index 6c387b5693..d429b5adb2 100644
--- a/clients/tests/test-client.check-on-disk/test_004-072.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-072.expected
@@ -1,23 +1,18 @@
location: clients/tests/test-client.py:989:test_004()/72
cmd: $NMCLI --mode tabular --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 861 bytes
+returncode: 0
+stdout: 1039 bytes
>>>
========================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-========================================
- Lista skanowania sieci Wi-Fi (wlan1)
-========================================
-NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1 2412 MHz 54 Mb/s 92 **** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-075.expected b/clients/tests/test-client.check-on-disk/test_004-075.expected
index e976d1d461..ebde6df7cb 100644
--- a/clients/tests/test-client.check-on-disk/test_004-075.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-075.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:986:test_004()/75
cmd: $NMCLI --mode tabular --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 255 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-076.expected b/clients/tests/test-client.check-on-disk/test_004-076.expected
index f26a35a66e..d4c0eda178 100644
--- a/clients/tests/test-client.check-on-disk/test_004-076.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-076.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:986:test_004()/76
cmd: $NMCLI --mode tabular --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 267 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-077.expected b/clients/tests/test-client.check-on-disk/test_004-077.expected
index 96882fd217..740e9360b8 100644
--- a/clients/tests/test-client.check-on-disk/test_004-077.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-077.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:989:test_004()/77
cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 255 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infra:1:2412 MHz:54 Mbit/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:no: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-078.expected b/clients/tests/test-client.check-on-disk/test_004-078.expected
index 6acd7d4008..954d5076c5 100644
--- a/clients/tests/test-client.check-on-disk/test_004-078.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-078.expected
@@ -1,13 +1,13 @@
location: clients/tests/test-client.py:989:test_004()/78
cmd: $NMCLI --mode tabular --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 267 bytes
>>>
-
+AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:2412 MHz:54 Mb/s:92:****:WPA1 WPA2:pair_tkip pair_ccmp group_tkip group_ccmp psk:pair_tkip pair_ccmp group_tkip group_ccmp psk:wlan0:nie: :/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-081.expected b/clients/tests/test-client.check-on-disk/test_004-081.expected
index 42d002c3af..f79ac47e0d 100644
--- a/clients/tests/test-client.check-on-disk/test_004-081.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-081.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:986:test_004()/81
cmd: $NMCLI --mode multiline -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 930 bytes
>>>
-
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infra
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mbit/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: no
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-082.expected b/clients/tests/test-client.check-on-disk/test_004-082.expected
index 1bbaf8e774..1e765c3fc5 100644
--- a/clients/tests/test-client.check-on-disk/test_004-082.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-082.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:986:test_004()/82
cmd: $NMCLI --mode multiline -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 942 bytes
>>>
-
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infrastruktura
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mb/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: nie
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-083.expected b/clients/tests/test-client.check-on-disk/test_004-083.expected
index ded905ef44..63b8141188 100644
--- a/clients/tests/test-client.check-on-disk/test_004-083.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-083.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:989:test_004()/83
cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 930 bytes
>>>
-
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infra
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mbit/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: no
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-084.expected b/clients/tests/test-client.check-on-disk/test_004-084.expected
index a9cbd0e33a..bbc9381b1a 100644
--- a/clients/tests/test-client.check-on-disk/test_004-084.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-084.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:989:test_004()/84
cmd: $NMCLI --mode multiline -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 942 bytes
>>>
-
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infrastruktura
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mb/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: nie
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-087.expected b/clients/tests/test-client.check-on-disk/test_004-087.expected
index b70e35acde..3445908346 100644
--- a/clients/tests/test-client.check-on-disk/test_004-087.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-087.expected
@@ -1,19 +1,33 @@
location: clients/tests/test-client.py:986:test_004()/87
cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 425 bytes
+returncode: 0
+stdout: 1222 bytes
>>>
===============================================================================
- Wi-Fi scan list (wlan1)
-===============================================================================
-
-===============================================================================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===============================================================================
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infra
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mbit/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: no
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-088.expected b/clients/tests/test-client.check-on-disk/test_004-088.expected
index cf8b8714f3..61ca841096 100644
--- a/clients/tests/test-client.check-on-disk/test_004-088.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-088.expected
@@ -1,19 +1,33 @@
location: clients/tests/test-client.py:986:test_004()/88
cmd: $NMCLI --mode multiline --pretty -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 437 bytes
+returncode: 0
+stdout: 1240 bytes
>>>
===============================================================================
- Lista skanowania sieci Wi-Fi (wlan1)
-===============================================================================
-
-===============================================================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
===============================================================================
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infrastruktura
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mb/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: nie
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-089.expected b/clients/tests/test-client.check-on-disk/test_004-089.expected
index eecf26613f..31d66d736f 100644
--- a/clients/tests/test-client.check-on-disk/test_004-089.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-089.expected
@@ -1,19 +1,33 @@
location: clients/tests/test-client.py:989:test_004()/89
cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 425 bytes
+returncode: 0
+stdout: 1222 bytes
>>>
===============================================================================
- Wi-Fi scan list (wlan1)
-===============================================================================
-
-===============================================================================
- Wi-Fi scan list (wlan1)
+ Wi-Fi scan list (wlan0)
===============================================================================
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infra
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mbit/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: no
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-090.expected b/clients/tests/test-client.check-on-disk/test_004-090.expected
index 75b6d74da4..a4f587cd37 100644
--- a/clients/tests/test-client.check-on-disk/test_004-090.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-090.expected
@@ -1,19 +1,33 @@
location: clients/tests/test-client.py:989:test_004()/90
cmd: $NMCLI --mode multiline --pretty -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 437 bytes
+returncode: 0
+stdout: 1240 bytes
>>>
===============================================================================
- Lista skanowania sieci Wi-Fi (wlan1)
-===============================================================================
-
-===============================================================================
- Lista skanowania sieci Wi-Fi (wlan1)
+ Lista skanowania sieci Wi-Fi (wlan0)
===============================================================================
+NAME: AP[1]
+SSID: wlan0-ap-2
+SSID-HEX: 776C616E302D61702D32
+BSSID: C0:E2:BE:E8:EF:B6
+MODE: Infrastruktura
+CHAN: 1
+FREQ: 2412 MHz
+RATE: 54 Mb/s
+SIGNAL: 92
+BARS: ****
+SECURITY: WPA1 WPA2
+WPA-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS: pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE: wlan0
+ACTIVE: nie
+IN-USE:
+DBUS-PATH: /org/freedesktop/NetworkManager/AccessPoint/2
+-------------------------------------------------------------------------------
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-093.expected b/clients/tests/test-client.check-on-disk/test_004-093.expected
index d31c129354..cc6fc5b83d 100644
--- a/clients/tests/test-client.check-on-disk/test_004-093.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-093.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:986:test_004()/93
cmd: $NMCLI --mode multiline --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 367 bytes
>>>
-
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE:
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-094.expected b/clients/tests/test-client.check-on-disk/test_004-094.expected
index 4c07ced017..a2a6709d36 100644
--- a/clients/tests/test-client.check-on-disk/test_004-094.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-094.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:986:test_004()/94
cmd: $NMCLI --mode multiline --terse -f ALL device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 379 bytes
>>>
-
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE:
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-095.expected b/clients/tests/test-client.check-on-disk/test_004-095.expected
index 85c5675930..b7e5c87989 100644
--- a/clients/tests/test-client.check-on-disk/test_004-095.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-095.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:989:test_004()/95
cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: C
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 367 bytes
>>>
-
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infra
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mbit/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:no
+IN-USE:
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.check-on-disk/test_004-096.expected b/clients/tests/test-client.check-on-disk/test_004-096.expected
index 71c55f2a78..719a20e8b6 100644
--- a/clients/tests/test-client.check-on-disk/test_004-096.expected
+++ b/clients/tests/test-client.check-on-disk/test_004-096.expected
@@ -1,13 +1,29 @@
location: clients/tests/test-client.py:989:test_004()/96
cmd: $NMCLI --mode multiline --terse -f NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH device wifi list bssid C0:E2:BE:E8:EF:B6
lang: pl_PL.UTF-8
-returncode: -5
-stdout: 1 bytes
+returncode: 0
+stdout: 379 bytes
>>>
-
+NAME:AP[1]
+SSID:wlan0-ap-2
+SSID-HEX:776C616E302D61702D32
+BSSID:C0:E2:BE:E8:EF:B6
+MODE:Infrastruktura
+CHAN:1
+FREQ:2412 MHz
+RATE:54 Mb/s
+SIGNAL:92
+BARS:****
+SECURITY:WPA1 WPA2
+WPA-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+RSN-FLAGS:pair_tkip pair_ccmp group_tkip group_ccmp psk
+DEVICE:wlan0
+ACTIVE:nie
+IN-USE:
+DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-stderr: 17 bytes
+stderr: 0 bytes
>>>
-<UNSTABLE OUTPUT>
+
<<<
diff --git a/clients/tests/test-client.py b/clients/tests/test-client.py
index 5bd2de2393..fc410b82a4 100755
--- a/clients/tests/test-client.py
+++ b/clients/tests/test-client.py
@@ -983,10 +983,10 @@ class TestNmcli(NmTestBase):
self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list' ],
replace_stdout = replace_stdout)
self.call_nmcli_l(mode + ['-f', 'ALL', 'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
- replace_stdout = replace_stdout, fatal_warnings = True, expected_stderr = _UNSTABLE_OUTPUT)
+ replace_stdout = replace_stdout)
self.call_nmcli_l(mode + ['-f', 'NAME,SSID,SSID-HEX,BSSID,MODE,CHAN,FREQ,RATE,SIGNAL,BARS,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE,IN-USE,DBUS-PATH',
'device', 'wifi', 'list', 'bssid', 'C0:E2:BE:E8:EF:B6'],
- replace_stdout = replace_stdout, fatal_warnings = True, expected_stderr = _UNSTABLE_OUTPUT)
+ replace_stdout = replace_stdout)
###############################################################################
diff --git a/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml b/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
index bff89120a5..af6e8c7ff3 100644
--- a/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
+++ b/introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
@@ -97,6 +97,16 @@
<property name="WirelessCapabilities" type="u" access="read"/>
<!--
+ LastScan:
+
+ The timestamp (in CLOCK_BOOTTIME seconds) for the last finished network scan.
+ A value of -1 means the device never scanned for access points.
+
+ Since: 1.12
+ -->
+ <property name="LastScan" type="i" access="read"/>
+
+ <!--
PropertiesChanged:
@properties: A dictionary containing the changed parameters.
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index 60629ff65c..6408436dd3 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1350,6 +1350,7 @@ global:
nm_client_get_checkpoints;
nm_connection_get_setting_tc_config;
nm_device_ip_tunnel_get_flags;
+ nm_device_wifi_get_last_scan;
nm_ip_tunnel_flags_get_type;
nm_remote_connection_get_filename;
nm_remote_connection_get_flags;
diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c
index 1f2118fa6d..851983f46c 100644
--- a/libnm/nm-device-wifi.c
+++ b/libnm/nm-device-wifi.c
@@ -59,6 +59,7 @@ typedef struct {
NMAccessPoint *active_ap;
NMDeviceWifiCapabilities wireless_caps;
GPtrArray *aps;
+ gint last_scan;
RequestScanInfo *scan_info;
} NMDeviceWifiPrivate;
@@ -72,6 +73,7 @@ enum {
PROP_ACTIVE_ACCESS_POINT,
PROP_WIRELESS_CAPABILITIES,
PROP_ACCESS_POINTS,
+ PROP_LAST_SCAN,
LAST_PROP
};
@@ -267,6 +269,25 @@ nm_device_wifi_get_access_point_by_path (NMDeviceWifi *device,
return ap;
}
+/**
+ * nm_device_wifi_get_last_scan:
+ * @device: a #NMDeviceWifi
+ *
+ * Returns the timestamp (in CLOCK_BOOTTIME seconds) for the last finished
+ * network scan. A value of -1 means the device never scanned for access points.
+ *
+ * Returns: the last scan time in seconds
+ *
+ * Since: 1.12
+ **/
+gint
+nm_device_wifi_get_last_scan (NMDeviceWifi *device)
+{
+ g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), -1);
+
+ return NM_DEVICE_WIFI_GET_PRIVATE (device)->last_scan;
+}
+
static GVariant *
prepare_scan_options (GVariant *options)
{
@@ -666,6 +687,7 @@ nm_device_wifi_init (NMDeviceWifi *device)
NULL);
priv->aps = g_ptr_array_new ();
+ priv->last_scan = -1;
}
static void
@@ -698,6 +720,9 @@ get_property (GObject *object,
case PROP_ACCESS_POINTS:
g_value_take_boxed (value, _nm_utils_copy_object_array (nm_device_wifi_get_access_points (self)));
break;
+ case PROP_LAST_SCAN:
+ g_value_set_int (value, nm_device_wifi_get_last_scan (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -739,6 +764,7 @@ init_dbus (NMObject *object)
{ NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT, &priv->active_ap, NULL, NM_TYPE_ACCESS_POINT },
{ NM_DEVICE_WIFI_CAPABILITIES, &priv->wireless_caps },
{ NM_DEVICE_WIFI_ACCESS_POINTS, &priv->aps, NULL, NM_TYPE_ACCESS_POINT, "access-point" },
+ { NM_DEVICE_WIFI_LAST_SCAN, &priv->last_scan },
{ NULL },
};
@@ -898,6 +924,22 @@ nm_device_wifi_class_init (NMDeviceWifiClass *wifi_class)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
+ /**
+ * NMDeviceWifi:last-scan:
+ *
+ * The timestamp (in CLOCK_BOOTTIME seconds) for the last finished
+ * network scan. A value of -1 means the device never scanned for
+ * access points.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_LAST_SCAN,
+ g_param_spec_int (NM_DEVICE_WIFI_LAST_SCAN, "", "",
+ -1, G_MAXINT, -1,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
/* signals */
/**
diff --git a/libnm/nm-device-wifi.h b/libnm/nm-device-wifi.h
index 8cfea1f307..9885438f02 100644
--- a/libnm/nm-device-wifi.h
+++ b/libnm/nm-device-wifi.h
@@ -44,6 +44,7 @@ G_BEGIN_DECLS
#define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
#define NM_DEVICE_WIFI_CAPABILITIES "wireless-capabilities"
#define NM_DEVICE_WIFI_ACCESS_POINTS "access-points"
+#define NM_DEVICE_WIFI_LAST_SCAN "last-scan"
/**
* NMDeviceWifi:
@@ -77,6 +78,9 @@ NMAccessPoint * nm_device_wifi_get_access_point_by_path (NMDeviceWifi *
const GPtrArray * nm_device_wifi_get_access_points (NMDeviceWifi *device);
+NM_AVAILABLE_IN_1_2
+gint nm_device_wifi_get_last_scan (NMDeviceWifi *device);
+
gboolean nm_device_wifi_request_scan (NMDeviceWifi *device,
GCancellable *cancellable,
GError **error);
diff --git a/man/nmcli.xml b/man/nmcli.xml
index 0787fd8baa..9b951c1985 100644
--- a/man/nmcli.xml
+++ b/man/nmcli.xml
@@ -1381,6 +1381,12 @@
<command>wifi</command>
<arg>
<command>list</command>
+ <group>
+ <option>--rescan</option>
+ <arg choice='plain'><option>auto</option></arg>
+ <arg choice='plain'><option>no</option></arg>
+ <arg choice='plain'><option>yes</option></arg>
+ </group>
<arg><option>ifname</option> <replaceable>ifname</replaceable></arg>
<arg><option>bssid</option> <replaceable>BSSID</replaceable></arg>
</arg>
@@ -1390,6 +1396,10 @@
<para>List available Wi-Fi access points. The <option>ifname</option> and
<option>bssid</option> options can be used to list APs for a particular
interface or with a specific BSSID, respectively.</para>
+ <para>By default, <command>nmcli</command> ensures that the access point list
+ is no older than 30 seconds and triggers a network scan if necessary. The
+ <option>--rescan</option> can be used to either force or disable the scan
+ regardless of how fresh the access point list is.</para>
</listitem>
</varlistentry>
diff --git a/src/devices/wifi/nm-device-iwd.c b/src/devices/wifi/nm-device-iwd.c
index d3c5ae9aa9..58bafb81d4 100644
--- a/src/devices/wifi/nm-device-iwd.c
+++ b/src/devices/wifi/nm-device-iwd.c
@@ -54,6 +54,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceIwd,
PROP_ACTIVE_ACCESS_POINT,
PROP_CAPABILITIES,
PROP_SCANNING,
+ PROP_LAST_SCAN,
);
enum {
@@ -79,6 +80,7 @@ typedef struct {
bool can_connect:1;
bool scanning:1;
bool scan_requested:1;
+ gint32 last_scan;
} NMDeviceIwdPrivate;
struct _NMDeviceIwd {
@@ -863,6 +865,8 @@ scan_cb (GObject *source, GAsyncResult *res, gpointer user_data)
priv = NM_DEVICE_IWD_GET_PRIVATE (self);
priv->scan_requested = FALSE;
+ priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+ _notify (self, PROP_LAST_SCAN);
/* On success, priv->scanning becomes true right before or right
* after this callback, so the next automatic scan will be
@@ -1530,6 +1534,12 @@ get_property (GObject *object, guint prop_id,
case PROP_SCANNING:
g_value_set_boolean (value, priv->scanning);
break;
+ case PROP_LAST_SCAN:
+ g_value_set_int (value,
+ priv->last_scan > 0
+ ? (gint) nm_utils_monotonic_timestamp_as_boottime (priv->last_scan, NM_UTILS_NS_PER_SECOND)
+ : -1);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1909,6 +1919,11 @@ nm_device_iwd_class_init (NMDeviceIwdClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_LAST_SCAN] =
+ g_param_spec_int (NM_DEVICE_IWD_LAST_SCAN, "", "",
+ -1, G_MAXINT, -1,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
signals[SCANNING_PROHIBITED] =
diff --git a/src/devices/wifi/nm-device-iwd.h b/src/devices/wifi/nm-device-iwd.h
index 699ba1bb2b..a4253f5217 100644
--- a/src/devices/wifi/nm-device-iwd.h
+++ b/src/devices/wifi/nm-device-iwd.h
@@ -38,6 +38,7 @@
#define NM_DEVICE_IWD_ACTIVE_ACCESS_POINT NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT
#define NM_DEVICE_IWD_CAPABILITIES NM_DEVICE_WIFI_CAPABILITIES
#define NM_DEVICE_IWD_SCANNING NM_DEVICE_WIFI_SCANNING
+#define NM_DEVICE_IWD_LAST_SCAN NM_DEVICE_WIFI_LAST_SCAN
#define NM_DEVICE_IWD_SCANNING_PROHIBITED NM_DEVICE_WIFI_SCANNING_PROHIBITED
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 90f9455742..f3c23e60f3 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -74,6 +74,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceWifi,
PROP_ACTIVE_ACCESS_POINT,
PROP_CAPABILITIES,
PROP_SCANNING,
+ PROP_LAST_SCAN,
);
enum {
@@ -1423,6 +1424,7 @@ supplicant_iface_scan_done_cb (NMSupplicantInterface *iface,
_LOGD (LOGD_WIFI, "wifi-scan: scan-done callback: %s", success ? "successful" : "failed");
priv->last_scan = nm_utils_get_monotonic_timestamp_s ();
+ _notify (self, PROP_LAST_SCAN);
schedule_scan (self, success);
_requested_scan_set (self, FALSE);
@@ -3123,6 +3125,12 @@ get_property (GObject *object, guint prop_id,
case PROP_SCANNING:
g_value_set_boolean (value, priv->is_scanning);
break;
+ case PROP_LAST_SCAN:
+ g_value_set_int (value,
+ priv->last_scan > 0
+ ? (gint) nm_utils_monotonic_timestamp_as_boottime (priv->last_scan, NM_UTILS_NS_PER_SECOND)
+ : -1);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -3300,6 +3308,11 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_LAST_SCAN] =
+ g_param_spec_int (NM_DEVICE_WIFI_LAST_SCAN, "", "",
+ -1, G_MAXINT, -1,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
signals[SCANNING_PROHIBITED] =
diff --git a/src/devices/wifi/nm-device-wifi.h b/src/devices/wifi/nm-device-wifi.h
index c13b00defc..1c555f5fe1 100644
--- a/src/devices/wifi/nm-device-wifi.h
+++ b/src/devices/wifi/nm-device-wifi.h
@@ -37,6 +37,7 @@
#define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
#define NM_DEVICE_WIFI_CAPABILITIES "wireless-capabilities"
#define NM_DEVICE_WIFI_SCANNING "scanning"
+#define NM_DEVICE_WIFI_LAST_SCAN "last-scan"
#define NM_DEVICE_WIFI_SCANNING_PROHIBITED "scanning-prohibited"
diff --git a/src/devices/wifi/nm-wifi-common.c b/src/devices/wifi/nm-wifi-common.c
index e5e16f03e0..0030b32dff 100644
--- a/src/devices/wifi/nm-wifi-common.c
+++ b/src/devices/wifi/nm-wifi-common.c
@@ -200,6 +200,7 @@ const NMDBusInterfaceInfoExtended nm_interface_info_device_wireless = {
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("AccessPoints", "ao", NM_DEVICE_WIFI_ACCESS_POINTS),
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("ActiveAccessPoint", "o", NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT),
NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("WirelessCapabilities", "u", NM_DEVICE_WIFI_CAPABILITIES),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("LastScan", "i", NM_DEVICE_WIFI_LAST_SCAN),
),
),
.legacy_property_changed = TRUE,
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py
index af8dc27534..bc3c828b35 100755
--- a/tools/test-networkmanager-service.py
+++ b/tools/test-networkmanager-service.py
@@ -908,6 +908,7 @@ PRP_WIFI_BITRATE = "Bitrate"
PRP_WIFI_ACCESS_POINTS = "AccessPoints"
PRP_WIFI_ACTIVE_ACCESS_POINT = "ActiveAccessPoint"
PRP_WIFI_WIRELESS_CAPABILITIES = "WirelessCapabilities"
+PRP_WIFI_LAST_SCAN = "LastScan"
class WifiDevice(Device):
def __init__(self, iface, mac = None, ident = None):
@@ -926,6 +927,7 @@ class WifiDevice(Device):
PRP_WIFI_WIRELESS_CAPABILITIES: dbus.UInt32(0xFF),
PRP_WIFI_ACCESS_POINTS: ExportedObj.to_path_array(self.aps),
PRP_WIFI_ACTIVE_ACCESS_POINT: ExportedObj.to_path(None),
+ PRP_WIFI_LAST_SCAN: dbus.Int32(0x70000000),
}
self.dbus_interface_add(IFACE_WIFI, props, WifiDevice.PropertiesChanged)