From fb9edd5eddfd69a8c6eb5d1ad32b24cc33a3cb5d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 15 Jun 2018 17:05:58 +0200 Subject: [PATCH 001/118] release: bump version to 1.13.0 (development) --- configure.ac | 4 ++-- libnm-core/nm-version.h | 14 ++++++++++++++ meson.build | 2 +- shared/nm-version-macros.h.in | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 641af9bfc0..2812a19f07 100644 --- a/configure.ac +++ b/configure.ac @@ -7,8 +7,8 @@ dnl - add corresponding NM_VERSION_x_y_z macros in dnl "shared/nm-version-macros.h.in" dnl - update number in meson.build m4_define([nm_major_version], [1]) -m4_define([nm_minor_version], [11]) -m4_define([nm_micro_version], [90]) +m4_define([nm_minor_version], [13]) +m4_define([nm_micro_version], [0]) m4_define([nm_version], [nm_major_version.nm_minor_version.nm_micro_version]) diff --git a/libnm-core/nm-version.h b/libnm-core/nm-version.h index 0412bc8e94..59482d4eeb 100644 --- a/libnm-core/nm-version.h +++ b/libnm-core/nm-version.h @@ -160,4 +160,18 @@ # define NM_AVAILABLE_IN_1_12 #endif +#if NM_VERSION_MIN_REQUIRED >= NM_VERSION_1_14 +# define NM_DEPRECATED_IN_1_14 G_DEPRECATED +# define NM_DEPRECATED_IN_1_14_FOR(f) G_DEPRECATED_FOR(f) +#else +# define NM_DEPRECATED_IN_1_14 +# define NM_DEPRECATED_IN_1_14_FOR(f) +#endif + +#if NM_VERSION_MAX_ALLOWED < NM_VERSION_1_14 +# define NM_AVAILABLE_IN_1_14 G_UNAVAILABLE(1,14) +#else +# define NM_AVAILABLE_IN_1_14 +#endif + #endif /* NM_VERSION_H */ diff --git a/meson.build b/meson.build index 7ef55362b2..bca1f40c23 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project( # - add corresponding NM_VERSION_x_y_z macros in # "shared/nm-version-macros.h.in" # - update number in configure.ac - version: '1.11.90', + version: '1.13.0', license: 'GPL2+', default_options: [ 'buildtype=debugoptimized', diff --git a/shared/nm-version-macros.h.in b/shared/nm-version-macros.h.in index 8d07fc82ba..6f2a186779 100644 --- a/shared/nm-version-macros.h.in +++ b/shared/nm-version-macros.h.in @@ -73,6 +73,7 @@ #define NM_VERSION_1_8 (NM_ENCODE_VERSION (1, 8, 0)) #define NM_VERSION_1_10 (NM_ENCODE_VERSION (1, 10, 0)) #define NM_VERSION_1_12 (NM_ENCODE_VERSION (1, 12, 0)) +#define NM_VERSION_1_14 (NM_ENCODE_VERSION (1, 14, 0)) /* For releases, NM_API_VERSION is equal to NM_VERSION. * From 7e118c00916aa7dd3f04752debbcc09569d6effe Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 10:49:46 +0200 Subject: [PATCH 002/118] tests: fix race in setting signal strength for Wi-Fi AP in NM stub This opens the tests up to races. If we want to change the strength, we need to do it in a controlled, race-free manner. This is especially the case, because clients/tests run a large number of nmcli instances in parallel, and it's thus racy which signal the nmcli processes will see. This also fixes a bug at self._dbus_property_set(IFACE_WIFI_AP, PRP_WIFI_AP_STRENGTH, strength) @strength must be a D-Bus type, so that python-dbus knows the correct type for serialization. --- tools/test-networkmanager-service.py | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index ab63b60a83..c55955d99d 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -864,8 +864,6 @@ class WifiAp(ExportedObj): strength = Util.random_int(self.path, 100) self.ssid = ssid - self.strength_counter = 0 - self.strength_id = GLib.timeout_add_seconds(10, self.strength_cb, None) props = { PRP_WIFI_AP_FLAGS: dbus.UInt32(flags), @@ -881,17 +879,6 @@ class WifiAp(ExportedObj): self.dbus_interface_add(IFACE_WIFI_AP, props, WifiAp.PropertiesChanged) - def __del__(self): - if self.strength_id > 0: - GLib.source_remove(self.strength_id) - self.strength_id = 0 - - def strength_cb(self, ignored): - self.strength_counter += 1 - strength = Util.random_int(self.path + str(self.strength_counter), 100) - self._dbus_property_set(IFACE_WIFI_AP, PRP_WIFI_AP_STRENGTH, strength) - return True - @dbus.service.signal(IFACE_WIFI_AP, signature='a{sv}') def PropertiesChanged(self, changed): pass @@ -991,25 +978,16 @@ class WimaxNsp(ExportedObj): ExportedObj.__init__(self, ExportedObj.create_path(WimaxNsp)) - self.strength_id = GLib.timeout_add_seconds(10, self.strength_cb, None) + strength = Util.random_int(self.path, 100) props = { PRP_WIMAX_NSP_NAME: name, - PRP_WIMAX_NSP_SIGNAL_QUALITY: dbus.UInt32(random.randint(0, 100)), + PRP_WIMAX_NSP_SIGNAL_QUALITY: dbus.UInt32(strength), PRP_WIMAX_NSP_NETWORK_TYPE: dbus.UInt32(NM.WimaxNspNetworkType.HOME), } self.dbus_interface_add(IFACE_WIMAX_NSP, props, WimaxNsp.PropertiesChanged) - def __del__(self): - if self.strength_id > 0: - GLib.source_remove(self.strength_id) - self.strength_id = 0 - - def strength_cb(self, ignored): - self._dbus_property_set(IFACE_WIMAX_NSP, PRP_WIMAX_NSP_SIGNAL_QUALITY, dbus.UInt32(random.randint(0, 100))) - return True - @dbus.service.signal(IFACE_WIMAX_NSP, signature='a{sv}') def PropertiesChanged(self, changed): pass From 56a0488bbae38f8d802b1cc32ba94c1640f70bc6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sat, 16 Jun 2018 13:38:45 +0200 Subject: [PATCH 003/118] tests: improve NetworkManager stub service for Wi-Fi scanning Now that nmcli initiates a scan before displaying Wi-Fi networks, the stub service must properly support that as well. For the moment, the stub service chooses "now" as LastScan timestamp. This causes nmcli not to trigger a new scan, because nmcli gives unstable output if multiple nmcli processes in parallel race to trigger a Wi-Fi scan. That should be fixed. --- clients/cli/devices.c | 11 ++++++++ tools/test-networkmanager-service.py | 40 +++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/clients/cli/devices.c b/clients/cli/devices.c index 58102ed371..aa28678ff5 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -2772,6 +2772,17 @@ wifi_list_aps (NMDeviceWifi *wifi, needs_rescan = rescan_cutoff < 0 || (rescan_cutoff > 0 && nm_device_wifi_get_last_scan (wifi) < rescan_cutoff); + /* FIXME: nmcli should either + * - don't request any new scan for any device and print the full AP list right + * away. + * - or, when requesting a scan on one or more devices, don't print the result + * before all requests complete. + * + * Otherwise: + * - the printed output is not self consistent. E.g. it will print the result + * on one device at a certain time, while printing the result for another + * device at a later point in time. + * - the order in which we print the AP list per-device, is unstable. */ if (needs_rescan) { data = g_slice_new0 (WifiListData); data->nmc = nmc; diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index c55955d99d..f6da6e1fd7 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -49,6 +49,11 @@ class Util: PY3 = (sys.version_info[0] == 3) + @staticmethod + def g_source_remove(source_id): + if source_id is not None: + GLib.source_remove(source_id) + @staticmethod def addr_family_check(family, allow_af_unspec = False): if family == socket.AF_INET: @@ -840,6 +845,7 @@ PRP_WIFI_AP_HW_ADDRESS = "HwAddress" PRP_WIFI_AP_MODE = "Mode" PRP_WIFI_AP_MAX_BITRATE = "MaxBitrate" PRP_WIFI_AP_STRENGTH = "Strength" +PRP_WIFI_AP_LAST_SEEN = "LastSeen" class WifiAp(ExportedObj): @@ -875,6 +881,7 @@ class WifiAp(ExportedObj): PRP_WIFI_AP_MODE: dbus.UInt32(getattr(NM,'80211Mode').INFRA), PRP_WIFI_AP_MAX_BITRATE: dbus.UInt32(54000), PRP_WIFI_AP_STRENGTH: dbus.Byte(strength), + PRP_WIFI_AP_LAST_SEEN: dbus.Int32(NM.utils_get_timestamp_msec() / 1000), } self.dbus_interface_add(IFACE_WIFI_AP, props, WifiAp.PropertiesChanged) @@ -902,6 +909,18 @@ class WifiDevice(Device): mac = Util.random_mac(self.ident) self.aps = [] + self.scan_cb_id = None + + # Note: we would like to simulate how nmcli calls RequestScan() and we could + # do so by using an older timestamp. However, that makes the client tests + # racy, because if a bunch of nmcli instances run in parallel against this + # service, earlier instances will issue a RequestScan(), while later instances + # won't do that (because the LastScan timestamp is already updated). That means, + # the later instances will print the scan result immediately, and in another sort + # order. That should be fixed, by nmcli not starting to print anything, before + # all RequestScan() requests complete, and thus, always print a consistent list + # of results. + ts = NM.utils_get_timestamp_msec() props = { PRP_WIFI_HW_ADDRESS: mac, @@ -911,7 +930,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: NM.utils_get_timestamp_msec(), + PRP_WIFI_LAST_SCAN: dbus.Int64(ts), } self.dbus_interface_add(IFACE_WIFI, props, WifiDevice.PropertiesChanged) @@ -928,6 +947,15 @@ class WifiDevice(Device): @dbus.service.method(dbus_interface=IFACE_WIFI, in_signature='a{sv}', out_signature='') def RequestScan(self, props): + self.scan_cb_id = Util.g_source_remove(self.scan_cb_id) + def cb(): + ts = NM.utils_get_timestamp_msec() + for ap in self.aps: + ap._dbus_property_set(IFACE_WIFI_AP, PRP_WIFI_AP_LAST_SEEN, dbus.Int32(ts / 1000)) + self._dbus_property_set(IFACE_WIFI, PRP_WIFI_LAST_SCAN, dbus.Int64(ts)) + self.scan_cb_id = None + return False + self.scan_cb_id = GLib.idle_add(cb) pass @dbus.service.signal(IFACE_WIFI, signature='o') @@ -947,6 +975,10 @@ class WifiDevice(Device): self.AccessPointRemoved(ExportedObj.to_path(ap)) ap.unexport() + def stop(self): + self.scan_cb_id = Util.g_source_remove(self.scan_cb_id) + super(WifiDevice, self).stop() + @dbus.service.signal(IFACE_WIFI, signature='o') def AccessPointRemoved(self, ap_path): pass @@ -1138,11 +1170,7 @@ class ActiveConnection(ExportedObj): self.StateChanged(state, dbus.UInt32(reason)) def activation_cancel(self): - if self._activation_id is None: - return False - GLib.source_remove(self._activation_id) - self._activation_id = None - return True + self._activation_id = Util.g_source_remove(self._activation_id) def _activation_step2(self): assert self._activation_id is not None From 4e18ef49bf2527b4c29a0bdff2faddf0194dd5bd Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 11:24:00 +0200 Subject: [PATCH 004/118] tests: don't exit test-networkmanager-service.py after 20 seconds Tests might just take longer than 20 seconds. Also, we already watch stdin to determine whether the service should exit. --- tools/test-networkmanager-service.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py index f6da6e1fd7..7fbed7ec93 100755 --- a/tools/test-networkmanager-service.py +++ b/tools/test-networkmanager-service.py @@ -2252,14 +2252,9 @@ def main(): id1 = GLib.IOChannel(0).add_watch(GLib.IOCondition.HUP, lambda io, condition: gl.mainloop.quit() or True) - # also quit after inactivity to ensure we don't stick around if the above fails somehow - id2 = GLib.timeout_add_seconds(20, - lambda: gl.mainloop.quit() or True) - gl.mainloop.run() GLib.source_remove(id1) - GLib.source_remove(id2) gl.agent_manager.remove_from_connection() gl.dns_manager.unexport() From 3a58c956c522cb3c744b99fac4733423791dba8a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 11:29:53 +0200 Subject: [PATCH 005/118] travis: we don't need de_DE locale for clients tests clients/tests only uses Polish locale for testing localized output. No need to generate the Germane locale as well. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e92131bf1a..b5f8583548 100644 --- a/.travis.yml +++ b/.travis.yml @@ -107,7 +107,6 @@ script: ./autogen.sh --prefix="$PWD/INST" --with-systemd-logind=no --enable-more-warnings=no --enable-ifcfg-rh --enable-config-plugin-ibft --enable-ifupdown --enable-tests && make -j4 && if [ "$CC" == gcc ]; then - sudo locale-gen de_DE.UTF-8 && sudo locale-gen pl_PL.UTF-8 && sudo make install && NM_TEST_CLIENT_CHECK_L10N=1 ./contrib/travis/travis-check.sh From 4822bff7aae81b84b3230b4ad3e59879fed4a43e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 13:37:36 +0200 Subject: [PATCH 006/118] release: update NEWS for 1.10.10 release 1.10.10 was released still before 1.12.0. Update the NEWS to reflect that. (cherry picked from commit f8dfc436b13f7a2f15e1f1a81086ba4b38e90ee4) --- NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 16d40889cb..246ea48bd6 100644 --- a/NEWS +++ b/NEWS @@ -45,8 +45,9 @@ Notable changes include: depending on the MAC address and the stable ID. The following features were backported to 1.10.x releases from 1.10.0 to -1.10.8 are also present in NetworkManager-1.12: +1.10.10 are also present in NetworkManager-1.12: +* Fix crash during reapply of connection settings * Fix connectivity timeout handling (bgo #794464), * Retry activating devices when the parent becomes managed (rh #1553595), * Correctly set the rp_filter value (rh #1565529). From ce9619047c5daac9a006d16d07453d50e0520e71 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 13:08:16 +0200 Subject: [PATCH 007/118] dispatcher: add NM_DISPATCHER_ACTION environment variable Previously, the action was only passed as the first command line argument to the dispatcher scripts. Now, also set it via the "$NM_DISPATCHER_ACTION" environment variable. The main purpose is to have a particular, nm-dispatcher specific variable that is always set inside the dispatcher scripts. For example, imagine you have a script that can be either called by dispatcher or some other means (manually, or spawned via /etc/NetworkManager/dispatcher.d/11-dhclient). Then it might make sense to differenciate from inside the script whether you are called by nm-dispatcher. But previously, there was no specific environment variable that was always set inside the dispatcher event. For example, with the "hostname" action there are no other environment variables. Now (with version 1.12), you can check for `test -n "$NM_DISPATCHER_ACTION"`. --- NEWS | 1 + dispatcher/nm-dispatcher-utils.c | 2 ++ man/NetworkManager.xml | 7 +++++++ 3 files changed, 10 insertions(+) diff --git a/NEWS b/NEWS index 246ea48bd6..3852f618fa 100644 --- a/NEWS +++ b/NEWS @@ -47,6 +47,7 @@ Notable changes include: The following features were backported to 1.10.x releases from 1.10.0 to 1.10.10 are also present in NetworkManager-1.12: +* Set NM_DISPATCHER_ACTION environment variable in dispatcher scripts. * Fix crash during reapply of connection settings * Fix connectivity timeout handling (bgo #794464), * Retry activating devices when the parent becomes managed (rh #1553595), diff --git a/dispatcher/nm-dispatcher-utils.c b/dispatcher/nm-dispatcher-utils.c index 362f31264e..4d04eeca97 100644 --- a/dispatcher/nm-dispatcher-utils.c +++ b/dispatcher/nm-dispatcher-utils.c @@ -575,6 +575,8 @@ done: _items_add_key0 (items, NULL, "PATH", g_getenv ("PATH")); + _items_add_key (items, NULL, "NM_DISPATCHER_ACTION", action); + *out_error_message = NULL; g_ptr_array_add (items, NULL); return (char **) g_ptr_array_free (g_steal_pointer (&items), FALSE); diff --git a/man/NetworkManager.xml b/man/NetworkManager.xml index 0ec6b0aee9..7b0513bb92 100644 --- a/man/NetworkManager.xml +++ b/man/NetworkManager.xml @@ -181,6 +181,13 @@ The environment contains more information about the interface and the connection. The following variables are available for the use in the dispatcher scripts: + + NM_DISPATCHER_ACTION + + The dispatcher action like "up" or "dhcp4-change", identical to the first + command line argument. Since NetworkManager 1.12.0. + + CONNECTION_UUID From 6dec8ea9f3df5089325cafeb4848bcb004cb7c79 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 14:32:10 +0200 Subject: [PATCH 008/118] dispatcher/tests: fix test after adding NM_DISPATCHER_ACTION Also, fix existing tests regarding connectivity action. Fixes: ce9619047c5daac9a006d16d07453d50e0520e71 --- dispatcher/tests/dispatcher-connectivity-full | 10 ++-------- dispatcher/tests/dispatcher-connectivity-unknown | 10 ++-------- dispatcher/tests/dispatcher-down | 1 + dispatcher/tests/dispatcher-external | 1 + dispatcher/tests/dispatcher-up | 1 + dispatcher/tests/dispatcher-vpn-down | 1 + dispatcher/tests/dispatcher-vpn-up | 1 + dispatcher/tests/test-dispatcher-envp.c | 4 +--- 8 files changed, 10 insertions(+), 19 deletions(-) diff --git a/dispatcher/tests/dispatcher-connectivity-full b/dispatcher/tests/dispatcher-connectivity-full index 0b2796d12d..937e79d756 100644 --- a/dispatcher/tests/dispatcher-connectivity-full +++ b/dispatcher/tests/dispatcher-connectivity-full @@ -1,6 +1,5 @@ [main] -action=connectiviy-change -expected-iface=wlan0 +action=connectivity-change uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 id=Random Connection connectivity-state=FULL @@ -14,10 +13,5 @@ path=/org/freedesktop/NetworkManager/Devices/0 [env] PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/dispatcher/tests/dispatcher-connectivity-full -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 +NM_DISPATCHER_ACTION=connectivity-change CONNECTIVITY_STATE=FULL diff --git a/dispatcher/tests/dispatcher-connectivity-unknown b/dispatcher/tests/dispatcher-connectivity-unknown index 4d797712a4..9aa48e4a1c 100644 --- a/dispatcher/tests/dispatcher-connectivity-unknown +++ b/dispatcher/tests/dispatcher-connectivity-unknown @@ -1,6 +1,5 @@ [main] -action=connectiviy-change -expected-iface=wlan0 +action=connectivity-change uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 id=Random Connection connectivity-state=UNKNOWN @@ -14,9 +13,4 @@ path=/org/freedesktop/NetworkManager/Devices/0 [env] PATH= -CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 -CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 -CONNECTION_ID=Random Connection -CONNECTION_FILENAME=/dispatcher/tests/dispatcher-connectivity-unknown -DEVICE_IFACE=wlan0 -DEVICE_IP_IFACE=wlan0 +NM_DISPATCHER_ACTION=connectivity-change diff --git a/dispatcher/tests/dispatcher-down b/dispatcher/tests/dispatcher-down index e0e44a7234..8e2a281870 100644 --- a/dispatcher/tests/dispatcher-down +++ b/dispatcher/tests/dispatcher-down @@ -13,6 +13,7 @@ path=/org/freedesktop/NetworkManager/Devices/0 [env] PATH= +NM_DISPATCHER_ACTION=down CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 CONNECTION_ID=Random Connection diff --git a/dispatcher/tests/dispatcher-external b/dispatcher/tests/dispatcher-external index 41f01d4636..46d6c79711 100644 --- a/dispatcher/tests/dispatcher-external +++ b/dispatcher/tests/dispatcher-external @@ -23,6 +23,7 @@ gateway=0.0.0.0 [env] PATH= +NM_DISPATCHER_ACTION=up CONNECTION_UUID=92bbc2fb-7304-46be-8ebb-6093dbe19a6a CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 CONNECTION_FILENAME=/dispatcher/tests/dispatcher-external diff --git a/dispatcher/tests/dispatcher-up b/dispatcher/tests/dispatcher-up index ad7e87d3b1..0a27e3de5c 100644 --- a/dispatcher/tests/dispatcher-up +++ b/dispatcher/tests/dispatcher-up @@ -36,6 +36,7 @@ domains=hsd1.mn.comcast.net. [env] PATH= +NM_DISPATCHER_ACTION=up CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311 CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 CONNECTION_ID=Random Connection diff --git a/dispatcher/tests/dispatcher-vpn-down b/dispatcher/tests/dispatcher-vpn-down index c921f105d5..e439668fe5 100644 --- a/dispatcher/tests/dispatcher-vpn-down +++ b/dispatcher/tests/dispatcher-vpn-down @@ -36,6 +36,7 @@ domains=hsd1.mn.comcast.net. [env] PATH= +NM_DISPATCHER_ACTION=vpn-down CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 CONNECTION_ID=Random Connection diff --git a/dispatcher/tests/dispatcher-vpn-up b/dispatcher/tests/dispatcher-vpn-up index cbafc03131..09c94c1c96 100644 --- a/dispatcher/tests/dispatcher-vpn-up +++ b/dispatcher/tests/dispatcher-vpn-up @@ -36,6 +36,7 @@ domains=hsd1.mn.comcast.net. [env] PATH= +NM_DISPATCHER_ACTION=vpn-up CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5 CONNECTION_ID=Random Connection diff --git a/dispatcher/tests/test-dispatcher-envp.c b/dispatcher/tests/test-dispatcher-envp.c index 1203c6ac04..5fa4a31498 100644 --- a/dispatcher/tests/test-dispatcher-envp.c +++ b/dispatcher/tests/test-dispatcher-envp.c @@ -66,9 +66,7 @@ parse_main (GKeyFile *kf, NMSettingConnection *s_con; GVariantBuilder props; - *out_expected_iface = g_key_file_get_string (kf, "main", "expected-iface", error); - if (*out_expected_iface == NULL) - return FALSE; + *out_expected_iface = g_key_file_get_string (kf, "main", "expected-iface", NULL); *out_connectivity_state = g_key_file_get_string (kf, "main", "connectivity-state", NULL); *out_vpn_ip_iface = g_key_file_get_string (kf, "main", "vpn-ip-iface", NULL); From e1db543b5b3bdedab2c384b0c69e5eee4b6b1c21 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Sat, 9 Jun 2018 12:06:32 +0200 Subject: [PATCH 009/118] contrib: add a serial modem emulator Useful for quickly testing the ModemManager integration. --- contrib/test/modemu.pl | 268 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100755 contrib/test/modemu.pl diff --git a/contrib/test/modemu.pl b/contrib/test/modemu.pl new file mode 100755 index 0000000000..26182ffdc1 --- /dev/null +++ b/contrib/test/modemu.pl @@ -0,0 +1,268 @@ +#!/usr/bin/env perl + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright 2018 Red Hat, Inc. + +# $ perldoc modemu.pl for eye-pleasing view of the manual: + +=head1 NAME + +modemu.pl - emulate a serial modem + +=head1 SYNOPSIS + +modemu.pl [] [-- ...] + +=head1 DESCRIPTION + +B opens a PTY, links the slave side to F and announces a +fake kobject via netlink as if it were a real serial device, so that +ModemManager picks it up. + +Then it answers to a very basic subset of AT commands, sufficient making +ModemManager recognize it as a 3GPP capable modem registered to a network. + +Upon receiving the dial (ATD) command, it spawns C so that +NetworkManager can establish a connection. + +B needs superuser privileges to be able to announce a kobject +and create a F node. + +=head1 OPTIONS + +=over 4 + +=item B<< >> + +Create a modem of given name. Links it to F<< /dev/ >>. + +Defaults to I. + +=item B<< >> + +Specifies extra arguments to be prepended before C to the default +set of I. + +Defaults to I. + +=back + +=cut + +use strict; +use warnings; + +use Errno; +use Socket; +use IO::Pty; +use IO::Handle; + +use constant AF_NETLINK => 16; +use constant NETLINK_KOBJECT_UEVENT => 15; + +# This allows us to use buffered read for lines from ModemManager +# despite not ending with \n +IO::Handle->input_record_separator ("\r"); + +# Parse command line arguments +my $name; +my @pppd = qw/pppd dump debug 172.31.82.1:172.31.82.2/; +while (@ARGV) { + $_ = shift @ARGV; + if ($_ eq '--') { + @pppd = @ARGV; + last; + } else { + die "Extra argument: '$_'" if $name; + $name = $_; + } +}; +$name ||= 'modemu'; + +socket my $fd, AF_NETLINK, SOCK_RAW, NETLINK_KOBJECT_UEVENT + or die "Can't create a netlink socket: $!"; + +sub send_netlink +{ + my %props = @_; + my $props = join '', map { $_, '=', $props{$_}, "\0" } keys %props; + + my $head = pack 'a8NLLLLLLL', + # signature + magic + 'libudev', + 0xfeedcafe, + + # 40 octets is the length of this header + 40, 40, 40 + length ($props), + + # SUBSYS=tty hash. Precomputed somehow. + 0xc890fa8a, + 0x00000000, + 0x00040002, + 0x00008010; + + $! = undef; + send $fd, "$head$props", 0, pack 'SSLL', AF_NETLINK, 0, 0, 0x0002; + # RHEL 7 kernel responds ECONNREFUSED even thoguh the sendto succeeded. Weird. + die "Can't send a netlink message: $!" if $! and not $!{ECONNREFUSED}; +} + +my %props = ( + DEVPATH => "/devices/pci0000:00/0000:00:00.0/$name", + SUBSYSTEM => 'tty', + DEVNAME => "/dev/$name", + + # Whitelisting that works for both ModemManager 1.6 and 1.8 + ID_MM_CANDIDATE => '1', + ID_MM_DEVICE_PROCESS => '1', +); + +sub cleanup +{ + unlink "/dev/$name"; + send_netlink (ACTION => 'remove', %props) if $fd; +} + +# Ensure we clean up before and after. +END { cleanup }; +$SIG{INT} = sub { cleanup; die }; +cleanup; + +my $pty = new IO::Pty; +my $ptyname = ttyname $pty; +symlink $ptyname, "/dev/$name" or die "Can't create /dev/$name: $!"; +send_netlink (ACTION => 'add', %props); + +while (<$pty>) { + chomp; + + if (/^AT$/ or /^ATE0$/ or /^ATV1$/ or /^AT\+CMEE=1$/ or /^ATX4$/ or /^AT&C1$/ or /^ATZ$/) { + # Standard Hayes commands that are basically used to + # ensure the modem is in a known state. Accept them all. + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+CPIN\?$/) { + # PIN unlocked. Required. + print $pty "\r\n"; + print $pty "+CPIN:READY\r\n"; + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+COPS=0$/) { + # Select access technology (we just accept 0=automatic) + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+CGREG\?$/) { + # 3GPP Registration status. + print $pty "\r\n"; + print $pty "+CGREG: 0,1\r\n"; + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+CGDCONT=\?$/) { + # Get supported PDP contexts + print $pty "\r\n"; + print $pty "+CGDCONT: (1-10),(\"IP\"),,,(0-1),(0-1)\r\n"; + print $pty "+CGDCONT: (1-10),(\"IPV6\"),,,(0-1),(0-1)\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+CGACT=0,1$/) { + # Activate a PDP context + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^AT\+CGDCONT=1,"(.*)","(.*)"$/) { + # Set PDP context. We accept any. + print $pty "\r\n"; + print $pty "OK\r\n"; + + } elsif (/^ATD/) { + print $pty "\r\n"; + print $pty "CONNECT 28800000\r\n"; + + my $ppp = fork; + die "Can't fork: $!" unless defined $ppp; + if ($ppp == 0) { + close STDIN; + close STDOUT; + open STDIN, '<&', $pty or die "Can't dup pty to a pppd stdin: $!"; + open STDOUT, '>&', $pty or die "Can't dup pty to a pppd stdout: $!"; + close $pty; + exec @pppd, qw/nodetach notty local logfd 2 nopersist/; + die "Can't exec pppd: $!"; + } + waitpid $ppp, 0; + } else { + print $pty "\r\n"; + print $pty "ERROR\r\n"; + } +} + +=head1 EXAMPLES + +=over + +=item B + +Just create a modem named I, with the default PPP arguments. + +=item B + +Same as above, just name the modem I. + +=item B + +Avoid polluting the namespace with the modem end of PPP connection. + +=item B + +Override the C parameters: no debug logging and different set of +addresses. + +=item B + +Same as above, with a modem name different from default. + +=back + +=head1 BUGS + +Only works on machines with a PCI bus. ModemManager is picky about platform +devices and accepts PCI and USB busses easily. Which is why pretent to have +our tty on the PCI root device. + +Terminates after a single PPP session. C seems to hang up the PTY. + +=head1 SEE ALSO + +L, L + +=head1 COPYRIGHT + +Copyright 2018 Lubomir Rintel + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +=head1 AUTHOR + +Lubomir Rintel C + +=cut From e27b15c00d23d4eb69128c794b4eccf895aced57 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 18 Jun 2018 17:16:20 +0200 Subject: [PATCH 010/118] all: remove CLOCK_BOOTTIME defintions It's useless and redundant noise. The original motivation seems to have been compatibility with ancient versions uClibc (2011), but given CLOCK_BOOTTIME definition is shipped with kernel headers, the libc version shall not matter anyway. Even if it was the case, uClibc has shipped the definition for over 7 years now and been superseded by uClibc-ng that always had the definition. --- src/nm-core-utils.c | 9 --------- src/systemd/sd-adapt/nm-sd-adapt.h | 13 ------------- src/tests/test-general-with-expect.c | 4 ---- 3 files changed, 26 deletions(-) diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index 54ccdb836d..71370985b2 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -45,15 +45,6 @@ #include "nm-setting-wireless.h" #include "nm-setting-wireless-security.h" -/* - * Some toolchains (E.G. uClibc 0.9.33 and earlier) don't export - * CLOCK_BOOTTIME even though the kernel supports it, so provide a - * local definition - */ -#ifndef CLOCK_BOOTTIME -#define CLOCK_BOOTTIME 7 -#endif - G_STATIC_ASSERT (sizeof (NMUtilsTestFlags) <= sizeof (int)); static int _nm_utils_testing = 0; diff --git a/src/systemd/sd-adapt/nm-sd-adapt.h b/src/systemd/sd-adapt/nm-sd-adapt.h index 380cbc60e2..e163eedab6 100644 --- a/src/systemd/sd-adapt/nm-sd-adapt.h +++ b/src/systemd/sd-adapt/nm-sd-adapt.h @@ -26,10 +26,6 @@ #include #include -#ifndef CLOCK_BOOTTIME -#define CLOCK_BOOTTIME 7 -#endif - #if defined(HAVE_DECL_REALLOCARRAY) && HAVE_DECL_REALLOCARRAY == 1 #define HAVE_REALLOCARRAY 1 #else @@ -180,15 +176,6 @@ sd_notify (int unset_environment, const char *state) #define MAX_HANDLE_SZ 128 #endif -/* - * Some toolchains (E.G. uClibc 0.9.33 and earlier) don't export - * CLOCK_BOOTTIME even though the kernel supports it, so provide a - * local definition - */ -#ifndef CLOCK_BOOTTIME -#define CLOCK_BOOTTIME 7 -#endif - #include "sd-id128.h" #include "sparse-endian.h" #include "async.h" diff --git a/src/tests/test-general-with-expect.c b/src/tests/test-general-with-expect.c index a78b531195..ba8e3ce4cb 100644 --- a/src/tests/test-general-with-expect.c +++ b/src/tests/test-general-with-expect.c @@ -32,10 +32,6 @@ #include "nm-test-utils-core.h" -#ifndef CLOCK_BOOTTIME -#define CLOCK_BOOTTIME 7 -#endif - /*****************************************************************************/ static void From f468602d505e11b42f32732ed2ccc8663c85e546 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 19 Jun 2018 14:23:20 +0200 Subject: [PATCH 011/118] shared: support nm_g_slice_free_fcn() for arguments with sizeof() of 10 bytes On m68k architecture, the struct typedef struct { gint64 timestamp_ms; bool dirty; } IP6RoutesTemporaryNotAvailableData; ends up being of a previously unhandled size. Causing a compile time assertion to fail. Support argument sizes of 10 bytes for nm_g_slice_free_fcn(). --- shared/nm-utils/nm-shared-utils.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shared/nm-utils/nm-shared-utils.h b/shared/nm-utils/nm-shared-utils.h index 588552375e..d983cfcd1c 100644 --- a/shared/nm-utils/nm-shared-utils.h +++ b/shared/nm-utils/nm-shared-utils.h @@ -331,6 +331,7 @@ _nm_g_slice_free_fcn_define (1) _nm_g_slice_free_fcn_define (2) _nm_g_slice_free_fcn_define (4) _nm_g_slice_free_fcn_define (8) +_nm_g_slice_free_fcn_define (10) _nm_g_slice_free_fcn_define (12) _nm_g_slice_free_fcn_define (16) @@ -345,6 +346,7 @@ _nm_g_slice_free_fcn_define (16) || ((mem_size) == 2) \ || ((mem_size) == 4) \ || ((mem_size) == 8) \ + || ((mem_size) == 10) \ || ((mem_size) == 12) \ || ((mem_size) == 16)); \ switch ((mem_size)) { \ @@ -352,6 +354,7 @@ _nm_g_slice_free_fcn_define (16) case 2: _fcn = _nm_g_slice_free_fcn_2; break; \ case 4: _fcn = _nm_g_slice_free_fcn_4; break; \ case 8: _fcn = _nm_g_slice_free_fcn_8; break; \ + case 10: _fcn = _nm_g_slice_free_fcn_10; break; \ case 12: _fcn = _nm_g_slice_free_fcn_12; break; \ case 16: _fcn = _nm_g_slice_free_fcn_16; break; \ default: g_assert_not_reached (); _fcn = NULL; break; \ From eb54fc0befb3225703ea7bd71b92c7fc89162505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dr=C4=85g?= Date: Sun, 17 Jun 2018 17:51:37 +0200 Subject: [PATCH 012/118] po: fix broken strings in Japanese translation (bgo#796611) https://bugzilla.gnome.org/show_bug.cgi?id=796611 --- po/ja.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/ja.po b/po/ja.po index 4b002ffcb6..f54f8a45d2 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1357,7 +1357,7 @@ msgstr "" #, c-format msgid "There is %d optional setting for %s.\n" msgid_plural "There are %d optional settings for %s.\n" -msgstr[0] "%s には、任意の設定が %d 個あります。\n" +msgstr[0] "%2$s には、任意の設定が %1$d 個あります。\n" #: ../clients/cli/connections.c:4613 #, c-format @@ -11799,7 +11799,7 @@ msgstr "ファイルではありません (%s)" #: ../libnm-core/nm-utils.c:2966 #, c-format msgid "invalid file owner %d for %s" -msgstr "%s の無効なファイル所有者 %d" +msgstr "%2$s の無効なファイル所有者 %1$d" #: ../libnm-core/nm-utils.c:2977 #, c-format @@ -11844,7 +11844,7 @@ msgstr "%lld の場所で、マスクに有効な Ethernet MAC アドレスで #: ../libnm-core/nm-utils.c:4182 #, c-format msgid "not a valid ethernet MAC address #%u at position %lld" -msgstr "%lld の場所で、有効な Ethernet MAC アドレス #%u ではありません" +msgstr "%2$lld の場所で、有効な Ethernet MAC アドレス #%1$u ではありません" #: ../libnm-core/nm-utils.c:4218 msgid "interface name is too short" From f4bef9a12eba69e2cd94b2428939d2a523f4fce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dr=C4=85g?= Date: Sun, 17 Jun 2018 17:40:33 +0200 Subject: [PATCH 013/118] po: update Polish (pl) translation (bgo #796610) https://bugzilla.gnome.org/show_bug.cgi?id=796610 --- po/pl.po | 3312 +++++++++++++++++++++++++++--------------------------- 1 file changed, 1656 insertions(+), 1656 deletions(-) diff --git a/po/pl.po b/po/pl.po index 28e63c8a04..d23eabfa07 100644 --- a/po/pl.po +++ b/po/pl.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: NetworkManager\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-28 18:04+0100\n" -"PO-Revision-Date: 2018-01-28 18:05+0100\n" +"POT-Creation-Date: 2018-06-17 17:27+0200\n" +"PO-Revision-Date: 2018-06-17 17:37+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -85,48 +85,49 @@ msgstr "" "Uruchamia program nmcli jako agenta haseł i polkit usługi NetworkManager.\n" "\n" -#: ../clients/cli/agent.c:158 +#: ../clients/cli/agent.c:157 #, c-format msgid "nmcli successfully registered as a NetworkManager's secret agent.\n" msgstr "" "Pomyślnie zarejestrowano program nmcli jako agenta haseł usługi " "NetworkManager.\n" -#: ../clients/cli/agent.c:160 +#: ../clients/cli/agent.c:159 #, c-format msgid "Error: secret agent initialization failed" msgstr "Błąd: zainicjowanie agenta haseł się nie powiodło" -#: ../clients/cli/agent.c:179 +#: ../clients/cli/agent.c:178 #, c-format msgid "Error: polkit agent initialization failed: %s" msgstr "Błąd: zainicjowanie agenta polkit się nie powiodło: %s" -#: ../clients/cli/agent.c:187 +#: ../clients/cli/agent.c:186 #, c-format msgid "nmcli successfully registered as a polkit agent.\n" msgstr "Pomyślnie zarejestrowano program nmcli jako agenta polkit.\n" -#: ../clients/cli/common.c:263 ../clients/cli/common.c:278 +#: ../clients/cli/common.c:306 ../clients/cli/common.c:332 +#: ../clients/cli/connections.c:1297 msgid "GROUP" msgstr "GRUPA" -#: ../clients/cli/common.c:561 +#: ../clients/cli/common.c:606 #, c-format msgid "Error: openconnect failed: %s\n" msgstr "Błąd: polecenie openconnect się nie powiodło: %s\n" -#: ../clients/cli/common.c:568 +#: ../clients/cli/common.c:613 #, c-format msgid "Error: openconnect failed with status %d\n" msgstr "Błąd: polecenie openconnect się nie powiodło ze stanem %d\n" -#: ../clients/cli/common.c:570 +#: ../clients/cli/common.c:615 #, c-format msgid "Error: openconnect failed with signal %d\n" msgstr "Błąd: polecenie openconnect się nie powiodło z sygnałem %d\n" -#: ../clients/cli/common.c:651 +#: ../clients/cli/common.c:695 #, c-format msgid "" "Warning: password for '%s' not given in 'passwd-file' and nmcli cannot ask " @@ -135,59 +136,122 @@ msgstr "" "Ostrzeżenie: w „passwd-file” nie podano hasła dla „%s”, a program nmcli nie " "może zapytać bez opcji „--ask”.\n" -#: ../clients/cli/common.c:1117 +#: ../clients/cli/common.c:1185 #, c-format msgid "Error: Could not create NMClient object: %s." msgstr "Błąd: nie można utworzyć obiektu NMClient: %s." -#: ../clients/cli/common.c:1137 +#: ../clients/cli/common.c:1205 msgid "Error: NetworkManager is not running." msgstr "Błąd: usługa NetworkManager nie jest uruchomiona." -#: ../clients/cli/common.c:1234 +#: ../clients/cli/common.c:1301 #, c-format msgid "Error: argument '%s' not understood. Try passing --help instead." msgstr "Błąd: nie zrozumiano parametru „%s”. Można użyć „--help” zamiast tego." -#: ../clients/cli/common.c:1244 +#: ../clients/cli/common.c:1311 msgid "Error: missing argument. Try passing --help." msgstr "Błąd: brak parametru. Można użyć „--help” zamiast tego." -#: ../clients/cli/common.c:1297 +#: ../clients/cli/common.c:1364 msgid "access denied" msgstr "odmowa dostępu" #. define some prompts for connection editor -#: ../clients/cli/connections.c:66 +#: ../clients/cli/connections.c:64 msgid "Setting name? " msgstr "Nazwa ustawienia? " -#: ../clients/cli/connections.c:67 +#: ../clients/cli/connections.c:65 msgid "Property name? " msgstr "Nazwa właściwości? " -#: ../clients/cli/connections.c:68 +#: ../clients/cli/connections.c:66 msgid "Enter connection type: " msgstr "Proszę podać typ połączenia: " #. define some other prompts -#: ../clients/cli/connections.c:72 +#: ../clients/cli/connections.c:70 msgid "Connection (name, UUID, or path)" msgstr "Połączenie (nazwa, UUID lub ścieżka)" -#: ../clients/cli/connections.c:73 +#: ../clients/cli/connections.c:71 msgid "VPN connection (name, UUID, or path)" msgstr "Połączenie VPN (nazwa, UUID lub ścieżka)" -#: ../clients/cli/connections.c:74 +#: ../clients/cli/connections.c:72 msgid "Connection(s) (name, UUID, or path)" msgstr "Połączenia (nazwa, UUID lub ścieżka)" -#: ../clients/cli/connections.c:75 +#: ../clients/cli/connections.c:73 msgid "Connection(s) (name, UUID, path or apath)" msgstr "Połączenia (nazwa, UUID, ścieżka lub „apath”)" -#: ../clients/cli/connections.c:197 +#: ../clients/cli/connections.c:80 ../clients/cli/connections.c:89 +#: ../clients/cli/devices.c:1201 ../clients/cli/devices.c:1245 +#: ../clients/cli/devices.c:1247 ../clients/cli/general.c:41 +#: ../clients/cli/general.c:82 ../clients/cli/general.c:150 +#: ../clients/cli/general.c:155 ../clients/common/nm-client-utils.c:288 +#: ../clients/common/nm-client-utils.c:291 +#: ../clients/common/nm-client-utils.c:307 +#: ../clients/common/nm-client-utils.c:310 +#: ../clients/common/nm-meta-setting-desc.c:1482 +#: ../clients/common/nm-meta-setting-desc.c:1532 +#: ../clients/common/nm-meta-setting-desc.c:2681 +#: ../clients/common/nm-meta-setting-desc.c:2736 +msgid "unknown" +msgstr "nieznane" + +#: ../clients/cli/connections.c:81 +msgid "activating" +msgstr "aktywowanie" + +#: ../clients/cli/connections.c:82 +msgid "activated" +msgstr "aktywowano" + +#: ../clients/cli/connections.c:83 ../clients/common/nm-client-utils.c:284 +msgid "deactivating" +msgstr "dezaktywowanie" + +#: ../clients/cli/connections.c:84 +msgid "deactivated" +msgstr "dezaktywowano" + +#: ../clients/cli/connections.c:90 +msgid "VPN connecting (prepare)" +msgstr "Łączenie z VPN (przygotowanie)" + +#: ../clients/cli/connections.c:91 +msgid "VPN connecting (need authentication)" +msgstr "Łączenie z VPN (wymaga uwierzytelnienia)" + +#: ../clients/cli/connections.c:92 +msgid "VPN connecting" +msgstr "Łączenie z VPN" + +#: ../clients/cli/connections.c:93 +msgid "VPN connecting (getting IP configuration)" +msgstr "Łączenie z VPN (pobieranie konfiguracji adresu IP)" + +#: ../clients/cli/connections.c:94 +msgid "VPN connected" +msgstr "Połączono z VPN" + +#: ../clients/cli/connections.c:95 +msgid "VPN connection failed" +msgstr "Połączenie z VPN się nie powiodło" + +#: ../clients/cli/connections.c:96 +msgid "VPN disconnected" +msgstr "Rozłączono z VPN" + +#: ../clients/cli/connections.c:452 +msgid "never" +msgstr "nigdy" + +#: ../clients/cli/connections.c:713 #, c-format msgid "" "Usage: nmcli connection { COMMAND | help }\n" @@ -263,7 +327,7 @@ msgstr "" " export [id | uuid | path] []\n" "\n" -#: ../clients/cli/connections.c:219 +#: ../clients/cli/connections.c:735 #, c-format msgid "" "Usage: nmcli connection show { ARGUMENTS | help }\n" @@ -308,7 +372,7 @@ msgstr "" "więcej informacji. Podanie opcji „--active” spowoduje uwzględnienie tylko\n" "aktywnych profili. Opcja „--show-secrets” ujawni także powiązane hasła.\n" -#: ../clients/cli/connections.c:240 +#: ../clients/cli/connections.c:756 #, c-format msgid "" "Usage: nmcli connection up { ARGUMENTS | help }\n" @@ -353,7 +417,7 @@ msgstr "" "passwd-file — plik z hasłami wymaganymi do aktywowania połączenia\n" "\n" -#: ../clients/cli/connections.c:261 +#: ../clients/cli/connections.c:777 #, c-format msgid "" "Usage: nmcli connection down { ARGUMENTS | help }\n" @@ -375,7 +439,7 @@ msgstr "" "identyfikowany po swojej nazwie, UUID lub ścieżce D-Bus.\n" "\n" -#: ../clients/cli/connections.c:273 +#: ../clients/cli/connections.c:789 #, c-format msgid "" "Usage: nmcli connection add { ARGUMENTS | help }\n" @@ -683,7 +747,7 @@ msgstr "" " [ip6 ] [gw6 ]\n" "\n" -#: ../clients/cli/connections.c:391 +#: ../clients/cli/connections.c:907 #, c-format msgid "" "Usage: nmcli connection modify { ARGUMENTS | help }\n" @@ -730,7 +794,7 @@ msgstr "" "nmcli con mod bond0 -bond.options downdelay\n" "\n" -#: ../clients/cli/connections.c:414 +#: ../clients/cli/connections.c:930 #, c-format msgid "" "Usage: nmcli connection clone { ARGUMENTS | help }\n" @@ -752,7 +816,7 @@ msgstr "" "utworzona) oraz „id” (podana jako parametr ).\n" "\n" -#: ../clients/cli/connections.c:426 +#: ../clients/cli/connections.c:942 #, c-format msgid "" "Usage: nmcli connection edit { ARGUMENTS | help }\n" @@ -780,7 +844,7 @@ msgstr "" "Dodaje nowy profil połączenia w interaktywnym edytorze.\n" "\n" -#: ../clients/cli/connections.c:441 +#: ../clients/cli/connections.c:957 #, c-format msgid "" "Usage: nmcli connection delete { ARGUMENTS | help }\n" @@ -799,7 +863,7 @@ msgstr "" "Profil jest identyfikowany po swojej nazwie, UUID lub ścieżce D-Bus.\n" "\n" -#: ../clients/cli/connections.c:452 +#: ../clients/cli/connections.c:968 #, c-format msgid "" "Usage: nmcli connection monitor { ARGUMENTS | help }\n" @@ -820,7 +884,7 @@ msgstr "" "Monitoruje wszystkie profile połączeń, jeśli żaden nie zostanie podany.\n" "\n" -#: ../clients/cli/connections.c:464 +#: ../clients/cli/connections.c:980 #, c-format msgid "" "Usage: nmcli connection reload { help }\n" @@ -833,7 +897,7 @@ msgstr "" "Wczytuje ponownie wszystkie pliki połączeń z dysku.\n" "\n" -#: ../clients/cli/connections.c:472 +#: ../clients/cli/connections.c:988 #, c-format msgid "" "Usage: nmcli connection load { ARGUMENTS | help }\n" @@ -855,7 +919,7 @@ msgstr "" "usługa NetworkManager zna jego najnowszy stan.\n" "\n" -#: ../clients/cli/connections.c:484 +#: ../clients/cli/connections.c:1000 #, c-format msgid "" "Usage: nmcli connection import { ARGUMENTS | help }\n" @@ -880,7 +944,7 @@ msgstr "" "importowana przez wtyczki VPN usługi NetworkManager.\n" "\n" -#: ../clients/cli/connections.c:497 +#: ../clients/cli/connections.c:1013 #, c-format msgid "" "Usage: nmcli connection export { ARGUMENTS | help }\n" @@ -900,440 +964,336 @@ msgstr "" "nazwę.\n" "\n" -#: ../clients/cli/connections.c:531 -msgid "activating" -msgstr "aktywowanie" - -#: ../clients/cli/connections.c:533 -msgid "activated" -msgstr "aktywowano" - -#: ../clients/cli/connections.c:535 ../clients/common/nm-client-utils.c:243 -msgid "deactivating" -msgstr "dezaktywowanie" - -#: ../clients/cli/connections.c:537 -msgid "deactivated" -msgstr "dezaktywowano" - -#: ../clients/cli/connections.c:540 ../clients/cli/connections.c:563 -#: ../clients/cli/devices.c:1210 ../clients/cli/devices.c:1254 -#: ../clients/cli/devices.c:1256 ../clients/cli/general.c:41 -#: ../clients/cli/general.c:79 ../clients/cli/general.c:146 -#: ../clients/cli/general.c:151 ../clients/common/nm-client-utils.c:247 -#: ../clients/common/nm-client-utils.c:250 -#: ../clients/common/nm-client-utils.c:266 -#: ../clients/common/nm-client-utils.c:269 -#: ../clients/common/nm-meta-setting-desc.c:1480 -#: ../clients/common/nm-meta-setting-desc.c:1548 -#: ../clients/common/nm-meta-setting-desc.c:2693 -#: ../clients/common/nm-meta-setting-desc.c:2747 -msgid "unknown" -msgstr "nieznane" - -#: ../clients/cli/connections.c:549 -msgid "VPN connecting (prepare)" -msgstr "Łączenie z VPN (przygotowanie)" - -#: ../clients/cli/connections.c:551 -msgid "VPN connecting (need authentication)" -msgstr "Łączenie z VPN (wymaga uwierzytelnienia)" - -#: ../clients/cli/connections.c:553 -msgid "VPN connecting" -msgstr "Łączenie z VPN" - -#: ../clients/cli/connections.c:555 -msgid "VPN connecting (getting IP configuration)" -msgstr "Łączenie z VPN (pobieranie konfiguracji adresu IP)" - -#: ../clients/cli/connections.c:557 -msgid "VPN connected" -msgstr "Połączono z VPN" - -#: ../clients/cli/connections.c:559 -msgid "VPN connection failed" -msgstr "Połączenie z VPN się nie powiodło" - -#: ../clients/cli/connections.c:561 -msgid "VPN disconnected" -msgstr "Rozłączono z VPN" - -#: ../clients/cli/connections.c:631 +#: ../clients/cli/connections.c:1095 #, c-format msgid "Error updating secrets for %s: %s\n" msgstr "Błąd podczas aktualizowania haseł dla %s: %s\n" -#: ../clients/cli/connections.c:651 +#: ../clients/cli/connections.c:1138 msgid "Connection profile details" msgstr "Szczegóły profilu połączenia" -#: ../clients/cli/connections.c:664 ../clients/cli/connections.c:1114 +#: ../clients/cli/connections.c:1151 ../clients/cli/connections.c:1249 #, c-format msgid "Error: 'connection show': %s" msgstr "Błąd: „connection show”: %s" -#: ../clients/cli/connections.c:882 -msgid "never" -msgstr "nigdy" - -#. "CAPABILITIES" -#: ../clients/cli/connections.c:883 ../clients/cli/connections.c:885 -#: ../clients/cli/connections.c:887 ../clients/cli/connections.c:920 -#: ../clients/cli/connections.c:987 ../clients/cli/connections.c:988 -#: ../clients/cli/connections.c:990 ../clients/cli/connections.c:4433 -#: ../clients/cli/connections.c:6371 ../clients/cli/connections.c:6372 -#: ../clients/cli/devices.c:884 ../clients/cli/devices.c:1173 -#: ../clients/cli/devices.c:1174 ../clients/cli/devices.c:1175 -#: ../clients/cli/devices.c:1176 ../clients/cli/devices.c:1177 -#: ../clients/cli/devices.c:1214 ../clients/cli/devices.c:1216 -#: ../clients/cli/devices.c:1217 ../clients/cli/devices.c:1247 -#: ../clients/cli/devices.c:1248 ../clients/cli/devices.c:1249 -#: ../clients/cli/devices.c:1250 ../clients/cli/devices.c:1251 -#: ../clients/cli/devices.c:1252 ../clients/cli/devices.c:1253 -#: ../clients/cli/devices.c:1255 ../clients/cli/devices.c:1257 -#: ../clients/cli/general.c:152 ../clients/common/nm-client-utils.c:258 -#: ../clients/common/nm-meta-setting-desc.c:720 -#: ../clients/common/nm-meta-setting-desc.c:2686 -msgid "yes" -msgstr "tak" - -#: ../clients/cli/connections.c:883 ../clients/cli/connections.c:885 -#: ../clients/cli/connections.c:887 ../clients/cli/connections.c:987 -#: ../clients/cli/connections.c:988 ../clients/cli/connections.c:990 -#: ../clients/cli/connections.c:4432 ../clients/cli/connections.c:6371 -#: ../clients/cli/connections.c:6372 ../clients/cli/devices.c:884 -#: ../clients/cli/devices.c:1173 ../clients/cli/devices.c:1174 -#: ../clients/cli/devices.c:1175 ../clients/cli/devices.c:1176 -#: ../clients/cli/devices.c:1177 ../clients/cli/devices.c:1214 -#: ../clients/cli/devices.c:1216 ../clients/cli/devices.c:1217 -#: ../clients/cli/devices.c:1247 ../clients/cli/devices.c:1248 -#: ../clients/cli/devices.c:1249 ../clients/cli/devices.c:1250 -#: ../clients/cli/devices.c:1251 ../clients/cli/devices.c:1252 -#: ../clients/cli/devices.c:1253 ../clients/cli/devices.c:1255 -#: ../clients/cli/devices.c:1257 ../clients/cli/general.c:153 -#: ../clients/common/nm-client-utils.c:260 -#: ../clients/common/nm-meta-setting-desc.c:720 -#: ../clients/common/nm-meta-setting-desc.c:2689 -msgid "no" -msgstr "nie" - -#: ../clients/cli/connections.c:1104 +#: ../clients/cli/connections.c:1239 msgid "Activate connection details" msgstr "Szczegóły aktywowania połączenia" -#: ../clients/cli/connections.c:1351 +#: ../clients/cli/connections.c:1485 #, c-format msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s" msgstr "nieprawidłowe pole „%s”; dozwolone pola: %s i %s, albo %s,%s" -#: ../clients/cli/connections.c:1366 ../clients/cli/connections.c:1374 +#: ../clients/cli/connections.c:1500 ../clients/cli/connections.c:1508 #, c-format msgid "'%s' has to be alone" msgstr "„%s” musi być same" -#: ../clients/cli/connections.c:1574 +#: ../clients/cli/connections.c:1773 #, c-format msgid "incorrect string '%s' of '--order' option" msgstr "niepoprawny ciąg „%s” opcji „--order”" -#: ../clients/cli/connections.c:1600 +#: ../clients/cli/connections.c:1798 #, c-format msgid "incorrect item '%s' in '--order' option" msgstr "niepoprawny element „%s” w opcji „--order”" -#: ../clients/cli/connections.c:1630 +#: ../clients/cli/connections.c:1836 msgid "No connection specified" msgstr "Nie podano połączenia" -#: ../clients/cli/connections.c:1645 +#: ../clients/cli/connections.c:1847 #, c-format msgid "%s argument is missing" msgstr "Brak parametru %s" -#: ../clients/cli/connections.c:1655 +#: ../clients/cli/connections.c:1865 #, c-format msgid "unknown connection '%s'" msgstr "nieznane połączenie „%s”" -#: ../clients/cli/connections.c:1688 +#: ../clients/cli/connections.c:1894 msgid "'--order' argument is missing" msgstr "Brak parametru „--order”" -#: ../clients/cli/connections.c:1743 +#: ../clients/cli/connections.c:1955 msgid "NetworkManager active profiles" msgstr "Aktywne profile usługi NetworkManager" -#: ../clients/cli/connections.c:1744 +#: ../clients/cli/connections.c:1956 msgid "NetworkManager connection profiles" msgstr "Profile połączeń usługi NetworkManager" -#: ../clients/cli/connections.c:1797 ../clients/cli/connections.c:2472 -#: ../clients/cli/connections.c:2484 ../clients/cli/connections.c:2496 -#: ../clients/cli/connections.c:2672 ../clients/cli/connections.c:8434 -#: ../clients/cli/connections.c:8451 ../clients/cli/devices.c:2681 -#: ../clients/cli/devices.c:2692 ../clients/cli/devices.c:2934 -#: ../clients/cli/devices.c:2945 ../clients/cli/devices.c:2963 -#: ../clients/cli/devices.c:2972 ../clients/cli/devices.c:2993 -#: ../clients/cli/devices.c:3004 ../clients/cli/devices.c:3022 -#: ../clients/cli/devices.c:3400 ../clients/cli/devices.c:3410 -#: ../clients/cli/devices.c:3418 ../clients/cli/devices.c:3430 -#: ../clients/cli/devices.c:3445 ../clients/cli/devices.c:3453 -#: ../clients/cli/devices.c:3627 ../clients/cli/devices.c:3638 -#: ../clients/cli/devices.c:3810 +#: ../clients/cli/connections.c:2008 ../clients/cli/connections.c:2707 +#: ../clients/cli/connections.c:2719 ../clients/cli/connections.c:2731 +#: ../clients/cli/connections.c:2957 ../clients/cli/connections.c:8644 +#: ../clients/cli/connections.c:8660 ../clients/cli/devices.c:2838 +#: ../clients/cli/devices.c:2850 ../clients/cli/devices.c:2863 +#: ../clients/cli/devices.c:3014 ../clients/cli/devices.c:3025 +#: ../clients/cli/devices.c:3043 ../clients/cli/devices.c:3052 +#: ../clients/cli/devices.c:3073 ../clients/cli/devices.c:3084 +#: ../clients/cli/devices.c:3102 ../clients/cli/devices.c:3482 +#: ../clients/cli/devices.c:3492 ../clients/cli/devices.c:3500 +#: ../clients/cli/devices.c:3512 ../clients/cli/devices.c:3527 +#: ../clients/cli/devices.c:3535 ../clients/cli/devices.c:3709 +#: ../clients/cli/devices.c:3720 ../clients/cli/devices.c:3891 #, c-format msgid "Error: %s argument is missing." msgstr "Błąd: brak parametru %s." -#: ../clients/cli/connections.c:1816 +#: ../clients/cli/connections.c:2036 #, c-format msgid "Error: %s - no such connection profile." msgstr "Błąd: %s — nie ma takiego profilu połączenia." -#: ../clients/cli/connections.c:1880 ../clients/cli/connections.c:2459 -#: ../clients/cli/connections.c:2523 ../clients/cli/connections.c:7944 -#: ../clients/cli/connections.c:8055 ../clients/cli/connections.c:8565 -#: ../clients/cli/devices.c:1582 ../clients/cli/devices.c:1868 -#: ../clients/cli/devices.c:2037 ../clients/cli/devices.c:2145 -#: ../clients/cli/devices.c:2334 ../clients/cli/devices.c:3590 -#: ../clients/cli/devices.c:3816 ../clients/cli/general.c:928 +#: ../clients/cli/connections.c:2127 ../clients/cli/connections.c:2694 +#: ../clients/cli/connections.c:2758 ../clients/cli/connections.c:8168 +#: ../clients/cli/connections.c:8274 ../clients/cli/connections.c:8760 +#: ../clients/cli/devices.c:1570 ../clients/cli/devices.c:1856 +#: ../clients/cli/devices.c:2025 ../clients/cli/devices.c:2133 +#: ../clients/cli/devices.c:2322 ../clients/cli/devices.c:3672 +#: ../clients/cli/devices.c:3897 ../clients/cli/general.c:914 #, c-format msgid "Error: %s." msgstr "Błąd: %s." -#: ../clients/cli/connections.c:1978 +#: ../clients/cli/connections.c:2220 #, c-format msgid "no active connection on device '%s'" msgstr "brak aktywnych połączeń na urządzeniu „%s”" -#: ../clients/cli/connections.c:1986 +#: ../clients/cli/connections.c:2228 msgid "no active connection or device" msgstr "brak aktywnych połączeń na urządzeń" -#: ../clients/cli/connections.c:2006 +#: ../clients/cli/connections.c:2248 #, c-format msgid "device '%s' not compatible with connection '%s':" msgstr "urządzenie „%s” jest niezgodne z połączeniem „%s”:" -#: ../clients/cli/connections.c:2042 +#: ../clients/cli/connections.c:2281 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "urządzenie „%s” jest niezgodne z połączeniem „%s”" -#: ../clients/cli/connections.c:2045 +#: ../clients/cli/connections.c:2284 #, c-format msgid "no device found for connection '%s'" msgstr "nie odnaleziono urządzenia dla połączenia „%s”" -#: ../clients/cli/connections.c:2073 +#: ../clients/cli/connections.c:2316 #, c-format msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n" msgstr "Pomyślnie aktywowano połączenie (%s) (ścieżka aktywacji D-Bus: %s)\n" -#: ../clients/cli/connections.c:2077 ../clients/cli/connections.c:2225 -#: ../clients/cli/connections.c:6250 +#: ../clients/cli/connections.c:2320 ../clients/cli/connections.c:2468 +#: ../clients/cli/connections.c:6534 #, c-format msgid "Connection successfully activated (D-Bus active path: %s)\n" msgstr "Pomyślnie aktywowano połączenie (ścieżka aktywacji D-Bus: %s)\n" -#: ../clients/cli/connections.c:2084 ../clients/cli/connections.c:2205 +#: ../clients/cli/connections.c:2327 ../clients/cli/connections.c:2448 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Błąd: aktywacja połączenia się nie powiodła: %s" -#: ../clients/cli/connections.c:2120 +#: ../clients/cli/connections.c:2363 #, c-format msgid "Error: Timeout expired (%d seconds)" msgstr "Błąd: przekroczono czas oczekiwania (%d s)" -#: ../clients/cli/connections.c:2286 +#: ../clients/cli/connections.c:2530 #, c-format msgid "failed to read passwd-file '%s': %s" msgstr "odczytanie passwd-file „%s” się nie powiodło: %s" -#: ../clients/cli/connections.c:2298 +#: ../clients/cli/connections.c:2543 #, c-format msgid "missing colon in 'password' entry '%s'" msgstr "brak dwukropka we wpisie „password” „%s”" -#: ../clients/cli/connections.c:2306 +#: ../clients/cli/connections.c:2551 #, c-format msgid "missing dot in 'password' entry '%s'" msgstr "brak kropki we wpisie „password” „%s”" -#: ../clients/cli/connections.c:2319 +#: ../clients/cli/connections.c:2564 #, c-format msgid "invalid setting name in 'password' entry '%s'" msgstr "nieprawidłowa nazwa ustawienia we wpisie „password” „%s”" -#: ../clients/cli/connections.c:2375 +#: ../clients/cli/connections.c:2610 #, c-format msgid "unknown device '%s'." msgstr "nieznane urządzenie „%s”." -#: ../clients/cli/connections.c:2380 +#: ../clients/cli/connections.c:2615 msgid "neither a valid connection nor device given" msgstr "nie podano prawidłowego połączenia ani urządzenia" -#: ../clients/cli/connections.c:2506 ../clients/cli/devices.c:1533 -#: ../clients/cli/devices.c:2699 ../clients/cli/devices.c:3035 -#: ../clients/cli/devices.c:3644 +#: ../clients/cli/connections.c:2741 ../clients/cli/devices.c:1521 +#: ../clients/cli/devices.c:2895 ../clients/cli/devices.c:3115 +#: ../clients/cli/devices.c:3726 #, c-format msgid "Unknown parameter: %s\n" msgstr "Nieznany parametr: %s\n" -#: ../clients/cli/connections.c:2531 +#: ../clients/cli/connections.c:2766 msgid "preparing" msgstr "przygotowywanie" -#: ../clients/cli/connections.c:2551 +#: ../clients/cli/connections.c:2874 #, c-format msgid "Connection '%s' (%s) successfully deleted.\n" msgstr "Pomyślnie usunięto połączenie „%s” (%s).\n" -#: ../clients/cli/connections.c:2567 +#: ../clients/cli/connections.c:2890 #, c-format msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n" msgstr "" "Pomyślnie dezaktywowano połączenie „%s” (ścieżka aktywacji D-Bus: %s)\n" -#: ../clients/cli/connections.c:2648 ../clients/cli/connections.c:8170 -#: ../clients/cli/connections.c:8202 ../clients/cli/connections.c:8359 +#: ../clients/cli/connections.c:2939 ../clients/cli/connections.c:8381 +#: ../clients/cli/connections.c:8412 ../clients/cli/connections.c:8570 #, c-format msgid "Error: No connection specified." msgstr "Błąd: nie podano połączenia." -#: ../clients/cli/connections.c:2689 +#: ../clients/cli/connections.c:2969 #, c-format msgid "Error: '%s' is not an active connection.\n" msgstr "Błąd: „%s” nie jest aktywnym połączeniem.\n" -#: ../clients/cli/connections.c:2690 +#: ../clients/cli/connections.c:2970 #, c-format msgid "Error: not all active connections found." msgstr "Błąd: nie odnaleziono wszystkich aktywnych połączeń." -#: ../clients/cli/connections.c:2699 +#: ../clients/cli/connections.c:2978 #, c-format msgid "Error: no active connection provided." msgstr "Błąd: nie podano aktywnego połączenia." -#: ../clients/cli/connections.c:2733 +#: ../clients/cli/connections.c:3009 #, c-format msgid "Connection '%s' deactivation failed: %s\n" msgstr "Dezaktywacja połączenia „%s” się nie powiodła: %s\n" -#: ../clients/cli/connections.c:2989 ../clients/cli/connections.c:3046 -#: ../clients/common/nm-client-utils.c:169 +#: ../clients/cli/connections.c:3260 ../clients/cli/connections.c:3317 +#: ../clients/common/nm-client-utils.c:221 #, c-format msgid "'%s' not among [%s]" msgstr "„%s” nie jest w [%s]" #. We should not really come here -#: ../clients/cli/connections.c:3009 ../clients/cli/connections.c:3069 -#: ../clients/common/nm-client-utils.c:279 +#: ../clients/cli/connections.c:3280 ../clients/cli/connections.c:3340 +#: ../clients/common/nm-client-utils.c:320 #, c-format msgid "Unknown error" msgstr "Nieznany błąd" -#: ../clients/cli/connections.c:3203 +#: ../clients/cli/connections.c:3474 #, c-format msgid "Warning: master='%s' doesn't refer to any existing profile.\n" msgstr "" "Ostrzeżenie: master=„%s” nie odnosi się do żadnego istniejącego profilu.\n" -#: ../clients/cli/connections.c:3540 +#: ../clients/cli/connections.c:3811 #, c-format msgid "Error: invalid property '%s': %s." msgstr "Błąd: nieprawidłowa właściwość „%s”: %s." -#: ../clients/cli/connections.c:3557 +#: ../clients/cli/connections.c:3828 #, c-format msgid "Error: failed to modify %s.%s: %s." msgstr "Błąd: zmodyfikowanie %s.%s się nie powiodło: %s." -#: ../clients/cli/connections.c:3576 +#: ../clients/cli/connections.c:3848 #, c-format msgid "Error: failed to remove a value from %s.%s: %s." msgstr "Błąd: usunięcie wartości z %s.%s się nie powiodło: %s." -#: ../clients/cli/connections.c:3610 +#: ../clients/cli/connections.c:3882 #, c-format msgid "Error: '%s' is mandatory." msgstr "Błąd: „%s” jest wymagane." -#: ../clients/cli/connections.c:3637 +#: ../clients/cli/connections.c:3909 #, c-format msgid "Error: invalid slave type; %s." msgstr "Błąd: nieznany typ podrzędnego; %s." -#: ../clients/cli/connections.c:3645 +#: ../clients/cli/connections.c:3917 #, c-format msgid "Error: invalid connection type; %s." msgstr "Błąd: nieznany typ połączenia; %s." -#: ../clients/cli/connections.c:3722 +#: ../clients/cli/connections.c:3994 #, c-format msgid "Error: bad connection type: %s" msgstr "Błąd: błędny typ połączenia: %s" -#: ../clients/cli/connections.c:3768 +#: ../clients/cli/connections.c:4040 #, c-format msgid "Error: '%s': %s" msgstr "Błąd: „%s”: %s" -#: ../clients/cli/connections.c:3789 +#: ../clients/cli/connections.c:4061 msgid "Error: master is required" msgstr "Błąd: „master” jest wymagane" -#: ../clients/cli/connections.c:3848 +#: ../clients/cli/connections.c:4120 #, c-format msgid "Error: error adding bond option '%s=%s'." msgstr "Błąd: błąd podczas dodawania opcji wiązania „%s=%s”." -#: ../clients/cli/connections.c:3879 +#: ../clients/cli/connections.c:4151 #, c-format msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n" msgstr "" "Błąd: „%s” nie jest prawidłowym trybem monitorowania; należy użyć „%s” lub " "„%s”.\n" -#: ../clients/cli/connections.c:3910 +#: ../clients/cli/connections.c:4182 #, c-format msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]." msgstr "" "Błąd: „bt-type”: „%s” jest nieprawidłowe; należy użyć [%s, %s, %s (%s), %s]." -#: ../clients/cli/connections.c:4159 +#: ../clients/cli/connections.c:4431 #, c-format msgid "Error: value for '%s' is missing." msgstr "Błąd: brak wartości dla „%s”." -#: ../clients/cli/connections.c:4205 +#: ../clients/cli/connections.c:4477 msgid "Error: . argument is missing." msgstr "Błąd: brak parametru .." -#: ../clients/cli/connections.c:4228 +#: ../clients/cli/connections.c:4500 #, c-format msgid "Error: invalid or not allowed setting '%s': %s." msgstr "Błąd: nieprawidłowe lub niedozwolone ustawienie „%s”: %s." -#: ../clients/cli/connections.c:4274 ../clients/cli/connections.c:4290 +#: ../clients/cli/connections.c:4546 ../clients/cli/connections.c:4562 #, c-format msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)." msgstr "Błąd: „%s” jest niejednoznaczne (%s.%s lub %s.%s)." -#: ../clients/cli/connections.c:4308 +#: ../clients/cli/connections.c:4580 #, c-format msgid "Error: invalid . '%s'." msgstr "Błąd: nieprawidłowe . „%s”." -#: ../clients/cli/connections.c:4352 ../clients/cli/connections.c:7995 +#: ../clients/cli/connections.c:4624 ../clients/cli/connections.c:8214 #, c-format msgid "Error: Failed to add '%s' connection: %s" msgstr "Błąd: dodanie połączenia „%s” się nie powiodło: %s" -#: ../clients/cli/connections.c:4370 +#: ../clients/cli/connections.c:4642 #, c-format msgid "" "Warning: There is another connection with the name '%1$s'. Reference the " @@ -1351,12 +1311,47 @@ msgstr[2] "" "Ostrzeżenie: istnieje %3$u innych połączeń o nazwie „%1$s”. Należy odwoływać " "się do połączenia za pomocą UUID „%2$s”\n" -#: ../clients/cli/connections.c:4379 +#: ../clients/cli/connections.c:4651 #, c-format msgid "Connection '%s' (%s) successfully added.\n" msgstr "Pomyślnie dodano połączenie „%s” (%s).\n" -#: ../clients/cli/connections.c:4517 +#: ../clients/cli/connections.c:4704 ../clients/cli/connections.c:6651 +#: ../clients/cli/connections.c:6652 ../clients/cli/devices.c:876 +#: ../clients/cli/devices.c:1164 ../clients/cli/devices.c:1165 +#: ../clients/cli/devices.c:1166 ../clients/cli/devices.c:1167 +#: ../clients/cli/devices.c:1168 ../clients/cli/devices.c:1205 +#: ../clients/cli/devices.c:1207 ../clients/cli/devices.c:1208 +#: ../clients/cli/devices.c:1238 ../clients/cli/devices.c:1239 +#: ../clients/cli/devices.c:1240 ../clients/cli/devices.c:1241 +#: ../clients/cli/devices.c:1242 ../clients/cli/devices.c:1243 +#: ../clients/cli/devices.c:1244 ../clients/cli/devices.c:1246 +#: ../clients/cli/devices.c:1248 ../clients/cli/general.c:157 +#: ../clients/cli/utils.h:220 ../clients/common/nm-client-utils.c:301 +#: ../clients/common/nm-meta-setting-desc.c:754 +#: ../clients/common/nm-meta-setting-desc.c:2676 +msgid "no" +msgstr "nie" + +#. "CAPABILITIES" +#: ../clients/cli/connections.c:4705 ../clients/cli/connections.c:6651 +#: ../clients/cli/connections.c:6652 ../clients/cli/devices.c:876 +#: ../clients/cli/devices.c:1164 ../clients/cli/devices.c:1165 +#: ../clients/cli/devices.c:1166 ../clients/cli/devices.c:1167 +#: ../clients/cli/devices.c:1168 ../clients/cli/devices.c:1205 +#: ../clients/cli/devices.c:1207 ../clients/cli/devices.c:1208 +#: ../clients/cli/devices.c:1238 ../clients/cli/devices.c:1239 +#: ../clients/cli/devices.c:1240 ../clients/cli/devices.c:1241 +#: ../clients/cli/devices.c:1242 ../clients/cli/devices.c:1243 +#: ../clients/cli/devices.c:1244 ../clients/cli/devices.c:1246 +#: ../clients/cli/devices.c:1248 ../clients/cli/general.c:156 +#: ../clients/cli/utils.h:220 ../clients/common/nm-client-utils.c:299 +#: ../clients/common/nm-meta-setting-desc.c:754 +#: ../clients/common/nm-meta-setting-desc.c:2673 +msgid "yes" +msgstr "tak" + +#: ../clients/cli/connections.c:4789 #, c-format msgid "" "You can specify this option more than once. Press when you're done.\n" @@ -1365,7 +1360,7 @@ msgstr "" "ukończeniu.\n" #. Ask for optional arguments. -#: ../clients/cli/connections.c:4616 +#: ../clients/cli/connections.c:4888 #, c-format msgid "There is %d optional setting for %s.\n" msgid_plural "There are %d optional settings for %s.\n" @@ -1373,7 +1368,7 @@ msgstr[0] "Istnieje %d opcjonalne ustawienie dla %s.\n" msgstr[1] "Istnieją %d opcjonalne ustawienia dla %s.\n" msgstr[2] "Istnieje %d opcjonalnych ustawień dla %s.\n" -#: ../clients/cli/connections.c:4619 +#: ../clients/cli/connections.c:4891 #, c-format msgid "Do you want to provide it? %s" msgid_plural "Do you want to provide them? %s" @@ -1381,22 +1376,22 @@ msgstr[0] "Podać go? %s" msgstr[1] "Podać je? %s" msgstr[2] "Podać je? %s" -#: ../clients/cli/connections.c:4755 ../clients/cli/utils.c:303 +#: ../clients/cli/connections.c:5024 ../clients/cli/utils.c:292 #, c-format msgid "Error: value for '%s' argument is required." msgstr "Błąd: wartość dla parametru „%s” jest wymagana." -#: ../clients/cli/connections.c:4761 +#: ../clients/cli/connections.c:5031 #, c-format msgid "Error: 'save': %s." msgstr "Błąd: „save”: %s." -#: ../clients/cli/connections.c:4849 ../clients/cli/connections.c:4860 +#: ../clients/cli/connections.c:5117 ../clients/cli/connections.c:5128 #, c-format msgid "Error: '%s' argument is required." msgstr "Błąd: parametr „%s” jest wymagany." -#: ../clients/cli/connections.c:5838 +#: ../clients/cli/connections.c:6093 #, c-format msgid "['%s' setting values]\n" msgstr "[wartości ustawienia „%s”]\n" @@ -1404,7 +1399,7 @@ msgstr "[wartości ustawienia „%s”]\n" #. TRANSLATORS: do not translate command names and keywords before :: #. * However, you should translate terms enclosed in <>. #. -#: ../clients/cli/connections.c:5917 +#: ../clients/cli/connections.c:6202 #, c-format msgid "" "---[ Main menu ]---\n" @@ -1441,7 +1436,7 @@ msgstr "" "nmcli :: konfiguracja nmcli\n" "quit :: kończy działanie nmcli\n" -#: ../clients/cli/connections.c:5944 +#: ../clients/cli/connections.c:6229 #, c-format msgid "" "goto [.] | :: enter setting/property for editing\n" @@ -1462,7 +1457,7 @@ msgstr "" " nmcli connection> goto secondaries\n" " nmcli> goto ipv4.addresses\n" -#: ../clients/cli/connections.c:5951 +#: ../clients/cli/connections.c:6236 #, c-format msgid "" "remove [.] :: remove setting or reset property value\n" @@ -1483,7 +1478,7 @@ msgstr "" "Przykłady: nmcli> remove wifi-sec\n" " nmcli> remove eth.mtu\n" -#: ../clients/cli/connections.c:5958 +#: ../clients/cli/connections.c:6243 #, c-format msgid "" "set [. ] :: set property value\n" @@ -1498,7 +1493,7 @@ msgstr "" "\n" "Przykład: nmcli> set con.id Moje połączenie\n" -#: ../clients/cli/connections.c:5963 +#: ../clients/cli/connections.c:6248 #, c-format msgid "" "describe [.] :: describe property\n" @@ -1511,7 +1506,7 @@ msgstr "" "Wyświetla opis właściwości. Wszystkie ustawienia i właściwości usługi NM\n" "można znaleźć na stronie podręcznika nm-settings(5).\n" -#: ../clients/cli/connections.c:5968 +#: ../clients/cli/connections.c:6253 #, c-format msgid "" "print [all] :: print setting or connection values\n" @@ -1526,7 +1521,7 @@ msgstr "" "\n" "Przykład: nmcli ipv4> print all\n" -#: ../clients/cli/connections.c:5973 +#: ../clients/cli/connections.c:6258 #, c-format msgid "" "verify [all | fix] :: verify setting or connection validity\n" @@ -1550,7 +1545,7 @@ msgstr "" " nmcli> verify fix\n" " nmcli bond> verify\n" -#: ../clients/cli/connections.c:5982 +#: ../clients/cli/connections.c:6267 #, c-format msgid "" "save [persistent|temporary] :: save the connection\n" @@ -1576,7 +1571,7 @@ msgstr "" "między ponownymi uruchomieniami. Aby w pełni usunąć trwałe połączenie,\n" "należy usunąć profil połączenia.\n" -#: ../clients/cli/connections.c:5993 +#: ../clients/cli/connections.c:6278 #, c-format msgid "" "activate [] [/|] :: activate the connection\n" @@ -1598,7 +1593,7 @@ msgstr "" " poprzedzić znakiem /, kiedy nie podano\n" " )\n" -#: ../clients/cli/connections.c:6000 ../clients/cli/connections.c:6159 +#: ../clients/cli/connections.c:6285 ../clients/cli/connections.c:6443 #, c-format msgid "" "back :: go to upper menu level\n" @@ -1607,7 +1602,7 @@ msgstr "" "back :: przechodzi do menu wyższego poziomu\n" "\n" -#: ../clients/cli/connections.c:6003 +#: ../clients/cli/connections.c:6288 #, c-format msgid "" "help/? [] :: help for the nmcli commands\n" @@ -1616,7 +1611,7 @@ msgstr "" "help/? [] :: pomoc dla poleceń nmcli\n" "\n" -#: ../clients/cli/connections.c:6006 +#: ../clients/cli/connections.c:6291 #, c-format msgid "" "nmcli [ ] :: nmcli configuration\n" @@ -1643,7 +1638,7 @@ msgstr "" " nmcli> nmcli save-confirmation no\n" " nmcli> nmcli prompt-color 3\n" -#: ../clients/cli/connections.c:6028 ../clients/cli/connections.c:6165 +#: ../clients/cli/connections.c:6313 ../clients/cli/connections.c:6449 #, c-format msgid "" "quit :: exit nmcli\n" @@ -1656,8 +1651,8 @@ msgstr "" "To polecenie kończy działanie nmcli. Jeśli modyfikowane połączenie nie jest " "zapisane, użytkownik zostanie poproszony o potwierdzenie działania.\n" -#: ../clients/cli/connections.c:6033 ../clients/cli/connections.c:6170 -#: ../clients/cli/connections.c:6606 ../clients/cli/connections.c:7563 +#: ../clients/cli/connections.c:6318 ../clients/cli/connections.c:6454 +#: ../clients/cli/connections.c:6873 ../clients/cli/connections.c:7800 #, c-format msgid "Unknown command: '%s'\n" msgstr "Nieznane polecenie: „%s”\n" @@ -1665,7 +1660,7 @@ msgstr "Nieznane polecenie: „%s”\n" #. TRANSLATORS: do not translate command names and keywords before :: #. * However, you should translate terms enclosed in <>. #. -#: ../clients/cli/connections.c:6099 +#: ../clients/cli/connections.c:6383 #, c-format msgid "" "---[ Property menu ]---\n" @@ -1692,7 +1687,7 @@ msgstr "" "help/? [] :: wyświetla tę pomoc lub opis polecenia\n" "quit :: kończy działanie nmcli\n" -#: ../clients/cli/connections.c:6124 +#: ../clients/cli/connections.c:6408 #, c-format msgid "" "set [] :: set new value\n" @@ -1703,7 +1698,7 @@ msgstr "" "\n" "To polecenie ustawia podaną tej właściwości\n" -#: ../clients/cli/connections.c:6128 +#: ../clients/cli/connections.c:6412 #, c-format msgid "" "add [] :: append new value to the property\n" @@ -1718,7 +1713,7 @@ msgstr "" "jest typu kontener. W przypadku właściwości zawierających jedną wartość " "zastępuje tę wartość (podobnie jak „set”).\n" -#: ../clients/cli/connections.c:6134 +#: ../clients/cli/connections.c:6418 #, c-format msgid "" "change :: change current value\n" @@ -1729,7 +1724,7 @@ msgstr "" "\n" "Wyświetla bieżącą wartość i umożliwia jej modyfikację.\n" -#: ../clients/cli/connections.c:6138 +#: ../clients/cli/connections.c:6422 #, c-format msgid "" "remove [||