summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2022-02-24 19:31:08 +0100
committerLubomir Rintel <lkundrak@v3.sk>2022-02-24 19:31:09 +0100
commit2c9d3ef6c7f8604e9ba1fad81e0d1f316e2fc7d7 (patch)
treed4c1c0f9c8236756ac4e11ae31ff801cb1428df9
parentccb20e23e335b13f6b71354737d653ed3e88101b (diff)
parent38290b1b8699937ea1137063a4d5f9757c21dec5 (diff)
release: bump version to 1.37.1 (development)1.37.1-dev
-rw-r--r--.gitlab-ci.yml12
-rw-r--r--.gitlab-ci/ci.template2
-rw-r--r--.gitlab-ci/config.yml2
-rwxr-xr-x.gitlab-ci/fedora-install.sh16
-rw-r--r--Makefile.am18
-rw-r--r--NEWS16
-rw-r--r--TODO123
-rw-r--r--configure.ac12
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec20
-rwxr-xr-xcontrib/scripts/NM-log2
-rw-r--r--data/85-nm-unmanaged.rules6
-rwxr-xr-xexamples/python/gi/checkpoint.py117
-rwxr-xr-xexamples/python/gi/dns.py14
-rwxr-xr-xexamples/python/gi/get-devices.py30
-rwxr-xr-xexamples/python/gi/get-lldp-neighbors.py6
-rw-r--r--meson.build7
-rw-r--r--meson_options.txt2
-rw-r--r--po/LINGUAS1
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/ar.po12838
-rw-r--r--src/contrib/nm-vpn-editor-plugin-call.h6
-rw-r--r--src/core/NetworkManagerUtils.c9
-rw-r--r--src/core/NetworkManagerUtils.h30
-rw-r--r--src/core/devices/nm-device-ethernet.c2
-rw-r--r--src/core/devices/nm-device.c31
-rw-r--r--src/core/devices/nm-device.h53
-rw-r--r--src/core/devices/ovs/nm-ovsdb.c15
-rw-r--r--src/core/devices/wifi/nm-device-iwd-p2p.c4
-rw-r--r--src/core/devices/wifi/nm-device-iwd.c4
-rw-r--r--src/core/devices/wifi/nm-device-wifi-p2p.c4
-rw-r--r--src/core/devices/wifi/nm-device-wifi.c85
-rw-r--r--src/core/devices/wwan/nm-device-modem.c4
-rw-r--r--src/core/dns/nm-dns-dnsmasq.c4
-rw-r--r--src/core/nm-connectivity.c1
-rw-r--r--src/core/nm-firewall-utils.c4
-rw-r--r--src/core/nm-manager.c527
-rw-r--r--src/core/nm-pacrunner-manager.c4
-rw-r--r--src/core/nm-policy.c5
-rw-r--r--src/core/nm-rfkill-manager.c223
-rw-r--r--src/core/nm-rfkill-manager.h34
-rw-r--r--src/core/platform/tests/test-common.c6
-rw-r--r--src/core/platform/tests/test-platform-general.c6
-rw-r--r--src/core/ppp/nm-ppp-manager.c2
-rw-r--r--src/core/settings/nm-secret-agent.c2
-rw-r--r--src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c2
-rw-r--r--src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c5
-rw-r--r--src/core/tests/test-core.c29
-rw-r--r--src/libnm-client-impl/tests/test-libnm.c12
-rw-r--r--src/libnm-client-public/nm-client.h6
-rw-r--r--src/libnm-client-test/nm-test-utils-impl.c2
-rw-r--r--src/libnm-core-impl/meson.build14
-rw-r--r--src/libnm-core-impl/nm-crypto-null.c104
-rw-r--r--src/libnm-core-impl/nm-setting-connection.c93
-rw-r--r--src/libnm-core-impl/nm-setting-ip-config.c2
-rw-r--r--src/libnm-core-impl/nm-setting-match.c244
-rw-r--r--src/libnm-core-impl/nm-setting-private.h45
-rw-r--r--src/libnm-core-impl/nm-setting.c83
-rw-r--r--src/libnm-core-impl/tests/test-general-enums.h10
-rw-r--r--src/libnm-core-impl/tests/test-general.c2
-rw-r--r--src/libnm-core-impl/tests/test-setting.c17
-rw-r--r--src/libnm-core-intern/nm-core-internal.h16
-rw-r--r--src/libnm-core-intern/nm-meta-setting-base-impl.h18
-rw-r--r--src/libnm-core-public/nm-connection.h18
-rw-r--r--src/libnm-core-public/nm-dbus-interface.h238
-rw-r--r--src/libnm-core-public/nm-keyfile.h4
-rw-r--r--src/libnm-core-public/nm-setting-8021x.h12
-rw-r--r--src/libnm-core-public/nm-setting-dcb.h10
-rw-r--r--src/libnm-core-public/nm-setting-ip-config.h34
-rw-r--r--src/libnm-core-public/nm-setting-ip-tunnel.h16
-rw-r--r--src/libnm-core-public/nm-setting-team.h10
-rw-r--r--src/libnm-core-public/nm-setting-vlan.h20
-rw-r--r--src/libnm-core-public/nm-setting-wired.h28
-rw-r--r--src/libnm-core-public/nm-setting-wireless-security.h12
-rw-r--r--src/libnm-core-public/nm-setting-wireless.h2
-rw-r--r--src/libnm-core-public/nm-setting.h12
-rw-r--r--src/libnm-core-public/nm-version-macros.h.in1
-rw-r--r--src/libnm-core-public/nm-version.h14
-rw-r--r--src/libnm-glib-aux/nm-json-aux.h5
-rw-r--r--src/libnm-glib-aux/nm-logging-fwd.h117
-rw-r--r--src/libnm-glib-aux/nm-macros-internal.h26
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.c2
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h27
-rw-r--r--src/libnm-glib-aux/nm-test-utils.h14
-rw-r--r--src/libnm-glib-aux/nm-value-type.h66
-rw-r--r--src/libnm-platform/nm-linux-platform.c29
-rw-r--r--src/libnm-platform/nm-platform.c5
-rw-r--r--src/libnm-platform/nm-platform.h22
-rw-r--r--src/libnm-platform/nmp-object.h18
-rw-r--r--src/libnm-platform/tests/test-nm-platform.c2
-rw-r--r--src/libnm-platform/wifi/nm-wifi-utils-nl80211.c6
-rw-r--r--src/libnm-platform/wifi/nm-wifi-utils-wext.c6
-rw-r--r--src/libnm-platform/wifi/nm-wifi-utils.c3
-rw-r--r--src/libnmc-base/nm-client-utils.c2
-rw-r--r--src/libnmc-setting/nm-meta-setting-base-impl.h18
-rw-r--r--src/nm-cloud-setup/nm-http-client.c1
-rw-r--r--src/nm-dispatcher/tests/test-dispatcher-envp.c7
-rw-r--r--src/nmcli/nmcli.c8
-rw-r--r--src/nmtui/nmt-mac-entry.h6
98 files changed, 1812 insertions, 14023 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e00df3d1e3..cb03d400bc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,7 @@
########################################
-.templates_sha: &template_sha 14731f78c23c7b523a85a26a068ade9ac1ecd2f3 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+.templates_sha: &template_sha 3e66ea37e5672bb8f48e3056ba92915b5fc5b888 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
# Alpine container builder template
@@ -47,11 +47,11 @@ variables:
#
# This is done by running `ci-fairy generate-template` and possibly bump
# ".default_tag".
- FEDORA_TAG: '2021-11-09.0-9dd1e1db773a'
- UBUNTU_TAG: '2021-11-09.0-577176f5eb6c'
- DEBIAN_TAG: '2021-11-09.0-577176f5eb6c'
- CENTOS_TAG: '2021-11-09.0-9dd1e1db773a'
- ALPINE_TAG: '2021-11-09.0-a28badea28eb'
+ FEDORA_TAG: '2022-02-21.0-f42312ef8cae'
+ UBUNTU_TAG: '2022-02-21.0-ab561a08b357'
+ DEBIAN_TAG: '2022-02-21.0-ab561a08b357'
+ CENTOS_TAG: '2022-02-21.0-f42312ef8cae'
+ ALPINE_TAG: '2022-02-21.0-bad60eeb6900'
FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
UBUNTU_EXEC: 'bash .gitlab-ci/debian-install.sh'
diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template
index bfaf858fad..20ffe286b2 100644
--- a/.gitlab-ci/ci.template
+++ b/.gitlab-ci/ci.template
@@ -9,7 +9,7 @@
########################################
-.templates_sha: &template_sha 14731f78c23c7b523a85a26a068ade9ac1ecd2f3 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+.templates_sha: &template_sha 3e66ea37e5672bb8f48e3056ba92915b5fc5b888 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
{% for distro in distributions|sort(attribute="name") %}
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index eb96ce18e8..cbbc35c3ec 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -8,7 +8,7 @@
#
# We're happy to rebuild all containers when one changes.
-.default_tag: &default_tag '2021-11-09.0'
+.default_tag: &default_tag '2022-02-21.0'
# The list of all distributions we want to create job for.
diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh
index eff9e52432..6a4b91bfe6 100755
--- a/.gitlab-ci/fedora-install.sh
+++ b/.gitlab-ci/fedora-install.sh
@@ -5,13 +5,18 @@ set -ex
IS_FEDORA=0
IS_CENTOS=0
IS_CENTOS_7=0
+IS_CENTOS_8=0
grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1
grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1
if [ $IS_CENTOS = 1 ]; then
- grep -q '^VERSION_ID=.*\<7\>' /etc/os-release && IS_CENTOS_7=1
+ if grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ; then
+ IS_CENTOS_7=1
+ elif grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ; then
+ IS_CENTOS_8=1
+ fi
fi
-if [ $IS_CENTOS = 1 ]; then
+ if [ $IS_CENTOS = 1 ]; then
if [ $IS_CENTOS_7 = 1 ]; then
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y glibc-common
@@ -19,6 +24,13 @@ if [ $IS_CENTOS = 1 ]; then
locale -a
yum install -y python36-dbus python36-gobject-base
else
+ if [ $IS_CENTOS_8 = 1 ]; then
+ # CentOS Linux 8 is now EOF and plain `dnf upgrade` does not work. We need
+ # to patch the mirror list.
+ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
+ sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
+ fi
+
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --set-enabled powertools || \
diff --git a/Makefile.am b/Makefile.am
index ab06c6db6e..af6743ec82 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1471,6 +1471,24 @@ src_libnm_core_impl_libnm_crypto_nss_la_LIBADD = \
$(NSS_LIBS)
endif
+if !WITH_GNUTLS
+if !WITH_NSS
+libnm_crypto_lib = src/libnm-core-impl/libnm-crypto-null.la
+else
+check_ltlibraries += src/libnm-core-impl/libnm-crypto-null.la
+endif
+else
+check_ltlibraries += src/libnm-core-impl/libnm-crypto-null.la
+endif
+
+src_libnm_core_impl_libnm_crypto_null_la_SOURCES = src/libnm-core-impl/nm-crypto-null.c
+src_libnm_core_impl_libnm_crypto_null_la_CPPFLAGS = \
+ $(src_libnm_core_impl_libnm_core_impl_la_CPPFLAGS)
+src_libnm_core_impl_libnm_crypto_null_la_LDFLAGS = \
+ $(src_libnm_core_impl_libnm_core_impl_la_LDFLAGS)
+src_libnm_core_impl_libnm_crypto_null_la_LIBADD = \
+ $(GLIB_LIBS)
+
noinst_LTLIBRARIES += $(libnm_crypto_lib)
###############################################################################
diff --git a/NEWS b/NEWS
index e6a608013b..35f9be8c51 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,20 @@
=============================================
+NetworkManager-1.38
+Overview of changes since NetworkManager-1.36
+=============================================
+
+This is a snapshot of NetworkManager development. The API is
+subject to change and not guaranteed to be compatible with
+the later release.
+USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
+
+* Wi-Fi hotspots will use a (stable) random channel number unless one is
+ chosen manually.
+* libnm: add new dummy crypto backend "null" that does nothing.
+* Veth devices with name "eth*" are now managed by default via the
+ udev rule. This is to support managing the network in LXD containers.
+
+=============================================
NetworkManager-1.36
Overview of changes since NetworkManager-1.34
=============================================
diff --git a/TODO b/TODO
index efb1e909e1..1097510341 100644
--- a/TODO
+++ b/TODO
@@ -2,7 +2,107 @@ So you're interested in hacking on NetworkManager? Here's some cool
stuff you could do...
-* Use netlink API instead of ioctl based ethtool.
+Improve Shutdown of NetworkManager
+==================================
+
+NetworkManager quits when receiving SIGTERM.
+
+Currently, it stops iterating the GMainContext (g_main_loop_quit()) and performs
+some synchronous cleanup actions.
+
+That is problematic for the following reasons.
+
+- We generally avoid blocking operations in NetworkManager (except currently during shutdown).
+ Hence it's normal at any time to have async operations pending. Async operations
+ with glib basically mean that we will receive a callback from the mainloop. For that
+ to work, we need to keep iterating the GMainContext. If we stop iterating,
+ we cannot cleanup the pending operations and leak resources. It's not possible
+ to free all resources, unless we iterate as long as we have pending operations.
+
+ That is because even if you g_cancellable_cancel() an sync operation, you still
+ get a callback. The fact that an async operation will always get (one) callback
+ invocation is an important guarantee in glib. If we no longer have that guarantee,
+ it would be effectively impossible to implement cancellation and proper cleanup
+ and it would require to do that for all async operations (changing the guaranteed
+ semantics of all async operations).
+
+ Often it wouldn't matter whether we free all resources during shutdown. However,
+ unless we have a strict policy and method for freeing all, we will inevitably
+ leak resources where it does matter.
+
+ It's anyway hard to move from a "running" state to a "shutdown" state. It's
+ impossible to get right, if we have pending async operations that no longer can
+ complete.
+
+- Once we stop iterating the mainloop, we also cannot make async operations anymore.
+ This reduces our shutdown to blocking operations (or a string of async operations that
+ get chained together to one blocking operation, e.g. by using a separate GMainContext).
+ This is very limiting, also because it's getting really hard to do things in
+ parallel (unless you strongly intertwine them or essentially re-implement a
+ main loop). Doing things in parallel will be necessary, for example if deactivate
+ two devices, then both should shutdown in parallel.
+
+The real problem is that our shutdown is really messy due to this. And this is a
+fundamental limitation of the current implementation.
+
+The solution will be the following.
+
+When we receive SIGTERM we go into shutdown mode. This may mean to reject new D-Bus
+requests and in general to move into a shutdown state. All the while we keep iterating
+the GMainContext, but we also start to tear down and cancel/complete pending operations.
+While we do that, we may need to start new async operations. For example, during
+shutdown we may want to kill dnsmasq, which itself is a new asynchronous operation.
+
+The API nm_shutdown_wait_obj_register_object() and family allow for things to register
+themselves to block shutdown. This works using weak pointers. Basically, NetworkManager will
+keep iterating the GMainContext as long as we have objects registered there. While shutting
+down, we expect those objects to complete and unregister themselves.
+
+Currently, our singleton objects (NM_DEFINE_SINGLETON_REGISTER) get unrefed after
+the `main()` functions. For some/all of those singletons, during SIGTERM we may
+want to register them as nm_shutdown_wait_obj_register_object() and unref them when
+we initiate the shutdown.
+Singletons also use weak pointers and can work together with nm_shutdown_wait_obj_register_object().
+For that to work, we need that nobody is calling the singleton getter *after* shutdown
+starts. That means, instead of using the singleton getter, you need to get the reference
+from somebody. For example, NMDevice has a reference to a NMNetns and NMPlatform
+and should use those instead of NM_PLATFORM_GET(). For those singeltons that works
+this way (maybe all of them), the singleton getters only works reliably before
+shutdown starts. And no singleton getters work reliably after the main() function
+because singletons unref themselves. In general, avoid singleton getters and see
+that somebody hands you a reference.
+
+After NM_SHUTDOWN_TIMEOUT_MAX_MSEC we loose patience that it's taking too long.
+We now log a debug message about who is still blocking shutdown.
+We also cancel the cancellables from nm_shutdown_wait_obj_register_cancellable()
+and give NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC more time. If we then are still
+not complete, we log an error message about who is still blocking shutdown,
+and just exit with an assertion failure. We encountered a bug.
+
+This means, *all* async operations in NetworkManager must either be cancellable (and
+afterwards complete fast) or they must not take long to begin with. In particular,
+every individual async operation must be completed in at most NM_SHUTDOWN_TIMEOUT_MAX_MSEC,
+and all async cleanup operations must complete in NM_SHUTDOWN_TIMEOUT_MAX_MSEC too.
+
+So if you make an async operation not cancellable, but guarantee that you don't take
+longer than NM_SHUTDOWN_TIMEOUT_MAX_MSEC you are mostly fine (better would be to actually
+complete fast, if you can). That's why reaching NM_SHUTDOWN_TIMEOUT_MAX_MSEC timeout is
+still not a bug scenario. But reaching NM_SHUTDOWN_TIMEOUT_MAX_MSEC+NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC
+is a bug.
+
+As NM_SHUTDOWN_TIMEOUT_MAX_MSEC and nm_shutdown_wait_obj_register_object() API already exists,
+the first step is to ensure that all parts of NetworkManager can be shutdown and be terminated
+in a timely manner.
+
+The second step is to replace the current sync cleanup operations with iterating the
+GMainContext. This is gonna be difficult.
+
+Search for `FIXME(shutdown` for places that are related to this effort and that need
+consideration.
+
+
+Use netlink API instead of ioctl based ethtool
+==============================================
NetworkManager uses ethtool API to set/obtain certain settings of network
devices. This is an ioctl based API and implmented in "src/platform/nm-platform-utils.c".
@@ -15,14 +115,16 @@ also implements this API, however it is under an incompatible license,
so better don't look and make sure not to use the code.
-* Add 802-1x capability to nmtui.
+Add 802-1x capability to nmtui
+==============================
Add dialogs to nmtui for 802-1x. This will be useful for ethernet (with 802-1x
port authentication), enterprise Wi-Fi and MACSec. From the GUI and dialog design,
possibly get inspired by nm-connection-editor.
-* Ethernet Network Auto-detection
+Ethernet Network Auto-detection
+===============================
There are various methods we can use to autodetect which wired network connection
to use if the user connects to more than one wired network on a frequent basis.
@@ -80,7 +182,8 @@ un-authenticated connections and that additional credentials are required to
successfully connect to this network.
-* VPN re-connect (bgo #349151)
+VPN re-connect (bgo #349151)
+============================
NM should remember whether a VPN was connected if a connection disconnects
(like Wi-Fi drops out or short carrier drop) or if the laptop goes to sleep.
@@ -90,7 +193,8 @@ the VPN because Wi-Fi choked for 10 seconds, but reconnect the VPN if it was
connected before the drop.
-* VPN IP Methods
+VPN IP Methods
+==============
Some VPNs (openvpn with TAP for example) require that DHCP is run on a
pseudo-ethernet device to obtain addressing information. Currenty, this is not
@@ -133,7 +237,8 @@ failure of the VPN connection, just like DHCP timeouts and lease-renewal
failures do for other devices (see dhcp_state_changed() in nm-device.c).
-* VPN Service Daemon Secret Requests
+VPN Service Daemon Secret Requests
+==================================
In addition to NM asking the service daemons whether more secrets are required,
VPN service daemons (like nm-vpnc-service, nm-openvpn-service, etc) should be
@@ -171,7 +276,8 @@ challenge-response and does not use the "--non-inter" flag which suppresses that
behavior.
-* WPS
+WPS
+===
wpa_supplicant has support for WPS (Wifi Protected Setup, basically Bluetooth-
like PIN codes for setting up a wifi connection) and we should add support for
@@ -215,7 +321,8 @@ because the user has no physical access to the router itself, but has been given
as passphrase/PSK instead.
-* Better Tablet/Mobile Behavior
+Better Tablet/Mobile Behavior
+=============================
There are a few components to this:
diff --git a/configure.ac b/configure.ac
index f755bf52f0..ad1a5b3957 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], [36])
-m4_define([nm_micro_version], [0])
+m4_define([nm_minor_version], [37])
+m4_define([nm_micro_version], [1])
m4_define([nm_version],
[nm_major_version.nm_minor_version.nm_micro_version])
@@ -321,7 +321,7 @@ AC_ARG_WITH([systemdsystemunitdir],
[Directory for systemd service files]))
# default location
AS_IF([test -z "$with_systemdsystemunitdir" && $PKG_CONFIG systemd],
- with_systemdsystemunitdir="\$(prefix)/lib/systemd/system")
+ with_systemdsystemunitdir=`$PKG_CONFIG systemd '--define-variable=prefix=${prefix}' '--define-variable=root_prefix=${prefix}' --variable systemdsystemunitdir`)
AS_IF([test -z "$with_systemdsystemunitdir"], with_systemdsystemunitdir=no)
# add conditional and subst
AM_CONDITIONAL(HAVE_SYSTEMD, [test "$with_systemdsystemunitdir" != no])
@@ -716,7 +716,7 @@ AM_CONDITIONAL(HAVE_CRYPTO_GNUTLS, test "${have_crypto_gnutls}" = 'yes')
AM_CONDITIONAL(HAVE_CRYPTO_NSS, test "${have_crypto_nss}" = 'yes')
AC_ARG_WITH(crypto,
- AS_HELP_STRING([--with-crypto=nss|gnutls],
+ AS_HELP_STRING([--with-crypto=nss|gnutls|null],
[Cryptography library to use for certificate and key operations]),
with_crypto=$withval,
with_crypto=nss)
@@ -728,8 +728,10 @@ elif test "$with_crypto" = 'gnutls'; then
if test "${have_crypto_gnutls}" != "yes"; then
AC_MSG_ERROR([No usable gnutls found for --with-crypto=gnutls])
fi
+elif test "$with_crypto" = 'null'; then
+ :
else
- AC_MSG_ERROR([Please choose either 'nss' or 'gnutls' for certificate and crypto operations])
+ AC_MSG_ERROR([Please choose either 'nss', 'gnutls' or 'null' for certificate and crypto operations])
fi
AM_CONDITIONAL(WITH_NSS, test "$with_crypto" = 'nss')
AM_CONDITIONAL(WITH_GNUTLS, test "$with_crypto" = 'gnutls')
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index 7c84bede35..83bfaa93ae 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -23,8 +23,6 @@
%global obsoletes_ppp_plugin 1:1.5.3
%global obsoletes_initscripts_updown 1:1.35.4
-%global systemd_dir %{_prefix}/lib/systemd/system
-%global sysctl_dir %{_prefix}/lib/sysctl.d
%global nmlibdir %{_prefix}/lib/%{name}
%global nmplugindir %{_libdir}/%{name}/%{version}-%{release}
@@ -685,7 +683,6 @@ Preferably use nmcli instead.
%endif
-Dsession_tracking=systemd \
-Dsuspend_resume=systemd \
- -Dsystemdsystemunitdir=%{systemd_dir} \
-Dsystem_ca_path=/etc/pki/tls/cert.pem \
-Ddbus_conf_dir=%{dbus_sys_dir} \
-Dtests=yes \
@@ -821,7 +818,6 @@ intltoolize --automake --copy --force
--with-ebpf=%{ebpf_enabled} \
--with-session-tracking=systemd \
--with-suspend-resume=systemd \
- --with-systemdsystemunitdir=%{systemd_dir} \
--with-system-ca-path=/etc/pki/tls/cert.pem \
--with-dbus-sys-dir=%{dbus_sys_dir} \
--with-tests=yes \
@@ -914,7 +910,7 @@ make -k %{?_smp_mflags} check || :
%pre
-if [ -f "%{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service" ] ; then
+if [ -f "%{_unitdir}/network-online.target.wants/NetworkManager-wait-online.service" ] ; then
# older versions used to install this file, effectively always enabling
# NetworkManager-wait-online.service. We no longer do that and rely on
# preset.
@@ -1053,10 +1049,10 @@ fi
%{_prefix}/lib/firewalld/zones/nm-shared.xml
%endif
# systemd stuff
-%{systemd_dir}/NetworkManager.service
-%{systemd_dir}/NetworkManager-wait-online.service
-%{systemd_dir}/NetworkManager-dispatcher.service
-%{systemd_dir}/nm-priv-helper.service
+%{_unitdir}/NetworkManager.service
+%{_unitdir}/NetworkManager-wait-online.service
+%{_unitdir}/NetworkManager-dispatcher.service
+%{_unitdir}/nm-priv-helper.service
%dir %{_datadir}/doc/NetworkManager/examples
%{_datadir}/doc/NetworkManager/examples/server.conf
%doc NEWS AUTHORS README CONTRIBUTING.md TODO
@@ -1101,7 +1097,7 @@ fi
%if %{with ovs}
%files ovs
%{nmplugindir}/libnm-device-plugin-ovs.so
-%{systemd_dir}/NetworkManager.service.d/NetworkManager-ovs.conf
+%{_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf
%{_mandir}/man7/nm-openvswitch.7*
%endif
@@ -1175,8 +1171,8 @@ fi
%if %{with nm_cloud_setup}
%files cloud-setup
%{_libexecdir}/nm-cloud-setup
-%{systemd_dir}/nm-cloud-setup.service
-%{systemd_dir}/nm-cloud-setup.timer
+%{_unitdir}/nm-cloud-setup.service
+%{_unitdir}/nm-cloud-setup.timer
%{nmlibdir}/dispatcher.d/90-nm-cloud-setup.sh
%{nmlibdir}/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh
%{_mandir}/man8/nm-cloud-setup.8*
diff --git a/contrib/scripts/NM-log b/contrib/scripts/NM-log
index 85d40b3524..05b7c4b940 100755
--- a/contrib/scripts/NM-log
+++ b/contrib/scripts/NM-log
@@ -38,7 +38,7 @@ NM-colorize() {
GREP_COLOR='01;31' grep -a --color=always '^\|^\(.* \)\?<\(warn> \|error>\) \[[0-9.]*\]' | \
GREP_COLOR='01;33' grep -a --color=always '^\|^\(.* \)\?<info> \[[0-9.]*\]\( .*\<is starting\>.*$\)\?' | \
GREP_COLOR='01;37' grep -a --color=always '^\|\<platform:\( (.*)\)\? signal: .*$' | \
- GREP_COLOR='01;34' grep -a --color=always '^\|\<platform\(-linux\)\?:\( (.*)\)\? link: \(add\|adding\|change\|setting\|deleting\|enslaving to master\)\>\|\<platform: routing-rule: \(adding or updating:\|delete \)\|\<platform:\( (.*)\)\? address: \(deleting\|adding or updating\) IPv. address:\? \|\<platform:\( (.*)\)\? \(route\|ip4-route\|ip6-route\|qdisc\|tfilter\): \([a-z]\+\|adding or updating\|new\[0x[0-9A-Za-z]*\]\) \|\<platform-linux: sysctl: setting ' | \
+ GREP_COLOR='01;34' grep -a --color=always '^\|\<platform\(-linux\)\?:\( (.*)\)\? link: \(add\|adding\|change\|setting\|deleting\|enslaving to master\|releasing \([0-9]\+ \)\?from master\)\>\|\<platform: routing-rule: \(adding or updating:\|delete \)\|\<platform:\( (.*)\)\? address: \(deleting\|adding or updating\) IPv. address:\? \|\<platform:\( (.*)\)\? \(route\|ip4-route\|ip6-route\|qdisc\|tfilter\): \([a-z]\+\|adding or updating\|new\[0x[0-9A-Za-z]*\]\) \|\<platform-linux: sysctl: setting ' | \
GREP_COLOR='01;35' grep -a --color=always '^\|\<audit: .*$' | \
GREP_COLOR='01;32' grep -a --color=always '^\|\<device (.*): state change: ' |
if [[ "$NM_LOG_GREP" != "" ]]; then
diff --git a/data/85-nm-unmanaged.rules b/data/85-nm-unmanaged.rules
index eae8d7ce1c..b4f805cf74 100644
--- a/data/85-nm-unmanaged.rules
+++ b/data/85-nm-unmanaged.rules
@@ -24,7 +24,11 @@ ATTR{address}=="00:1c:42:*", ENV{INTERFACE}=="vnic[0-9]*", ENV{NM_UNMANAGED}="1"
# Virtual Ethernet device pair. Often used to communicate with a peer interface
# in another net namespace and managed by libvirt, Docker or the like.
-ENV{ID_NET_DRIVER}=="veth", ENV{NM_UNMANAGED}="1"
+# Generally we don't want to mess with those. One exception would be the
+# full system containers, like LXC or LXD. LXC containers run via libvirt
+# don't use udev, so this doesn't apply. LXD does, though. To deal with the
+# LXD situation, let's treat the devices called eth* as regular ethernet.
+ENV{ID_NET_DRIVER}=="veth", ENV{INTERFACE}!="eth[0-9]*", ENV{NM_UNMANAGED}="1"
# USB gadget device. Unmanage by default, since whatever created it
# might want to set it up itself (e.g. activate an ipv4.method=shared
diff --git a/examples/python/gi/checkpoint.py b/examples/python/gi/checkpoint.py
index 0a42fa1cc0..b63b1c37a4 100755
--- a/examples/python/gi/checkpoint.py
+++ b/examples/python/gi/checkpoint.py
@@ -5,6 +5,7 @@
#
import sys
+import re
import gi
@@ -21,10 +22,11 @@ def usage():
print(
" create TIMEOUT [--destroy-all|--delete-new-connections|--disconnect-new-devices|--allow-overlapping|DEV]..."
)
- print(" destroy PATH|NUMBER")
- print(" rollback PATH|NUMBER")
- print(" adjust-rollback-timeout PATH|NUMBER TIMEOUT")
+ print(" destroy ['--last'|PATH|NUMBER[")
+ print(" rollback ['--last'|PATH|NUMBER]")
+ print(" adjust-rollback-timeout '--last'|PATH|NUMBER TIMEOUT")
print("")
+ print(" For destroy|rollback, when omitted then '--last' is the default.")
sys.exit(1)
@@ -54,32 +56,65 @@ def show(c, ts=None):
)
-def find_checkpoint(client, path):
- for c in client.get_checkpoints():
+def checkpoint_path_to_num(path):
+ m = re.match(r"^/org/freedesktop/NetworkManager/Checkpoint/([1-9][0-9]*)$", path)
+ if m:
+ return int(m.group(1))
+ raise Exception(f'Unexpected D-Bus path "{path}"for checkpoint')
+
+
+def find_checkpoint(nmc, path):
+ for c in nmc.get_checkpoints():
if c.get_path() == path:
return c
return None
-def validate_path(path, client):
+def find_checkpoint_last(nmc):
+ l = [c.get_path() for c in nmc.get_checkpoints()]
+ if not l:
+ return None
+ l.sort(key=checkpoint_path_to_num)
+ return l[-1]
+
+
+def validate_path(path, nmc):
+ if path == "--last":
+ path = find_checkpoint_last(nmc)
+ if path is None:
+ sys.exit("Has no checkpoint")
+ return path
+
try:
num = int(path)
- path = "/org/freedesktop/NetworkManager/Checkpoint/%u" % (num)
+ path = f"/org/freedesktop/NetworkManager/Checkpoint/{num}"
except Exception as e:
pass
if not path or path[0] != "/":
sys.exit('Invalid checkpoint path "%s"' % (path))
- if client is not None:
- checkpoint = find_checkpoint(client, path)
+ if nmc is not None:
+ checkpoint = find_checkpoint(nmc, path)
if checkpoint is None:
print('WARNING: no checkpoint with path "%s" found' % (path))
return path
-def do_create(client):
+def validate_path_from_argv(nmc):
+ assert len(sys.argv) >= 2
+ if len(sys.argv) == 2:
+ path = "--last"
+ elif len(sys.argv) > 3:
+ sys.exit("Failed: invalid extra argument")
+ else:
+ path = sys.argv[2]
+
+ return validate_path(path, nmc)
+
+
+def do_create(nmc):
flags = NM.CheckpointCreateFlags.NONE
if len(sys.argv) < 3:
sys.exit("Failed: missing argument timeout")
@@ -96,50 +131,44 @@ def do_create(client):
elif arg == "--allow-overlapping":
flags |= NM.CheckpointCreateFlags.ALLOW_OVERLAPPING
else:
- d = client.get_device_by_iface(arg)
+ d = nmc.get_device_by_iface(arg)
if d is None:
sys.exit("Unknown device %s" % arg)
devices.append(d)
- def create_cb(client, result, data):
+ def create_cb(nmc, result, data):
try:
- checkpoint = client.checkpoint_create_finish(result)
+ checkpoint = nmc.checkpoint_create_finish(result)
print("%s" % checkpoint.get_path())
except Exception as e:
sys.stderr.write("Failed: %s\n" % e.message)
main_loop.quit()
- client.checkpoint_create(devices, timeout, flags, None, create_cb, None)
-
+ nmc.checkpoint_create(devices, timeout, flags, None, create_cb, None)
-def do_destroy(client):
- if len(sys.argv) < 3:
- sys.exit("Missing checkpoint path")
- path = validate_path(sys.argv[2], client)
+def do_destroy(nmc):
+ path = validate_path_from_argv(nmc)
- def destroy_cb(client, result, data):
+ def destroy_cb(nmc, result, data):
try:
- if client.checkpoint_destroy_finish(result) == True:
+ if nmc.checkpoint_destroy_finish(result) == True:
print("Success")
except Exception as e:
sys.stderr.write("Failed: %s\n" % e.message)
main_loop.quit()
- client.checkpoint_destroy(path, None, destroy_cb, None)
+ nmc.checkpoint_destroy(path, None, destroy_cb, None)
-def do_rollback(client):
- if len(sys.argv) < 3:
- sys.exit("Missing checkpoint path")
-
- path = validate_path(sys.argv[2], client)
+def do_rollback(nmc):
+ path = validate_path_from_argv(nmc)
- def rollback_cb(client, result, data):
+ def rollback_cb(nmc, result, data):
try:
- res = client.checkpoint_rollback_finish(result)
+ res = nmc.checkpoint_rollback_finish(result)
for path in res:
- d = client.get_device_by_path(path)
+ d = nmc.get_device_by_path(path)
if d is None:
iface = path
else:
@@ -149,10 +178,10 @@ def do_rollback(client):
sys.stderr.write("Failed: %s\n" % e.message)
main_loop.quit()
- client.checkpoint_rollback(path, None, rollback_cb, None)
+ nmc.checkpoint_rollback(path, None, rollback_cb, None)
-def do_adjust_rollback_timeout(client):
+def do_adjust_rollback_timeout(nmc):
if len(sys.argv) < 3:
sys.exit("Missing checkpoint path")
if len(sys.argv) < 4:
@@ -162,42 +191,42 @@ def do_adjust_rollback_timeout(client):
except Exception:
sys.exit("Invalid timeout")
- path = validate_path(sys.argv[2], client)
+ path = validate_path(sys.argv[2], nmc)
- def adjust_rollback_timeout_cb(client, result, data):
+ def adjust_rollback_timeout_cb(nmc, result, data):
try:
- client.checkpoint_adjust_rollback_timeout_finish(result)
+ nmc.checkpoint_adjust_rollback_timeout_finish(result)
print("Success")
except Exception as e:
sys.stderr.write("Failed: %s\n" % e.message)
main_loop.quit()
- client.checkpoint_adjust_rollback_timeout(
+ nmc.checkpoint_adjust_rollback_timeout(
path, add_timeout, None, adjust_rollback_timeout_cb, None
)
-def do_show(client):
+def do_show(nmc):
ts = NM.utils_get_timestamp_msec()
- for c in client.get_checkpoints():
+ for c in nmc.get_checkpoints():
show(c, ts)
if __name__ == "__main__":
- nm_client = NM.Client.new(None)
+ nmc = NM.Client.new(None)
main_loop = GLib.MainLoop()
if len(sys.argv) < 2 or sys.argv[1] == "show":
- do_show(nm_client)
+ do_show(nmc)
sys.exit(0)
elif sys.argv[1] == "create":
- do_create(nm_client)
+ do_create(nmc)
elif sys.argv[1] == "destroy":
- do_destroy(nm_client)
+ do_destroy(nmc)
elif sys.argv[1] == "rollback":
- do_rollback(nm_client)
+ do_rollback(nmc)
elif sys.argv[1] == "adjust-rollback-timeout":
- do_adjust_rollback_timeout(nm_client)
+ do_adjust_rollback_timeout(nmc)
else:
usage()
diff --git a/examples/python/gi/dns.py b/examples/python/gi/dns.py
index 6b42a339e0..483fe25f7d 100755
--- a/examples/python/gi/dns.py
+++ b/examples/python/gi/dns.py
@@ -15,23 +15,23 @@ main_loop = None
def handle_config(config):
- print " ---- new configuration ----"
+ print(" ---- new configuration ----")
for entry in config:
- print " * servers: %s" % ", ".join(map(str, entry.get_nameservers()))
+ print(" * servers: %s" % ", ".join(map(str, entry.get_nameservers())))
domains = entry.get_domains()
if domains and domains[0]:
- print " domains: %s" % ", ".join(map(str, domains))
+ print(" domains: %s" % ", ".join(map(str, domains)))
if entry.get_interface():
- print " interface: %s" % entry.get_interface()
+ print(" interface: %s" % entry.get_interface())
- print " priority: %d" % entry.get_priority()
+ print(" priority: %d" % entry.get_priority())
if entry.get_vpn():
- print " vpn: yes"
+ print(" vpn: yes")
- print ""
+ print("")
def dns_config_changed(self, property):
diff --git a/examples/python/gi/get-devices.py b/examples/python/gi/get-devices.py
index 5d753d80bb..43fd934372 100755
--- a/examples/python/gi/get-devices.py
+++ b/examples/python/gi/get-devices.py
@@ -15,22 +15,28 @@ if __name__ == "__main__":
client = NM.Client.new(None)
devices = client.get_all_devices()
- print "Real devices"
- print "------------"
+ print("Real devices")
+ print("------------")
for d in devices:
if d.is_real():
- print "%s (%s): %s" % (
- d.get_iface(),
- d.get_type_description(),
- d.get_state(),
+ print(
+ "%s (%s): %s"
+ % (
+ d.get_iface(),
+ d.get_type_description(),
+ d.get_state(),
+ )
)
- print "\nUnrealized/placeholder devices"
- print "------------------------------"
+ print("\nUnrealized/placeholder devices")
+ print("------------------------------")
for d in devices:
if not d.is_real():
- print "%s (%s): %s" % (
- d.get_iface(),
- d.get_type_description(),
- d.get_state(),
+ print(
+ "%s (%s): %s"
+ % (
+ d.get_iface(),
+ d.get_type_description(),
+ d.get_state(),
+ )
)
diff --git a/examples/python/gi/get-lldp-neighbors.py b/examples/python/gi/get-lldp-neighbors.py
index f5ae83006e..2907dfa475 100755
--- a/examples/python/gi/get-lldp-neighbors.py
+++ b/examples/python/gi/get-lldp-neighbors.py
@@ -28,12 +28,12 @@ if __name__ == "__main__":
for neighbor in neighbors:
ret, chassis = neighbor.get_attr_string_value("chassis-id")
ret, port = neighbor.get_attr_string_value("port-id")
- print "Neighbor: %s - %s" % (chassis, port)
+ print("Neighbor: %s - %s" % (chassis, port))
for attr in neighbor.get_attr_names():
attr_type = neighbor.get_attr_type(attr)
if attr_type.equal(GLib.VariantType.new("s")):
ret, value = neighbor.get_attr_string_value(attr)
- print " %-32s: %s" % (attr, value)
+ print(" %-32s: %s" % (attr, value))
elif attr_type.equal(GLib.VariantType.new("u")):
ret, value = neighbor.get_attr_uint_value(attr)
- print " %-32s: %u" % (attr, value)
+ print(" %-32s: %u" % (attr, value))
diff --git a/meson.build b/meson.build
index 5f86ee05e7..c1016e0068 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project(
# - add corresponding NM_VERSION_x_y_z macros in
# "src/libnm-core-public/nm-version-macros.h.in"
# - update number in configure.ac
- version: '1.36.0',
+ version: '1.37.1',
license: 'GPL2+',
default_options: [
'buildtype=debugoptimized',
@@ -551,10 +551,11 @@ crypto = get_option('crypto')
if crypto == 'nss'
assert(crypto_nss_dep.found(), 'Requires nss crypto support')
crypto_dep = crypto_nss_dep
-else
- assert(crypto == 'gnutls', 'Unexpected setting "crypto=' + crypto + '"')
+elif crypto == 'gnutls'
assert(crypto_gnutls_dep.found(), 'Requires gnutls crypto support')
crypto_dep = crypto_gnutls_dep
+else
+ assert(crypto == 'null', 'Unexpected setting "crypto=' + crypto + '"')
endif
dbus_conf_dir = get_option('dbus_conf_dir')
diff --git a/meson_options.txt b/meson_options.txt
index cfebe44619..42f84711d0 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -71,6 +71,6 @@ option('valgrind', type: 'array', value: ['no'], description: 'Use valgrind to m
option('valgrind_suppressions', type: 'string', value: '', description: 'Use specific valgrind suppression file')
option('ld_gc', type: 'boolean', value: true, description: 'Enable garbage collection of unused symbols on linking')
option('libpsl', type: 'boolean', value: true, description: 'Link against libpsl')
-option('crypto', type: 'combo', choices: ['nss', 'gnutls'], value: 'nss', description: 'Cryptography library to use for certificate and key operations')
+option('crypto', type: 'combo', choices: ['nss', 'gnutls', 'null'], value: 'nss', description: 'Cryptography library to use for certificate and key operations')
option('qt', type: 'boolean', value: true, description: 'enable Qt examples')
option('readline', type: 'combo', choices: ['auto', 'libreadline', 'libedit', 'none'], description: 'Using readline (auto) or libedit)')
diff --git a/po/LINGUAS b/po/LINGUAS
index 3195e69539..2648c19fc0 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,6 +1,5 @@
# please keep this list sorted alphabetically
#
-ar
as
be@latin
bg
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 76d20094d0..548ae5a1e7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -74,6 +74,7 @@ src/libnm-core-aux-intern/nm-libnm-core-utils.c
src/libnm-core-impl/nm-connection.c
src/libnm-core-impl/nm-crypto-gnutls.c
src/libnm-core-impl/nm-crypto-nss.c
+src/libnm-core-impl/nm-crypto-null.c
src/libnm-core-impl/nm-crypto.c
src/libnm-core-impl/nm-dbus-utils.c
src/libnm-core-impl/nm-keyfile-utils.c
diff --git a/po/ar.po b/po/ar.po
deleted file mode 100644
index 29b8db55a0..0000000000
--- a/po/ar.po
+++ /dev/null
@@ -1,12838 +0,0 @@
-# translation of NetworkManager.HEAD.ar.po to Arabic
-# Arabic translations for PACKAGE package.
-# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Automatically generated, 2006.
-# Khaled Hosny <khaledhosny@eglug.org>, 2007.
-# Lubomir Rintel <lkundrak@v3.sk>, 2016. #zanata
-# Lubomir Rintel <lkundrak@v3.sk>, 2017. #zanata
-# Thomas Haller <thaller@redhat.com>, 2017. #zanata
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-06-01 17:17+0200\n"
-"PO-Revision-Date: 2017-04-21 05:04-0400\n"
-"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
-"Language-Team: Arabic <doc@arabeyes.org>\n"
-"Language: ar\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : n>=3 && "
-"n<=10 ? 2 : 3\n"
-"X-Poedit-Language: Arabic\n"
-"X-Generator: Zanata 3.9.6\n"
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:1
-msgid "Enable or disable system networking"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:2
-msgid "System policy prevents enabling or disabling system networking"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:3
-msgid "Reload NetworkManager configuration"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:4
-msgid "System policy prevents reloading NetworkManager"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:5
-msgid ""
-"Put NetworkManager to sleep or wake it up (should only be used by system "
-"power management)"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:6
-msgid "System policy prevents putting NetworkManager to sleep or waking it up"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:7
-msgid "Enable or disable Wi-Fi devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:8
-msgid "System policy prevents enabling or disabling Wi-Fi devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:9
-msgid "Enable or disable mobile broadband devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:10
-msgid "System policy prevents enabling or disabling mobile broadband devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:11
-msgid "Enable or disable WiMAX mobile broadband devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:12
-msgid ""
-"System policy prevents enabling or disabling WiMAX mobile broadband devices"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:13
-msgid "Allow control of network connections"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:14
-msgid "System policy prevents control of network connections"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:15
-msgid "Allow control of Wi-Fi scans"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:16
-msgid "System policy prevents Wi-Fi scans"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:17
-msgid "Connection sharing via a protected Wi-Fi network"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:18
-msgid ""
-"System policy prevents sharing connections via a protected Wi-Fi network"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:19
-msgid "Connection sharing via an open Wi-Fi network"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:20
-msgid "System policy prevents sharing connections via an open Wi-Fi network"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:21
-#, fuzzy
-msgid "Modify personal network connections"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:22
-msgid "System policy prevents modification of personal network settings"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:23
-msgid "Modify network connections for all users"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:24
-msgid "System policy prevents modification of network settings for all users"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:25
-msgid "Modify persistent system hostname"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:26
-msgid "System policy prevents modification of the persistent system hostname"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:27
-msgid "Modify persistent global DNS configuration"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:28
-msgid ""
-"System policy prevents modification of the persistent global DNS "
-"configuration"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:29
-msgid "Perform a checkpoint or rollback of interfaces configuration"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:30
-msgid "System policy prevents the creation of a checkpoint or its rollback"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:31
-msgid "Enable or disable device statistics"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:32
-msgid "System policy prevents enabling or disabling device statistics"
-msgstr ""
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:33
-#, fuzzy
-msgid "Enable or disable connectivity checking"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:34
-msgid "System policy prevents enabling or disabling connectivity checking"
-msgstr ""
-
-#. TRANSLATORS: the first %s is a prefix for the connection id, such
-#. * as "Wired Connection" or "VPN Connection". The %d is a number
-#. * that is combined with the first argument to create a unique
-#. * connection id.
-#: ../src/core/NetworkManagerUtils.c:113
-#, c-format
-msgctxt "connection id fallback"
-msgid "%s %u"
-msgstr ""
-
-#: ../src/core/devices/adsl/nm-device-adsl.c:117
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8080
-#, fuzzy
-msgid "ADSL connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/bluetooth/nm-bluez-manager.c:1327
-#, c-format
-msgid "%s Network"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:301
-msgid "PAN requested, but Bluetooth device does not support NAP"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:314
-msgid "PAN connections cannot specify GSM, CDMA, or serial settings"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:329
-#, fuzzy
-msgid "PAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:336
-msgid "DUN requested, but Bluetooth device does not support DUN"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:349
-msgid "DUN connection must include a GSM or CDMA setting"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:360
-#: ../src/core/devices/wwan/nm-modem-broadband.c:821
-#, fuzzy
-msgid "GSM connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:362
-#: ../src/core/devices/wwan/nm-modem-broadband.c:846
-#, fuzzy
-msgid "CDMA connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:370
-msgid "Unknown/unhandled Bluetooth connection type"
-msgstr ""
-
-#: ../src/core/devices/bluetooth/nm-device-bt.c:395
-msgid "connection does not match device"
-msgstr ""
-
-#: ../src/core/devices/nm-device-6lowpan.c:190
-#, fuzzy
-msgid "6LOWPAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-bond.c:89
-#, fuzzy
-msgid "Bond connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-bridge.c:155
-#, fuzzy
-msgid "Bridge connection"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/core/devices/nm-device-dummy.c:58
-#, fuzzy
-msgid "Dummy connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-ethernet-utils.c:20
-#, fuzzy, c-format
-msgid "Wired connection %d"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/core/devices/nm-device-ethernet.c:1614
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8117
-#, fuzzy
-msgid "Veth connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-ethernet.c:1680
-#, fuzzy
-msgid "PPPoE connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-ethernet.c:1680
-#, fuzzy
-msgid "Wired connection"
-msgstr "انشيء اتصال VPN"
-
-#: ../src/core/devices/nm-device-infiniband.c:161
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8093
-#, fuzzy
-msgid "InfiniBand connection"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/core/devices/nm-device-ip-tunnel.c:399
-#, fuzzy
-msgid "IP tunnel connection"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/core/devices/nm-device-macvlan.c:389
-#, fuzzy
-msgid "MACVLAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-tun.c:144
-#, fuzzy
-msgid "TUN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-vlan.c:401
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8118
-#, fuzzy
-msgid "VLAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-vrf.c:181
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8120
-#, fuzzy
-msgid "VRF connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-vxlan.c:382
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8121
-#, fuzzy
-msgid "VXLAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/nm-device-wpan.c:54
-#, fuzzy
-msgid "WPAN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/devices/team/nm-device-team.c:88
-#, fuzzy
-msgid "Team connection"
-msgstr "انشيء اتصال VPN"
-
-#: ../src/core/devices/wifi/nm-device-olpc-mesh.c:115
-#: ../src/nmcli/devices.c:1352
-msgid "Mesh"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:32
-#, c-format
-msgid "%s is incompatible with static WEP keys"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:67
-msgid "LEAP authentication requires a LEAP username"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:79
-msgid "LEAP username requires 'leap' authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:94
-msgid "LEAP authentication requires IEEE 802.1x key management"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:116
-msgid "LEAP authentication is incompatible with Ad-Hoc mode"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:128
-msgid "LEAP authentication is incompatible with 802.1x setting"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:148
-#, c-format
-msgid "a connection using '%s' authentication cannot use WPA key management"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:161
-#, c-format
-msgid "a connection using '%s' authentication cannot specify WPA protocols"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:179
-#: ../src/core/devices/wifi/nm-wifi-utils.c:198
-#, c-format
-msgid "a connection using '%s' authentication cannot specify WPA ciphers"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:212
-#, c-format
-msgid "a connection using '%s' authentication cannot specify a WPA password"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:245
-msgid "Dynamic WEP requires an 802.1x setting"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:255
-#: ../src/core/devices/wifi/nm-wifi-utils.c:287
-msgid "Dynamic WEP requires 'open' authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:272
-msgid "Dynamic WEP requires 'ieee8021x' key management"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:323
-msgid "WPA-PSK authentication is incompatible with 802.1x"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:333
-msgid "WPA-PSK requires 'open' authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:347
-msgid "Access point does not support PSK but setting requires it"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:362
-msgid "WPA Ad-Hoc authentication requires 'rsn' protocol"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:375
-msgid "WPA Ad-Hoc authentication requires 'ccmp' pairwise cipher"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:388
-msgid "WPA Ad-Hoc requires 'ccmp' group cipher"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:419
-msgid "WPA-EAP authentication requires an 802.1x setting"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:429
-msgid "WPA-EAP requires 'open' authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:442
-msgid "802.1x setting requires 'wpa-eap' key management"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:456
-msgid "Access point does not support 802.1x but setting requires it"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:486
-msgid "Ad-Hoc mode requires 'none' or 'wpa-psk' key management"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:498
-msgid "Ad-Hoc mode is incompatible with 802.1x security"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:507
-msgid "Ad-Hoc mode is incompatible with LEAP security"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:519
-msgid "Ad-Hoc mode requires 'open' authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:563
-#: ../src/core/devices/wifi/nm-wifi-utils.c:598
-#, c-format
-msgid "connection does not match access point"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:652
-#, fuzzy, c-format
-msgid "connection does not match mesh point"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:671
-msgid "Access point is unencrypted but setting specifies security"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:762
-msgid ""
-"WPA authentication is incompatible with non-EAP (original) LEAP or Dynamic "
-"WEP"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:775
-msgid "WPA authentication is incompatible with Shared Key authentication"
-msgstr ""
-
-#: ../src/core/devices/wifi/nm-wifi-utils.c:866
-msgid "Failed to determine AP security information"
-msgstr ""
-
-#: ../src/core/dhcp/nm-dhcp-dhclient-utils.c:317
-msgid "# Created by NetworkManager\n"
-msgstr ""
-
-#: ../src/core/dhcp/nm-dhcp-dhclient-utils.c:330
-#, c-format
-msgid ""
-"# Merged from %s\n"
-"\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:87
-#, c-format
-msgid "Opening %s failed: %s\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:94
-#, c-format
-msgid "Writing to %s failed: %s\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:100
-#, c-format
-msgid "Closing %s failed: %s\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:140 ../src/core/main-utils.c:152
-#, c-format
-msgid "Cannot create '%s': %s"
-msgstr ""
-
-#: ../src/core/main-utils.c:207
-#, c-format
-msgid "%s is already running (pid %ld)\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:217
-#, c-format
-msgid "You must be root to run %s!\n"
-msgstr ""
-
-#: ../src/core/main-utils.c:284 ../src/core/main.c:375
-#: ../src/core/nm-iface-helper.c:585
-#, fuzzy, c-format
-msgid "%s. Please use --help to see a list of valid options.\n"
-msgstr "خيار غير صحيح. استعمل --help لعرض قائمة الخيارات الممكنة.\n"
-
-#: ../src/core/main.c:164 ../src/core/main.c:385
-#, c-format
-msgid "Failed to read configuration: %s\n"
-msgstr ""
-
-#: ../src/core/main.c:191 ../src/core/nm-iface-helper.c:406
-msgid "Print NetworkManager version and exit"
-msgstr ""
-
-#: ../src/core/main.c:198 ../src/core/nm-iface-helper.c:413
-msgid "Don't become a daemon"
-msgstr ""
-
-#: ../src/core/main.c:205 ../src/core/nm-iface-helper.c:427
-#, c-format
-msgid "Log level: one of [%s]"
-msgstr ""
-
-#: ../src/core/main.c:212 ../src/core/nm-iface-helper.c:434
-#, c-format
-msgid "Log domains separated by ',': any combination of [%s]"
-msgstr ""
-
-#: ../src/core/main.c:219 ../src/core/nm-iface-helper.c:441
-msgid "Make all warnings fatal"
-msgstr ""
-
-#: ../src/core/main.c:226
-msgid "Specify the location of a PID file"
-msgstr ""
-
-#: ../src/core/main.c:240
-msgid "Print NetworkManager configuration and exit"
-msgstr ""
-
-#: ../src/core/main.c:251
-msgid ""
-"NetworkManager monitors all network connections and automatically\n"
-"chooses the best connection to use. It also allows the user to\n"
-"specify wireless access points which wireless cards in the computer\n"
-"should associate with."
-msgstr ""
-
-#: ../src/core/main.c:408 ../src/core/nm-iface-helper.c:599
-#, c-format
-msgid "Could not daemonize: %s [error %u]\n"
-msgstr ""
-
-#: ../src/core/nm-config.c:542
-#: ../src/libnm-core-impl/nm-setting-ovs-bridge.c:187
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2157
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4175
-#, c-format
-msgid "'%s' is not valid"
-msgstr ""
-
-#: ../src/core/nm-config.c:561
-#, c-format
-msgid "Bad '%s' option: "
-msgstr ""
-
-#: ../src/core/nm-config.c:578
-msgid "Config file location"
-msgstr ""
-
-#: ../src/core/nm-config.c:585
-msgid "Config directory location"
-msgstr ""
-
-#: ../src/core/nm-config.c:592
-msgid "System config directory location"
-msgstr ""
-
-#: ../src/core/nm-config.c:599
-msgid "Internal config file location"
-msgstr ""
-
-#: ../src/core/nm-config.c:606
-msgid "State file location"
-msgstr ""
-
-#: ../src/core/nm-config.c:613
-msgid "State file for no-auto-default devices"
-msgstr ""
-
-#: ../src/core/nm-config.c:620
-msgid "List of plugins separated by ','"
-msgstr ""
-
-#: ../src/core/nm-config.c:627
-msgid "Quit after initial configuration"
-msgstr ""
-
-#: ../src/core/nm-config.c:634 ../src/core/nm-iface-helper.c:420
-msgid "Don't become a daemon, and log to stderr"
-msgstr ""
-
-#: ../src/core/nm-config.c:643
-msgid "An http(s) address for checking internet connectivity"
-msgstr ""
-
-#: ../src/core/nm-config.c:650
-msgid "The interval between connectivity checks (in seconds)"
-msgstr ""
-
-#: ../src/core/nm-config.c:657
-msgid "The expected start of the response"
-msgstr ""
-
-#: ../src/core/nm-config.c:666
-msgid "NetworkManager options"
-msgstr ""
-
-#: ../src/core/nm-config.c:667
-msgid "Show NetworkManager options"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:292
-msgid "The interface to manage"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:299
-#, fuzzy
-msgid "Connection UUID"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/nm-iface-helper.c:306
-msgid "Connection Token for Stable IDs"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:313
-msgid "Whether to manage IPv6 SLAAC"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:320
-msgid "Whether SLAAC must be successful"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:327
-msgid "Use an IPv6 temporary privacy address"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:334
-msgid "Current DHCPv4 address"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:341
-msgid "Whether DHCPv4 must be successful"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:348
-msgid "Hex-encoded DHCPv4 client ID"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:355
-msgid "Hostname to send to DHCP server"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:356
-msgid "barbar"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:362
-msgid "FQDN to send to DHCP server"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:363
-msgid "host.domain.org"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:369
-msgid "Route priority for IPv4"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:370
-msgid "0"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:376
-msgid "Route priority for IPv6"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:377
-msgid "1024"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:383
-msgid "Hex-encoded Interface Identifier"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:390
-msgid "IPv6 SLAAC address generation mode"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:397
-msgid ""
-"The logging backend configuration value. See logging.backend in "
-"NetworkManager.conf"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:451
-msgid ""
-"nm-iface-helper is a small, standalone process that manages a single network "
-"interface."
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:562
-#, c-format
-msgid "An interface name and UUID are required\n"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:570
-#, c-format
-msgid "Failed to find interface index for %s (%s)\n"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:590
-#, c-format
-msgid "Ignoring unrecognized log domain(s) '%s' passed on command line.\n"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:636
-#, c-format
-msgid "(%s): Invalid IID %s\n"
-msgstr ""
-
-#: ../src/core/nm-iface-helper.c:648
-#, c-format
-msgid "(%s): Invalid DHCP client-id %s\n"
-msgstr ""
-
-#: ../src/core/nm-manager.c:5926
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8119
-#, fuzzy
-msgid "VPN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5478
-#: ../src/libnm-client-impl/nm-device.c:1683
-#: ../src/libnm-core-impl/nm-connection.c:2707
-#: ../src/nmtui/nm-editor-utils.c:180
-msgid "Bond"
-msgstr ""
-
-#: ../src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5549
-#: ../src/libnm-client-impl/nm-device.c:1685
-#: ../src/libnm-core-impl/nm-connection.c:2709
-#: ../src/nmtui/nm-editor-utils.c:198
-msgid "Team"
-msgstr ""
-
-#: ../src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5886
-#: ../src/libnm-client-impl/nm-device.c:1687
-#: ../src/libnm-core-impl/nm-connection.c:2711
-#: ../src/nmtui/nm-editor-utils.c:189
-msgid "Bridge"
-msgstr ""
-
-#: ../src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9974
-#: ../src/libnm-core-impl/nm-team-utils.c:2396
-#, fuzzy, c-format
-msgid "invalid json"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-client-impl/nm-client.c:3782
-#, c-format
-msgid "request succeeded with %s but object is in an unsuitable state"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-client.c:3874
-#, c-format
-msgid "operation succeeded but object %s does not exist"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-adsl.c:66
-msgid "The connection was not an ADSL connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bond.c:106
-msgid "The connection was not a bond connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bridge.c:109
-msgid "The connection was not a bridge connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bt.c:133
-#, c-format
-msgid "The connection was not a Bluetooth connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bt.c:141
-#, fuzzy, c-format
-msgid "The connection is of Bluetooth NAP type."
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/libnm-client-impl/nm-device-bt.c:152
-msgid "Invalid device Bluetooth address."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bt.c:161
-msgid "The Bluetooth addresses of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-bt.c:173
-msgid ""
-"The device is lacking Bluetooth capabilities required by the connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-dummy.c:65
-#, fuzzy
-msgid "The connection was not a dummy connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-dummy.c:74
-#: ../src/libnm-client-impl/nm-device-generic.c:89
-#: ../src/libnm-client-impl/nm-device-ovs-bridge.c:89
-#: ../src/libnm-client-impl/nm-device-ovs-interface.c:57
-#: ../src/libnm-client-impl/nm-device-ovs-port.c:89
-msgid "The connection did not specify an interface name."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:189
-msgid "The connection was not an Ethernet or PPPoE connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:206
-msgid "The connection and device differ in S390 subchannels."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:223
-#, c-format
-msgid "Invalid device MAC address %s."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:231
-msgid "The MACs of the device and the connection do not match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:243
-#, c-format
-msgid "Invalid MAC in the blacklist: %s."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ethernet.c:252
-#, c-format
-msgid "Device MAC (%s) is blacklisted by the connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-generic.c:80
-msgid "The connection was not a generic connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-infiniband.c:90
-msgid "The connection was not an InfiniBand connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-infiniband.c:100
-#: ../src/libnm-client-impl/nm-device-wifi.c:481
-msgid "Invalid device MAC address."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-infiniband.c:110
-#: ../src/libnm-client-impl/nm-device-wifi.c:490
-msgid "The MACs of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ip-tunnel.c:266
-msgid "The connection was not an IP tunnel connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-macvlan.c:151
-msgid "The connection was not a MAC-VLAN connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-modem.c:177
-msgid "The connection was not a modem connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-modem.c:187
-msgid "The connection was not a valid modem connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-modem.c:196
-msgid "The device is lacking capabilities required by the connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-olpc-mesh.c:102
-msgid "The connection was not an OLPC Mesh connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-ovs-bridge.c:80
-#, fuzzy
-msgid "The connection was not a ovs_bridge connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-ovs-interface.c:48
-#, fuzzy
-msgid "The connection was not a ovs_interface connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-ovs-port.c:80
-#, fuzzy
-msgid "The connection was not a ovs_port connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-team.c:125
-msgid "The connection was not a team connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-tun.c:204
-msgid "The connection was not a tun connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-tun.c:215
-msgid "The mode of the device and the connection didn't match"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-vlan.c:121
-#, fuzzy
-msgid "The connection was not a VLAN connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-vlan.c:131
-msgid "The VLAN identifiers of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-vlan.c:148
-msgid "The hardware address of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-vrf.c:65
-#, fuzzy
-msgid "The connection was not a VRF connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-vrf.c:74
-msgid "The VRF table of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-vxlan.c:383
-msgid "The connection was not a VXLAN connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-vxlan.c:393
-msgid "The VXLAN identifiers of the device and the connection didn't match."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-wifi-p2p.c:266
-#, fuzzy
-msgid "The connection was not a Wi-Fi P2P connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device-wifi.c:470
-msgid "The connection was not a Wi-Fi connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-wifi.c:511
-msgid "The device is lacking WPA capabilities required by the connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-wifi.c:521
-msgid "The device is lacking WPA2/RSN capabilities required by the connection."
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device-wpan.c:57
-#, fuzzy
-msgid "The connection was not a wpan connection."
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-client-impl/nm-device.c:1663 ../src/nmtui/nm-editor-utils.c:128
-msgid "Ethernet"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1665 ../src/nmtui/nm-editor-utils.c:144
-msgid "Wi-Fi"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1667
-msgid "Bluetooth"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1669
-msgid "OLPC Mesh"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1671
-msgid "Open vSwitch Interface"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1673
-msgid "Open vSwitch Port"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1675
-msgid "Open vSwitch Bridge"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1677
-msgid "WiMAX"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1679 ../src/nmtui/nm-editor-utils.c:162
-msgid "Mobile Broadband"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1681
-#: ../src/libnm-core-impl/nm-connection.c:2715
-#: ../src/nmtui/nm-editor-utils.c:153
-msgid "InfiniBand"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1689
-#: ../src/libnm-core-impl/nm-connection.c:2713
-#: ../src/nmtui/nm-editor-utils.c:207 ../src/nmtui/nmt-page-vlan.c:64
-msgid "VLAN"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1691
-msgid "ADSL"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1693
-msgid "MACVLAN"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1695
-msgid "VXLAN"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1697
-msgid "IPTunnel"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1699
-msgid "Tun"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1701 ../src/nmtui/nm-editor-utils.c:136
-msgid "Veth"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1703
-msgid "MACsec"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1705
-msgid "Dummy"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1707
-msgid "PPP"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1709
-msgid "IEEE 802.15.4"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1711
-msgid "6LoWPAN"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1713
-msgid "WireGuard"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1715
-msgid "Wi-Fi P2P"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1717
-msgid "VRF"
-msgstr ""
-
-#. TRANSLATORS: Unknown reason for a device state change (NMDeviceStateReason)
-#. TRANSLATORS: Unknown reason for a connection state change (NMActiveConnectionStateReason)
-#: ../src/libnm-client-impl/nm-device.c:1724
-#: ../src/libnmc-base/nm-client-utils.c:352
-#: ../src/libnmc-base/nm-client-utils.c:473
-msgid "Unknown"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1749
-msgid "Wired"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1781
-msgid "PCI"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:1783
-msgid "USB"
-msgstr ""
-
-#. TRANSLATORS: the first %s is a bus name (eg, "USB") or
-#. * product name, the second is a device type (eg,
-#. * "Ethernet"). You can change this to something like
-#. * "%2$s (%1$s)" if there's no grammatical way to combine
-#. * the strings otherwise.
-#.
-#: ../src/libnm-client-impl/nm-device.c:2082
-#: ../src/libnm-client-impl/nm-device.c:2101
-#, c-format
-msgctxt "long device name"
-msgid "%s %s"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:2761
-#, c-format
-msgid "The connection was not valid: %s"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-device.c:2773
-#, c-format
-msgid "The interface names of the device and the connection didn't match"
-msgstr ""
-
-#: ../src/libnm-client-impl/nm-secret-agent-old.c:1384
-#, fuzzy
-msgid "registration failed"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnm-client-impl/nm-vpn-plugin-old.c:817
-#: ../src/libnm-client-impl/nm-vpn-service-plugin.c:1063
-msgid "No service name specified"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:286
-#, c-format
-msgid "'%s' is not valid: properties should be specified as 'key=value'"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:300
-#, fuzzy, c-format
-msgid "'%s' is not a valid key"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:305
-#, c-format
-msgid "duplicate key '%s'"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:319
-#, c-format
-msgid "number for '%s' is out of range"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:324
-#, c-format
-msgid "value for '%s' must be a number"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:337
-#, c-format
-msgid "value for '%s' must be a boolean"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:346
-msgid "missing 'name' attribute"
-msgstr ""
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:355
-#, fuzzy, c-format
-msgid "invalid 'name' \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-aux-extern/nm-libnm-core-aux.c:368
-#, c-format
-msgid "attribute '%s' is invalid for \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-aux-intern/nm-libnm-core-utils.c:293
-msgid "property cannot be an empty string"
-msgstr ""
-
-#: ../src/libnm-core-aux-intern/nm-libnm-core-utils.c:310
-msgid "property cannot be longer than 255 bytes"
-msgstr ""
-
-#: ../src/libnm-core-aux-intern/nm-libnm-core-utils.c:321
-msgid "property cannot contain any nul bytes"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:300
-msgid "wrong type; should be a list of strings."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:374
-msgid "unknown setting name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:386
-msgid "duplicate setting name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1433
-msgid "setting not found"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1486
-#: ../src/libnm-core-impl/nm-connection.c:1511
-#: ../src/libnm-core-impl/nm-connection.c:1536
-msgid "setting is required for non-slave connections"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1499
-#: ../src/libnm-core-impl/nm-connection.c:1524
-#: ../src/libnm-core-impl/nm-connection.c:1549
-msgid "setting not allowed in slave connection"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1654
-msgid "Unexpected failure to normalize the connection"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1715
-msgid "Unexpected failure to verify the connection"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:1752
-#, c-format
-msgid "unexpected uuid %s instead of %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:2566
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2618
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2641
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2681
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2704
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2754
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2795
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2895
-#: ../src/libnm-core-impl/nm-setting-adsl.c:157
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:110
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:174
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:191
-#: ../src/libnm-core-impl/nm-setting-cdma.c:127
-#: ../src/libnm-core-impl/nm-setting-connection.c:1075
-#: ../src/libnm-core-impl/nm-setting-connection.c:1113
-#: ../src/libnm-core-impl/nm-setting-connection.c:1385
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5333
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:371
-#: ../src/libnm-core-impl/nm-setting-olpc-mesh.c:83
-#: ../src/libnm-core-impl/nm-setting-ovs-patch.c:75
-#: ../src/libnm-core-impl/nm-setting-pppoe.c:129
-#: ../src/libnm-core-impl/nm-setting-vpn.c:532
-#: ../src/libnm-core-impl/nm-setting-wifi-p2p.c:120
-#: ../src/libnm-core-impl/nm-setting-wimax.c:92
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:899
-#: ../src/libnm-core-impl/nm-setting-wireless.c:788
-msgid "property is missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-connection.c:2719
-#, fuzzy
-msgid "IP Tunnel"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:59
-msgid "Failed to initialize the crypto engine."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:92
-#: ../src/libnm-core-impl/nm-crypto-nss.c:118
-#, c-format
-msgid "Unsupported key cipher for decryption"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:103
-#: ../src/libnm-core-impl/nm-crypto-nss.c:126
-#, c-format
-msgid "Invalid IV length (must be at least %u)."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:121
-#, c-format
-msgid "Failed to initialize the decryption cipher context: %s (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:135
-#, c-format
-msgid "Failed to decrypt the private key: %s (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:148
-#: ../src/libnm-core-impl/nm-crypto-nss.c:221
-#, c-format
-msgid "Failed to decrypt the private key: unexpected padding length."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:160
-#: ../src/libnm-core-impl/nm-crypto-nss.c:233
-#, c-format
-msgid "Failed to decrypt the private key."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:194
-#: ../src/libnm-core-impl/nm-crypto-nss.c:288
-#, c-format
-msgid "Unsupported key cipher for encryption"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:211
-#, c-format
-msgid "Failed to initialize the encryption cipher context: %s (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:239
-#, c-format
-msgid "Failed to encrypt the data: %s (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:264
-#, c-format
-msgid "Error initializing certificate data: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:287
-#, c-format
-msgid "Couldn't decode certificate: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:312
-#, c-format
-msgid "Couldn't initialize PKCS#12 decoder: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:326
-#, c-format
-msgid "Couldn't decode PKCS#12 file: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:341
-#, c-format
-msgid "Couldn't verify PKCS#12 file: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:370
-#, c-format
-msgid "Couldn't initialize PKCS#8 decoder: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-gnutls.c:398
-#, c-format
-msgid "Couldn't decode PKCS#8 file: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:70
-#, c-format
-msgid "Failed to initialize the crypto engine: %d."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:139
-#, c-format
-msgid "Failed to initialize the decryption cipher slot."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:150
-#, c-format
-msgid "Failed to set symmetric key for decryption."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:161
-#, c-format
-msgid "Failed to set IV for decryption."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:170
-#, c-format
-msgid "Failed to initialize the decryption context."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:187
-#, c-format
-msgid "Failed to decrypt the private key: %d."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:196
-#, c-format
-msgid "Failed to decrypt the private key: decrypted data too large."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:208
-#, c-format
-msgid "Failed to finalize decryption of the private key: %d."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:300
-#, c-format
-msgid "Failed to initialize the encryption cipher slot."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:309
-#, c-format
-msgid "Failed to set symmetric key for encryption."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:318
-#, c-format
-msgid "Failed to set IV for encryption."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:327
-#, c-format
-msgid "Failed to initialize the encryption context."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:352
-#, c-format
-msgid "Failed to encrypt: %d."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:361
-#, c-format
-msgid "Unexpected amount of data after encrypting."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:398
-#, c-format
-msgid "Couldn't decode certificate: %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:443
-#, c-format
-msgid "Password must be UTF-8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:464
-#, c-format
-msgid "Couldn't initialize slot"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:473
-#, c-format
-msgid "Couldn't initialize PKCS#12 decoder: %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:483
-#, c-format
-msgid "Couldn't decode PKCS#12 file: %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:493
-#, c-format
-msgid "Couldn't verify PKCS#12 file: %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto-nss.c:544
-msgid "Could not generate random data."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:208
-#, c-format
-msgid "PEM key file had no start tag"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:217
-#, c-format
-msgid "PEM key file had no end tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:245
-#, c-format
-msgid "Malformed PEM file: Proc-Type was not first tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:254
-#, c-format
-msgid "Malformed PEM file: unknown Proc-Type tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:267
-#, c-format
-msgid "Malformed PEM file: DEK-Info was not the second tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:279
-#, c-format
-msgid "Malformed PEM file: no IV found in DEK-Info tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:288
-#, c-format
-msgid "Malformed PEM file: invalid format of IV in DEK-Info tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:300
-#, c-format
-msgid "Malformed PEM file: unknown private key cipher '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:323
-#, c-format
-msgid "Could not decode private key."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:365
-msgid "Failed to find expected PKCS#8 start tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:374
-#, c-format
-msgid "Failed to find expected PKCS#8 end tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:387
-msgid "Failed to decode PKCS#8 private key."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:417
-msgid "Failed to find expected TSS start tag."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:426
-#, c-format
-msgid "Failed to find expected TSS end tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:481
-#, c-format
-msgid "IV must be an even number of bytes in length."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:498
-#, c-format
-msgid "IV contains non-hexadecimal digits."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:574
-#, c-format
-msgid "IV must contain at least 8 characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:624
-#, c-format
-msgid "Unable to determine private key type."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:637
-#, c-format
-msgid "Password provided, but key was not encrypted."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:693
-#, c-format
-msgid "PEM certificate had no start tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:703
-#, c-format
-msgid "PEM certificate had no end tag '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:716
-#, c-format
-msgid "Failed to decode certificate."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:745
-#: ../src/libnm-core-impl/nm-crypto.c:796
-#, c-format
-msgid "Certificate file is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:778
-#, c-format
-msgid "Failed to recognize certificate"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-crypto.c:886
-#, c-format
-msgid "not a valid private key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-dbus-utils.c:181
-#, c-format
-msgid "Method returned type '%s', but expected '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile-utils.c:174
-#, c-format
-msgid "Value cannot be interpreted as a list of numbers."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile-utils.c:303
-#, c-format
-msgid "value is not an integer in range [%lld, %lld]"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:270
-msgid "ignoring missing number"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:282
-#, c-format
-msgid "ignoring invalid number '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:311
-#, c-format
-msgid "ignoring invalid %s address: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:357
-#, c-format
-msgid "ignoring invalid gateway '%s' for %s route"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:379
-#, c-format
-msgid "ignoring invalid %s route: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:557
-#, c-format
-msgid "unexpected character '%c' for address %s: '%s' (position %td)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:573
-#, c-format
-msgid "unexpected character '%c' for %s: '%s' (position %td)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:588
-#, c-format
-msgid "unexpected character '%c' in prefix length for %s: '%s' (position %td)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:605
-#, c-format
-msgid "garbage at the end of value %s: '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:615
-#, c-format
-msgid "deprecated semicolon at the end of value %s: '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:634
-#, c-format
-msgid "invalid prefix length for %s '%s', defaulting to %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:646
-#, c-format
-msgid "missing prefix length for %s '%s', defaulting to %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:989
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:320
-#: ../src/libnm-core-impl/nm-setting-user.c:372
-#, c-format
-msgid "invalid value for \"%s\": %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1067
-#, c-format
-msgid "ignoring invalid DNS server IPv%c address '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1104
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1651
-#, c-format
-msgid "invalid option '%s', use one of [%s]"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1162
-msgid "ignoring invalid MAC address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1238
-#, c-format
-msgid "ignoring invalid bond option %s%s%s = %s%s%s: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1428
-msgid "ignoring invalid SSID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1446
-msgid "ignoring invalid raw password"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1587
-msgid "invalid key/cert value"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1602
-#, c-format
-msgid "invalid key/cert value path \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1627
-#: ../src/libnm-core-impl/nm-keyfile.c:1724
-#, c-format
-msgid "certificate or key file '%s' does not exist"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1640
-#, c-format
-msgid "invalid PKCS#11 URI \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1686
-msgid "invalid key/cert value data:;base64, is not base64"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1699
-msgid "invalid key/cert value data:;base64,file://"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1740
-msgid "invalid key/cert value is not a valid blob"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1842
-#, c-format
-msgid "invalid parity value '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1864
-#: ../src/libnm-core-impl/nm-keyfile.c:3337
-#, fuzzy, c-format
-msgid "invalid setting: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1884
-#, c-format
-msgid "ignoring invalid team configuration: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:1967
-#, c-format
-msgid "invalid qdisc: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:2017
-#, fuzzy, c-format
-msgid "invalid tfilter: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3162
-#, fuzzy, c-format
-msgid "error loading setting value: %s"
-msgstr "خطأ في قراءة رسالة نتلينك: %s"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3193
-#: ../src/libnm-core-impl/nm-keyfile.c:3205
-#: ../src/libnm-core-impl/nm-keyfile.c:3224
-#: ../src/libnm-core-impl/nm-keyfile.c:3236
-#: ../src/libnm-core-impl/nm-keyfile.c:3248
-#: ../src/libnm-core-impl/nm-keyfile.c:3310
-#: ../src/libnm-core-impl/nm-keyfile.c:3322
-msgid "value cannot be interpreted as integer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3278
-#, c-format
-msgid "ignoring invalid byte element '%u' (not between 0 and 255 inclusive)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3362
-#, c-format
-msgid "invalid setting name '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3409
-#, fuzzy, c-format
-msgid "invalid key '%s.%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3425
-#, c-format
-msgid "key '%s.%s' is not boolean"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3442
-#, fuzzy, c-format
-msgid "key '%s.%s' is not a uint32"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3499
-#, c-format
-msgid "invalid peer public key in section '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3514
-#, c-format
-msgid "key '%s.%s' is not a valid 256 bit key in base64 encoding"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3537
-#, fuzzy, c-format
-msgid "key '%s.%s' is not a valid secret flag"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3560
-#, c-format
-msgid "key '%s.%s' is not a integer in range 0 to 2^32"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3576
-#, fuzzy, c-format
-msgid "key '%s.%s' is not a valid endpoint"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3602
-#, c-format
-msgid "key '%s.%s' has invalid allowed-ips"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:3617
-#, c-format
-msgid "peer '%s' is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-keyfile.c:4108
-#, c-format
-msgid "the profile is not valid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-6lowpan.c:78
-#: ../src/libnm-core-impl/nm-setting-veth.c:80
-#, fuzzy, c-format
-msgid "property is not specified"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnm-core-impl/nm-setting-6lowpan.c:101
-#: ../src/libnm-core-impl/nm-setting-macsec.c:284
-#: ../src/libnm-core-impl/nm-setting-vlan.c:591
-#, c-format
-msgid "'%s' value doesn't match '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-6lowpan.c:117
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:344
-#: ../src/libnm-core-impl/nm-setting-macsec.c:300
-#: ../src/libnm-core-impl/nm-setting-macvlan.c:122
-#: ../src/libnm-core-impl/nm-setting-vlan.c:607
-#: ../src/libnm-core-impl/nm-setting-vxlan.c:352
-#, c-format
-msgid "'%s' is neither an UUID nor an interface name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:218
-msgid "binary data missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:250
-msgid "URI not NUL terminated"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:259
-msgid "URI is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:267
-msgid "URI is not valid UTF-8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:285
-msgid "data missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:306
-#: ../src/libnm-core-impl/nm-setting-8021x.c:674
-#, c-format
-msgid "certificate is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:315
-#, c-format
-msgid "certificate detected as invalid scheme"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:541
-msgid "CA certificate must be in X.509 format"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:553
-msgid "invalid certificate format"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:685
-#, c-format
-msgid "password is not supported when certificate is not on a PKCS#11 token"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2628
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2651
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2691
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2714
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2759
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2805
-#: ../src/libnm-core-impl/nm-setting-adsl.c:165
-#: ../src/libnm-core-impl/nm-setting-cdma.c:134
-#: ../src/libnm-core-impl/nm-setting-cdma.c:143
-#: ../src/libnm-core-impl/nm-setting-connection.c:1085
-#: ../src/libnm-core-impl/nm-setting-connection.c:1128
-#: ../src/libnm-core-impl/nm-setting-connection.c:1323
-#: ../src/libnm-core-impl/nm-setting-gsm.c:282
-#: ../src/libnm-core-impl/nm-setting-gsm.c:337
-#: ../src/libnm-core-impl/nm-setting-gsm.c:380
-#: ../src/libnm-core-impl/nm-setting-gsm.c:389
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5342
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:206
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:218
-#: ../src/libnm-core-impl/nm-setting-pppoe.c:136
-#: ../src/libnm-core-impl/nm-setting-pppoe.c:145
-#: ../src/libnm-core-impl/nm-setting-vpn.c:540
-#: ../src/libnm-core-impl/nm-setting-vpn.c:550
-#: ../src/libnm-core-impl/nm-setting-wimax.c:104
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:955
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:983
-#: ../src/libnm-core-impl/nm-setting.c:1240
-msgid "property is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2667
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2730
-#, c-format
-msgid "has to match '%s' property for PKCS#12"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2773
-msgid "exactly one property must be set"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2883
-#, fuzzy
-msgid "can be enabled only on Ethernet connections"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2904
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:92
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:163
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:175
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:194
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:243
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:257
-#: ../src/libnm-core-impl/nm-setting-olpc-mesh.c:121
-#: ../src/libnm-core-impl/nm-setting-wifi-p2p.c:132
-#: ../src/libnm-core-impl/nm-setting-wimax.c:116
-#: ../src/libnm-core-impl/nm-setting-wired.c:820
-#: ../src/libnm-core-impl/nm-setting-wired.c:833
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1008
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1020
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1032
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1045
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1058
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1089
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1156
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1205
-#: ../src/libnm-core-impl/nm-setting-wireless.c:884
-#: ../src/libnm-core-impl/nm-setting-wireless.c:896
-#: ../src/libnm-core-impl/nm-setting-wireless.c:909
-#: ../src/libnm-core-impl/nm-setting-wpan.c:161
-#: ../src/libnm-core-impl/nm-utils.c:4232
-msgid "property is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2929
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2942
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2955
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2989
-#: ../src/libnm-core-impl/nm-setting-8021x.c:3002
-#: ../src/libnm-core-impl/nm-setting-adsl.c:177
-#: ../src/libnm-core-impl/nm-setting-adsl.c:190
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:127
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:911
-#, c-format
-msgid "'%s' is not a valid value for the property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-8021x.c:2968
-msgid "invalid auth flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:151
-#, c-format
-msgid "'%s' connection requires '%s' or '%s' setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bluetooth.c:203
-#, c-format
-msgid "'%s' connection requires '%s' setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:495
-#, c-format
-msgid "'%s' option is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:504
-#, c-format
-msgid "'%s' is not a valid IPv4 address for '%s' option"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:531
-#, c-format
-msgid "missing option name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:536
-#, fuzzy, c-format
-msgid "invalid option '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:572
-#, fuzzy, c-format
-msgid "invalid value '%s' for option '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:814
-#, c-format
-msgid "mandatory option '%s' is missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:824
-#, c-format
-msgid "'%s' is not a valid value for '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:837
-#, c-format
-msgid "'%s=%s' is incompatible with '%s > 0'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:854
-#, c-format
-msgid "'%s' is not valid for the '%s' option: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:866
-#, c-format
-msgid "'%s' option is only valid for '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:879
-#, c-format
-msgid "'%s=%s' is not a valid configuration for '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:894
-#: ../src/libnm-core-impl/nm-setting-bond.c:905
-#, c-format
-msgid "'%s' option requires '%s' option to be enabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:922
-#: ../src/libnm-core-impl/nm-setting-bond.c:933
-#, c-format
-msgid "'%s' option requires '%s' option to be set"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:946
-#, c-format
-msgid "'%s' option is only valid with mode '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:959
-#, c-format
-msgid "'%s' and '%s' cannot have different values"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:982
-#, c-format
-msgid "'%s' option should be string"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bond.c:995
-#, c-format
-msgid "'%s' option is not valid with mode '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge-port.c:310
-#: ../src/libnm-core-impl/nm-setting-ovs-bridge.c:151
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:289
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:170
-#: ../src/libnm-core-impl/nm-setting-team-port.c:307
-#, c-format
-msgid "missing setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge-port.c:320
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:312
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:193
-#: ../src/libnm-core-impl/nm-setting-team-port.c:317
-#, c-format
-msgid ""
-"A connection with a '%s' setting must have the slave-type set to '%s'. "
-"Instead it is '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1175
-#, c-format
-msgid "value '%d' is out of range <%d-%d>"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1194
-msgid "is not a valid MAC address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1238
-msgid "the mask can't contain bits 0 (STP), 1 (MAC) or 2 (LACP)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1260
-msgid "is not a valid link local MAC address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1272
-msgid "is not a valid VLAN filtering protocol"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1284
-#, fuzzy
-msgid "is not a valid option"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-bridge.c:1296
-#, c-format
-msgid "'%s' option must be a power of 2"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:968
-#, c-format
-msgid "setting required for connection of type '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:999
-#, c-format
-msgid "Unknown slave type '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1014
-#, c-format
-msgid "Slave connections need a valid '%s' property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1038
-#, c-format
-msgid "Cannot set '%s' without '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1097
-#, c-format
-msgid "'%s' is not a valid UUID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1142
-#, c-format
-msgid "connection type '%s' is not valid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1248
-#, c-format
-msgid "'%s' connections must be enslaved to '%s', not '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1264
-#, c-format
-msgid "metered value %d is not valid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1278
-#: ../src/libnm-core-impl/nm-setting-connection.c:1292
-#: ../src/libnm-core-impl/nm-setting-connection.c:1309
-#, c-format
-msgid "value %d is not valid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1337
-msgid "DHCP option cannot be longer than 255 characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1348
-#, fuzzy
-msgid "MUD URL is not a valid URL"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1368
-#, fuzzy
-msgid "invalid permissions not in format \"user:$UNAME[:]\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1397
-#, c-format
-msgid "property type should be set to '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1415
-#, c-format
-msgid "slave-type '%s' requires a '%s' setting in the connection"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1426
-#, c-format
-msgid ""
-"Detect a slave connection with '%s' set and a port type '%s'. '%s' should be "
-"set to '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1452
-#, c-format
-msgid "A slave connection with '%s' set to '%s' cannot have a '%s' setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-connection.c:1469
-msgid "UUID needs normalization"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:483
-msgid "flags invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:492
-msgid "flags invalid - disabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:518
-#: ../src/libnm-core-impl/nm-setting-dcb.c:564
-msgid "property invalid (not enabled)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:527
-msgid "element invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:542
-msgid "sum not 100%"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:573
-#: ../src/libnm-core-impl/nm-setting-dcb.c:608
-msgid "property invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-dcb.c:598
-msgid "property missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ethtool.c:311
-msgid "unsupported ethtool setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ethtool.c:320
-#, fuzzy
-msgid "setting has invalid variant type"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ethtool.c:332
-msgid "coalesce option must be either 0 or 1"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ethtool.c:349
-msgid "pause-autoneg cannot be enabled when setting rx/tx options"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ethtool.c:374
-#, fuzzy, c-format
-msgid "unknown ethtool option '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:295
-#, c-format
-msgid "property value '%s' is empty or too long (>64)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:325
-#, c-format
-msgid "'%s' contains invalid char(s) (use [A-Za-z._-])"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:351
-#, c-format
-msgid "'%s' length is invalid (should be 5 or 6 digits)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:365
-#, c-format
-msgid "'%s' is not a number"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:402
-msgid "property is empty or wrong size"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:415
-msgid "property must contain only digits"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-gsm.c:429
-msgid "can't be enabled when manual configuration is present"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:201
-msgid "Must specify a P_Key if specifying parent"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:212
-msgid "InfiniBand P_Key connection did not specify parent interface name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:234
-#, c-format
-msgid ""
-"interface name of software infiniband device must be '%s' or unset (instead "
-"it is '%s')"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-infiniband.c:262
-#, c-format
-msgid "mtu can be at most %u but it is %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:112
-#, c-format
-msgid "Missing IPv4 address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:112
-#, c-format
-msgid "Missing IPv6 address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:119
-#, c-format
-msgid "Invalid IPv4 address '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:120
-#, c-format
-msgid "Invalid IPv6 address '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:136
-#, c-format
-msgid "Invalid IPv4 address prefix '%u'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:137
-#, c-format
-msgid "Invalid IPv6 address prefix '%u'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:154
-#, c-format
-msgid "Invalid routing metric '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1318
-#: ../src/libnm-core-impl/nm-setting-sriov.c:399
-msgid "unknown attribute"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1328
-#: ../src/libnm-core-impl/nm-setting-sriov.c:409
-#, fuzzy, c-format
-msgid "invalid attribute type '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1337
-#, c-format
-msgid "attribute is not valid for a IPv4 route"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1338
-#, c-format
-msgid "attribute is not valid for a IPv6 route"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1351
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1381
-#, c-format
-msgid "'%s' is not a valid IPv4 address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1352
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1382
-#, c-format
-msgid "'%s' is not a valid IPv6 address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1372
-#, c-format
-msgid "invalid prefix %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1393
-#, fuzzy, c-format
-msgid "%s is not a valid route type"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:1452
-#, c-format
-msgid "route scope is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2631
-msgid "invalid priority"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2644
-msgid "missing table"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2654
-#, fuzzy
-msgid "invalid action type"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2663
-msgid "has from/src but the prefix-length is zero"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2671
-msgid "missing from/src for a non zero prefix-length"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2678
-#, fuzzy
-msgid "invalid from/src"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2685
-msgid "invalid prefix length for from/src"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2694
-msgid "has to/dst but the prefix-length is zero"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2702
-msgid "missing to/dst for a non zero prefix-length"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2709
-#, fuzzy
-msgid "invalid to/dst"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2716
-msgid "invalid prefix length for to/dst"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2726
-msgid "invalid iifname"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2736
-msgid "invalid oifname"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2744
-msgid "invalid source port range"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2752
-msgid "invalid destination port range"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2762
-msgid "suppress_prefixlength out of range"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2770
-msgid "suppress_prefixlength is only allowed with the to-table action"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2913
-#, fuzzy, c-format
-msgid "invalid key \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2925
-#, c-format
-msgid "duplicate key %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2941
-#, fuzzy, c-format
-msgid "invalid variant type '%s' for \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2952
-msgid "missing \"family\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:2960
-#, fuzzy
-msgid "invalid \"family\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3017
-msgid "\"uid-range-start\" is greater than \"uid-range-end\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3211
-msgid "Unsupported to-string-flags argument"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3219
-msgid "Unsupported extra-argument"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3524
-#, c-format
-msgid "unsupported key \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3531
-#, c-format
-msgid "duplicate key \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3538
-#, fuzzy, c-format
-msgid "invalid value for \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3550
-msgid "empty text does not describe a rule"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3558
-#, c-format
-msgid "missing argument for \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3572
-msgid "invalid \"from\" part"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3588
-msgid "invalid \"to\" part"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3599
-#, c-format
-msgid "cannot detect address family for rule"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3666
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3756
-#, c-format
-msgid "rule is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:3737
-msgid "invalid address family"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5010
-#, c-format
-msgid "rule #%u is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5358
-#, c-format
-msgid "%d. DNS server address is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5377
-#, c-format
-msgid "%d. IP address is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5392
-#, c-format
-msgid "%d. IP address has 'label' property with invalid type"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5404
-#, c-format
-msgid "%d. IP address has invalid label '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5422
-msgid "gateway cannot be set if there are no addresses configured"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5434
-msgid "gateway is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5452
-#, c-format
-msgid "%d. route is invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5465
-#, fuzzy, c-format
-msgid "invalid attribute: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5485
-#, c-format
-msgid "%u. rule has wrong address-family"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5497
-#, c-format
-msgid "%u. rule is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5513
-#, fuzzy, c-format
-msgid "'%s' is not a valid IAID"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5527
-#, c-format
-msgid "the property cannot be set when '%s' is disabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5552
-msgid "the property is currently supported only for DHCPv4"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5569
-#, fuzzy, c-format
-msgid "'%s' is not a valid IP or subnet"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ip-config.c:5585
-#, c-format
-msgid "a gateway is incompatible with '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:330
-#, c-format
-msgid "'%d' is not a valid tunnel mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:357
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:383
-#, c-format
-msgid "'%s' is not a valid IPv%c address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:402
-msgid "tunnel keys can only be specified for GRE tunnels"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:415
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:433
-#, c-format
-msgid "'%s' is not a valid tunnel key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:447
-msgid "a fixed TTL is allowed only when path MTU discovery is enabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:462
-#, c-format
-msgid "some flags are invalid for the select mode: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip-tunnel.c:475
-#, c-format
-msgid "wired setting not allowed for mode %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:132
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:177
-#, c-format
-msgid "this property cannot be empty for '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:148
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:162
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:178
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:197
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:211
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:225
-#, c-format
-msgid "this property is not allowed for '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:230
-#, c-format
-msgid "'%s' is not a valid FQDN"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:243
-msgid "property cannot be set when dhcp-hostname is also set"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:258
-msgid "FQDN flags requires a FQDN set"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:277
-#, c-format
-msgid "multiple addresses are not allowed for '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip4-config.c:294
-msgid "property should be TRUE when method is set to disabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:275
-msgid "value is not a valid token"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:289
-msgid "only makes sense with EUI64 address generation mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:303
-msgid "invalid DUID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:318
-msgid "token is not in canonical form"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ip6-config.c:335
-msgid "property should be TRUE when method is set to ignore or disabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:229
-msgid "the key is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:238
-#, c-format
-msgid "the key must be %d characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:247
-msgid "the key contains non-hexadecimal characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:316
-#: ../src/libnm-core-impl/nm-setting-macvlan.c:138
-#: ../src/libnm-core-impl/nm-setting-vlan.c:620
-#, c-format
-msgid "property is not specified and neither is '%s:%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:347
-#, c-format
-msgid "EAP key management requires '%s' setting presence"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:356
-msgid "must be either psk (0) or eap (1)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:365
-#, c-format
-msgid "invalid port %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macsec.c:375
-msgid "only valid for psk mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-macvlan.c:153
-msgid "non promiscuous operation is allowed only in passthru mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-match.c:714
-#: ../src/libnm-core-impl/nm-setting-match.c:730
-#: ../src/libnm-core-impl/nm-setting-match.c:746
-#: ../src/libnm-core-impl/nm-setting-match.c:762
-#, c-format
-msgid "is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-olpc-mesh.c:96
-#: ../src/libnm-core-impl/nm-setting-wireless.c:801
-msgid "SSID length is out of range <1-32> bytes"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-olpc-mesh.c:108
-#: ../src/libnm-core-impl/nm-setting-wireless.c:854
-#, c-format
-msgid "'%d' is not a valid channel"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-bridge.c:160
-#, c-format
-msgid "A connection with a '%s' setting must not have a master."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-bridge.c:174
-#, fuzzy, c-format
-msgid "'%s' is not allowed in fail_mode"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:90
-#: ../src/libnm-core-impl/nm-setting-user.c:91
-msgid "missing key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:98
-#: ../src/libnm-core-impl/nm-setting-user.c:99
-msgid "key is too long"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:105
-#: ../src/libnm-core-impl/nm-setting-user.c:106
-msgid "key must be UTF8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:114
-#: ../src/libnm-core-impl/nm-setting-user.c:153
-msgid "key contains invalid characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:123
-msgid "key cannot start with \"NM.\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:153
-#: ../src/libnm-core-impl/nm-setting-user.c:180
-msgid "value is missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:162
-#: ../src/libnm-core-impl/nm-setting-user.c:189
-msgid "value is too large"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:170
-#: ../src/libnm-core-impl/nm-setting-user.c:197
-msgid "value is not valid UTF8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:313
-#: ../src/libnm-core-impl/nm-setting-user.c:365
-#, c-format
-msgid "invalid key \"%s\": %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:337
-#: ../src/libnm-core-impl/nm-setting-user.c:389
-#, c-format
-msgid "maximum number of user data entries reached (%u instead of %u)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-external-ids.c:380
-msgid ""
-"OVS external IDs can only be added to a profile of type OVS bridge/port/"
-"interface or to OVS system interface"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:93
-#, fuzzy, c-format
-msgid "'%s' is not a valid interface type"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:120
-#, c-format
-msgid "A connection with a '%s' setting needs connection.type explicitly set"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:134
-#, c-format
-msgid "A connection of type '%s' cannot have ovs-interface.type \"system\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:148
-#, c-format
-msgid "A connection of type '%s' cannot have an ovs-interface.type \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:170
-#, c-format
-msgid "A connection can not have both '%s' and '%s' settings at the same time"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:184
-#, c-format
-msgid ""
-"A connection with '%s' setting must be of connection.type \"ovs-interface\" "
-"but is \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:200
-#, c-format
-msgid ""
-"A connection with '%s' setting needs to be of '%s' interface type, not '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:222
-#, c-format
-msgid "A connection with ovs-interface.type '%s' setting a 'ovs-patch' setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:250
-#, c-format
-msgid "Missing ovs interface setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:256
-#, c-format
-msgid "Missing ovs interface type"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-interface.c:298
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:179
-#, c-format
-msgid "A connection with a '%s' setting must have a master."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:215
-#, c-format
-msgid "'%s' is not allowed in vlan_mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:228
-#, c-format
-msgid "the tag id must be in range 0-4094 but is %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:238
-#, fuzzy, c-format
-msgid "'%s' is not allowed in lacp"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-ovs-port.c:251
-#, c-format
-msgid "'%s' is not allowed in bond_mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ppp.c:335
-#, c-format
-msgid "'%d' is out of valid range <128-16384>"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-ppp.c:348
-#, c-format
-msgid "setting this property requires non-zero '%s' property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-proxy.c:123
-#, c-format
-msgid "invalid proxy method"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-proxy.c:133
-#: ../src/libnm-core-impl/nm-setting-proxy.c:145
-#, c-format
-msgid "this property is not allowed for method none"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-proxy.c:159
-#, c-format
-msgid "the script is too large"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-proxy.c:170
-#, c-format
-msgid "the script is not valid utf8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-proxy.c:181
-#, c-format
-msgid "the script lacks FindProxyForURL function"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-sriov.c:424
-#: ../src/libnm-core-impl/nm-setting-wired.c:787
-#: ../src/libnm-core-impl/nm-setting-wired.c:803
-#: ../src/libnm-core-impl/nm-setting-wired.c:877
-#: ../src/libnm-core-impl/nm-setting-wired.c:935
-#: ../src/libnm-core-impl/nm-setting-wireless.c:944
-#: ../src/libnm-core-impl/nm-setting-wireless.c:963
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4125
-#, c-format
-msgid "'%s' is not a valid MAC address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-sriov.c:1054
-#, c-format
-msgid "VF with index %u, but the total number of VFs is %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-sriov.c:1068
-#, c-format
-msgid "invalid VF %u: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-sriov.c:1082
-#, c-format
-msgid "duplicate VF index %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-sriov.c:1106
-#, c-format
-msgid "VFs %d and %d are not sorted by ascending index"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:54
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:420
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:697
-#, c-format
-msgid "kind is missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:62
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:428
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:705
-#, c-format
-msgid "'%s' is not a valid kind"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:71
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:714
-msgid "parent handle missing"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:1284
-msgid "there are duplicate TC qdiscs"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tc-config.c:1303
-msgid "there are duplicate TC filters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:119
-#: ../src/libnm-core-impl/nm-setting-team.c:193
-#: ../src/libnm-core-impl/nm-setting-team.c:325
-#, c-format
-msgid "%s is out of range [0, %d]"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:170
-#, c-format
-msgid "Missing target-host in nsna_ping link watcher"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:178
-#: ../src/libnm-core-impl/nm-setting-team.c:301
-#, c-format
-msgid "target-host '%s' contains invalid characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:292
-#, c-format
-msgid "Missing %s in arp_ping link watcher"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:310
-#, c-format
-msgid "source-host '%s' contains invalid characters"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-team.c:335
-msgid "vlanid is out of range [-1, 4094]"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tun.c:149
-#, c-format
-msgid "'%u': invalid mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tun.c:160
-#, c-format
-msgid "'%s': invalid user ID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-tun.c:172
-#, c-format
-msgid "'%s': invalid group ID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-user.c:131
-msgid "key requires a '.' for a namespace"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-user.c:146
-msgid "key cannot contain \"..\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-user.c:322
-msgid "maximum number of user data entries reached"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-veth.c:89
-#, fuzzy, c-format
-msgid "'%s' is not a valid interface name"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-vlan.c:632
-#, c-format
-msgid "the vlan id must be in range 0-4094 but is %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vlan.c:642
-msgid "flags are invalid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vlan.c:654
-msgid "vlan setting should have a ethernet setting as well"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:560
-msgid "cannot set connection.multi-connect for VPN setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:599
-msgid "setting contained a secret with an empty name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:638
-#: ../src/libnm-core-impl/nm-setting.c:2126
-msgid "not a secret property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:646
-msgid "secret is not of correct type"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:728
-#: ../src/libnm-core-impl/nm-setting-vpn.c:778
-#, c-format
-msgid "secret name cannot be empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vpn.c:744
-msgid "secret flags property not found"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vrf.c:73
-msgid "table cannot be zero"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-vxlan.c:329
-#: ../src/libnm-core-impl/nm-setting-vxlan.c:340
-#, fuzzy, c-format
-msgid "'%s' is not a valid IP%s address"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-setting-vxlan.c:363
-#, c-format
-msgid "%d is greater than local port max %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:767
-#, c-format
-msgid "'%s' is not a valid Ethernet port value"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:777
-#, c-format
-msgid "'%s' is not a valid duplex value"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:850
-#, fuzzy, c-format
-msgid "invalid key '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:862
-#, fuzzy, c-format
-msgid "invalid value for key '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:911
-msgid "Wake-on-LAN mode 'default' and 'ignore' are exclusive flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:923
-msgid "Wake-on-LAN password can only be used with magic packet mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:954
-msgid "both speed and duplex should have a valid value or both should be unset"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wired.c:955
-msgid "both speed and duplex are required for static link configuration"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:748
-msgid "missing public-key for peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:754
-msgid "invalid public-key for peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:764
-msgid "invalid preshared-key for peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:783
-msgid "invalid endpoint for peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:795
-#, c-format
-msgid "invalid IP address \"%s\" for allowed-ip of peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:806
-msgid "invalid preshared-key-flags for peer"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1598
-#, c-format
-msgid "peer #%u has no public-key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1611
-#, c-format
-msgid "peer #%u has invalid public-key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1627
-#, c-format
-msgid "peer #%u has invalid endpoint"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1659
-#, c-format
-msgid "peer #%u has invalid allowed-ips setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1673
-#, c-format
-msgid "peer #%u is invalid: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1744
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1763
-#, c-format
-msgid "method \"%s\" is not supported for WireGuard"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1787
-msgid "key must be 32 bytes base64 encoded"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1918
-#, fuzzy
-msgid "invalid peer secrets"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1944
-#, c-format
-msgid "peer #%u lacks public-key"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireguard.c:1961
-#, c-format
-msgid "non-existing peer '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:925
-#, fuzzy, c-format
-msgid "'%s' is not a valid value for '%s' mode connections"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:941
-#, c-format
-msgid "'%s' security requires '%s=%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:970
-#, c-format
-msgid "'%s' security requires '%s' setting presence"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:995
-#, c-format
-msgid "'%d' value is out of range <0-3>"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1072
-#, c-format
-msgid "'%s' can only be used with '%s=%s' (WEP)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1109
-#, c-format
-msgid ""
-"'%s' can only be used with 'owe', 'wpa-psk', 'sae', 'wpa-eap' or 'wpa-eap-"
-"suite-b-192' key management"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless-security.c:1127
-#, c-format
-msgid ""
-"pmf can only be 'default' or 'required' when using 'owe', 'sae' or 'wpa-eap-"
-"suite-b-192' key management"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:813
-#, c-format
-msgid "'%s' is not a valid Wi-Fi mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:826
-#, c-format
-msgid "'%s' is not a valid band"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:839
-#, c-format
-msgid "'%s' requires setting '%s' property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:869
-#, c-format
-msgid "'%s' requires '%s' and '%s' property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:981
-#: ../src/libnm-core-impl/nm-team-utils.c:2253
-#, c-format
-msgid "invalid value"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:994
-msgid "Wake-on-WLAN mode 'default' and 'ignore' are exclusive flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:1005
-msgid "Wake-on-WLAN trying to set unknown flag"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:1018
-msgid "AP isolation can be set only in AP mode"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wireless.c:1042
-#, c-format
-msgid "conflicting value of mac-address-randomization and cloned-mac-address"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wpan.c:171
-msgid "page must be defined along with a channel"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wpan.c:180
-#, c-format
-msgid "page must be between %d and %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting-wpan.c:191
-#, c-format
-msgid "channel must not be between %d and %d"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting.c:795
-#, c-format
-msgid "duplicate property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting.c:815
-#, c-format
-msgid "unknown property"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting.c:896
-#: ../src/libnm-core-impl/nm-setting.c:950
-#, c-format
-msgid "can't set property of type '%s' from value of type '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting.c:917
-#: ../src/libnm-core-impl/nm-setting.c:933
-#, fuzzy, c-format
-msgid "failed to set property: %s"
-msgstr "تعذّر التحميل"
-
-#: ../src/libnm-core-impl/nm-setting.c:970
-#, c-format
-msgid "can not set property: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-setting.c:2016
-msgid "secret not found"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:1531
-#: ../src/libnm-core-impl/nm-team-utils.c:1548
-#, fuzzy, c-format
-msgid "invalid D-Bus property \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:1560
-#, c-format
-msgid "duplicate D-Bus property \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:1580
-#, c-format
-msgid "invalid D-Bus property \"%s\" for \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:1652
-#, c-format
-msgid "unknown link-watcher name \"%s\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2239
-#, c-format
-msgid "value out or range"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2274
-#, fuzzy, c-format
-msgid "invalid runner-tx-hash"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2303
-#, fuzzy, c-format
-msgid "%s is only allowed for runner %s"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2313
-#, fuzzy, c-format
-msgid "%s is only allowed for runners %s"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2334
-#, c-format
-msgid "cannot set parameters for lacp and activebackup runners together"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2348
-#, fuzzy, c-format
-msgid "missing link watcher"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2374
-#, c-format
-msgid "team config exceeds size limit"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2385
-#, c-format
-msgid "team config is not valid UTF-8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2560
-#, fuzzy, c-format
-msgid "invalid D-Bus type \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-team-utils.c:2599
-#, fuzzy, c-format
-msgid "invalid link-watchers: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:2227
-#, c-format
-msgid "'%s' is not a valid handle."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2375
-#, c-format
-msgid "'%s' unexpected: parent already specified."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2393
-#, fuzzy, c-format
-msgid "invalid handle: '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:2415
-msgid "parent not specified."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2479
-#, c-format
-msgid "unsupported qdisc option: '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2609
-msgid "action name missing."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2634
-#, c-format
-msgid "unsupported action option: '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2771
-msgid "invalid action: "
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:2775
-#, c-format
-msgid "unsupported tfilter option: '%s'."
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3163
-#, c-format
-msgid "failed stat file %s: %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3174
-#, c-format
-msgid "not a file (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3185
-#, c-format
-msgid "invalid file owner %d for %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3197
-#, c-format
-msgid "file permissions for %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3207
-#, c-format
-msgid "reject %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3227
-#, c-format
-msgid "path is not absolute (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3242
-#, c-format
-msgid "Plugin file does not exist (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3251
-#, c-format
-msgid "Plugin is not a valid file (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3262
-#, c-format
-msgid "libtool archives are not supported (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:3339
-#, c-format
-msgid "Could not find \"%s\" binary"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4183
-#, fuzzy
-msgid "unknown secret flags"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:4193
-msgid "conflicting secret flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4204
-msgid "secret flags must not be \"not-required\""
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4212
-msgid "unsupported secret flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4242
-msgid "can't be simultaneously disabled and enabled"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4250
-msgid "WPS is required"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4318
-#, c-format
-msgid "not a valid ethernet MAC address for mask at position %lld"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4337
-#, c-format
-msgid "not a valid ethernet MAC address #%u at position %lld"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4952
-msgid "not valid utf-8"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:4973
-#: ../src/libnm-core-impl/nm-utils.c:5026
-msgid "is not a JSON object"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5002
-msgid "value is NULL"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5002
-msgid "value is empty"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5014
-#, c-format
-msgid "invalid JSON at position %d (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5142
-#: ../src/libnm-core-impl/nm-utils.c:5162
-msgid "unterminated escape sequence"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5188
-#, fuzzy, c-format
-msgid "unknown attribute '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:5206
-#, c-format
-msgid "missing key-value separator '%c' after '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5226
-#, c-format
-msgid "invalid uint32 value '%s' for attribute '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5240
-#, fuzzy, c-format
-msgid "invalid int32 value '%s' for attribute '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:5253
-#, fuzzy, c-format
-msgid "invalid uint64 value '%s' for attribute '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:5266
-#, c-format
-msgid "invalid uint8 value '%s' for attribute '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5280
-#, c-format
-msgid "invalid boolean value '%s' for attribute '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5294
-#, c-format
-msgid "unsupported attribute '%s' of type '%s'"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5596
-#, c-format
-msgid "Bridge VLANs %d and %d are not sorted by ascending vid"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5620
-#, c-format
-msgid "duplicate bridge VLAN vid %u"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5632
-msgid "only one VLAN can be the PVID"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5677
-#, fuzzy, c-format
-msgid "unknown flags 0x%x"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnm-core-impl/nm-utils.c:5689
-msgid ""
-"'fqdn-no-update' and 'fqdn-serv-update' flags cannot be set at the same time"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5700
-msgid "'fqdn-clear-flags' flag is incompatible with other FQDN flags"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-utils.c:5708
-msgid "DHCPv6 does not support the E (encoded) FQDN flag"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:284
-#, c-format
-msgid "cannot load plugin \"%s\": %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:295
-#, c-format
-msgid "failed to load nm_vpn_editor_plugin_factory() from %s (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:321
-#, c-format
-msgid "unknown error initializing plugin %s"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:341
-#, c-format
-msgid "cannot load VPN plugin in '%s': missing plugin name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:349
-#, c-format
-msgid "cannot load VPN plugin in '%s': invalid service name"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:481
-#, c-format
-msgid "the plugin does not support import capability"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-editor-plugin.c:505
-#, c-format
-msgid "the plugin does not support export capability"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:109
-#, c-format
-msgid "missing filename"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:117
-#, c-format
-msgid "filename must be an absolute path (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:126
-#, c-format
-msgid "filename has invalid format (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:419
-#, c-format
-msgid "there exists a conflicting plugin (%s) that has the same %s.%s value"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:458
-#, c-format
-msgid "there exists a conflicting plugin with the same name (%s)"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:1050
-#, c-format
-msgid "missing \"plugin\" setting"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:1060
-#, c-format
-msgid "%s: don't retry loading plugin which already failed previously"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:1134
-msgid "missing filename to load VPN plugin info"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:1149
-msgid "missing name for VPN plugin info"
-msgstr ""
-
-#: ../src/libnm-core-impl/nm-vpn-plugin-info.c:1163
-msgid "missing service for VPN plugin info"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2453
-#, c-format
-msgid "object class '%s' has no property named '%s'"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2462
-#, c-format
-msgid "property '%s' of object class '%s' is not writable"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2471
-#, c-format
-msgid ""
-"construct property \"%s\" for object '%s' can't be set after construction"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2482
-#, c-format
-msgid "'%s::%s' is not a valid property name; '%s' is not a GObject subtype"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2495
-#, c-format
-msgid "unable to set property '%s' of type '%s' from value of type '%s'"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:2507
-#, c-format
-msgid ""
-"value \"%s\" of type '%s' is invalid or out of range for property '%s' of "
-"type '%s'"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5405
-msgid "interface name is missing"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5413
-msgid "interface name is too short"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5421
-msgid "interface name is reserved"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5434
-msgid "interface name contains an invalid character"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5442
-msgid "interface name is longer than 15 characters"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5467
-#, fuzzy, c-format
-msgid "'%%' is not allowed in interface names"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5479
-#, fuzzy, c-format
-msgid "'%s' is not allowed as interface name"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5501
-msgid ""
-"interface name must be alphanumerical with no forward or backward slashes"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5518
-msgid "interface name must not be empty"
-msgstr ""
-
-#: ../src/libnm-glib-aux/nm-shared-utils.c:5526
-msgid "interface name must be UTF-8 encoded"
-msgstr ""
-
-#: ../src/libnm-log-core/nm-logging.c:252
-#, c-format
-msgid "Unknown log level '%s'"
-msgstr ""
-
-#: ../src/libnm-log-core/nm-logging.c:360
-#, c-format
-msgid "Unknown log domain '%s'"
-msgstr ""
-
-#. TRANSLATORS: the first %s is the partial value entered by
-#. * the user, the second %s a list of compatible values.
-#.
-#: ../src/libnmc-base/nm-client-utils.c:108
-#: ../src/libnmc-base/nm-client-utils.c:152
-#, c-format
-msgid "'%s' is ambiguous (%s)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:123
-#, c-format
-msgid "'%s' is not valid; use [%s] or [%s]"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:176
-#, c-format
-msgid "'%s' is not valid; use [%s], [%s] or [%s]"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:230
-#, c-format
-msgid "'%s' is ambiguous: %s"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:243
-#, c-format
-msgid "missing name, try one of [%s]"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:248 ../src/nmcli/connections.c:3543
-#: ../src/nmcli/connections.c:3601
-#, c-format
-msgid "'%s' not among [%s]"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:291
-#: ../src/libnmc-base/nm-client-utils.c:305
-#: ../src/libnmc-base/nm-client-utils.c:341
-#: ../src/libnmc-base/nm-client-utils.c:346
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1818
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1849
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2793
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2850 ../src/nmcli/common.c:1453
-#: ../src/nmcli/connections.c:73 ../src/nmcli/connections.c:83
-#: ../src/nmcli/devices.c:476 ../src/nmcli/devices.c:583
-#: ../src/nmcli/devices.c:589 ../src/nmcli/general.c:30
-#: ../src/nmcli/general.c:85 ../src/nmcli/general.c:91
-msgid "unknown"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:292
-msgid "unmanaged"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:293
-msgid "unavailable"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:294 ../src/nmcli/general.c:39
-msgid "disconnected"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:295
-msgid "connecting (prepare)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:296
-msgid "connecting (configuring)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:297
-msgid "connecting (need authentication)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:298
-msgid "connecting (getting IP configuration)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:299
-msgid "connecting (checking IP connectivity)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:301
-msgid "connecting (starting secondary connections)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:302 ../src/nmcli/general.c:37
-msgid "connected"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:303 ../src/nmcli/connections.c:76
-msgid "deactivating"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:304
-msgid "connection failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:311
-#: ../src/libnmc-base/nm-client-utils.c:312
-#: ../src/libnmc-base/nm-client-utils.c:313
-#: ../src/libnmc-base/nm-client-utils.c:314
-#: ../src/libnmc-base/nm-client-utils.c:315
-#: ../src/libnmc-base/nm-client-utils.c:316
-#, fuzzy
-msgid "connecting (externally)"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:317
-msgid "connected (externally)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:318
-#: ../src/libnmc-base/nm-client-utils.c:319
-msgid "deactivating (externally)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:342
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:880
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2785
-#: ../src/nmcli/connections.c:5295 ../src/nmcli/connections.c:7221
-#: ../src/nmcli/connections.c:7222 ../src/nmcli/devices.c:582
-#: ../src/nmcli/devices.c:588 ../src/nmcli/devices.c:1363
-#: ../src/nmcli/general.c:92 ../src/nmcli/utils.h:311
-msgid "yes"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:343
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:880
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2788
-#: ../src/nmcli/connections.c:5294 ../src/nmcli/connections.c:7221
-#: ../src/nmcli/connections.c:7222 ../src/nmcli/devices.c:582
-#: ../src/nmcli/devices.c:588 ../src/nmcli/devices.c:1363
-#: ../src/nmcli/general.c:93 ../src/nmcli/utils.h:311
-#, fuzzy
-msgid "no"
-msgstr "بلا"
-
-#: ../src/libnmc-base/nm-client-utils.c:344
-msgid "yes (guessed)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:345
-msgid "no (guessed)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:353
-msgid "No reason given"
-msgstr ""
-
-#. We should not really come here
-#: ../src/libnmc-base/nm-client-utils.c:354 ../src/nmcli/connections.c:3563
-#: ../src/nmcli/connections.c:3622
-#, c-format
-msgid "Unknown error"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:355
-msgid "Device is now managed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:356
-msgid "Device is now unmanaged"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:358
-msgid "The device could not be readied for configuration"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:361
-msgid ""
-"IP configuration could not be reserved (no available address, timeout, etc.)"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:363
-msgid "The IP configuration is no longer valid"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:365
-msgid "Secrets were required, but not provided"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:367
-msgid "802.1X supplicant disconnected"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:369
-msgid "802.1X supplicant configuration failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:370
-msgid "802.1X supplicant failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:372
-msgid "802.1X supplicant took too long to authenticate"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:374
-msgid "PPP service failed to start"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:375
-msgid "PPP service disconnected"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:376
-msgid "PPP failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:378
-msgid "DHCP client failed to start"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:379
-msgid "DHCP client error"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:380
-msgid "DHCP client failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:382
-msgid "Shared connection service failed to start"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:384
-msgid "Shared connection service failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:386
-msgid "AutoIP service failed to start"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:387
-msgid "AutoIP service error"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:388
-msgid "AutoIP service failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:389
-msgid "The line is busy"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:390
-msgid "No dial tone"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:392
-msgid "No carrier could be established"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:394
-msgid "The dialing request timed out"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:396
-msgid "The dialing attempt failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:398
-msgid "Modem initialization failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:400
-msgid "Failed to select the specified APN"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:402
-msgid "Not searching for networks"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:404
-msgid "Network registration denied"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:406
-msgid "Network registration timed out"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:408
-msgid "Failed to register with the requested network"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:409
-msgid "PIN check failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:411
-msgid "Necessary firmware for the device may be missing"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:412
-msgid "The device was removed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:413
-msgid "NetworkManager went to sleep"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:415
-msgid "The device's active connection disappeared"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:417
-msgid "Device disconnected by user or client"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:418
-msgid "Carrier/link changed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:420
-msgid "The device's existing connection was assumed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:422
-msgid "The supplicant is now available"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:424
-msgid "The modem could not be found"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:426
-msgid "The Bluetooth connection failed or timed out"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:428
-msgid "GSM Modem's SIM card not inserted"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:430
-msgid "GSM Modem's SIM PIN required"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:432
-msgid "GSM Modem's SIM PUK required"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:433
-msgid "GSM Modem's SIM wrong"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:435
-msgid "InfiniBand device does not support connected mode"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:437
-msgid "A dependency of the connection failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:439
-msgid "A problem with the RFC 2684 Ethernet over ADSL bridge"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:441
-msgid "ModemManager is unavailable"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:443
-msgid "The Wi-Fi network could not be found"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:445
-msgid "A secondary connection of the base connection failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:446
-msgid "DCB or FCoE setup failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:447
-msgid "teamd control failed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:449
-msgid "Modem failed or no longer available"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:451
-msgid "Modem now ready and available"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:452
-msgid "SIM PIN was incorrect"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:454
-msgid "New connection activation was enqueued"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:455
-msgid "The device's parent changed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:457
-msgid "The device parent's management changed"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:459
-#, fuzzy
-msgid "Open vSwitch database connection failed"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:461
-msgid "A duplicate IP address was detected"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:463
-msgid "The selected IP method is not supported"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:465
-msgid "Failed to configure SR-IOV parameters"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:467
-msgid "The Wi-Fi P2P peer could not be found"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:474
-msgid "Unknown reason"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:476
-#, fuzzy
-msgid "The connection was disconnected"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:478
-#, fuzzy
-msgid "Disconnected by user"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:480
-msgid "The base network connection was interrupted"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:482
-msgid "The VPN service stopped unexpectedly"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:484
-msgid "The VPN service returned invalid configuration"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:486
-#, fuzzy
-msgid "The connection attempt timed out"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:488
-msgid "The VPN service did not start in time"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:490
-msgid "The VPN service failed to start"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:491
-msgid "No valid secrets"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:492
-msgid "Invalid secrets"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:494
-#, fuzzy
-msgid "The connection was removed"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/libnmc-base/nm-client-utils.c:496
-#, fuzzy
-msgid "Master connection failed"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:498
-msgid "Could not create a software link"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:500
-msgid "The device disappeared"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:823
-msgid "missing colon for \"<setting>.<property>:<secret>\" format"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:840
-msgid "missing dot for \"<setting>.<property>:<secret>\" format"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:846
-msgid "missing setting for \"<setting>.<property>:<secret>\" format"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:857
-msgid "missing property for \"<setting>.<property>:<secret>\" format"
-msgstr ""
-
-#: ../src/libnmc-base/nm-client-utils.c:867
-#, fuzzy
-msgid "invalid setting name"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-client-utils.c:881
-#, fuzzy
-msgid "property name is not UTF-8"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-base/nm-client-utils.c:898
-#: ../src/libnmc-base/nm-client-utils.c:904
-msgid "secret is not UTF-8"
-msgstr ""
-
-#: ../src/libnmc-base/nm-polkit-listener.c:327
-#, c-format
-msgid "Could not find any session id for uid %d"
-msgstr ""
-
-#: ../src/libnmc-base/nm-polkit-listener.c:329
-#, fuzzy, c-format
-msgid "Could not retrieve session id: %s"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:222
-#, c-format
-msgid "Preshared-key for %s"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:270
-#: ../src/libnmc-base/nm-secret-agent-simple.c:357
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4954
-#: ../src/nmtui/nmt-page-dsl.c:49 ../src/nmtui/nmt-page-wifi.c:334
-msgid "Username"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:275
-#: ../src/libnmc-base/nm-secret-agent-simple.c:312
-#: ../src/libnmc-base/nm-secret-agent-simple.c:335
-#: ../src/libnmc-base/nm-secret-agent-simple.c:367
-#: ../src/libnmc-base/nm-secret-agent-simple.c:918
-#: ../src/libnmc-base/nm-secret-agent-simple.c:953
-#: ../src/libnmc-base/nm-secret-agent-simple.c:980
-#: ../src/libnmc-base/nm-vpn-helpers.c:143
-#: ../src/libnmc-base/nm-vpn-helpers.c:147
-#: ../src/libnmc-base/nm-vpn-helpers.c:153
-#: ../src/libnmc-base/nm-vpn-helpers.c:158 ../src/nmcli/devices.c:4641
-#: ../src/nmtui/nmt-page-dsl.c:62 ../src/nmtui/nmt-page-wifi.c:274
-#: ../src/nmtui/nmt-page-wifi.c:308 ../src/nmtui/nmt-page-wifi.c:347
-msgid "Password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:284
-msgid "Identity"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:289
-msgid "Private key password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:325
-#: ../src/nmtui/nmt-page-wifi.c:287
-msgid "Key"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:362
-#: ../src/nmtui/nmt-page-dsl.c:65
-msgid "Service"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:473
-msgid "WireGuard private-key"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:512
-#, fuzzy, c-format
-msgid "Secrets are required to connect WireGuard VPN '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:620
-#: ../src/libnmc-base/nm-secret-agent-simple.c:914
-#: ../src/libnmc-base/nm-secret-agent-simple.c:949
-#: ../src/libnmc-base/nm-secret-agent-simple.c:976
-#: ../src/libnmc-base/nm-secret-agent-simple.c:995
-#, c-format
-msgid "A password is required to connect to '%s'."
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:879
-msgid "Authentication required by wireless network"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:881
-#, c-format
-msgid ""
-"Passwords or encryption keys are required to access the wireless network "
-"'%s'."
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:887
-msgid "Wired 802.1X authentication"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:888
-#, c-format
-msgid "Secrets are required to access the wired network '%s'"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:894
-msgid "DSL authentication"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:895
-#, fuzzy, c-format
-msgid "Secrets are required for the DSL connection '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:904
-msgid "PIN code required"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:905
-msgid "PIN code is needed for the mobile broadband device"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:908
-msgid "PIN"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:913
-#: ../src/libnmc-base/nm-secret-agent-simple.c:948
-#: ../src/libnmc-base/nm-secret-agent-simple.c:975
-msgid "Mobile broadband network password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:926
-#, c-format
-msgid "Secrets are required to access the MACsec network '%s'"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:930
-msgid "MACsec PSK authentication"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:932
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6382
-msgid "MKA CAK"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:937
-msgid "MACsec EAP authentication"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:942
-msgid "WireGuard VPN secret"
-msgstr ""
-
-#: ../src/libnmc-base/nm-secret-agent-simple.c:985
-msgid "VPN password required"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:41
-#, c-format
-msgid "unknown VPN plugin \"%s\""
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:57
-#, c-format
-msgid "cannot load legacy-only VPN plugin \"%s\" for \"%s\""
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:65
-#, c-format
-msgid ""
-"cannot load VPN plugin \"%s\" due to missing \"%s\". Missing client plugin?"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:72
-#, c-format
-msgid "failed to load VPN plugin \"%s\": %s"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:148
-msgid "Certificate password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:149
-msgid "HTTP proxy password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:154
-#: ../src/libnmc-base/nm-vpn-helpers.c:159
-msgid "Group password"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:163 ../src/nmtui/nmt-page-ip4.c:131
-#: ../src/nmtui/nmt-page-ip6.c:132
-msgid "Gateway"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:164
-msgid "Cookie"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:165
-msgid "Gateway certificate hash"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:267
-#, fuzzy, c-format
-msgid "Invalid peer starting at %s:%zu: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:388
-msgid ""
-"The name of the WireGuard config must be a valid interface name followed by "
-"\".conf\""
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:671
-#, c-format
-msgid "unrecognized line at %s:%zu"
-msgstr ""
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:678
-#, fuzzy, c-format
-msgid "invalid value for '%s' at %s:%zu"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:686
-#, fuzzy, c-format
-msgid "invalid secret '%s' at %s:%zu"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-base/nm-vpn-helpers.c:815
-#, fuzzy, c-format
-msgid "Failed to create WireGuard connection: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-access.c:501
-#, c-format
-msgid "field '%s' has to be alone"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-access.c:523
-#, c-format
-msgid "invalid field '%s%s%s%s%s'; %s%s%s"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:263
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:329
-#, c-format
-msgid "invalid prefix '%s'; <1-%d> allowed"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:275
-#, c-format
-msgid "invalid IP address: %s"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:300
-msgid ""
-"The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [,"
-"ip[/prefix] ...]'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:341
-#, c-format
-msgid "the next hop ('%s') must be first"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:351
-#, c-format
-msgid "the metric ('%s') must be before attributes"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:402
-#, c-format
-msgid "invalid route: %s. %s"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:470
-#, c-format
-msgid "cannot read pac-script from file '%s'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:479
-#, c-format
-msgid "file '%s' contains non-valid utf-8"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:493
-#, c-format
-msgid "'%s' does not contain a valid PAC Script"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:499
-#, c-format
-msgid "Not a valid PAC Script"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:552
-#, c-format
-msgid "cannot read team config from file '%s'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:561
-#, c-format
-msgid "team config file '%s' contains non-valid utf-8"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1052
-msgid "auto"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1214
-#, c-format
-msgid "%s (%s)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1403
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1411
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4301
-msgid "'%s' is out of range [%"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1420
-#, c-format
-msgid "'%s' is not a valid number"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1476
-#, c-format
-msgid "'%s' is out of range [0, %u]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1520
-#, c-format
-msgid "'%s' is not a valid Ethernet MAC"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1644
-#, c-format
-msgid "invalid option '%s', use a combination of [%s]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1785
-#, c-format
-msgid "%d (key)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1787
-#, c-format
-msgid "%d (passphrase)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1790
-#, c-format
-msgid "%d (unknown)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1803
-msgid "0 (NONE)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1809
-msgid "REORDER_HEADERS, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1811
-msgid "GVRP, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1813
-msgid "LOOSE_BINDING, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1815
-msgid "MVRP, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1836
-#, fuzzy
-msgid "0 (none)"
-msgstr "بلا"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1842
-msgid "agent-owned, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1844
-msgid "not saved, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:1846
-msgid "not required, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2048
-#, c-format
-msgid "'%s' is not valid; use <option>=<value>"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2058
-#, c-format
-msgid "cannot set empty \"%s\" option"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2120
-#, c-format
-msgid "'%u' flags are not valid; use combination of %s"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2137
-#, c-format
-msgid "'%s' is not a valid number (or out of range)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2232
-#, fuzzy, c-format
-msgid "invalid IPv4 or subnet \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2262
-msgid "not a valid hex-string"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2278
-#, c-format
-msgid "'%s' is not a valid hex character"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2363
-msgid ""
-"too many arguments. Please only specify a private key file and optionally a "
-"password"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2475
-#, fuzzy, c-format
-msgid "failed to set bond option \"%s\""
-msgstr "تعذّر التحميل"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2522
-#, c-format
-msgid ""
-"Enter a list of bonding options formatted as:\n"
-" option = <value>, option = <value>,... \n"
-"Valid options are: %s\n"
-"'mode' can be provided as a name or a number:\n"
-"balance-rr = 0\n"
-"active-backup = 1\n"
-"balance-xor = 2\n"
-"broadcast = 3\n"
-"802.3ad = 4\n"
-"balance-tlb = 5\n"
-"balance-alb = 6\n"
-"\n"
-"Example: mode=2,miimon=120\n"
-msgstr ""
-
-#. Don't allow setting type unless the connection is brand new.
-#. * Just because it's a bad idea and the user wouldn't probably want that.
-#. * No technical reason, really.
-#. * Also, using uuid to see if the connection is brand new is a bit
-#. * hacky: we can not see if the type is already set, because
-#. * nmc_setting_set_property() is called only after the property
-#. * we're setting (type) has been removed.
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2587
-#, fuzzy, c-format
-msgid "Can not change the connection type"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2669
-#, fuzzy, c-format
-msgid "invalid permission \"%s\""
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2768
-#, c-format
-msgid "the value '%s' is not a valid UUID"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2837
-msgid "0 (disabled)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2843
-msgid "enabled, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2845
-msgid "advertise, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2847
-msgid "willing, "
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2931
-#, c-format
-msgid "'%s' is not a valid DCB flag"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2958
-msgid "must contain 8 comma-separated numbers"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2974
-#, c-format
-msgid "'%s' not a number between 0 and %u (inclusive) or %u"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:2982
-#, c-format
-msgid "'%s' not a number between 0 and %u (inclusive)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3008
-#, c-format
-msgid "changes will have no effect until '%s' includes 1 (enabled)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3039
-#, c-format
-msgid "bandwidth percentages must total 100%%"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3135
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3144
-msgid "SIM operator ID must be a 5 or 6 number MCCMNC code"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3164
-#, c-format
-msgid "'%s' is not a valid IBoIP P_Key"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3186
-msgid "default"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3345
-#, fuzzy, c-format
-msgid "invalid IPv%c address '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3471
-#, c-format
-msgid "invalid gateway address '%s'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3619
-#, c-format
-msgid "'%s' is not a valid channel; use <1-13>"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3698
-msgid "The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3724
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3806
-msgid ""
-"The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3750
-msgid "The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:3947
-#, c-format
-msgid "invalid priority map '%s'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4035
-#, c-format
-msgid "'%s' is not valid; 2 or 3 strings should be provided"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4071
-#, c-format
-msgid ""
-"Enter a list of S/390 options formatted as:\n"
-" option = <value>, option = <value>,...\n"
-"Valid options are: %s\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4103
-#, c-format
-msgid "'%s' is not a valid channel"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4109
-#, c-format
-msgid "'%ld' is not a valid channel"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4186
-#, c-format
-msgid ""
-"'%s' not compatible with %s '%s', please change the key or set the right %s "
-"first."
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4201
-#, c-format
-msgid "WEP key is guessed to be of '%s'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4207
-#, c-format
-msgid "WEP key index set to '%d'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4246
-#, c-format
-msgid "'%s' is not compatible with '%s' type, please change or delete the key."
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4280 ../src/nmcli/utils.h:317
-#, fuzzy
-msgid "on"
-msgstr "بلا"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4280 ../src/nmcli/utils.h:317
-msgid "off"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4321
-#, c-format
-msgid "'%s' is not valid; use 'on', 'off', or 'ignore'"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4389
-msgid "Bonding primary interface [none]"
-msgstr ""
-
-#. this is a virtual property, only needed during "ask" mode.
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4396
-msgid "Bonding monitoring mode"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4405
-msgid "Bonding miimon [100]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4413
-msgid "Bonding downdelay [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4421
-msgid "Bonding updelay [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4429
-msgid "Bonding arp-interval [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4437
-msgid "Bonding arp-ip-target [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4445
-msgid "LACP rate ('slow' or 'fast') [slow]"
-msgstr ""
-
-#. macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
-#. * that the actual type is (guint32(*)(type *)).
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4618
-msgid ""
-"nmcli can accepts both direct JSON configuration data and a file name "
-"containing the configuration. In the latter case the file is read and the "
-"contents is put into this property.\n"
-"\n"
-"Examples: set team.config { \"device\": \"team0\", \"runner\": {\"name\": "
-"\"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n"
-" set team.config /etc/my-team.conf\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4626
-msgid ""
-"Enter a list of link watchers formatted as dictionaries where the keys are "
-"teamd properties. Dictionary pairs are in the form: key=value and pairs are "
-"separated by ' '. Dictionaries are separated with ','.\n"
-"The keys allowed/required in the dictionary change on the basis of the link "
-"watcher type, while the only property common to all the link watchers is "
-"'name'*, which defines the link watcher to be specified.\n"
-"\n"
-"Properties available for the 'ethtool' link watcher:\n"
-" 'delay-up', 'delay-down'\n"
-"\n"
-"Properties available for the 'nsna_ping' link watcher:\n"
-" 'init-wait', 'interval', 'missed-max', 'target-host'*\n"
-"\n"
-"Properties available for the 'arp_ping' include all the ones for 'nsna_ping' "
-"and:\n"
-" 'source-host'*, 'validate-active', 'validate-inactive', 'send-always'.\n"
-"\n"
-"Properties flagged with a '*' are mandatory.\n"
-"\n"
-"Example:\n"
-" name=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, "
-"name=ethtool delay-up=3\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4675
-#, fuzzy
-msgid "IEEE 802.15.4 (WPAN) parent device or connection UUID"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4711
-msgid ""
-"Enter file path to CA certificate (optionally prefixed with file://).\n"
-" [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/cacert.crt\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4753
-msgid ""
-"Enter file path to client certificate (optionally prefixed with file://).\n"
-" [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/jara.crt\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4810
-msgid ""
-"Enter file path to CA certificate for inner authentication (optionally "
-"prefixed\n"
-"with file://).\n"
-" [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/ca-zweite-phase.crt\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4853
-msgid ""
-"Enter file path to client certificate for inner authentication (optionally "
-"prefixed\n"
-"with file://).\n"
-" [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/jara-zweite-phase.crt\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4880
-msgid ""
-"Enter bytes as a list of hexadecimal values.\n"
-"Two formats are accepted:\n"
-"(a) a string of hexadecimal digits, where each two digits represent one "
-"byte\n"
-"(b) space-separated list of bytes written as hexadecimal digits (with "
-"optional 0x/0X prefix, and optional leading 0).\n"
-"\n"
-"Examples: ab0455a6ea3a74C2\n"
-" ab 4 55 0xa6 ea 3a 74 C2\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4897
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4915
-msgid ""
-"Enter path to a private key and the key password (if not set yet):\n"
-" [file://]<file path> [<password>]\n"
-"Note that nmcli does not support specifying private key as raw blob data.\n"
-"Example: /home/cimrman/jara-priv-key Dardanely\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:4960
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5244
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5705
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6714
-msgid "Password [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5006
-msgid "Bluetooth device address"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5054
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5779
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7434
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7472
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7657
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7890
-msgid "MAC [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5060
-msgid "Enable STP [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5066
-msgid "STP priority [32768]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5072
-msgid "Forward delay [15]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5078
-msgid "Hello time [2]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5084
-msgid "Max age [20]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5090
-msgid "MAC address ageing time [300]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5100
-msgid "Group forward mask [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5142
-msgid "Enable IGMP snooping [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5200
-msgid "Bridge port priority [32]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5206
-msgid "Bridge port STP path cost [100]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5212
-msgid "Hairpin [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5238
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5699
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7281
-msgid "Username [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5340
-msgid ""
-"Enter a list of user permissions. This is a list of user names formatted "
-"as:\n"
-" [user:]<user name 1>, [user:]<user name 2>,...\n"
-"The items can be separated by commas or spaces.\n"
-"\n"
-"Example: alice bob charlie\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5393
-msgid ""
-"Enter secondary connections that should be activated when this connection "
-"is\n"
-"activated. Connections can be specified either by UUID or ID (name). nmcli\n"
-"transparently translates names to UUIDs. Note that NetworkManager only "
-"supports\n"
-"VPNs as secondary connections at the moment.\n"
-"The items can be separated by commas or spaces.\n"
-"\n"
-"Example: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5416
-msgid ""
-"Enter a value which indicates whether the connection is subject to a data\n"
-"quota, usage costs or other limitations. Accepted options are:\n"
-"'true','yes','on' to set the connection as metered\n"
-"'false','no','off' to set the connection as not metered\n"
-"'unknown' to let NetworkManager choose a value using some heuristics\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5715
-#, fuzzy
-msgid "APN"
-msgstr "LEAP"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5788
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7503
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7697
-msgid "MTU [auto]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5807
-msgid "P_KEY [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5816
-msgid "Parent interface [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5843
-msgid ""
-"Enter a list of IPv4 addresses of DNS servers.\n"
-"\n"
-"Example: 8.8.8.8, 8.8.4.4\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5891
-msgid "IPv4 address (IP[/plen]) [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5893
-msgid ""
-"Enter a list of IPv4 addresses formatted as:\n"
-" ip[/prefix], ip[/prefix],...\n"
-"Missing prefix is regarded as prefix of 32.\n"
-"\n"
-"Example: 192.168.1.5/24, 10.0.0.11/24\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5912
-msgid "IPv4 gateway [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5920
-msgid ""
-"Enter a list of IPv4 routes formatted as:\n"
-" ip[/prefix] [next-hop] [metric],...\n"
-"\n"
-"Missing prefix is regarded as a prefix of 32.\n"
-"Missing next-hop is regarded as 0.0.0.0.\n"
-"Missing metric means default (NM/kernel will set a default value).\n"
-"\n"
-"Examples: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n"
-" 10.1.2.0/24\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:5960
-msgid ""
-"Enter a list of IPv4 routing rules formatted as:\n"
-" priority [prio] [from [src]] [to [dst]], ,...\n"
-"\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6067
-msgid ""
-"Enter a list of IPv6 addresses of DNS servers. If the IPv6 configuration "
-"method is 'auto' these DNS servers are appended to those (if any) returned "
-"by automatic configuration. DNS servers cannot be used with the 'shared' or "
-"'link-local' IPv6 configuration methods, as there is no upstream network. In "
-"all other IPv6 configuration methods, these DNS servers are used as the only "
-"DNS servers for this connection.\n"
-"\n"
-"Example: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6121
-msgid "IPv6 address (IP[/plen]) [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6123
-msgid ""
-"Enter a list of IPv6 addresses formatted as:\n"
-" ip[/prefix], ip[/prefix],...\n"
-"Missing prefix is regarded as prefix of 128.\n"
-"\n"
-"Example: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6142
-msgid "IPv6 gateway [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6150
-msgid ""
-"Enter a list of IPv6 routes formatted as:\n"
-" ip[/prefix] [next-hop] [metric],...\n"
-"\n"
-"Missing prefix is regarded as a prefix of 128.\n"
-"Missing next-hop is regarded as \"::\".\n"
-"Missing metric means default (NM/kernel will set a default value).\n"
-"\n"
-"Examples: 2001:db8:beef:2::/64 2001:db8:beef::2, 2001:db8:beef:3::/64 2001:"
-"db8:beef::3 2\n"
-" abbe::/64 55\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6190
-msgid ""
-"Enter a list of IPv6 routing rules formatted as:\n"
-" priority [prio] [from [src]] [to [dst]], ,...\n"
-"\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6297
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7334
-msgid "Parent device [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6303
-msgid "Local endpoint [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6310
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7353
-msgid "Remote"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6355
-msgid "MACsec parent device or connection UUID"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6376
-msgid "Enable encryption [yes]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6392
-msgid "MKA_CKN"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6398
-msgid "SCI port [1]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6424
-#, fuzzy
-msgid "MACVLAN parent device or connection UUID"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6445
-msgid "Tap [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6512
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7611
-#: ../src/nmtui/nmt-page-wifi.c:203
-msgid "SSID"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6521
-msgid "OLPC Mesh channel [1]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6530
-msgid "DHCP anycast MAC address [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6695
-msgid "PPPoE parent device"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6701
-msgid "Service [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6708
-msgid "PPPoE username"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6744
-msgid "Browser only [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6750
-msgid "PAC URL"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6756
-msgid "PAC script"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:6880
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7068
-msgid "Team JSON configuration [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7171
-msgid "User ID [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7177
-msgid "Group ID [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7183
-msgid "Enable PI [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7189
-msgid "Enable VNET header [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7195
-msgid "Enable multi queue [no]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7208
-msgid "veth peer"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7221
-#, fuzzy
-msgid "VLAN parent device or connection UUID"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7228
-msgid "VLAN ID (<0-4094>)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7234
-msgid "VLAN flags (<0-7>) [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7243
-msgid "Ingress priority maps [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7253
-msgid "Egress priority maps [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7321
-msgid "Table [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7341
-msgid "VXLAN ID"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7347
-msgid "Local address [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7359
-msgid "Minimum source port [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7365
-msgid "Maximum source port [0]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7371
-msgid "Destination port [8472]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7411
-msgid "Peer"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7441
-msgid "WiMAX NSP name"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7478
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7662
-msgid "Cloned MAC [none]"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7511
-msgid ""
-"Enter a list of subchannels (comma or space separated).\n"
-"\n"
-"Example: 0.0.0e20 0.0.0e21 0.0.0e22\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7839
-msgid ""
-"Enter the type of WEP keys. The accepted values are: 0 or unknown, 1 or key, "
-"and 2 or passphrase.\n"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7898
-msgid "Short address (<0x0000-0xffff>)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7914
-msgid "PAN Identifier (<0x0000-0xffff>)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7929
-msgid "Page (<default|0-31>)"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:7943
-msgid "Channel (<default|0-26>)"
-msgstr ""
-
-#. ***************************************************************************
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8078
-msgid "6LOWPAN settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8079
-msgid "802-1x settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8081
-#, fuzzy
-msgid "bluetooth connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8082
-msgid "Bond device"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8083
-#, fuzzy
-msgid "Bridge device"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8084
-#, fuzzy
-msgid "Bridge port"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8085
-#, fuzzy
-msgid "CDMA mobile broadband connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8086
-msgid "General settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8087
-msgid "DCB settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8088
-msgid "Dummy settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8089
-msgid "Ethtool settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8090
-msgid "Generic settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8091
-#, fuzzy
-msgid "GSM mobile broadband connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8092
-#, fuzzy
-msgid "Hostname settings"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8094
-msgid "IPv4 protocol"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8095
-msgid "IPv6 protocol"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8096
-msgid "IP-tunnel settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8097
-msgid "MACsec connection"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8098
-#, fuzzy
-msgid "macvlan connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8099
-msgid "Match"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8100
-#, fuzzy
-msgid "OLPC Mesh connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8101
-msgid "Open vSwitch bridge settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8102
-msgid "Open vSwitch DPDK interface settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8103
-msgid "OVS External IDs"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8104
-msgid "Open vSwitch interface settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8105
-msgid "Open vSwitch patch interface settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8106
-msgid "Open vSwitch port settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8107
-msgid "PPP settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8108
-msgid "PPPoE"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8109
-msgid "Proxy"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8110
-msgid "Serial settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8111
-msgid "SR-IOV settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8112
-msgid "Traffic controls"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8113
-msgid "Team device"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8114
-msgid "Team port"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8115
-msgid "Tun device"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8116
-msgid "User settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8122
-#, fuzzy
-msgid "Wi-Fi P2P connection"
-msgstr "انشيء اتصال VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8123
-#, fuzzy
-msgid "WiMAX connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8124
-#, fuzzy
-msgid "Wired Ethernet"
-msgstr "انشيء اتصال VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8125
-msgid "WireGuard VPN settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8126
-#, fuzzy
-msgid "Wi-Fi connection"
-msgstr "انشيء اتصال VPN"
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8127
-msgid "Wi-Fi security settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8128
-msgid "WPAN settings"
-msgstr ""
-
-#: ../src/libnmc-setting/nm-meta-setting-desc.c:8528
-msgid "name"
-msgstr ""
-
-#. Generated file. Do not edit.
-#: ../src/libnmc-setting/settings-docs.h.in:3
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID from "
-"which this 6LowPAN interface should be created."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:4
-msgid "Channel on which the mesh network to join is located."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:5
-msgid ""
-"Anycast DHCP MAC address used when requesting an IP address via DHCP. The "
-"specific anycast address used determines which DHCP server class answers the "
-"request. This is currently only implemented by dhclient DHCP plugin."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:6
-msgid "SSID of the mesh network to join."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:7
-msgid ""
-"Configures AP isolation, which prevents communication between wireless "
-"devices connected to this AP. This property can be set to a value different "
-"from NM_TERNARY_DEFAULT (-1) only when the interface is configured in AP "
-"mode. If set to NM_TERNARY_TRUE (1), devices are not able to communicate "
-"with each other. This increases security because it protects devices against "
-"attacks from other clients in the network. At the same time, it prevents "
-"devices to access resources on the same wireless networks as file shares, "
-"printers, etc. If set to NM_TERNARY_FALSE (0), devices can talk to each "
-"other. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in "
-"case the global default is unspecified it is assumed to be NM_TERNARY_FALSE "
-"(0)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:8
-msgid ""
-"802.11 frequency band of the network. One of \"a\" for 5GHz 802.11a or \"bg"
-"\" for 2.4GHz 802.11. This will lock associations to the Wi-Fi network to "
-"the specific band, i.e. if \"a\" is specified, the device will not associate "
-"with the same network in the 2.4GHz band even if the network's settings are "
-"compatible. This setting depends on specific driver capability and may not "
-"work with all drivers."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:9
-msgid ""
-"If specified, directs the device to only associate with the given access "
-"point. This capability is highly driver dependent and not supported by all "
-"devices. Note: this property does not control the BSSID used when creating "
-"an Ad-Hoc network and is unlikely to in the future."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:10
-msgid ""
-"Wireless channel to use for the Wi-Fi connection. The device will only join "
-"(or create for Ad-Hoc networks) a Wi-Fi network on the specified channel. "
-"Because channel numbers overlap between bands, this property also requires "
-"the \"band\" property to be set."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:11
-msgid ""
-"If specified, request that the device use this MAC address instead. This is "
-"known as MAC cloning or spoofing. Beside explicitly specifying a MAC "
-"address, the special values \"preserve\", \"permanent\", \"random\" and "
-"\"stable\" are supported. \"preserve\" means not to touch the MAC address on "
-"activation. \"permanent\" means to use the permanent hardware address of the "
-"device. \"random\" creates a random MAC address on each connect. \"stable\" "
-"creates a hashed MAC address based on connection.stable-id and a machine "
-"dependent key. If unspecified, the value can be overwritten via global "
-"defaults, see manual of NetworkManager.conf. If still unspecified, it "
-"defaults to \"preserve\" (older versions of NetworkManager may use a "
-"different default value). On D-Bus, this field is expressed as \"assigned-"
-"mac-address\" or the deprecated \"cloned-mac-address\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:12
-#: ../src/libnmc-setting/settings-docs.h.in:96
-msgid ""
-"With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all "
-"bits of the MAC address are scrambled and a locally-administered, unicast "
-"MAC address is created. This property allows to specify that certain bits "
-"are fixed. Note that the least significant bit of the first MAC address will "
-"always be unset to create a unicast MAC address. If the property is NULL, it "
-"is eligible to be overwritten by a default connection setting. If the value "
-"is still NULL or an empty string, the default is to create a locally-"
-"administered, unicast MAC address. If the value contains one MAC address, "
-"this address is used as mask. The set bits of the mask are to be filled with "
-"the current MAC address of the device, while the unset bits are subject to "
-"randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of "
-"the current MAC address and only randomize the lower 3 bytes using the "
-"\"random\" or \"stable\" algorithm. If the value contains one additional MAC "
-"address after the mask, this address is used instead of the current MAC "
-"address to fill the bits that shall not be randomized. For example, a value "
-"of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC "
-"address to 68:F7:28, while the lower bits are randomized. A value of "
-"\"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled "
-"globally-administered, burned-in MAC address. If the value contains more "
-"than one additional MAC addresses, one of them is chosen randomly. For "
-"example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will "
-"create a fully scrambled MAC address, randomly locally or globally "
-"administered."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:13
-msgid ""
-"If TRUE, indicates that the network is a non-broadcasting network that hides "
-"its SSID. This works both in infrastructure and AP mode. In infrastructure "
-"mode, various workarounds are used for a more reliable discovery of hidden "
-"networks, such as probe-scanning the SSID. However, these workarounds "
-"expose inherent insecurities with hidden SSID networks, and thus hidden SSID "
-"networks should be used with caution. In AP mode, the created network does "
-"not broadcast its SSID. Note that marking the network as hidden may be a "
-"privacy issue for you (in infrastructure mode) or client stations (in AP "
-"mode), as the explicit probe-scans are distinctly recognizable on the air."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:14
-msgid ""
-"If specified, this connection will only apply to the Wi-Fi device whose "
-"permanent MAC address matches. This property does not change the MAC address "
-"of the device (i.e. MAC spoofing)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:15
-msgid ""
-"A list of permanent MAC addresses of Wi-Fi devices to which this connection "
-"should never apply. Each MAC address should be given in the standard hex-"
-"digits-and-colons notation (eg \"00:11:22:33:44:55\")."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:16
-msgid ""
-"One of NM_SETTING_MAC_RANDOMIZATION_DEFAULT (0) (never randomize unless the "
-"user has set a global default to randomize and the supplicant supports "
-"randomization), NM_SETTING_MAC_RANDOMIZATION_NEVER (1) (never randomize the "
-"MAC address), or NM_SETTING_MAC_RANDOMIZATION_ALWAYS (2) (always randomize "
-"the MAC address). This property is deprecated for 'cloned-mac-address'. "
-"Deprecated: 1"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:17
-msgid ""
-"Wi-Fi network mode; one of \"infrastructure\", \"mesh\", \"adhoc\" or \"ap"
-"\". If blank, infrastructure is assumed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:18
-#: ../src/libnmc-setting/settings-docs.h.in:99
-msgid ""
-"If non-zero, only transmit packets of the specified size or smaller, "
-"breaking larger packets up into multiple Ethernet frames."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:19
-msgid ""
-"One of NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2) (disable Wi-Fi power "
-"saving), NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3) (enable Wi-Fi power "
-"saving), NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1) (don't touch currently "
-"configure setting) or NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0) (use the "
-"globally configured value). All other values are reserved."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:20
-msgid ""
-"If non-zero, directs the device to only use the specified bitrate for "
-"communication with the access point. Units are in Kb/s, ie 5500 = 5.5 Mbit/"
-"s. This property is highly driver dependent and not all devices support "
-"setting a static bitrate."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:21
-msgid ""
-"A list of BSSIDs (each BSSID formatted as a MAC address like "
-"\"00:11:22:33:44:55\") that have been detected as part of the Wi-Fi "
-"network. NetworkManager internally tracks previously seen BSSIDs. The "
-"property is only meant for reading and reflects the BSSID list of "
-"NetworkManager. The changes you make to this property will not be preserved."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:22
-msgid "SSID of the Wi-Fi network. Must be specified."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:23
-msgid ""
-"If non-zero, directs the device to use the specified transmit power. Units "
-"are dBm. This property is highly driver dependent and not all devices "
-"support setting a static transmit power."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:24
-msgid ""
-"The NMSettingWirelessWakeOnWLan options to enable. Not all devices support "
-"all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY "
-"(0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of "
-"Wake-on-LAN in NetworkManager)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:25
-msgid ""
-"When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the "
-"802.11 authentication algorithm required by the AP here. One of \"open\" "
-"for Open System, \"shared\" for Shared Key, or \"leap\" for Cisco LEAP. "
-"When using Cisco LEAP (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\") "
-"the \"leap-username\" and \"leap-password\" properties must be specified."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:26
-msgid ""
-"Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the "
-"connection. One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use "
-"global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) "
-"(disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS "
-"if the supplicant and the access point support it) or "
-"NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not "
-"supported). When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and "
-"no global default is set, FILS will be optionally enabled."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:27
-msgid ""
-"A list of group/broadcast encryption algorithms which prevents connections "
-"to Wi-Fi networks that do not utilize one of the algorithms in the list. "
-"For maximum compatibility leave this property empty. Each list element may "
-"be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:28
-msgid ""
-"Key management used for the connection. One of \"none\" (WEP or no password "
-"protection), \"ieee8021x\" (Dynamic WEP), \"owe\" (Opportunistic Wireless "
-"Encryption), \"wpa-psk\" (WPA2 + WPA3 personal), \"sae\" (WPA3 personal "
-"only), \"wpa-eap\" (WPA2 + WPA3 enterprise) or \"wpa-eap-suite-b-192\" (WPA3 "
-"enterprise only). This property must be set for any Wi-Fi connection that "
-"uses security."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:29
-msgid ""
-"The login password for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
-"and auth-alg = \"leap\")."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:30
-msgid "Flags indicating how to handle the \"leap-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:31
-msgid ""
-"The login username for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
-"and auth-alg = \"leap\")."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:32
-msgid ""
-"A list of pairwise encryption algorithms which prevents connections to Wi-Fi "
-"networks that do not utilize one of the algorithms in the list. For maximum "
-"compatibility leave this property empty. Each list element may be one of "
-"\"tkip\" or \"ccmp\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:33
-msgid ""
-"Indicates whether Protected Management Frames (802.11w) must be enabled for "
-"the connection. One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use "
-"global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable "
-"PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the "
-"supplicant and the access point support it) or "
-"NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not "
-"supported). When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no "
-"global default is set, PMF will be optionally enabled."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:34
-msgid ""
-"List of strings specifying the allowed WPA protocol versions to use. Each "
-"element may be one \"wpa\" (allow WPA) or \"rsn\" (allow WPA2/RSN). If not "
-"specified, both WPA and RSN connections are allowed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:35
-msgid ""
-"Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII "
-"passphrase of 8 to 63 characters that is (as specified in the 802.11i "
-"standard) hashed to derive the actual key, or the key in form of 64 "
-"hexadecimal character. The WPA3-Personal networks use a passphrase of any "
-"length for SAE authentication."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:36
-msgid "Flags indicating how to handle the \"psk\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:37
-msgid ""
-"Flags indicating how to handle the \"wep-key0\", \"wep-key1\", \"wep-key2\", "
-"and \"wep-key3\" properties."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:38
-msgid ""
-"Controls the interpretation of WEP keys. Allowed values are "
-"NM_WEP_KEY_TYPE_KEY (1), in which case the key is either a 10- or 26-"
-"character hexadecimal string, or a 5- or 13-character ASCII password; or "
-"NM_WEP_KEY_TYPE_PASSPHRASE (2), in which case the passphrase is provided as "
-"a string and will be hashed using the de-facto MD5 method to derive the "
-"actual WEP key."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:39
-msgid ""
-"Index 0 WEP key. This is the WEP key used in most networks. See the \"wep-"
-"key-type\" property for a description of how this key is interpreted."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:40
-msgid ""
-"Index 1 WEP key. This WEP index is not used by most networks. See the "
-"\"wep-key-type\" property for a description of how this key is interpreted."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:41
-msgid ""
-"Index 2 WEP key. This WEP index is not used by most networks. See the "
-"\"wep-key-type\" property for a description of how this key is interpreted."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:42
-msgid ""
-"Index 3 WEP key. This WEP index is not used by most networks. See the "
-"\"wep-key-type\" property for a description of how this key is interpreted."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:43
-msgid ""
-"When static WEP is used (ie, key-mgmt = \"none\") and a non-default WEP key "
-"index is used by the AP, put that WEP key index here. Valid values are 0 "
-"(default key) through 3. Note that some consumer access points (like the "
-"Linksys WRT54G) number the keys 1 - 4."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:44
-msgid ""
-"Flags indicating which mode of WPS is to be used if any. There's little "
-"point in changing the default setting as NetworkManager will automatically "
-"determine whether it's feasible to start WPS enrollment from the Access "
-"Point capabilities. WPS can be disabled by setting this property to a value "
-"of 1."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:45
-msgid ""
-"List of strings to be matched against the altSubjectName of the certificate "
-"presented by the authentication server. If the list is empty, no "
-"verification of the server certificate's altSubjectName is performed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:46
-msgid ""
-"Anonymous identity string for EAP authentication methods. Used as the "
-"unencrypted identity with EAP types that support different tunneled identity "
-"like EAP-TTLS."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:47
-msgid ""
-"A timeout for the authentication. Zero means the global default; if the "
-"global default is not set, the authentication timeout is 25 seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:48
-msgid ""
-"Contains the CA certificate if used by the EAP method specified in the \"eap"
-"\" property. Certificate data is specified using a \"scheme\"; three are "
-"currently supported: blob, path and pkcs#11 URL. When using the blob scheme "
-"this property should be set to the certificate's DER encoded data. When "
-"using the path scheme, this property should be set to the full UTF-8 encoded "
-"path of the certificate, prefixed with the string \"file://\" and ending "
-"with a terminating NUL byte. This property can be unset even if the EAP "
-"method supports CA certificates, but this allows man-in-the-middle attacks "
-"and is NOT recommended. Note that enabling NMSetting8021x:system-ca-certs "
-"will override this setting to use the built-in path, if the built-in path is "
-"not a directory."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:49
-msgid ""
-"The password used to access the CA certificate stored in \"ca-cert\" "
-"property. Only makes sense if the certificate is stored on a PKCS#11 token "
-"that requires a login."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:50
-msgid "Flags indicating how to handle the \"ca-cert-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:51
-msgid ""
-"UTF-8 encoded path to a directory containing PEM or DER formatted "
-"certificates to be added to the verification chain in addition to the "
-"certificate specified in the \"ca-cert\" property. If NMSetting8021x:system-"
-"ca-certs is enabled and the built-in CA path is an existing directory, then "
-"this setting is ignored."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:52
-msgid ""
-"Contains the client certificate if used by the EAP method specified in the "
-"\"eap\" property. Certificate data is specified using a \"scheme\"; two are "
-"currently supported: blob and path. When using the blob scheme (which is "
-"backwards compatible with NM 0.7.x) this property should be set to the "
-"certificate's DER encoded data. When using the path scheme, this property "
-"should be set to the full UTF-8 encoded path of the certificate, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:53
-msgid ""
-"The password used to access the client certificate stored in \"client-cert\" "
-"property. Only makes sense if the certificate is stored on a PKCS#11 token "
-"that requires a login."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:54
-msgid "Flags indicating how to handle the \"client-cert-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:55
-msgid ""
-"Constraint for server domain name. If set, this list of FQDNs is used as a "
-"match requirement for dNSName element(s) of the certificate presented by the "
-"authentication server. If a matching dNSName is found, this constraint is "
-"met. If no dNSName values are present, this constraint is matched against "
-"SubjectName CN using the same comparison. Multiple valid FQDNs can be passed "
-"as a \";\" delimited list."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:56
-msgid ""
-"Constraint for server domain name. If set, this FQDN is used as a suffix "
-"match requirement for dNSName element(s) of the certificate presented by the "
-"authentication server. If a matching dNSName is found, this constraint is "
-"met. If no dNSName values are present, this constraint is matched against "
-"SubjectName CN using same suffix match comparison. Since version 1.24, "
-"multiple valid FQDNs can be passed as a \";\" delimited list."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:57
-msgid ""
-"The allowed EAP method to be used when authenticating to the network with "
-"802.1x. Valid methods are: \"leap\", \"md5\", \"tls\", \"peap\", \"ttls\", "
-"\"pwd\", and \"fast\". Each method requires different configuration using "
-"the properties of this setting; refer to wpa_supplicant documentation for "
-"the allowed combinations."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:58
-msgid ""
-"Identity string for EAP authentication methods. Often the user's user or "
-"login name."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:59
-msgid ""
-"Whether the 802.1X authentication is optional. If TRUE, the activation will "
-"continue even after a timeout or an authentication failure. Setting the "
-"property to TRUE is currently allowed only for Ethernet connections. If set "
-"to FALSE, the activation can continue only after a successful authentication."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:60
-msgid "UTF-8 encoded file path containing PAC for EAP-FAST."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:61
-msgid ""
-"UTF-8 encoded password used for EAP authentication methods. If both the "
-"\"password\" property and the \"password-raw\" property are specified, "
-"\"password\" is preferred."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:62
-#: ../src/libnmc-setting/settings-docs.h.in:109
-#: ../src/libnmc-setting/settings-docs.h.in:151
-#: ../src/libnmc-setting/settings-docs.h.in:201
-#: ../src/libnmc-setting/settings-docs.h.in:331
-msgid "Flags indicating how to handle the \"password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:63
-msgid ""
-"Password used for EAP authentication methods, given as a byte array to allow "
-"passwords in other encodings than UTF-8 to be used. If both the \"password\" "
-"property and the \"password-raw\" property are specified, \"password\" is "
-"preferred."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:64
-msgid "Flags indicating how to handle the \"password-raw\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:65
-msgid ""
-"Specifies authentication flags to use in \"phase 1\" outer authentication "
-"using NMSetting8021xAuthFlags options. The individual TLS versions can be "
-"explicitly disabled. If a certain TLS disable flag is not set, it is up to "
-"the supplicant to allow or forbid it. The TLS options map to "
-"tls_disable_tlsv1_x settings. See the wpa_supplicant documentation for more "
-"details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:66
-msgid ""
-"Enables or disables in-line provisioning of EAP-FAST credentials when FAST "
-"is specified as the EAP method in the \"eap\" property. Recognized values "
-"are \"0\" (disabled), \"1\" (allow unauthenticated provisioning), "
-"\"2\" (allow authenticated provisioning), and \"3\" (allow both "
-"authenticated and unauthenticated provisioning). See the wpa_supplicant "
-"documentation for more details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:67
-msgid ""
-"Forces use of the new PEAP label during key derivation. Some RADIUS servers "
-"may require forcing the new PEAP label to interoperate with PEAPv1. Set to "
-"\"1\" to force use of the new PEAP label. See the wpa_supplicant "
-"documentation for more details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:68
-msgid ""
-"Forces which PEAP version is used when PEAP is set as the EAP method in the "
-"\"eap\" property. When unset, the version reported by the server will be "
-"used. Sometimes when using older RADIUS servers, it is necessary to force "
-"the client to use a particular PEAP version. To do so, this property may be "
-"set to \"0\" or \"1\" to force that specific PEAP version."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:69
-msgid ""
-"List of strings to be matched against the altSubjectName of the certificate "
-"presented by the authentication server during the inner \"phase 2\" "
-"authentication. If the list is empty, no verification of the server "
-"certificate's altSubjectName is performed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:70
-msgid ""
-"Specifies the allowed \"phase 2\" inner authentication method when an EAP "
-"method that uses an inner TLS tunnel is specified in the \"eap\" property. "
-"For TTLS this property selects one of the supported non-EAP inner methods: "
-"\"pap\", \"chap\", \"mschap\", \"mschapv2\" while \"phase2-autheap\" selects "
-"an EAP inner method. For PEAP this selects an inner EAP method, one of: "
-"\"gtc\", \"otp\", \"md5\" and \"tls\". Each \"phase 2\" inner method "
-"requires specific parameters for successful authentication; see the "
-"wpa_supplicant documentation for more details. Both \"phase2-auth\" and "
-"\"phase2-autheap\" cannot be specified."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:71
-msgid ""
-"Specifies the allowed \"phase 2\" inner EAP-based authentication method when "
-"TTLS is specified in the \"eap\" property. Recognized EAP-based \"phase 2\" "
-"methods are \"md5\", \"mschapv2\", \"otp\", \"gtc\", and \"tls\". Each "
-"\"phase 2\" inner method requires specific parameters for successful "
-"authentication; see the wpa_supplicant documentation for more details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:72
-msgid ""
-"Contains the \"phase 2\" CA certificate if used by the EAP method specified "
-"in the \"phase2-auth\" or \"phase2-autheap\" properties. Certificate data is "
-"specified using a \"scheme\"; three are currently supported: blob, path and "
-"pkcs#11 URL. When using the blob scheme this property should be set to the "
-"certificate's DER encoded data. When using the path scheme, this property "
-"should be set to the full UTF-8 encoded path of the certificate, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte. This "
-"property can be unset even if the EAP method supports CA certificates, but "
-"this allows man-in-the-middle attacks and is NOT recommended. Note that "
-"enabling NMSetting8021x:system-ca-certs will override this setting to use "
-"the built-in path, if the built-in path is not a directory."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:73
-msgid ""
-"The password used to access the \"phase2\" CA certificate stored in \"phase2-"
-"ca-cert\" property. Only makes sense if the certificate is stored on a "
-"PKCS#11 token that requires a login."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:74
-msgid ""
-"Flags indicating how to handle the \"phase2-ca-cert-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:75
-msgid ""
-"UTF-8 encoded path to a directory containing PEM or DER formatted "
-"certificates to be added to the verification chain in addition to the "
-"certificate specified in the \"phase2-ca-cert\" property. If NMSetting8021x:"
-"system-ca-certs is enabled and the built-in CA path is an existing "
-"directory, then this setting is ignored."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:76
-msgid ""
-"Contains the \"phase 2\" client certificate if used by the EAP method "
-"specified in the \"phase2-auth\" or \"phase2-autheap\" properties. "
-"Certificate data is specified using a \"scheme\"; two are currently "
-"supported: blob and path. When using the blob scheme (which is backwards "
-"compatible with NM 0.7.x) this property should be set to the certificate's "
-"DER encoded data. When using the path scheme, this property should be set to "
-"the full UTF-8 encoded path of the certificate, prefixed with the string "
-"\"file://\" and ending with a terminating NUL byte. This property can be "
-"unset even if the EAP method supports CA certificates, but this allows man-"
-"in-the-middle attacks and is NOT recommended."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:77
-msgid ""
-"The password used to access the \"phase2\" client certificate stored in "
-"\"phase2-client-cert\" property. Only makes sense if the certificate is "
-"stored on a PKCS#11 token that requires a login."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:78
-msgid ""
-"Flags indicating how to handle the \"phase2-client-cert-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:79
-msgid ""
-"Constraint for server domain name. If set, this list of FQDNs is used as a "
-"match requirement for dNSName element(s) of the certificate presented by the "
-"authentication server during the inner \"phase 2\" authentication. If a "
-"matching dNSName is found, this constraint is met. If no dNSName values are "
-"present, this constraint is matched against SubjectName CN using the same "
-"comparison. Multiple valid FQDNs can be passed as a \";\" delimited list."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:80
-msgid ""
-"Constraint for server domain name. If set, this FQDN is used as a suffix "
-"match requirement for dNSName element(s) of the certificate presented by the "
-"authentication server during the inner \"phase 2\" authentication. If a "
-"matching dNSName is found, this constraint is met. If no dNSName values are "
-"present, this constraint is matched against SubjectName CN using same suffix "
-"match comparison. Since version 1.24, multiple valid FQDNs can be passed as "
-"a \";\" delimited list."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:81
-msgid ""
-"Contains the \"phase 2\" inner private key when the \"phase2-auth\" or "
-"\"phase2-autheap\" property is set to \"tls\". Key data is specified using a "
-"\"scheme\"; two are currently supported: blob and path. When using the blob "
-"scheme and private keys, this property should be set to the key's encrypted "
-"PEM encoded data. When using private keys with the path scheme, this "
-"property should be set to the full UTF-8 encoded path of the key, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte. When "
-"using PKCS#12 format private keys and the blob scheme, this property should "
-"be set to the PKCS#12 data and the \"phase2-private-key-password\" property "
-"must be set to password used to decrypt the PKCS#12 certificate and key. "
-"When using PKCS#12 files and the path scheme, this property should be set to "
-"the full UTF-8 encoded path of the key, prefixed with the string \"file://\" "
-"and ending with a terminating NUL byte, and as with the blob scheme the "
-"\"phase2-private-key-password\" property must be set to the password used to "
-"decode the PKCS#12 private key and certificate."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:82
-msgid ""
-"The password used to decrypt the \"phase 2\" private key specified in the "
-"\"phase2-private-key\" property when the private key either uses the path "
-"scheme, or is a PKCS#12 format key."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:83
-msgid ""
-"Flags indicating how to handle the \"phase2-private-key-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:84
-msgid ""
-"Substring to be matched against the subject of the certificate presented by "
-"the authentication server during the inner \"phase 2\" authentication. When "
-"unset, no verification of the authentication server certificate's subject is "
-"performed. This property provides little security, if any, and its use is "
-"deprecated in favor of NMSetting8021x:phase2-domain-suffix-match."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:85
-msgid "PIN used for EAP authentication methods."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:86
-#: ../src/libnmc-setting/settings-docs.h.in:203
-msgid "Flags indicating how to handle the \"pin\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:87
-msgid ""
-"Contains the private key when the \"eap\" property is set to \"tls\". Key "
-"data is specified using a \"scheme\"; two are currently supported: blob and "
-"path. When using the blob scheme and private keys, this property should be "
-"set to the key's encrypted PEM encoded data. When using private keys with "
-"the path scheme, this property should be set to the full UTF-8 encoded path "
-"of the key, prefixed with the string \"file://\" and ending with a "
-"terminating NUL byte. When using PKCS#12 format private keys and the blob "
-"scheme, this property should be set to the PKCS#12 data and the \"private-"
-"key-password\" property must be set to password used to decrypt the PKCS#12 "
-"certificate and key. When using PKCS#12 files and the path scheme, this "
-"property should be set to the full UTF-8 encoded path of the key, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte, and as "
-"with the blob scheme the \"private-key-password\" property must be set to "
-"the password used to decode the PKCS#12 private key and certificate. "
-"WARNING: \"private-key\" is not a \"secret\" property, and thus unencrypted "
-"private key data using the BLOB scheme may be readable by unprivileged "
-"users. Private keys should always be encrypted with a private key password "
-"to prevent unauthorized access to unencrypted private key data."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:88
-msgid ""
-"The password used to decrypt the private key specified in the \"private-key"
-"\" property when the private key either uses the path scheme, or if the "
-"private key is a PKCS#12 format key."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:89
-msgid "Flags indicating how to handle the \"private-key-password\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:90
-msgid ""
-"Substring to be matched against the subject of the certificate presented by "
-"the authentication server. When unset, no verification of the authentication "
-"server certificate's subject is performed. This property provides little "
-"security, if any, and its use is deprecated in favor of NMSetting8021x:"
-"domain-suffix-match."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:91
-msgid ""
-"When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" properties using "
-"the system CA directory specified at configure time with the --system-ca-"
-"path switch. The certificates in this directory are added to the "
-"verification chain in addition to any certificates specified by the \"ca-cert"
-"\" and \"phase2-ca-cert\" properties. If the path provided with --system-ca-"
-"path is rather a file name (bundle of trusted CA certificates), it overrides "
-"\"ca-cert\" and \"phase2-ca-cert\" properties instead (sets ca_cert/ca_cert2 "
-"options for wpa_supplicant)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:92
-msgid ""
-"When TRUE, setup the interface to accept packets for all MAC addresses. This "
-"is enabling the kernel interface flag IFF_PROMISC. When FALSE, the interface "
-"will only accept the packets with the interface destination mac address or "
-"broadcast."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:93
-msgid ""
-"When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" "
-"and \"duplex\" properties are both specified, only that single mode will be "
-"advertised and accepted during the link auto-negotiation process: this works "
-"only for BASE-T 802.3 specifications and is useful for enforcing gigabits "
-"modes, as in these cases link negotiation is mandatory. When FALSE, \"speed"
-"\" and \"duplex\" properties should be both set or link configuration will "
-"be skipped."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:94
-msgid ""
-"If specified, request that the device use this MAC address instead. This is "
-"known as MAC cloning or spoofing. Beside explicitly specifying a MAC "
-"address, the special values \"preserve\", \"permanent\", \"random\" and "
-"\"stable\" are supported. \"preserve\" means not to touch the MAC address on "
-"activation. \"permanent\" means to use the permanent hardware address if the "
-"device has one (otherwise this is treated as \"preserve\"). \"random\" "
-"creates a random MAC address on each connect. \"stable\" creates a hashed "
-"MAC address based on connection.stable-id and a machine dependent key. If "
-"unspecified, the value can be overwritten via global defaults, see manual of "
-"NetworkManager.conf. If still unspecified, it defaults to \"preserve"
-"\" (older versions of NetworkManager may use a different default value). On "
-"D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated "
-"\"cloned-mac-address\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:95
-msgid ""
-"When a value is set, either \"half\" or \"full\", configures the device to "
-"use the specified duplex mode. If \"auto-negotiate\" is \"yes\" the "
-"specified duplex mode will be the only one advertised during link "
-"negotiation: this works only for BASE-T 802.3 specifications and is useful "
-"for enforcing gigabits modes, as in these cases link negotiation is "
-"mandatory. If the value is unset (the default), the link configuration will "
-"be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be "
-"auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will "
-"advertise all the supported duplex modes. Must be set together with the "
-"\"speed\" property if specified. Before specifying a duplex mode be sure "
-"your device supports it."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:97
-msgid ""
-"If specified, this connection will only apply to the Ethernet device whose "
-"permanent MAC address matches. This property does not change the MAC address "
-"of the device (i.e. MAC spoofing)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:98
-msgid ""
-"If specified, this connection will never apply to the Ethernet device whose "
-"permanent MAC address matches an address in the list. Each MAC address is "
-"in the standard hex-digits-and-colons notation (00:11:22:33:44:55)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:100
-msgid ""
-"Specific port type to use if the device supports multiple attachment "
-"methods. One of \"tp\" (Twisted Pair), \"aui\" (Attachment Unit Interface), "
-"\"bnc\" (Thin Ethernet) or \"mii\" (Media Independent Interface). If the "
-"device supports only one port type, this setting is ignored."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:101
-msgid ""
-"s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing "
-"the different types of virtual network devices available on s390 systems."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:102
-msgid ""
-"Dictionary of key/value pairs of s390-specific device options. Both keys "
-"and values must be strings. Allowed keys include \"portno\", \"layer2\", "
-"\"portname\", \"protocol\", among others. Key names must contain only "
-"alphanumeric characters (ie, [a-zA-Z0-9])."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:103
-msgid ""
-"Identifies specific subchannels that this network device uses for "
-"communication with z/VM or s390 host. Like the \"mac-address\" property for "
-"non-z/VM devices, this property can be used to ensure this connection only "
-"applies to the network device that uses these subchannels. The list should "
-"contain exactly 3 strings, and each string may only be composed of "
-"hexadecimal characters and the period (.) character."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:104
-msgid ""
-"When a value greater than 0 is set, configures the device to use the "
-"specified speed. If \"auto-negotiate\" is \"yes\" the specified speed will "
-"be the only one advertised during link negotiation: this works only for BASE-"
-"T 802.3 specifications and is useful for enforcing gigabit speeds, as in "
-"this case link negotiation is mandatory. If the value is unset (0, the "
-"default), the link configuration will be either skipped (if \"auto-negotiate"
-"\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" "
-"is \"yes\") and the local device will advertise all the supported speeds. In "
-"Mbit/s, ie 100 == 100Mbit/s. Must be set together with the \"duplex\" "
-"property when non-zero. Before specifying a speed value be sure your device "
-"supports it."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:105
-msgid ""
-"The NMSettingWiredWakeOnLan options to enable. Not all devices support all "
-"options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC "
-"(0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to "
-"use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to "
-"disable management of Wake-on-LAN in NetworkManager)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:106
-msgid ""
-"If specified, the password used with magic-packet-based Wake-on-LAN, "
-"represented as an Ethernet MAC address. If NULL, no password will be "
-"required."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:107
-msgid "Encapsulation of ADSL connection. Can be \"vcmux\" or \"llc\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:108
-msgid "Password used to authenticate with the ADSL service."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:110
-msgid "ADSL connection protocol. Can be \"pppoa\", \"pppoe\" or \"ipoatm\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:111
-msgid "Username used to authenticate with the ADSL service."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:112
-msgid "VCI of ADSL connection"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:113
-msgid "VPI of ADSL connection"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:114
-msgid "The Bluetooth address of the device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:115
-msgid ""
-"Either \"dun\" for Dial-Up Networking connections or \"panu\" for Personal "
-"Area Networking connections to devices supporting the NAP profile."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:116
-msgid ""
-"Dictionary of key/value pairs of bonding options. Both keys and values must "
-"be strings. Option names must contain only alphanumeric characters (ie, [a-"
-"zA-Z0-9])."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:117
-msgid "The Ethernet MAC address aging time, in seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:118
-msgid "The Spanning Tree Protocol (STP) forwarding delay, in seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:119
-msgid ""
-"If specified, The MAC address of the multicast group this bridge uses for "
-"STP. The address must be a link-local address in standard Ethernet MAC "
-"address format, ie an address of the form 01:80:C2:00:00:0X, with X in [0, "
-"4..F]. If not specified the default value is 01:80:C2:00:00:00."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:120
-msgid ""
-"A mask of group addresses to forward. Usually, group addresses in the range "
-"from 01:80:C2:00:00:00 to 01:80:C2:00:00:0F are not forwarded according to "
-"standards. This property is a mask of 16 bits, each corresponding to a group "
-"address in that range that must be forwarded. The mask can't have bits 0, 1 "
-"or 2 set because they are used for STP, MAC pause frames and LACP."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:121
-msgid "The Spanning Tree Protocol (STP) hello time, in seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:122
-msgid ""
-"If specified, the MAC address of bridge. When creating a new bridge, this "
-"MAC address will be set. If this field is left unspecified, the \"ethernet."
-"cloned-mac-address\" is referred instead to generate the initial MAC "
-"address. Note that setting \"ethernet.cloned-mac-address\" anyway overwrites "
-"the MAC address of the bridge later while activating the bridge. Hence, this "
-"property is deprecated. Deprecated: 1"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:123
-msgid "The Spanning Tree Protocol (STP) maximum message age, in seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:124
-msgid "Set maximum size of multicast hash table (value must be a power of 2)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:125
-msgid ""
-"Set the number of queries the bridge will send before stopping forwarding a "
-"multicast group after a \"leave\" message has been received."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:126
-msgid ""
-"Set interval (in deciseconds) between queries to find remaining members of a "
-"group, after a \"leave\" message is received."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:127
-msgid ""
-"Set delay (in deciseconds) after which the bridge will leave a group, if no "
-"membership reports for this group are received."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:128
-msgid ""
-"Enable or disable sending of multicast queries by the bridge. If not "
-"specified the option is disabled."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:129
-msgid ""
-"If no queries are seen after this delay (in deciseconds) has passed, the "
-"bridge will start to send its own queries."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:130
-msgid ""
-"Interval (in deciseconds) between queries sent by the bridge after the end "
-"of the startup phase."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:131
-msgid ""
-"Set the Max Response Time/Max Response Delay (in deciseconds) for IGMP/MLD "
-"queries sent by the bridge."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:132
-msgid ""
-"If enabled the bridge's own IP address is used as the source address for "
-"IGMP queries otherwise the default of 0.0.0.0 is used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:133
-msgid ""
-"Sets bridge's multicast router. Multicast-snooping must be enabled for this "
-"option to work. Supported values are: 'auto', 'disabled', 'enabled' to which "
-"kernel assigns the numbers 1, 0, and 2, respectively. If not specified the "
-"default value is 'auto' (1)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:134
-msgid ""
-"Controls whether IGMP snooping is enabled for this bridge. Note that if "
-"snooping was automatically disabled due to hash collisions, the system may "
-"refuse to enable the feature until the collisions are resolved."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:135
-msgid "Set the number of IGMP queries to send during startup phase."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:136
-msgid ""
-"Sets the time (in deciseconds) between queries sent out at startup to "
-"determine membership information."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:137
-msgid ""
-"Sets the Spanning Tree Protocol (STP) priority for this bridge. Lower "
-"values are \"better\"; the lowest priority bridge will be elected the root "
-"bridge."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:138
-msgid ""
-"Controls whether Spanning Tree Protocol (STP) is enabled for this bridge."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:139
-msgid ""
-"The default PVID for the ports of the bridge, that is the VLAN id assigned "
-"to incoming untagged frames."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:140
-msgid "Control whether VLAN filtering is enabled on the bridge."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:141
-msgid ""
-"If specified, the protocol used for VLAN filtering. Supported values are: "
-"'802.1Q', '802.1ad'. If not specified the default value is '802.1Q'."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:142
-msgid "Controls whether per-VLAN stats accounting is enabled."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:143
-msgid ""
-"Array of bridge VLAN objects. In addition to the VLANs specified here, the "
-"bridge will also have the default-pvid VLAN configured by the bridge.vlan-"
-"default-pvid property. In nmcli the VLAN list can be specified with the "
-"following syntax: $vid [pvid] [untagged] [, $vid [pvid] [untagged]]... where "
-"$vid is either a single id between 1 and 4094 or a range, represented as a "
-"couple of ids separated by a dash."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:144
-msgid ""
-"Enables or disables \"hairpin mode\" for the port, which allows frames to be "
-"sent back out through the port the frame was received on."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:145
-msgid ""
-"The Spanning Tree Protocol (STP) port cost for destinations via this port."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:146
-msgid "The Spanning Tree Protocol (STP) priority of this bridge port."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:147
-msgid ""
-"Array of bridge VLAN objects. In addition to the VLANs specified here, the "
-"port will also have the default-pvid VLAN configured on the bridge by the "
-"bridge.vlan-default-pvid property. In nmcli the VLAN list can be specified "
-"with the following syntax: $vid [pvid] [untagged] [, $vid [pvid] "
-"[untagged]]... where $vid is either a single id between 1 and 4094 or a "
-"range, represented as a couple of ids separated by a dash."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:148
-#: ../src/libnmc-setting/settings-docs.h.in:197
-#: ../src/libnmc-setting/settings-docs.h.in:212
-msgid ""
-"If non-zero, only transmit packets of the specified size or smaller, "
-"breaking larger packets up into multiple frames."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:149
-msgid ""
-"The number to dial to establish the connection to the CDMA-based mobile "
-"broadband network, if any. If not specified, the default number (#777) is "
-"used when required."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:150
-#: ../src/libnmc-setting/settings-docs.h.in:200
-msgid ""
-"The password used to authenticate with the network, if required. Many "
-"providers do not require a password, or accept any password. But if a "
-"password is required, it is specified here."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:152
-#: ../src/libnmc-setting/settings-docs.h.in:206
-msgid ""
-"The username used to authenticate with the network, if required. Many "
-"providers do not require a username, or accept any username. But if a "
-"username is required, it is specified here."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:153
-msgid ""
-"The number of retries for the authentication. Zero means to try "
-"indefinitely; -1 means to use a global default. If the global default is not "
-"set, the authentication retries for 3 times before failing the connection. "
-"Currently, this only applies to 802-1x authentication."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:154
-msgid ""
-"Whether or not the connection should be automatically connected by "
-"NetworkManager when the resources for the connection are available. TRUE to "
-"automatically activate the connection, FALSE to require manual intervention "
-"to activate the connection. Note that autoconnect is not implemented for VPN "
-"profiles. See \"secondaries\" as an alternative to automatically connect VPN "
-"profiles."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:155
-msgid ""
-"The autoconnect priority. If the connection is set to autoconnect, "
-"connections with higher priority will be preferred. Defaults to 0. The "
-"higher number means higher priority."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:156
-msgid ""
-"The number of times a connection should be tried when autoactivating before "
-"giving up. Zero means forever, -1 means the global default (4 times if not "
-"overridden). Setting this to 1 means to try activation only once before "
-"blocking autoconnect. Note that after a timeout, NetworkManager will try to "
-"autoconnect again."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:157
-msgid ""
-"Whether or not slaves of this connection should be automatically brought up "
-"when NetworkManager activates this connection. This only has a real effect "
-"for master connections. The properties \"autoconnect\", \"autoconnect-"
-"priority\" and \"autoconnect-retries\" are unrelated to this setting. The "
-"permitted values are: 0: leave slave connections untouched, 1: activate all "
-"the slave connections with this connection, -1: default. If -1 (default) is "
-"set, global connection.autoconnect-slaves is read to determine the real "
-"value. If it is default as well, this fallbacks to 0."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:158
-msgid ""
-"If greater than zero, delay success of IP addressing until either the "
-"timeout is reached, or an IP gateway replies to a ping."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:159
-msgid ""
-"A human readable unique identifier for the connection, like \"Work Wi-Fi\" "
-"or \"T-Mobile 3G\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:160
-msgid ""
-"The name of the network interface this connection is bound to. If not set, "
-"then the connection can be attached to any interface of the appropriate type "
-"(subject to restrictions imposed by other settings). For software devices "
-"this specifies the name of the created device. For connection types where "
-"interface names cannot easily be made persistent (e.g. mobile broadband or "
-"USB Ethernet), this property should not be used. Setting this property "
-"restricts the interfaces a connection can be used with, and if interface "
-"names change or are reordered the connection may be applied to the wrong "
-"interface."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:161
-msgid "Whether LLDP is enabled for the connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:162
-msgid ""
-"Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the "
-"connection. LLMNR is a protocol based on the Domain Name System (DNS) packet "
-"format that allows both IPv4 and IPv6 hosts to perform name resolution for "
-"hosts on the same local link. The permitted values are: \"yes\" (2) register "
-"hostname and resolving for the connection, \"no\" (0) disable LLMNR for the "
-"interface, \"resolve\" (1) do not register hostname but allow resolving of "
-"LLMNR host names If unspecified, \"default\" ultimately depends on the DNS "
-"plugin (which for systemd-resolved currently means \"yes\"). This feature "
-"requires a plugin which supports LLMNR. Otherwise, the setting has no "
-"effect. One such plugin is dns-systemd-resolved."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:163
-msgid "Interface name of the master device or UUID of the master connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:164
-msgid ""
-"Whether mDNS is enabled for the connection. The permitted values are: \"yes"
-"\" (2) register hostname and resolving for the connection, \"no\" (0) "
-"disable mDNS for the interface, \"resolve\" (1) do not register hostname but "
-"allow resolving of mDNS host names and \"default\" (-1) to allow lookup of a "
-"global default in NetworkManager.conf. If unspecified, \"default\" "
-"ultimately depends on the DNS plugin (which for systemd-resolved currently "
-"means \"no\"). This feature requires a plugin which supports mDNS. "
-"Otherwise, the setting has no effect. One such plugin is dns-systemd-"
-"resolved."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:165
-msgid ""
-"Whether the connection is metered. When updating this property on a "
-"currently activated connection, the change takes effect immediately."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:166
-msgid ""
-"If configured, set to a Manufacturer Usage Description (MUD) URL that points "
-"to manufacturer-recommended network policies for IoT devices. It is "
-"transmitted as a DHCPv4 or DHCPv6 option. The value must be a valid URL "
-"starting with \"https://\". The special value \"none\" is allowed to "
-"indicate that no MUD URL is used. If the per-profile value is unspecified "
-"(the default), a global connection default gets consulted. If still "
-"unspecified, the ultimate default is \"none\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:167
-msgid ""
-"Specifies whether the profile can be active multiple times at a particular "
-"moment. The value is of type NMConnectionMultiConnect."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:168
-msgid ""
-"An array of strings defining what access a given user has to this "
-"connection. If this is NULL or empty, all users are allowed to access this "
-"connection; otherwise users are allowed if and only if they are in this "
-"list. When this is not empty, the connection can be active only when one of "
-"the specified users is logged into an active session. Each entry is of the "
-"form \"[type]:[id]:[reserved]\"; for example, \"user:dcbw:blah\". At this "
-"time only the \"user\" [type] is allowed. Any other values are ignored and "
-"reserved for future use. [id] is the username that this permission refers "
-"to, which may not contain the \":\" character. Any [reserved] information "
-"present must be ignored and is reserved for future use. All of [type], "
-"[id], and [reserved] must be valid UTF-8."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:169
-msgid ""
-"FALSE if the connection can be modified using the provided settings "
-"service's D-Bus interface with the right privileges, or TRUE if the "
-"connection is read-only and cannot be modified."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:170
-msgid ""
-"List of connection UUIDs that should be activated when the base connection "
-"itself is activated. Currently, only VPN connections are supported."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:171
-msgid ""
-"Setting name of the device type of this slave's master connection (eg, \"bond"
-"\"), or NULL if this connection is not a slave."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:172
-msgid ""
-"This represents the identity of the connection used for various purposes. It "
-"allows to configure multiple profiles to share the identity. Also, the "
-"stable-id can contain placeholders that are substituted dynamically and "
-"deterministically depending on the context. The stable-id is used for "
-"generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-"
-"privacy. It is also used to seed the generated cloned MAC address for "
-"ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is "
-"also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to "
-"derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that "
-"depending on the context where it is used, other parameters are also seeded "
-"into the generation algorithm. For example, a per-host key is commonly also "
-"included, so that different systems end up generating different IDs. Or with "
-"ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so "
-"that different interfaces yield different addresses. The per-host key is the "
-"identity of your machine and stored in /var/lib/NetworkManager/secret-key. "
-"The '$' character is treated special to perform dynamic substitutions at "
-"runtime. Currently, supported are \"${CONNECTION}\", \"${DEVICE}\", "
-"\"${MAC}\", \"${BOOT}\", \"${RANDOM}\". These effectively create unique IDs "
-"per-connection, per-device, per-boot, or every time. Note that \"${DEVICE}\" "
-"corresponds to the interface name of the device and \"${MAC}\" is the "
-"permanent MAC address of the device. Any unrecognized patterns following '$' "
-"are treated verbatim, however are reserved for future use. You are thus "
-"advised to avoid '$' or escape it as \"$$\". For example, set it to "
-"\"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this "
-"connection that changes with every reboot and differs depending on the "
-"interface where the profile activates. If the value is unset, a global "
-"connection default is consulted. If the value is still unset, the default is "
-"similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:173
-msgid ""
-"The time, in seconds since the Unix Epoch, that the connection was last "
-"_successfully_ fully activated. NetworkManager updates the connection "
-"timestamp periodically when the connection is active to ensure that an "
-"active connection has the latest timestamp. The property is only meant for "
-"reading (changes to this property will not be preserved)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:174
-msgid ""
-"Base type of the connection. For hardware-dependent connections, should "
-"contain the setting name of the hardware-type specific setting (ie, \"802-3-"
-"ethernet\" or \"802-11-wireless\" or \"bluetooth\", etc), and for non-"
-"hardware dependent connections like VPN or otherwise, should contain the "
-"setting name of that setting type (ie, \"vpn\" or \"bridge\", etc)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:175
-msgid ""
-"A universally unique identifier for the connection, for example generated "
-"with libuuid. It should be assigned when the connection is created, and "
-"never changed as long as the connection still applies to the same network. "
-"For example, it should not be changed when the \"id\" property or "
-"NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi "
-"SSID, mobile broadband network provider, or \"type\" property changes. The "
-"UUID must be in the format \"2815492f-7e56-435e-b2e9-246bd7cdc664\" (ie, "
-"contains only hexadecimal characters and \"-\")."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:176
-msgid ""
-"Timeout in milliseconds to wait for device at startup. During boot, devices "
-"may take a while to be detected by the driver. This property will cause to "
-"delay NetworkManager-wait-online.service and nm-online to give the device a "
-"chance to appear. This works by waiting for the given timeout until a "
-"compatible device for the profile is available and managed. The value 0 "
-"means no wait time. The default value is -1, which currently has the same "
-"meaning as no wait time."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:177
-msgid ""
-"The trust level of a the connection. Free form case-insensitive string (for "
-"example \"Home\", \"Work\", \"Public\"). NULL or unspecified zone means the "
-"connection will be placed in the default zone as defined by the firewall. "
-"When updating this property on a currently activated connection, the change "
-"takes effect immediately."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:178
-msgid ""
-"Specifies the NMSettingDcbFlags for the DCB FCoE application. Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:179
-msgid "The FCoE controller mode; either \"fabric\" (default) or \"vn2vn\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:180
-msgid ""
-"The highest User Priority (0 - 7) which FCoE frames should use, or -1 for "
-"default priority. Only used when the \"app-fcoe-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:181
-msgid ""
-"Specifies the NMSettingDcbFlags for the DCB FIP application. Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:182
-msgid ""
-"The highest User Priority (0 - 7) which FIP frames should use, or -1 for "
-"default priority. Only used when the \"app-fip-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:183
-msgid ""
-"Specifies the NMSettingDcbFlags for the DCB iSCSI application. Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:184
-msgid ""
-"The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for "
-"default priority. Only used when the \"app-iscsi-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:185
-msgid ""
-"An array of 8 uint values, where the array index corresponds to the User "
-"Priority (0 - 7) and the value indicates the percentage of bandwidth of the "
-"priority's assigned group that the priority may use. The sum of all "
-"percentages for priorities which belong to the same group must total 100 "
-"percents."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:186
-msgid ""
-"An array of 8 boolean values, where the array index corresponds to the User "
-"Priority (0 - 7) and the value indicates whether or not the corresponding "
-"priority should transmit priority pause."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:187
-msgid ""
-"Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags "
-"may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:188
-msgid ""
-"An array of 8 uint values, where the array index corresponds to the Priority "
-"Group ID (0 - 7) and the value indicates the percentage of link bandwidth "
-"allocated to that group. Allowed values are 0 - 100, and the sum of all "
-"values must total 100 percents."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:189
-msgid ""
-"Specifies the NMSettingDcbFlags for DCB Priority Groups. Flags may be any "
-"combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:190
-msgid ""
-"An array of 8 uint values, where the array index corresponds to the User "
-"Priority (0 - 7) and the value indicates the Priority Group ID. Allowed "
-"Priority Group ID values are 0 - 7 or 15 for the unrestricted group."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:191
-msgid ""
-"An array of 8 boolean values, where the array index corresponds to the User "
-"Priority (0 - 7) and the value indicates whether or not the priority may use "
-"all of the bandwidth allocated to its assigned group."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:192
-msgid ""
-"An array of 8 uint values, where the array index corresponds to the User "
-"Priority (0 - 7) and the value indicates the traffic class (0 - 7) to which "
-"the priority is mapped."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:193
-msgid ""
-"The GPRS Access Point Name specifying the APN used when establishing a data "
-"session with the GSM-based network. The APN often determines how the user "
-"will be billed for their network usage and whether the user has access to "
-"the Internet or just a provider-specific walled-garden, so it is important "
-"to use the correct APN for the user's mobile broadband plan. The APN may "
-"only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section "
-"14.9."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:194
-msgid ""
-"When TRUE, the settings such as APN, username, or password will default to "
-"values that match the network the modem will register to in the Mobile "
-"Broadband Provider database."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:195
-msgid ""
-"The device unique identifier (as given by the WWAN management service) which "
-"this connection applies to. If given, the connection will only apply to the "
-"specified device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:196
-msgid ""
-"When TRUE, only connections to the home network will be allowed. Connections "
-"to roaming networks will not be made."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:198
-msgid ""
-"The Network ID (GSM LAI format, ie MCC-MNC) to force specific network "
-"registration. If the Network ID is specified, NetworkManager will attempt "
-"to force the device to register only on the specified network. This can be "
-"used to ensure that the device does not roam when direct roaming control of "
-"the device is not otherwise possible."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:199
-msgid ""
-"Legacy setting that used to help establishing PPP data sessions for GSM-"
-"based modems. Deprecated: 1"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:202
-msgid ""
-"If the SIM is locked with a PIN it must be unlocked before any other "
-"operations are requested. Specify the PIN here to allow operation of the "
-"device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:204
-msgid ""
-"The SIM card unique identifier (as given by the WWAN management service) "
-"which this connection applies to. If given, the connection will apply to "
-"any device also allowed by \"device-id\" which contains a SIM card matching "
-"the given identifier."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:205
-msgid ""
-"A MCC/MNC string like \"310260\" or \"21601\" identifying the specific "
-"mobile network operator which this connection applies to. If given, the "
-"connection will apply to any device also allowed by \"device-id\" and \"sim-"
-"id\" which contains a SIM card provisioned by the given operator."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:207
-msgid ""
-"Whether the system hostname can be determined from DHCP on this connection. "
-"When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is "
-"used. If the property doesn't have a value in the global configuration, "
-"NetworkManager assumes the value to be NM_TERNARY_TRUE (1)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:208
-msgid ""
-"Whether the system hostname can be determined from reverse DNS lookup of "
-"addresses on this device. When set to NM_TERNARY_DEFAULT (-1), the value "
-"from global configuration is used. If the property doesn't have a value in "
-"the global configuration, NetworkManager assumes the value to be "
-"NM_TERNARY_TRUE (1)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:209
-msgid ""
-"If set to NM_TERNARY_TRUE (1), NetworkManager attempts to get the hostname "
-"via DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device "
-"has the default route for the given address family (IPv4/IPv6). If set to "
-"NM_TERNARY_FALSE (0), the hostname can be set from this device even if it "
-"doesn't have the default route. When set to NM_TERNARY_DEFAULT (-1), the "
-"value from global configuration is used. If the property doesn't have a "
-"value in the global configuration, NetworkManager assumes the value to be "
-"NM_TERNARY_FALSE (0)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:210
-msgid ""
-"The relative priority of this connection to determine the system hostname. A "
-"lower numerical value is better (higher priority). A connection with higher "
-"priority is considered before connections with lower priority. If the value "
-"is zero, it can be overridden by a global value from NetworkManager "
-"configuration. If the property doesn't have a value in the global "
-"configuration, the value is assumed to be 100. Negative values have the "
-"special effect of excluding other connections with a greater numerical "
-"priority value; so in presence of at least one negative priority, only "
-"connections with the lowest priority value will be used to determine the "
-"hostname."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:211
-msgid ""
-"If specified, this connection will only apply to the IPoIB device whose "
-"permanent MAC address matches. This property does not change the MAC address "
-"of the device (i.e. MAC spoofing)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:213
-msgid ""
-"The InfiniBand P_Key to use for this device. A value of -1 means to use the "
-"default P_Key (aka \"the P_Key at index 0\"). Otherwise, it is a 16-bit "
-"unsigned integer, whose high bit is set if it is a \"full membership\" P_Key."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:214
-msgid ""
-"The interface name of the parent device of this device. Normally NULL, but "
-"if the \"p_key\" property is set, then you must specify the base device by "
-"setting either this property or \"mac-address\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:215
-msgid ""
-"The IP-over-InfiniBand transport mode. Either \"datagram\" or \"connected\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:216
-msgid ""
-"How many additional levels of encapsulation are permitted to be prepended to "
-"packets. This property applies only to IPv6 tunnels."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:217
-msgid ""
-"Tunnel flags. Currently, the following values are supported: "
-"NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT (0x1), "
-"NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_TCLASS (0x2), "
-"NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FLOWLABEL (0x4), "
-"NM_IP_TUNNEL_FLAG_IP6_MIP6_DEV (0x8), NM_IP_TUNNEL_FLAG_IP6_RCV_DSCP_COPY "
-"(0x10), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK (0x20). They are valid only "
-"for IPv6 tunnels."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:218
-msgid ""
-"The flow label to assign to tunnel packets. This property applies only to "
-"IPv6 tunnels."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:219
-msgid ""
-"The key used for tunnel input packets; the property is valid only for "
-"certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:220
-msgid ""
-"The local endpoint of the tunnel; the value can be empty, otherwise it must "
-"contain an IPv4 or IPv6 address."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:221
-msgid ""
-"The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or "
-"NM_IP_TUNNEL_MODE_GRE (2)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:222
-msgid ""
-"If non-zero, only transmit packets of the specified size or smaller, "
-"breaking larger packets up into multiple fragments."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:223
-msgid ""
-"The key used for tunnel output packets; the property is valid only for "
-"certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:224
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID the "
-"new device will be bound to so that tunneled packets will only be routed via "
-"that interface."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:225
-msgid "Whether to enable Path MTU Discovery on this tunnel."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:226
-msgid ""
-"The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 "
-"address."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:227
-msgid ""
-"The type of service (IPv4) or traffic class (IPv6) field to be set on "
-"tunneled packets."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:228
-msgid ""
-"The TTL to assign to tunneled packets. 0 is a special value meaning that "
-"packets inherit the TTL value."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:229
-msgid ""
-"A list of IPv4 addresses and their prefix length. Multiple addresses can be "
-"separated by comma. For example \"192.168.1.5/24, 10.1.0.5/24\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:230
-#: ../src/libnmc-setting/settings-docs.h.in:255
-msgid ""
-"Timeout in milliseconds used to check for the presence of duplicate IP "
-"addresses on the network. If an address conflict is detected, the "
-"activation will fail. A zero value means that no duplicate address "
-"detection is performed, -1 means the default value (either configuration "
-"ipvx.dad-timeout override or zero). A value greater than zero is a timeout "
-"in milliseconds. The property is currently implemented only for IPv4."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:231
-msgid ""
-"A string sent to the DHCP server to identify the local machine which the "
-"DHCP server may use to customize the DHCP lease and options. When the "
-"property is a hex string ('aa:bb:cc') it is interpreted as a binary client "
-"ID, in which case the first byte is assumed to be the 'type' field as per "
-"RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e."
-"g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a "
-"MAC address). If the property is not a hex string it is considered as a non-"
-"hardware-address client ID and the 'type' field is set to 0. The special "
-"values \"mac\" and \"perm-mac\" are supported, which use the current or "
-"permanent MAC address of the device to generate a client identifier with "
-"type ethernet (01). Currently, these options only work for ethernet type of "
-"links. The special value \"ipv6-duid\" uses the DUID from \"ipv6.dhcp-duid\" "
-"property as an RFC4361-compliant client identifier. As IAID it uses \"ipv4."
-"dhcp-iaid\" and falls back to \"ipv6.dhcp-iaid\" if unset. The special value "
-"\"duid\" generates a RFC4361-compliant client identifier based on \"ipv4."
-"dhcp-iaid\" and uses a DUID generated by hashing /etc/machine-id. The "
-"special value \"stable\" is supported to generate a type 0 client identifier "
-"based on the stable-id (see connection.stable-id) and a per-host key. If you "
-"set the stable-id, you may want to include the \"${DEVICE}\" or \"${MAC}\" "
-"specifier to get a per-device key. If unset, a globally configured default "
-"is used. If still unset, the default depends on the DHCP plugin."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:232
-msgid ""
-"If the \"dhcp-send-hostname\" property is TRUE, then the specified FQDN will "
-"be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
-"hostname\" are mutually exclusive and cannot be set at the same time."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:233
-#: ../src/libnmc-setting/settings-docs.h.in:257
-msgid ""
-"If the \"dhcp-send-hostname\" property is TRUE, then the specified name will "
-"be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
-"fqdn\" are mutually exclusive and cannot be set at the same time."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:234
-#: ../src/libnmc-setting/settings-docs.h.in:258
-msgid ""
-"Flags for the DHCP hostname and FQDN. Currently, this property only includes "
-"flags to control the FQDN flags set in the DHCP FQDN option. Supported FQDN "
-"flags are NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE (0x4). When no FQDN flag is set and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is set, the DHCP FQDN option "
-"will contain no flag. Otherwise, if no FQDN flag is set and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is not set, the standard FQDN "
-"flags are set in the request: NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) for IPv4 and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1) for IPv6. When this property is "
-"set to the default value NM_DHCP_HOSTNAME_FLAG_NONE (0x0), a global default "
-"is looked up in NetworkManager configuration. If that value is unset or also "
-"NM_DHCP_HOSTNAME_FLAG_NONE (0x0), then the standard FQDN flags described "
-"above are sent in the DHCP requests."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:235
-#: ../src/libnmc-setting/settings-docs.h.in:259
-msgid ""
-"A string containing the \"Identity Association Identifier\" (IAID) used by "
-"the DHCP client. The property is a 32-bit decimal value or a special value "
-"among \"mac\", \"perm-mac\", \"ifname\" and \"stable\". When set to \"mac"
-"\" (or \"perm-mac\"), the last 4 bytes of the current (or permanent) MAC "
-"address are used as IAID. When set to \"ifname\", the IAID is computed by "
-"hashing the interface name. The special value \"stable\" can be used to "
-"generate an IAID based on the stable-id (see connection.stable-id), a per-"
-"host key and the interface name. When the property is unset, the value from "
-"global configuration is used; if no global default is set then the IAID is "
-"assumed to be \"ifname\". Note that at the moment this property is ignored "
-"for IPv6 by dhclient, which always derives the IAID from the MAC address."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:236
-#: ../src/libnmc-setting/settings-docs.h.in:260
-msgid ""
-"Array of servers from which DHCP offers must be rejected. This property is "
-"useful to avoid getting a lease from misconfigured or rogue servers. For "
-"DHCPv4, each element must be an IPv4 address, optionally followed by a slash "
-"and a prefix length (e.g. \"192.168.122.0/24\"). This property is currently "
-"not implemented for DHCPv6."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:237
-#: ../src/libnmc-setting/settings-docs.h.in:261
-msgid ""
-"If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some "
-"DHCP servers use this hostname to update DNS databases, essentially "
-"providing a static hostname for the computer. If the \"dhcp-hostname\" "
-"property is NULL and this property is TRUE, the current persistent hostname "
-"of the computer is sent."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:238
-#: ../src/libnmc-setting/settings-docs.h.in:262
-msgid ""
-"A timeout for a DHCP transaction in seconds. If zero (the default), a "
-"globally configured default is used. If still unspecified, a device specific "
-"timeout is used (usually 45 seconds). Set to 2147483647 (MAXINT32) for "
-"infinity."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:239
-msgid ""
-"The Vendor Class Identifier DHCP option (60). Special characters in the data "
-"string may be escaped using C-style escapes, nevertheless this property "
-"cannot contain nul bytes. If the per-profile value is unspecified (the "
-"default), a global connection default gets consulted. If still unspecified, "
-"the DHCP option is not sent to the server. Since 1.28"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:240
-#: ../src/libnmc-setting/settings-docs.h.in:263
-msgid "Array of IP addresses of DNS servers."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:241
-#: ../src/libnmc-setting/settings-docs.h.in:264
-msgid ""
-"Array of DNS options as described in man 5 resolv.conf. NULL means that the "
-"options are unset and left at the default. In this case NetworkManager will "
-"use default options. This is distinct from an empty list of properties. The "
-"currently supported options are \"attempts\", \"debug\", \"edns0\", "
-"\"inet6\", \"ip6-bytestring\", \"ip6-dotint\", \"ndots\", \"no-check-names"
-"\", \"no-ip6-dotint\", \"no-reload\", \"no-tld-query\", \"rotate\", \"single-"
-"request\", \"single-request-reopen\", \"timeout\", \"trust-ad\", \"use-vc\". "
-"The \"trust-ad\" setting is only honored if the profile contributes name "
-"servers to resolv.conf, and if all contributing profiles have \"trust-ad\" "
-"enabled. When using a caching DNS plugin (dnsmasq or systemd-resolved in "
-"NetworkManager.conf) then \"edns0\" and \"trust-ad\" are automatically added."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:242
-#: ../src/libnmc-setting/settings-docs.h.in:265
-msgid ""
-"DNS servers priority. The relative priority for DNS servers specified by "
-"this setting. A lower numerical value is better (higher priority). Negative "
-"values have the special effect of excluding other configurations with a "
-"greater numerical priority value; so in presence of at least one negative "
-"priority, only DNS servers from connections with the lowest priority value "
-"will be used. To avoid all DNS leaks, set the priority of the profile that "
-"should be used to the most negative value of all active connections "
-"profiles. Zero selects a globally configured default value. If the latter is "
-"missing or zero too, it defaults to 50 for VPNs (including WireGuard) and "
-"100 for other connections. Note that the priority is to order DNS settings "
-"for multiple active connections. It does not disambiguate multiple DNS "
-"servers within the same connection profile. When multiple devices have "
-"configurations with the same priority, VPNs will be considered first, then "
-"devices with the best (lowest metric) default route and then all other "
-"devices. When using dns=default, servers with higher priority will be on top "
-"of resolv.conf. To prioritize a given server over another one within the "
-"same connection, just specify them in the desired order. Note that commonly "
-"the resolver tries name servers in /etc/resolv.conf in the order listed, "
-"proceeding with the next server in the list on failure. See for example the "
-"\"rotate\" option of the dns-options setting. If there are any negative DNS "
-"priorities, then only name servers from the devices with that lowest "
-"priority will be considered. When using a DNS resolver that supports "
-"Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-"
-"resolved settings), each connection is used to query domains in its search "
-"list. The search domains determine which name servers to ask, and the DNS "
-"priority is used to prioritize name servers based on the domain. Queries "
-"for domains not present in any search list are routed through connections "
-"having the '~.' special wildcard domain, which is added automatically to "
-"connections with the default route (or can be added manually). When "
-"multiple connections specify the same domain, the one with the best priority "
-"(lowest numerical value) wins. If a sub domain is configured on another "
-"interface it will be accepted regardless the priority, unless parent domain "
-"on the other interface has a negative priority, which causes the sub domain "
-"to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly "
-"configuring DNS priorities and the search domains, so that only name servers "
-"of the desired interface are configured."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:243
-#: ../src/libnmc-setting/settings-docs.h.in:266
-msgid ""
-"Array of DNS search domains. Domains starting with a tilde ('~') are "
-"considered 'routing' domains and are used only to decide the interface over "
-"which a query must be forwarded; they are not used to complete unqualified "
-"host names. When using a DNS plugin that supports Conditional Forwarding or "
-"Split DNS, then the search domains specify which name servers to query. This "
-"makes the behavior different from running with plain /etc/resolv.conf. For "
-"more information see also the dns-priority setting."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:244
-#: ../src/libnmc-setting/settings-docs.h.in:267
-msgid ""
-"The gateway associated with this configuration. This is only meaningful if "
-"\"addresses\" is also set. The gateway's main purpose is to control the next "
-"hop of the standard default route on the device. Hence, the gateway property "
-"conflicts with \"never-default\" and will be automatically dropped if the IP "
-"configuration is set to never-default. As an alternative to set the gateway, "
-"configure a static default route with /0 as prefix length."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:245
-#: ../src/libnmc-setting/settings-docs.h.in:268
-msgid ""
-"When \"method\" is set to \"auto\" and this property to TRUE, automatically "
-"configured name servers and search domains are ignored and only name servers "
-"and search domains specified in the \"dns\" and \"dns-search\" properties, "
-"if any, are used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:246
-#: ../src/libnmc-setting/settings-docs.h.in:269
-msgid ""
-"When \"method\" is set to \"auto\" and this property to TRUE, automatically "
-"configured routes are ignored and only routes specified in the \"routes\" "
-"property, if any, are used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:247
-#: ../src/libnmc-setting/settings-docs.h.in:271
-msgid ""
-"If TRUE, allow overall network configuration to proceed even if the "
-"configuration specified by this property times out. Note that at least one "
-"IP configuration must succeed or overall network configuration will still "
-"fail. For example, in IPv6-only networks, setting this property to TRUE on "
-"the NMSettingIP4Config allows the overall network configuration to succeed "
-"if IPv4 configuration fails but IPv6 configuration completes successfully."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:248
-#: ../src/libnmc-setting/settings-docs.h.in:272
-msgid ""
-"IP configuration method. NMSettingIP4Config and NMSettingIP6Config both "
-"support \"disabled\", \"auto\", \"manual\", and \"link-local\". See the "
-"subclass-specific documentation for other values. In general, for the \"auto"
-"\" method, properties such as \"dns\" and \"routes\" specify information "
-"that is added on to the information returned from automatic configuration. "
-"The \"ignore-auto-routes\" and \"ignore-auto-dns\" properties modify this "
-"behavior. For methods that imply no upstream network, such as \"shared\" or "
-"\"link-local\", these properties must be empty. For IPv4 method \"shared\", "
-"the IP subnet can be configured by adding one manual IPv4 address or "
-"otherwise 10.42.x.0/24 is chosen. Note that the shared method must be "
-"configured on the interface which shares the internet to a subnet, not on "
-"the uplink which is shared."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:249
-#: ../src/libnmc-setting/settings-docs.h.in:273
-msgid ""
-"If TRUE, this connection will never be the default connection for this IP "
-"type, meaning it will never be assigned the default route by NetworkManager."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:250
-#: ../src/libnmc-setting/settings-docs.h.in:275
-msgid ""
-"The default metric for routes that don't explicitly specify a metric. The "
-"default value -1 means that the metric is chosen automatically based on the "
-"device type. The metric applies to dynamic routes, manual (static) routes "
-"that don't have an explicit metric setting, address prefix routes, and the "
-"default route. Note that for IPv6, the kernel accepts zero (0) but coerces "
-"it to 1024 (user default). Hence, setting this property to zero effectively "
-"mean setting it to 1024. For IPv4, zero is a regular value for the metric."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:251
-#: ../src/libnmc-setting/settings-docs.h.in:276
-msgid ""
-"Enable policy routing (source routing) and set the routing table used when "
-"adding routes. This affects all routes, including device-routes, IPv4LL, "
-"DHCP, SLAAC, default-routes and static routes. But note that static routes "
-"can individually overwrite the setting by explicitly specifying a non-zero "
-"routing table. If the table setting is left at zero, it is eligible to be "
-"overwritten via global configuration. If the property is zero even after "
-"applying the global configuration value, policy routing is disabled for the "
-"address family of this connection. Policy routing disabled means that "
-"NetworkManager will add all routes to the main table (except static routes "
-"that explicitly configure a different table). Additionally, NetworkManager "
-"will not delete any extraneous routes from tables except the main table. "
-"This is to preserve backward compatibility for users who manage routing "
-"tables outside of NetworkManager."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:252
-msgid ""
-"A list of IPv4 destination addresses, prefix length, optional IPv4 next hop "
-"addresses, optional route metric, optional attribute. The valid syntax is: "
-"\"ip[/prefix] [next-hop] [metric] [attribute=val]...[,ip[/prefix]...]\". For "
-"example \"192.0.2.0/24 10.1.1.1 77, 198.51.100.0/24\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:253
-msgid ""
-"Configure method for creating the address for use with RFC4862 IPv6 "
-"Stateless Address Autoconfiguration. The permitted values are: "
-"NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 (0) or "
-"NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY (1). If the property is "
-"set to EUI64, the addresses will be generated using the interface tokens "
-"derived from hardware address. This makes the host part of the address to "
-"stay constant, making it possible to track host's presence when it changes "
-"networks. The address changes when the interface hardware is replaced. The "
-"value of stable-privacy enables use of cryptographically secure hash of a "
-"secret host-specific key along with the connection's stable-id and the "
-"network address as specified by RFC7217. This makes it impossible to use the "
-"address track host's presence, and makes the address stable when the network "
-"interface hardware is replaced. On D-Bus, the absence of an addr-gen-mode "
-"setting equals enabling stable-privacy. For keyfile plugin, the absence of "
-"the setting on disk means EUI64 so that the property doesn't change on "
-"upgrade from older versions. Note that this setting is distinct from the "
-"Privacy Extensions as configured by \"ip6-privacy\" property and it does not "
-"affect the temporary addresses configured with this option."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:254
-msgid "Array of IP addresses."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:256
-msgid ""
-"A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp "
-"client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried "
-"in the Client Identifier option. If the property is a hex string ('aa:bb:"
-"cc') it is interpreted as a binary DUID and filled as an opaque value in the "
-"Client Identifier option. The special value \"lease\" will retrieve the DUID "
-"previously used from the lease file belonging to the connection. If no DUID "
-"is found and \"dhclient\" is the configured dhcp client, the DUID is "
-"searched in the system-wide dhclient lease file. If still no DUID is found, "
-"or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) "
-"will be generated based on the machine-id. The special values \"llt\" and "
-"\"ll\" will generate a DUID of type LLT or LL (see RFC 3315) based on the "
-"current MAC address of the device. In order to try providing a stable DUID-"
-"LLT, the time field will contain a constant timestamp that is used globally "
-"(for all profiles) and persisted to disk. The special values \"stable-llt\", "
-"\"stable-ll\" and \"stable-uuid\" will generate a DUID of the corresponding "
-"type, derived from the connection's stable-id and a per-host unique key. You "
-"may want to include the \"${DEVICE}\" or \"${MAC}\" specifier in the stable-"
-"id, in case this profile gets activated on multiple devices. So, the link-"
-"layer address of \"stable-ll\" and \"stable-llt\" will be a generated "
-"address derived from the stable id. The DUID-LLT time value in the \"stable-"
-"llt\" option will be picked among a static timespan of three years (the "
-"upper bound of the interval is the same constant timestamp used in \"llt\"). "
-"When the property is unset, the global value provided for \"ipv6.dhcp-duid\" "
-"is used. If no global value is provided, the default \"lease\" value is "
-"assumed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:270
-msgid ""
-"Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If "
-"enabled, it makes the kernel generate a temporary IPv6 address in addition "
-"to the public one generated from MAC address via modified EUI-64. This "
-"enhances privacy, but could cause problems in some applications, on the "
-"other hand. The permitted values are: -1: unknown, 0: disabled, 1: enabled "
-"(prefer public address), 2: enabled (prefer temporary addresses). Having a "
-"per-connection setting set to \"-1\" (unknown) means fallback to global "
-"configuration \"ipv6.ip6-privacy\". If also global configuration is "
-"unspecified or set to \"-1\", fallback to read \"/proc/sys/net/ipv6/conf/"
-"default/use_tempaddr\". Note that this setting is distinct from the Stable "
-"Privacy addresses that can be enabled with the \"addr-gen-mode\" property's "
-"\"stable-privacy\" setting as another way of avoiding host tracking with "
-"IPv6 addresses."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:274
-msgid ""
-"A timeout for waiting Router Advertisements in seconds. If zero (the "
-"default), a globally configured default is used. If still unspecified, the "
-"timeout depends on the sysctl settings of the device. Set to 2147483647 "
-"(MAXINT32) for infinity."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:277
-msgid "Array of IP routes."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:278
-msgid ""
-"Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 "
-"tokenized interface identifiers. Useful with eui64 addr-gen-mode."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:279
-msgid "Whether the transmitted traffic must be encrypted."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:280
-msgid ""
-"The pre-shared CAK (Connectivity Association Key) for MACsec Key Agreement."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:281
-msgid "Flags indicating how to handle the \"mka-cak\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:282
-msgid ""
-"The pre-shared CKN (Connectivity-association Key Name) for MACsec Key "
-"Agreement."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:283
-msgid ""
-"Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key "
-"Agreement) is obtained."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:284
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID from "
-"which this MACSEC interface should be created. If this property is not "
-"specified, the connection must contain an \"802-3-ethernet\" setting with a "
-"\"mac-address\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:285
-msgid ""
-"The port component of the SCI (Secure Channel Identifier), between 1 and "
-"65534."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:286
-msgid ""
-"Specifies whether the SCI (Secure Channel Identifier) is included in every "
-"packet."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:287
-msgid "Specifies the validation mode for incoming frames."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:288
-msgid ""
-"The macvlan mode, which specifies the communication mechanism between "
-"multiple macvlans on the same lower device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:289
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID from "
-"which this MAC-VLAN interface should be created. If this property is not "
-"specified, the connection must contain an \"802-3-ethernet\" setting with a "
-"\"mac-address\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:290
-msgid "Whether the interface should be put in promiscuous mode."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:291
-msgid "Whether the interface should be a MACVTAP."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:292
-msgid ""
-"A list of driver names to match. Each element is a shell wildcard pattern. "
-"See NMSettingMatch:interface-name for how special characters '|', '&', '!' "
-"and '\\' are used for optional and mandatory matches and inverting the "
-"pattern."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:293
-msgid ""
-"A list of interface names to match. Each element is a shell wildcard "
-"pattern. An element can be prefixed with a pipe symbol (|) or an ampersand "
-"(&). The former means that the element is optional and the latter means that "
-"it is mandatory. If there are any optional elements, than the match "
-"evaluates to true if at least one of the optional element matches (logical "
-"OR). If there are any mandatory elements, then they all must match (logical "
-"AND). By default, an element is optional. This means that an element \"foo\" "
-"behaves the same as \"|foo\". An element can also be inverted with "
-"exclamation mark (!) between the pipe symbol (or the ampersand) and before "
-"the pattern. Note that \"!foo\" is a shortcut for the mandatory match \"&!foo"
-"\". Finally, a backslash can be used at the beginning of the element (after "
-"the optional special characters) to escape the start of the pattern. For "
-"example, \"&\\!a\" is an mandatory match for literally \"!a\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:294
-msgid ""
-"A list of kernel command line arguments to match. This may be used to check "
-"whether a specific kernel command line option is set (or unset, if prefixed "
-"with the exclamation mark). The argument must either be a single word, or an "
-"assignment (i.e. two words, joined by \"=\"). In the former case the kernel "
-"command line is searched for the word appearing as is, or as left hand side "
-"of an assignment. In the latter case, the exact assignment is looked for "
-"with right and left hand side matching. Wildcard patterns are not supported. "
-"See NMSettingMatch:interface-name for how special characters '|', '&', '!' "
-"and '\\' are used for optional and mandatory matches and inverting the match."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:295
-msgid ""
-"A list of paths to match against the ID_PATH udev property of devices. "
-"ID_PATH represents the topological persistent path of a device. It typically "
-"contains a subsystem string (pci, usb, platform, etc.) and a subsystem-"
-"specific identifier. For PCI devices the path has the form \"pci-$domain:"
-"$bus:$device.$function\", where each variable is an hexadecimal value; for "
-"example \"pci-0000:0a:00.0\". The path of a device can be obtained with "
-"\"udevadm info /sys/class/net/$dev | grep ID_PATH=\" or by looking at the "
-"\"path\" property exported by NetworkManager (\"nmcli -f general.path device "
-"show $dev\"). Each element of the list is a shell wildcard pattern. See "
-"NMSettingMatch:interface-name for how special characters '|', '&', '!' and "
-"'\\' are used for optional and mandatory matches and inverting the pattern."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:296
-msgid "The data path type. One of \"system\", \"netdev\" or empty."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:297
-msgid "The bridge failure mode. One of \"secure\", \"standalone\" or empty."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:298
-msgid "Enable or disable multicast snooping."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:299
-msgid "Enable or disable RSTP."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:300
-msgid "Enable or disable STP."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:301
-msgid "Open vSwitch DPDK device arguments."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:302
-msgid "A dictionary of key/value pairs with exernal-ids for OVS."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:303
-msgid ""
-"The interface type. Either \"internal\", \"system\", \"patch\", \"dpdk\", or "
-"empty."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:304
-msgid ""
-"Specifies the name of the interface for the other side of the patch. The "
-"patch on the other side must also set this interface as peer."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:305
-msgid "The time port must be inactive in order to be considered down."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:306
-msgid ""
-"Bonding mode. One of \"active-backup\", \"balance-slb\", or \"balance-tcp\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:307
-msgid "The time port must be active before it starts forwarding traffic."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:308
-msgid "LACP mode. One of \"active\", \"off\", or \"passive\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:309
-msgid "The VLAN tag in the range 0-4095."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:310
-msgid ""
-"The VLAN mode. One of \"access\", \"native-tagged\", \"native-untagged\", "
-"\"trunk\" or unset."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:311
-msgid ""
-"If non-zero, instruct pppd to set the serial port to the specified "
-"baudrate. This value should normally be left as 0 to automatically choose "
-"the speed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:312
-msgid ""
-"If TRUE, specify that pppd should set the serial port to use hardware flow "
-"control with RTS and CTS signals. This value should normally be set to "
-"FALSE."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:313
-msgid ""
-"If non-zero, instruct pppd to presume the connection to the peer has failed "
-"if the specified number of LCP echo-requests go unanswered by the peer. The "
-"\"lcp-echo-interval\" property must also be set to a non-zero value if this "
-"property is used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:314
-msgid ""
-"If non-zero, instruct pppd to send an LCP echo-request frame to the peer "
-"every n seconds (where n is the specified value). Note that some PPP peers "
-"will respond to echo requests and some will not, and it is not possible to "
-"autodetect this."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:315
-msgid ""
-"If TRUE, stateful MPPE is used. See pppd documentation for more information "
-"on stateful MPPE."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:316
-msgid ""
-"If non-zero, instruct pppd to request that the peer send packets no larger "
-"than the specified size. If non-zero, the MRU should be between 128 and "
-"16384."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:317
-msgid ""
-"If non-zero, instruct pppd to send packets no larger than the specified size."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:318
-msgid "If TRUE, Van Jacobsen TCP header compression will not be requested."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:319
-msgid ""
-"If TRUE, do not require the other side (usually the PPP server) to "
-"authenticate itself to the client. If FALSE, require authentication from "
-"the remote side. In almost all cases, this should be TRUE."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:320
-msgid "If TRUE, BSD compression will not be requested."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:321
-msgid "If TRUE, \"deflate\" compression will not be requested."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:322
-msgid "If TRUE, the CHAP authentication method will not be used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:323
-msgid "If TRUE, the EAP authentication method will not be used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:324
-msgid "If TRUE, the MSCHAP authentication method will not be used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:325
-msgid "If TRUE, the MSCHAPv2 authentication method will not be used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:326
-msgid "If TRUE, the PAP authentication method will not be used."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:327
-msgid ""
-"If TRUE, MPPE (Microsoft Point-to-Point Encryption) will be required for the "
-"PPP session. If either 64-bit or 128-bit MPPE is not available the session "
-"will fail. Note that MPPE is not used on mobile broadband connections."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:328
-msgid ""
-"If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required "
-"for the PPP session, and the \"require-mppe\" property must also be set to "
-"TRUE. If 128-bit MPPE is not available the session will fail."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:329
-msgid ""
-"If given, specifies the parent interface name on which this PPPoE connection "
-"should be created. If this property is not specified, the connection is "
-"activated on the interface specified in \"interface-name\" of "
-"NMSettingConnection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:330
-msgid "Password used to authenticate with the PPPoE service."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:332
-msgid ""
-"If specified, instruct PPPoE to only initiate sessions with access "
-"concentrators that provide the specified service. For most providers, this "
-"should be left blank. It is only required if there are multiple access "
-"concentrators or a specific service is known to be required."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:333
-msgid "Username used to authenticate with the PPPoE service."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:334
-msgid "Whether the proxy configuration is for browser only."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:335
-msgid ""
-"Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:336
-msgid "PAC script for the connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:337
-msgid "PAC URL for obtaining PAC file."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:338
-msgid ""
-"Speed to use for communication over the serial port. Note that this value "
-"usually has no effect for mobile broadband modems as they generally ignore "
-"speed settings and use the highest available speed."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:339
-msgid "Byte-width of the serial communication. The 8 in \"8n1\" for example."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:340
-msgid "Parity setting of the serial port."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:341
-msgid "Time to delay between each byte sent to the modem, in microseconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:342
-msgid ""
-"Number of stop bits for communication on the serial port. Either 1 or 2. "
-"The 1 in \"8n1\" for example."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:343
-msgid ""
-"Whether to autoprobe virtual functions by a compatible driver. If set to "
-"NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver "
-"and if this succeeds a new network interface will be instantiated for each "
-"VF. If set to NM_TERNARY_FALSE (0), VFs will not be claimed and no network "
-"interfaces will be created for them. When set to NM_TERNARY_DEFAULT (-1), "
-"the global default is used; in case the global default is unspecified it is "
-"assumed to be NM_TERNARY_TRUE (1)."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:344
-msgid ""
-"The total number of virtual functions to create. Note that when the sriov "
-"setting is present NetworkManager enforces the number of virtual functions "
-"on the interface (also when it is zero) during activation and resets it upon "
-"deactivation. To prevent any changes to SR-IOV parameters don't add a sriov "
-"setting to the connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:345
-msgid ""
-"Array of virtual function descriptors. Each VF descriptor is a dictionary "
-"mapping attribute names to GVariant values. The 'index' entry is mandatory "
-"for each VF. When represented as string a VF is in the form: \"INDEX "
-"[ATTR=VALUE[ ATTR=VALUE]...]\". for example: \"2 mac=00:11:22:33:44:55 spoof-"
-"check=true\". Multiple VFs can be specified using a comma as separator. "
-"Currently, the following attributes are supported: mac, spoof-check, trust, "
-"min-tx-rate, max-tx-rate, vlans. The \"vlans\" attribute is represented as a "
-"semicolon-separated list of VLAN descriptors, where each descriptor has the "
-"form \"ID[.PRIORITY[.PROTO]]\". PROTO can be either 'q' for 802.1Q (the "
-"default) or 'ad' for 802.1ad."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:346
-msgid "Array of TC queueing disciplines."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:347
-msgid "Array of TC traffic filters."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:348
-msgid ""
-"The JSON configuration for the team network interface. The property should "
-"contain raw JSON configuration data suitable for teamd, because the value is "
-"passed directly to teamd. If not specified, the default configuration is "
-"used. See man teamd.conf for the format details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:349
-#: ../src/libnmc-setting/settings-docs.h.in:367
-msgid ""
-"Link watchers configuration for the connection: each link watcher is defined "
-"by a dictionary, whose keys depend upon the selected link watcher. Available "
-"link watchers are 'ethtool', 'nsna_ping' and 'arp_ping' and it is specified "
-"in the dictionary with the key 'name'. Available keys are: ethtool: 'delay-"
-"up', 'delay-down', 'init-wait'; nsna_ping: 'init-wait', 'interval', 'missed-"
-"max', 'target-host'; arp_ping: all the ones in nsna_ping and 'source-host', "
-"'validate-active', 'validate-inactive', 'send-always'. See teamd.conf man "
-"for more details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:350
-msgid "Corresponds to the teamd mcast_rejoin.count."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:351
-msgid "Corresponds to the teamd mcast_rejoin.interval."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:352
-msgid "Corresponds to the teamd notify_peers.count."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:353
-msgid "Corresponds to the teamd notify_peers.interval."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:354
-msgid ""
-"Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", "
-"\"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", \"random\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:355
-msgid "Corresponds to the teamd runner.active."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:356
-msgid "Corresponds to the teamd runner.agg_select_policy."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:357
-msgid "Corresponds to the teamd runner.fast_rate."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:358
-msgid "Corresponds to the teamd runner.hwaddr_policy."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:359
-msgid "Corresponds to the teamd runner.min_ports."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:360
-msgid "Corresponds to the teamd runner.sys_prio."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:361
-msgid "Corresponds to the teamd runner.tx_balancer.name."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:362
-msgid "Corresponds to the teamd runner.tx_balancer.interval."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:363
-msgid "Corresponds to the teamd runner.tx_hash."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:364
-msgid ""
-"The JSON configuration for the team port. The property should contain raw "
-"JSON configuration data suitable for teamd, because the value is passed "
-"directly to teamd. If not specified, the default configuration is used. See "
-"man teamd.conf for the format details."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:365
-msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_key."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:366
-msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_prio."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:368
-msgid "Corresponds to the teamd ports.PORTIFNAME.prio."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:369
-msgid ""
-"Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the "
-"parameter is skipped from the json config."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:370
-msgid "Corresponds to the teamd ports.PORTIFNAME.sticky."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:371
-msgid ""
-"The group ID which will own the device. If set to NULL everyone will be able "
-"to use the device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:372
-msgid ""
-"The operating mode of the virtual device. Allowed values are "
-"NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and "
-"NM_SETTING_TUN_MODE_TAP (2) to create an Ethernet-like layer 2 one."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:373
-msgid ""
-"If the property is set to TRUE, the interface will support multiple file "
-"descriptors (queues) to parallelize packet sending or receiving. Otherwise, "
-"the interface will only support a single queue."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:374
-msgid ""
-"The user ID which will own the device. If set to NULL everyone will be able "
-"to use the device."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:375
-msgid ""
-"If TRUE the interface will prepend a 4 byte header describing the physical "
-"interface to the packets."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:376
-msgid ""
-"If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network "
-"header."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:377
-msgid ""
-"A dictionary of key/value pairs with user data. This data is ignored by "
-"NetworkManager and can be used at the users discretion. The keys only "
-"support a strict ascii format, but the values can be arbitrary UTF8 strings "
-"up to a certain length."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:378
-msgid ""
-"This property specifies the peer interface name of the veth. This property "
-"is mandatory."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:379
-msgid ""
-"For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p "
-"priorities. The mapping is given in the format \"from:to\" where both \"from"
-"\" and \"to\" are unsigned integers, ie \"7:3\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:380
-msgid ""
-"One or more flags which control the behavior and features of the VLAN "
-"interface. Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of "
-"output packet headers), NM_VLAN_FLAG_GVRP (0x2) (use of the GVRP protocol), "
-"and NM_VLAN_FLAG_LOOSE_BINDING (0x4) (loose binding of the interface to its "
-"master device's operating state). NM_VLAN_FLAG_MVRP (0x8) (use of the MVRP "
-"protocol). The default value of this property is "
-"NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. To preserve backward "
-"compatibility, the default-value in the D-Bus API continues to be 0 and a "
-"missing property on D-Bus is still considered as 0."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:381
-msgid ""
-"The VLAN identifier that the interface created by this connection should be "
-"assigned. The valid range is from 0 to 4094, without the reserved id 4095."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:382
-msgid ""
-"For incoming packets, a list of mappings from 802.1p priorities to Linux SKB "
-"priorities. The mapping is given in the format \"from:to\" where both \"from"
-"\" and \"to\" are unsigned integers, ie \"7:3\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:383
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID from "
-"which this VLAN interface should be created. If this property is not "
-"specified, the connection must contain an \"802-3-ethernet\" setting with a "
-"\"mac-address\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:384
-msgid ""
-"Dictionary of key/value pairs of VPN plugin specific data. Both keys and "
-"values must be strings."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:385
-msgid ""
-"If the VPN service supports persistence, and this property is TRUE, the VPN "
-"will attempt to stay connected across link changes and outages, until "
-"explicitly disconnected."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:386
-msgid ""
-"Dictionary of key/value pairs of VPN plugin specific secrets like passwords "
-"or private keys. Both keys and values must be strings."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:387
-msgid ""
-"D-Bus service name of the VPN plugin that this setting uses to connect to "
-"its network. i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:388
-msgid ""
-"Timeout for the VPN service to establish the connection. Some services may "
-"take quite a long time to connect. Value of 0 means a default timeout, which "
-"is 60 seconds (unless overridden by vpn.timeout in configuration file). "
-"Values greater than zero mean timeout in seconds."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:389
-msgid ""
-"If the VPN connection requires a user name for authentication, that name "
-"should be provided here. If the connection is available to more than one "
-"user, and the VPN requires each user to supply a different name, then leave "
-"this property empty. If this property is empty, NetworkManager will "
-"automatically supply the username of the user which requested the VPN "
-"connection."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:390
-msgid "The routing table for this VRF."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:391
-msgid "Specifies the lifetime in seconds of FDB entries learnt by the kernel."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:392
-msgid ""
-"Specifies the UDP destination port to communicate to the remote VXLAN tunnel "
-"endpoint."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:393
-msgid ""
-"Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:394
-msgid "Specifies whether netlink LL ADDR miss notifications are generated."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:395
-msgid "Specifies whether netlink IP ADDR miss notifications are generated."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:396
-msgid ""
-"Specifies whether unknown source link layer addresses and IP addresses are "
-"entered into the VXLAN device forwarding database."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:397
-msgid ""
-"Specifies the maximum number of FDB entries. A value of zero means that the "
-"kernel will store unlimited entries."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:398
-msgid "If given, specifies the source IP address to use in outgoing packets."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:399
-msgid ""
-"If given, specifies the parent interface name or parent connection UUID."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:400
-msgid "Specifies whether ARP proxy is turned on."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:401
-msgid ""
-"Specifies the unicast destination IP address to use in outgoing packets when "
-"the destination link layer address is not known in the VXLAN device "
-"forwarding database, or the multicast IP address to join."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:402
-msgid "Specifies whether route short circuit is turned on."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:403
-msgid ""
-"Specifies the maximum UDP source port to communicate to the remote VXLAN "
-"tunnel endpoint."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:404
-msgid ""
-"Specifies the minimum UDP source port to communicate to the remote VXLAN "
-"tunnel endpoint."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:405
-msgid "Specifies the TOS value to use in outgoing packets."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:406
-msgid "Specifies the time-to-live value to use in outgoing packets."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:407
-msgid ""
-"The P2P device that should be connected to. Currently, this is the only way "
-"to create or join a group."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:408
-msgid ""
-"The Wi-Fi Display (WFD) Information Elements (IEs) to set. Wi-Fi Display "
-"requires a protocol specific information element to be set in certain Wi-Fi "
-"frames. These can be specified here for the purpose of establishing a "
-"connection. This setting is only useful when implementing a Wi-Fi Display "
-"client."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:409
-msgid ""
-"Flags indicating which mode of WPS is to be used. There's little point in "
-"changing the default setting as NetworkManager will automatically determine "
-"the best method to use."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:410
-msgid ""
-"If specified, this connection will only apply to the WiMAX device whose MAC "
-"address matches. This property does not change the MAC address of the device "
-"(known as MAC spoofing). Deprecated: 1"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:411
-msgid ""
-"Network Service Provider (NSP) name of the WiMAX network this connection "
-"should use. Deprecated: 1"
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:412
-msgid ""
-"The use of fwmark is optional and is by default off. Setting it to 0 "
-"disables it. Otherwise, it is a 32-bit fwmark for outgoing packets. Note "
-"that \"ip4-auto-default-route\" or \"ip6-auto-default-route\" enabled, "
-"implies to automatically choose a fwmark."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:413
-msgid ""
-"Whether to enable special handling of the IPv4 default route. If enabled, "
-"the IPv4 default route from wireguard.peer-routes will be placed to a "
-"dedicated routing-table and two policy routing rules will be added. The "
-"fwmark number is also used as routing-table for the default-route, and if "
-"fwmark is zero, an unused fwmark/table is chosen automatically. This "
-"corresponds to what wg-quick does with Table=auto and what WireGuard calls "
-"\"Improved Rule-based Routing\". Note that for this automatism to work, you "
-"usually don't want to set ipv4.gateway, because that will result in a "
-"conflicting default route. Leaving this at the default will enable this "
-"option automatically if ipv4.never-default is not set and there are any "
-"peers that use a default-route as allowed-ips."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:414
-msgid "Like ip4-auto-default-route, but for the IPv6 default route."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:415
-msgid ""
-"The listen-port. If listen-port is not specified, the port will be chosen "
-"randomly when the interface comes up."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:416
-msgid ""
-"If non-zero, only transmit packets of the specified size or smaller, "
-"breaking larger packets up into multiple fragments. If zero a default MTU is "
-"used. Note that contrary to wg-quick's MTU setting, this does not take into "
-"account the current routes at the time of activation."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:417
-msgid ""
-"Whether to automatically add routes for the AllowedIPs ranges of the peers. "
-"If TRUE (the default), NetworkManager will automatically add routes in the "
-"routing tables according to ipv4.route-table and ipv6.route-table. Usually "
-"you want this automatism enabled. If FALSE, no such routes are added "
-"automatically. In this case, the user may want to configure static routes in "
-"ipv4.routes and ipv6.routes, respectively. Note that if the peer's "
-"AllowedIPs is \"0.0.0.0/0\" or \"::/0\" and the profile's ipv4.never-default "
-"or ipv6.never-default setting is enabled, the peer route for this peer won't "
-"be added automatically."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:418
-msgid "The 256 bit private-key in base64 encoding."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:419
-msgid "Flags indicating how to handle the \"private-key\" property."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:420
-msgid ""
-"IEEE 802.15.4 channel. A positive integer or -1, meaning \"do not set, use "
-"whatever the device is already set to\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:421
-msgid ""
-"If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) "
-"MAC layer device whose permanent MAC address matches."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:422
-msgid ""
-"IEEE 802.15.4 channel page. A positive integer or -1, meaning \"do not set, "
-"use whatever the device is already set to\"."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:423
-msgid "IEEE 802.15.4 Personal Area Network (PAN) identifier."
-msgstr ""
-
-#: ../src/libnmc-setting/settings-docs.h.in:424
-msgid "Short IEEE 802.15.4 address to be used within a restricted environment."
-msgstr ""
-
-#: ../src/libnmt-newt/nmt-newt-utils.c:267 ../src/nmtui/nmt-editor.c:433
-#: ../src/nmtui/nmt-password-dialog.c:165 ../src/nmtui/nmt-route-editor.c:105
-#: ../src/nmtui/nmtui-hostname.c:53 ../src/nmtui/nmtui.c:118
-msgid "OK"
-msgstr ""
-
-#: ../src/libnmt-newt/nmt-newt-utils.c:412
-#: ../src/libnmt-newt/nmt-newt-utils.c:450
-#, c-format
-msgid "Could not create temporary file: %s"
-msgstr ""
-
-#: ../src/libnmt-newt/nmt-newt-utils.c:456
-#, c-format
-msgid "Editor failed: %s"
-msgstr ""
-
-#: ../src/libnmt-newt/nmt-newt-utils.c:462
-#, c-format
-msgid "Could not re-read file: %s"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:76
-#, fuzzy
-msgid "Connecting"
-msgstr "إتّصالات VPN"
-
-#: ../src/nm-online/nm-online.c:189
-#, c-format
-msgid "Error: timeout creating NMClient object\n"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:210
-#, fuzzy, c-format
-msgid "Error: Could not create NMClient object: %s\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nm-online/nm-online.c:236
-msgid "Don't print anything"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:242
-msgid "Wait for NetworkManager startup instead of a connection"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:249
-msgid ""
-"Time to wait for a connection, in seconds (without the option, default value "
-"is 30)"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:256
-msgid "Exit immediately if NetworkManager is not running or connecting"
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:280
-msgid ""
-"Waits for NetworkManager to finish activating startup network connections."
-msgstr ""
-
-#: ../src/nm-online/nm-online.c:288 ../src/nm-online/nm-online.c:295
-#, fuzzy
-msgid "Invalid option. Please use --help to see a list of valid options."
-msgstr "خيار غير صحيح. استعمل --help لعرض قائمة الخيارات الممكنة.\n"
-
-#: ../src/nmcli/agent.c:22
-#, c-format
-msgid ""
-"Usage: nmcli agent { COMMAND | help }\n"
-"\n"
-"COMMAND := { secret | polkit | all }\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:29
-#, c-format
-msgid ""
-"Usage: nmcli agent secret { help }\n"
-"\n"
-"Runs nmcli as NetworkManager secret agent. When NetworkManager requires\n"
-"a password it asks registered agents for it. This command keeps nmcli "
-"running\n"
-"and if a password is required asks the user for it.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:39
-#, c-format
-msgid ""
-"Usage: nmcli agent polkit { help }\n"
-"\n"
-"Registers nmcli as a polkit action for the user session.\n"
-"When a polkit daemon requires an authorization, nmcli asks the user and "
-"gives\n"
-"the response back to polkit.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:49
-#, c-format
-msgid ""
-"Usage: nmcli agent all { help }\n"
-"\n"
-"Runs nmcli as both NetworkManager secret and a polkit agent.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:139
-#, c-format
-msgid "nmcli successfully registered as a NetworkManager's secret agent.\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:141
-#, c-format
-msgid "Error: secret agent initialization failed"
-msgstr ""
-
-#: ../src/nmcli/agent.c:149
-#, c-format
-msgid "nmcli successfully registered as a polkit agent.\n"
-msgstr ""
-
-#: ../src/nmcli/agent.c:170
-#, c-format
-msgid "Error: polkit agent initialization failed: %s"
-msgstr ""
-
-#: ../src/nmcli/common.c:342 ../src/nmcli/common.c:343
-#: ../src/nmcli/common.c:373 ../src/nmcli/common.c:374
-#: ../src/nmcli/connections.c:1569
-msgid "GROUP"
-msgstr ""
-
-#: ../src/nmcli/common.c:621
-#, c-format
-msgid "Error: openconnect failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/common.c:628
-#, c-format
-msgid "Error: openconnect failed with status %d\n"
-msgstr ""
-
-#: ../src/nmcli/common.c:630
-#, c-format
-msgid "Error: openconnect failed with signal %d\n"
-msgstr ""
-
-#: ../src/nmcli/common.c:722
-#, c-format
-msgid ""
-"Warning: password for '%s' not given in 'passwd-file' and nmcli cannot ask "
-"without '--ask' option.\n"
-msgstr ""
-
-#: ../src/nmcli/common.c:1237
-#, c-format
-msgid "Error: Could not create NMClient object: %s."
-msgstr ""
-
-#: ../src/nmcli/common.c:1263
-msgid "Error: NetworkManager is not running."
-msgstr ""
-
-#: ../src/nmcli/common.c:1366
-#, c-format
-msgid "Error: argument '%s' not understood. Try passing --help instead."
-msgstr ""
-
-#: ../src/nmcli/common.c:1377
-msgid "Error: missing argument. Try passing --help."
-msgstr ""
-
-#: ../src/nmcli/common.c:1442
-msgid "access denied"
-msgstr ""
-
-#: ../src/nmcli/common.c:1444
-msgid "NetworkManager is not running"
-msgstr ""
-
-#: ../src/nmcli/common.c:1454
-msgid "none"
-msgstr "بلا"
-
-#: ../src/nmcli/common.c:1455
-#, fuzzy
-msgid "portal"
-msgstr "_صدِّر"
-
-#: ../src/nmcli/common.c:1456
-msgid "limited"
-msgstr ""
-
-#: ../src/nmcli/common.c:1457
-msgid "full"
-msgstr ""
-
-#. define some prompts for connection editor
-#: ../src/nmcli/connections.c:55
-msgid "Setting name? "
-msgstr ""
-
-#: ../src/nmcli/connections.c:56
-msgid "Property name? "
-msgstr ""
-
-#: ../src/nmcli/connections.c:57
-msgid "Enter connection type: "
-msgstr ""
-
-#. define some other prompts
-#: ../src/nmcli/connections.c:61
-#, fuzzy
-msgid "Connection (name, UUID, or path): "
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:62
-#, fuzzy
-msgid "VPN connection (name, UUID, or path): "
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:63
-#, fuzzy
-msgid "Connection(s) (name, UUID, or path): "
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:64
-#, fuzzy
-msgid "Connection(s) (name, UUID, path or apath): "
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:74
-msgid "activating"
-msgstr ""
-
-#: ../src/nmcli/connections.c:75
-msgid "activated"
-msgstr ""
-
-#: ../src/nmcli/connections.c:77
-msgid "deactivated"
-msgstr ""
-
-#: ../src/nmcli/connections.c:84
-#, fuzzy
-msgid "VPN connecting (prepare)"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:86
-msgid "VPN connecting (need authentication)"
-msgstr ""
-
-#: ../src/nmcli/connections.c:87
-#, fuzzy
-msgid "VPN connecting"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:89
-msgid "VPN connecting (getting IP configuration)"
-msgstr ""
-
-#: ../src/nmcli/connections.c:90
-#, fuzzy
-msgid "VPN connected"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:91
-#, fuzzy
-msgid "VPN connection failed"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:92
-#, fuzzy
-msgid "VPN disconnected"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:575
-msgid "never"
-msgstr ""
-
-#: ../src/nmcli/connections.c:923
-#, c-format
-msgid ""
-"Usage: nmcli connection { COMMAND | help }\n"
-"\n"
-"COMMAND := { show | up | down | add | modify | clone | edit | delete | "
-"monitor | reload | load | import | export }\n"
-"\n"
-" show [--active] [--order <order spec>]\n"
-" show [--active] [id | uuid | path | apath] <ID> ...\n"
-"\n"
-" up [[id | uuid | path] <ID>] [ifname <ifname>] [ap <BSSID>] [passwd-file "
-"<file with passwords>]\n"
-"\n"
-" down [id | uuid | path | apath] <ID> ...\n"
-"\n"
-" add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- "
-"([+|-]<setting>.<property> <value>)+]\n"
-"\n"
-" modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> "
-"<value>)+\n"
-"\n"
-" clone [--temporary] [id | uuid | path ] <ID> <new name>\n"
-"\n"
-" edit [id | uuid | path] <ID>\n"
-" edit [type <new_con_type>] [con-name <new_con_name>]\n"
-"\n"
-" delete [id | uuid | path] <ID>\n"
-"\n"
-" monitor [id | uuid | path] <ID> ...\n"
-"\n"
-" reload\n"
-"\n"
-" load <filename> [ <filename>... ]\n"
-"\n"
-" import [--temporary] type <type> file <file to import>\n"
-"\n"
-" export [id | uuid | path] <ID> [<output file>]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:949
-#, c-format
-msgid ""
-"Usage: nmcli connection show { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [--active] [--order <order spec>]\n"
-"\n"
-"List in-memory and on-disk connection profiles, some of which may also be\n"
-"active if a device is using that connection profile. Without a parameter, "
-"all\n"
-"profiles are listed. When --active option is specified, only the active\n"
-"profiles are shown. --order allows custom connection ordering (see manual "
-"page).\n"
-"\n"
-"ARGUMENTS := [--active] [id | uuid | path | apath] <ID> ...\n"
-"\n"
-"Show details for specified connections. By default, both static "
-"configuration\n"
-"and active connection data are displayed. It is possible to filter the "
-"output\n"
-"using global '--fields' option. Refer to the manual page for more "
-"information.\n"
-"When --active option is specified, only the active profiles are taken into\n"
-"account. Use global --show-secrets option to reveal associated secrets as "
-"well.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:970
-#, c-format
-msgid ""
-"Usage: nmcli connection up { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID> [ifname <ifname>] [ap <BSSID>] [nsp "
-"<name>] [passwd-file <file with passwords>]\n"
-"\n"
-"Activate a connection on a device. The profile to activate is identified by "
-"its\n"
-"name, UUID or D-Bus path.\n"
-"\n"
-"ARGUMENTS := ifname <ifname> [ap <BSSID>] [nsp <name>] [passwd-file <file "
-"with passwords>]\n"
-"\n"
-"Activate a device with a connection. The connection profile is selected\n"
-"automatically by NetworkManager.\n"
-"\n"
-"ifname - specifies the device to active the connection on\n"
-"ap - specifies AP to connect to (only valid for Wi-Fi)\n"
-"nsp - specifies NSP to connect to (only valid for WiMAX)\n"
-"passwd-file - file with password(s) required to activate the connection\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:993
-#, c-format
-msgid ""
-"Usage: nmcli connection down { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path | apath] <ID> ...\n"
-"\n"
-"Deactivate a connection from a device (without preventing the device from\n"
-"further auto-activation). The profile to deactivate is identified by its "
-"name,\n"
-"UUID or D-Bus path.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1005
-#, c-format
-msgid ""
-"Usage: nmcli connection add { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS "
-"[-- ([+|-]<setting>.<property> <value>)+]\n"
-"\n"
-" COMMON_OPTIONS:\n"
-" type <type>\n"
-" ifname <interface name> | \"*\"\n"
-" [con-name <connection name>]\n"
-" [autoconnect yes|no]\n"
-" [save yes|no]\n"
-" [master <master (ifname, or connection UUID or name)>]\n"
-" [slave-type <master connection type>]\n"
-"\n"
-" TYPE_SPECIFIC_OPTIONS:\n"
-" ethernet: [mac <MAC address>]\n"
-" [cloned-mac <cloned MAC address>]\n"
-" [mtu <MTU>]\n"
-"\n"
-" wifi: ssid <SSID>\n"
-" [mac <MAC address>]\n"
-" [cloned-mac <cloned MAC address>]\n"
-" [mtu <MTU>]\n"
-" [mode infrastructure|ap|adhoc]\n"
-"\n"
-" wimax: [mac <MAC address>]\n"
-" [nsp <NSP>]\n"
-"\n"
-" pppoe: username <PPPoE username>\n"
-" [password <PPPoE password>]\n"
-" [service <PPPoE service name>]\n"
-" [mtu <MTU>]\n"
-" [mac <MAC address>]\n"
-"\n"
-" gsm: apn <APN>\n"
-" [user <username>]\n"
-" [password <password>]\n"
-"\n"
-" cdma: [user <username>]\n"
-" [password <password>]\n"
-"\n"
-" infiniband: [mac <MAC address>]\n"
-" [mtu <MTU>]\n"
-" [transport-mode datagram | connected]\n"
-" [parent <ifname>]\n"
-" [p-key <IPoIB P_Key>]\n"
-"\n"
-" bluetooth: [addr <bluetooth address>]\n"
-" [bt-type panu|nap|dun-gsm|dun-cdma]\n"
-"\n"
-" vlan: dev <parent device (connection UUID, ifname, or MAC)>\n"
-" id <VLAN ID>\n"
-" [flags <VLAN flags>]\n"
-" [ingress <ingress priority mapping>]\n"
-" [egress <egress priority mapping>]\n"
-" [mtu <MTU>]\n"
-"\n"
-" bond: [mode balance-rr (0) | active-backup (1) | balance-xor (2) "
-"| broadcast (3) |\n"
-" 802.3ad (4) | balance-tlb (5) | balance-alb "
-"(6)]\n"
-" [primary <ifname>]\n"
-" [miimon <num>]\n"
-" [downdelay <num>]\n"
-" [updelay <num>]\n"
-" [arp-interval <num>]\n"
-" [arp-ip-target <num>]\n"
-" [lacp-rate slow (0) | fast (1)]\n"
-"\n"
-" bond-slave: master <master (ifname, or connection UUID or name)>\n"
-"\n"
-" team: [config <file>|<raw JSON data>]\n"
-"\n"
-" team-slave: master <master (ifname, or connection UUID or name)>\n"
-" [config <file>|<raw JSON data>]\n"
-"\n"
-" bridge: [stp yes|no]\n"
-" [priority <num>]\n"
-" [forward-delay <2-30>]\n"
-" [hello-time <1-10>]\n"
-" [max-age <6-40>]\n"
-" [ageing-time <0-1000000>]\n"
-" [multicast-snooping yes|no]\n"
-" [mac <MAC address>]\n"
-"\n"
-" bridge-slave: master <master (ifname, or connection UUID or name)>\n"
-" [priority <0-63>]\n"
-" [path-cost <1-65535>]\n"
-" [hairpin yes|no]\n"
-"\n"
-" vpn: vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|"
-"ssh|l2tp|iodine|...\n"
-" [user <username>]\n"
-"\n"
-" olpc-mesh: ssid <SSID>\n"
-" [channel <1-13>]\n"
-" [dhcp-anycast <MAC address>]\n"
-"\n"
-" adsl: username <username>\n"
-" protocol pppoa|pppoe|ipoatm\n"
-" [password <password>]\n"
-" [encapsulation vcmux|llc]\n"
-"\n"
-" tun: mode tun|tap\n"
-" [owner <UID>]\n"
-" [group <GID>]\n"
-" [pi yes|no]\n"
-" [vnet-hdr yes|no]\n"
-" [multi-queue yes|no]\n"
-"\n"
-" ip-tunnel: mode ipip|gre|sit|isatap|vti|ip6ip6|ipip6|ip6gre|vti6\n"
-" remote <remote endpoint IP>\n"
-" [local <local endpoint IP>]\n"
-" [dev <parent device (ifname or connection UUID)>]\n"
-"\n"
-" macsec: dev <parent device (connection UUID, ifname, or MAC)>\n"
-" mode <psk|eap>\n"
-" [cak <key> ckn <key>]\n"
-" [encrypt yes|no]\n"
-" [port 1-65534]\n"
-"\n"
-"\n"
-" macvlan: dev <parent device (connection UUID, ifname, or MAC)>\n"
-" mode vepa|bridge|private|passthru|source\n"
-" [tap yes|no]\n"
-"\n"
-" vxlan: id <VXLAN ID>\n"
-" [remote <IP of multicast group or remote address>]\n"
-" [local <source IP>]\n"
-" [dev <parent device (ifname or connection UUID)>]\n"
-" [source-port-min <0-65535>]\n"
-" [source-port-max <0-65535>]\n"
-" [destination-port <0-65535>]\n"
-"\n"
-" wpan: [short-addr <0x0000-0xffff>]\n"
-" [pan-id <0x0000-0xffff>]\n"
-" [page <default|0-31>]\n"
-" [channel <default|0-26>]\n"
-" [mac <MAC address>]\n"
-"\n"
-" 6lowpan: dev <parent device (connection UUID, ifname, or MAC)>\n"
-" dummy:\n"
-"\n"
-" SLAVE_OPTIONS:\n"
-" bridge: [priority <0-63>]\n"
-" [path-cost <1-65535>]\n"
-" [hairpin yes|no]\n"
-"\n"
-" team: [config <file>|<raw JSON data>]\n"
-"\n"
-" IP_OPTIONS:\n"
-" [ip4 <IPv4 address>] [gw4 <IPv4 gateway>]\n"
-" [ip6 <IPv6 address>] [gw6 <IPv6 gateway>]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1133
-#, c-format
-msgid ""
-"Usage: nmcli connection modify { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+\n"
-"\n"
-"Modify one or more properties of the connection profile.\n"
-"The profile is identified by its name, UUID or D-Bus path. For multi-valued\n"
-"properties you can use optional '+' or '-' prefix to the property name.\n"
-"The '+' sign allows appending items instead of overwriting the whole value.\n"
-"The '-' sign allows removing selected items instead of the whole value.\n"
-"\n"
-"ARGUMENTS := remove <setting>\n"
-"\n"
-"Remove a setting from the connection profile.\n"
-"\n"
-"Examples:\n"
-"nmcli con mod home-wifi wifi.ssid rakosnicek\n"
-"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, "
-"10.10.1.5/8\"\n"
-"nmcli con mod em1-1 +ipv4.dns 8.8.4.4\n"
-"nmcli con mod em1-1 -ipv4.dns 1\n"
-"nmcli con mod em1-1 -ipv6.addr \"abbe::cafe/56\"\n"
-"nmcli con mod bond0 +bond.options mii=500\n"
-"nmcli con mod bond0 -bond.options downdelay\n"
-"nmcli con mod em1-1 remove sriov\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1161
-#, c-format
-msgid ""
-"Usage: nmcli connection clone { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [--temporary] [id | uuid | path] <ID> <new name>\n"
-"\n"
-"Clone an existing connection profile. The newly created connection will be\n"
-"the exact copy of the <ID>, except the uuid property (will be generated) "
-"and\n"
-"id (provided as <new name> argument).\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1173
-#, c-format
-msgid ""
-"Usage: nmcli connection edit { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID>\n"
-"\n"
-"Edit an existing connection profile in an interactive editor.\n"
-"The profile is identified by its name, UUID or D-Bus path\n"
-"\n"
-"ARGUMENTS := [type <new connection type>] [con-name <new connection name>]\n"
-"\n"
-"Add a new connection profile in an interactive editor.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1188
-#, c-format
-msgid ""
-"Usage: nmcli connection delete { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID>\n"
-"\n"
-"Delete a connection profile.\n"
-"The profile is identified by its name, UUID or D-Bus path.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1199
-#, c-format
-msgid ""
-"Usage: nmcli connection monitor { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID> ...\n"
-"\n"
-"Monitor connection profile activity.\n"
-"This command prints a line whenever the specified connection changes.\n"
-"Monitors all connection profiles in case none is specified.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1211
-#, c-format
-msgid ""
-"Usage: nmcli connection reload { help }\n"
-"\n"
-"Reload all connection files from disk.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1219
-#, c-format
-msgid ""
-"Usage: nmcli connection load { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <filename> [<filename>...]\n"
-"\n"
-"Load/reload one or more connection files from disk. Use this after manually\n"
-"editing a connection file to ensure that NetworkManager is aware of its "
-"latest\n"
-"state.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1232
-#, c-format
-msgid ""
-"Usage: nmcli connection import { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [--temporary] type <type> file <file to import>\n"
-"\n"
-"Import an external/foreign configuration as a NetworkManager connection "
-"profile.\n"
-"The type of the input file is specified by type option.\n"
-"Only VPN configurations are supported at the moment. The configuration\n"
-"is imported by NetworkManager VPN plugins.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1245
-#, c-format
-msgid ""
-"Usage: nmcli connection export { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [id | uuid | path] <ID> [<output file>]\n"
-"\n"
-"Export a connection. Only VPN connections are supported at the moment.\n"
-"The data are directed to standard output or to a file if a name is given.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1336
-#, c-format
-msgid "Error updating secrets for %s: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1387
-msgid "Connection profile details"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1404 ../src/nmcli/connections.c:1514
-#, fuzzy, c-format
-msgid "Error: 'connection show': %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:1497
-msgid "Active connection details"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1626 ../src/nmcli/devices.c:1610
-#: ../src/nmcli/devices.c:1627 ../src/nmcli/devices.c:1645
-#: ../src/nmcli/devices.c:1664 ../src/nmcli/devices.c:1731
-#: ../src/nmcli/devices.c:1860
-msgid "NAME"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1726
-#, c-format
-msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s"
-msgstr ""
-
-#: ../src/nmcli/connections.c:1743 ../src/nmcli/connections.c:1754
-#, c-format
-msgid "'%s' has to be alone"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2008
-#, c-format
-msgid "incorrect string '%s' of '--order' option"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2032
-#, c-format
-msgid "incorrect item '%s' in '--order' option"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2072
-#, fuzzy
-msgid "No connection specified"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:2085
-#, c-format
-msgid "%s argument is missing"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2106
-#, fuzzy, c-format
-msgid "unknown connection '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:2135
-msgid "'--order' argument is missing"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2199
-msgid "NetworkManager active profiles"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2200
-msgid "NetworkManager connection profiles"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2256 ../src/nmcli/connections.c:2967
-#: ../src/nmcli/connections.c:2979 ../src/nmcli/connections.c:2991
-#: ../src/nmcli/connections.c:3227 ../src/nmcli/connections.c:9312
-#: ../src/nmcli/connections.c:9334 ../src/nmcli/devices.c:3296
-#: ../src/nmcli/devices.c:3309 ../src/nmcli/devices.c:3321
-#: ../src/nmcli/devices.c:3625 ../src/nmcli/devices.c:3636
-#: ../src/nmcli/devices.c:3655 ../src/nmcli/devices.c:3664
-#: ../src/nmcli/devices.c:3686 ../src/nmcli/devices.c:3697
-#: ../src/nmcli/devices.c:3718 ../src/nmcli/devices.c:4282
-#: ../src/nmcli/devices.c:4293 ../src/nmcli/devices.c:4302
-#: ../src/nmcli/devices.c:4316 ../src/nmcli/devices.c:4334
-#: ../src/nmcli/devices.c:4343 ../src/nmcli/devices.c:4499
-#: ../src/nmcli/devices.c:4510 ../src/nmcli/devices.c:4729
-#: ../src/nmcli/devices.c:4908
-#, c-format
-msgid "Error: %s argument is missing."
-msgstr ""
-
-#: ../src/nmcli/connections.c:2291
-#, c-format
-msgid "Error: %s - no such connection profile."
-msgstr ""
-
-#: ../src/nmcli/connections.c:2383 ../src/nmcli/connections.c:2953
-#: ../src/nmcli/connections.c:3027 ../src/nmcli/connections.c:8832
-#: ../src/nmcli/connections.c:8922 ../src/nmcli/connections.c:9441
-#: ../src/nmcli/devices.c:1960 ../src/nmcli/devices.c:2230
-#: ../src/nmcli/devices.c:2403 ../src/nmcli/devices.c:2527
-#: ../src/nmcli/devices.c:2714 ../src/nmcli/devices.c:3496
-#: ../src/nmcli/devices.c:4463 ../src/nmcli/devices.c:4915
-#: ../src/nmcli/general.c:1054
-#, c-format
-msgid "Error: %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:2475 ../src/nmcli/devices.c:4682
-#, c-format
-msgid "no active connection on device '%s'"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2483
-msgid "no active connection or device"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2504
-#, fuzzy, c-format
-msgid "device '%s' not compatible with connection '%s': "
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:2541
-#, c-format
-msgid "device '%s' not compatible with connection '%s'"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2548
-#, fuzzy, c-format
-msgid "no device found for connection '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:2599
-#, c-format
-msgid "Hint: use '%s' to get more details."
-msgstr ""
-
-#: ../src/nmcli/connections.c:2617
-#, c-format
-msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2621 ../src/nmcli/connections.c:2772
-#: ../src/nmcli/connections.c:7114
-#, c-format
-msgid "Connection successfully activated (D-Bus active path: %s)\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2628 ../src/nmcli/connections.c:2751
-#, c-format
-msgid "Error: Connection activation failed: %s"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2664
-#, c-format
-msgid "Error: Timeout expired (%d seconds)"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2847
-#, c-format
-msgid "unknown device '%s'."
-msgstr ""
-
-#: ../src/nmcli/connections.c:2855
-msgid "neither a valid connection nor device given"
-msgstr ""
-
-#: ../src/nmcli/connections.c:2870
-#, fuzzy, c-format
-msgid "invalid passwd-file '%s' at line %zd: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:2878
-#, fuzzy, c-format
-msgid "invalid passwd-file '%s': %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:3001 ../src/nmcli/connections.c:9345
-#: ../src/nmcli/devices.c:1917 ../src/nmcli/devices.c:1966
-#: ../src/nmcli/devices.c:2409 ../src/nmcli/devices.c:3356
-#: ../src/nmcli/devices.c:3734 ../src/nmcli/devices.c:4353
-#: ../src/nmcli/devices.c:4516 ../src/nmcli/devices.c:4737
-#: ../src/nmcli/devices.c:4920
-#, c-format
-msgid "Error: invalid extra argument '%s'."
-msgstr ""
-
-#: ../src/nmcli/connections.c:3035
-msgid "preparing"
-msgstr ""
-
-#: ../src/nmcli/connections.c:3143
-#, c-format
-msgid "Connection '%s' (%s) successfully deleted.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:3159
-#, c-format
-msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:3208 ../src/nmcli/connections.c:9018
-#: ../src/nmcli/connections.c:9050 ../src/nmcli/connections.c:9239
-#, c-format
-msgid "Error: No connection specified."
-msgstr ""
-
-#: ../src/nmcli/connections.c:3240
-#, c-format
-msgid "Error: '%s' is not an active connection.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:3241
-#, c-format
-msgid "Error: not all active connections found."
-msgstr ""
-
-#: ../src/nmcli/connections.c:3249
-#, c-format
-msgid "Error: no active connection provided."
-msgstr ""
-
-#: ../src/nmcli/connections.c:3281
-#, c-format
-msgid "Connection '%s' deactivation failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:3755
-#, c-format
-msgid "Warning: master='%s' doesn't refer to any existing profile.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:4130
-#, c-format
-msgid "Error: invalid property '%s': %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:4147
-#, fuzzy, c-format
-msgid "Error: failed to %s %s.%s: %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:4227
-#, fuzzy, c-format
-msgid "Error: invalid slave type; %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:4238
-#, fuzzy, c-format
-msgid "Error: invalid connection type; %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:4329
-#, fuzzy, c-format
-msgid "Error: bad connection type: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:4414
-msgid "Error: master is required"
-msgstr ""
-
-#: ../src/nmcli/connections.c:4515
-#, c-format
-msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:4556
-#, c-format
-msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]."
-msgstr ""
-
-#: ../src/nmcli/connections.c:4903
-#, c-format
-msgid "Error: setting '%s' is mandatory and cannot be removed."
-msgstr ""
-
-#: ../src/nmcli/connections.c:4919
-#, c-format
-msgid "Error: value for '%s' is missing."
-msgstr ""
-
-#: ../src/nmcli/connections.c:4970
-msgid "Error: <setting>.<property> argument is missing."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5012
-msgid "Error: missing setting."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5026
-#, fuzzy, c-format
-msgid "Error: invalid setting argument '%s'."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:5057
-#, c-format
-msgid "Error: invalid or not allowed setting '%s': %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5116 ../src/nmcli/connections.c:5137
-#, c-format
-msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5161
-#, c-format
-msgid "Error: invalid <setting>.<property> '%s'."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5198 ../src/nmcli/connections.c:8870
-#, fuzzy, c-format
-msgid "Error: Failed to add '%s' connection: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:5217
-#, c-format
-msgid ""
-"Warning: There is another connection with the name '%1$s'. Reference the "
-"connection by its uuid '%2$s'\n"
-msgid_plural ""
-"Warning: There are %3$u other connections with the name '%1$s'. Reference "
-"the connection by its uuid '%2$s'\n"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#. We print here human readable text, but as scripts might parse this output
-#. * (with LANG=C), this is important to not change in the future. At least
-#. * not unless called with a new command line flag, that requests a different output.
-#. *
-#. * That means, be very careful if you change this message, it might break
-#. * scripts!!
-#. *
-#. * This is true for many messages that the user might parse. But this one
-#. * seems in particular interesting for a user to parse.
-#: ../src/nmcli/connections.c:5237
-#, c-format
-msgid "Connection '%s' (%s) successfully added.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:5381
-#, c-format
-msgid ""
-"You can specify this option more than once. Press <Enter> when you're done.\n"
-msgstr ""
-
-#. Ask for optional arguments.
-#: ../src/nmcli/connections.c:5481
-#, c-format
-msgid "There is %d optional setting for %s.\n"
-msgid_plural "There are %d optional settings for %s.\n"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: ../src/nmcli/connections.c:5488
-#, c-format
-msgid "Do you want to provide it? %s"
-msgid_plural "Do you want to provide them? %s"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: ../src/nmcli/connections.c:5615 ../src/nmcli/utils.c:280
-#, c-format
-msgid "Error: value for '%s' argument is required."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5622
-#, c-format
-msgid "Error: 'save': %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:5707 ../src/nmcli/connections.c:5720
-#, c-format
-msgid "Error: '%s' argument is required."
-msgstr ""
-
-#: ../src/nmcli/connections.c:6671
-#, c-format
-msgid "['%s' setting values]\n"
-msgstr ""
-
-#. TRANSLATORS: do not translate command names and keywords before ::
-#. * However, you should translate terms enclosed in <>.
-#.
-#: ../src/nmcli/connections.c:6779
-#, c-format
-msgid ""
-"---[ Main menu ]---\n"
-"goto [<setting> | <prop>] :: go to a setting or property\n"
-"remove <setting>[.<prop>] | <prop> :: remove setting or reset property "
-"value\n"
-"set [<setting>.<prop> <value>] :: set property value\n"
-"describe [<setting>.<prop>] :: describe property\n"
-"print [all | <setting>[.<prop>]] :: print the connection\n"
-"verify [all | fix] :: verify the connection\n"
-"save [persistent|temporary] :: save the connection\n"
-"activate [<ifname>] [/<ap>|<nsp>] :: activate the connection\n"
-"back :: go one level up (back)\n"
-"help/? [<command>] :: print this help\n"
-"nmcli <conf-option> <value> :: nmcli configuration\n"
-"quit :: exit nmcli\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6806
-#, c-format
-msgid ""
-"goto <setting>[.<prop>] | <prop> :: enter setting/property for editing\n"
-"\n"
-"This command enters into a setting or property for editing it.\n"
-"\n"
-"Examples: nmcli> goto connection\n"
-" nmcli connection> goto secondaries\n"
-" nmcli> goto ipv4.addresses\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6814
-#, c-format
-msgid ""
-"remove <setting>[.<prop>] :: remove setting or reset property value\n"
-"\n"
-"This command removes an entire setting from the connection, or if a "
-"property\n"
-"is given, resets that property to the default value.\n"
-"\n"
-"Examples: nmcli> remove wifi-sec\n"
-" nmcli> remove eth.mtu\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6821
-#, c-format
-msgid ""
-"set [<setting>.<prop> <value>] :: set property value\n"
-"\n"
-"This command sets property value.\n"
-"\n"
-"Example: nmcli> set con.id My connection\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6826
-#, c-format
-msgid ""
-"describe [<setting>.<prop>] :: describe property\n"
-"\n"
-"Shows property description. You can consult nm-settings(5) manual page to "
-"see all NM settings and properties.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6831
-#, c-format
-msgid ""
-"print [all] :: print setting or connection values\n"
-"\n"
-"Shows current property or the whole connection.\n"
-"\n"
-"Example: nmcli ipv4> print all\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6837
-#, c-format
-msgid ""
-"verify [all | fix] :: verify setting or connection validity\n"
-"\n"
-"Verifies whether the setting or connection is valid and can be saved later.\n"
-"It indicates invalid values on error. Some errors may be fixed "
-"automatically\n"
-"by 'fix' option.\n"
-"\n"
-"Examples: nmcli> verify\n"
-" nmcli> verify fix\n"
-" nmcli bond> verify\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6847
-#, c-format
-msgid ""
-"save [persistent|temporary] :: save the connection\n"
-"\n"
-"Sends the connection profile to NetworkManager that either will save it\n"
-"persistently, or will only keep it in memory. 'save' without an argument\n"
-"means 'save persistent'.\n"
-"Note that once you save the profile persistently those settings are saved\n"
-"across reboot or restart. Subsequent changes can also be temporary or\n"
-"persistent, but any temporary changes will not persist across reboot or\n"
-"restart. If you want to fully remove the persistent connection, the "
-"connection\n"
-"profile must be deleted.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6858
-#, c-format
-msgid ""
-"activate [<ifname>] [/<ap>|<nsp>] :: activate the connection\n"
-"\n"
-"Activates the connection.\n"
-"\n"
-"Available options:\n"
-"<ifname> - device the connection will be activated on\n"
-"/<ap>|<nsp> - AP (Wi-Fi) or NSP (WiMAX) (prepend with / when <ifname> is not "
-"specified)\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6866 ../src/nmcli/connections.c:7025
-#, c-format
-msgid ""
-"back :: go to upper menu level\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6869
-#, c-format
-msgid ""
-"help/? [<command>] :: help for the nmcli commands\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6872
-#, c-format
-msgid ""
-"nmcli [<conf-option> <value>] :: nmcli configuration\n"
-"\n"
-"Configures nmcli. The following options are available:\n"
-"status-line yes | no [default: no]\n"
-"save-confirmation yes | no [default: yes]\n"
-"show-secrets yes | no [default: no]\n"
-"prompt-color <color> | <0-8> [default: 0]\n"
-"%s\n"
-"Examples: nmcli> nmcli status-line yes\n"
-" nmcli> nmcli save-confirmation no\n"
-" nmcli> nmcli prompt-color 3\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6894 ../src/nmcli/connections.c:7031
-#, c-format
-msgid ""
-"quit :: exit nmcli\n"
-"\n"
-"This command exits nmcli. When the connection being edited is not saved, the "
-"user is asked to confirm the action.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6899 ../src/nmcli/connections.c:7036
-#: ../src/nmcli/connections.c:7423 ../src/nmcli/connections.c:8443
-#, c-format
-msgid "Unknown command: '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: do not translate command names and keywords before ::
-#. * However, you should translate terms enclosed in <>.
-#.
-#: ../src/nmcli/connections.c:6964
-#, c-format
-msgid ""
-"---[ Property menu ]---\n"
-"set [<value>] :: set new value\n"
-"add [<value>] :: add new option to the property\n"
-"change :: change current value\n"
-"remove [<index> | <option>] :: delete the value\n"
-"describe :: describe property\n"
-"print [setting | connection] :: print property (setting/connection) "
-"value(s)\n"
-"back :: go to upper level\n"
-"help/? [<command>] :: print this help or command description\n"
-"quit :: exit nmcli\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6988
-#, c-format
-msgid ""
-"set [<value>] :: set new value\n"
-"\n"
-"This command sets provided <value> to this property\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6992
-#, c-format
-msgid ""
-"add [<value>] :: append new value to the property\n"
-"\n"
-"This command adds provided <value> to this property, if the property is of a "
-"container type. For single-valued properties the property value is replaced "
-"(same as 'set').\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:6998
-#, c-format
-msgid ""
-"change :: change current value\n"
-"\n"
-"Displays current value and allows editing it.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7003
-#, c-format
-msgid ""
-"remove [<value>|<index>|<option name>] :: delete the value\n"
-"\n"
-"Removes the property value. For single-valued properties, this sets the\n"
-"property back to its default value. For container-type properties, this "
-"removes\n"
-"all the values of that property or you can specify an argument to remove "
-"just\n"
-"a single item or option. The argument is either a value or index of the item "
-"to\n"
-"remove, or an option name (for properties with named options).\n"
-"\n"
-"Examples: nmcli ipv4.dns> remove 8.8.8.8\n"
-" nmcli ipv4.dns> remove 2\n"
-" nmcli bond.options> remove downdelay\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7014
-#, c-format
-msgid ""
-"describe :: describe property\n"
-"\n"
-"Shows property description. You can consult nm-settings(5) manual page to "
-"see all NM settings and properties.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7019
-#, c-format
-msgid ""
-"print [property|setting|connection] :: print property (setting, connection) "
-"value(s)\n"
-"\n"
-"Shows property value. Providing an argument you can also display values for "
-"the whole setting or connection.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7028
-#, c-format
-msgid ""
-"help/? [<command>] :: help for nmcli commands\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7120
-#, c-format
-msgid "Error: Connection activation failed.\n"
-msgstr ""
-
-#. TRANSLATORS: status line in nmcli connection editor
-#: ../src/nmcli/connections.c:7217
-#, c-format
-msgid "[ Type: %s | Name: %s | UUID: %s | Dirty: %s | Temp: %s ]\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7255
-#, c-format
-msgid "The connection is not saved. Do you really want to quit? %s"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7299
-#, c-format
-msgid ""
-"The connection profile has been removed from another client. You may type "
-"'save' in the main menu to restore it.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7331 ../src/nmcli/connections.c:7719
-#: ../src/nmcli/connections.c:7789
-#, c-format
-msgid "Allowed values for '%s' property: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7333 ../src/nmcli/connections.c:7722
-#: ../src/nmcli/connections.c:7791
-#, c-format
-msgid "Enter '%s' value: "
-msgstr ""
-
-#: ../src/nmcli/connections.c:7346 ../src/nmcli/connections.c:7363
-#: ../src/nmcli/connections.c:7730 ../src/nmcli/connections.c:7802
-#, c-format
-msgid "Error: failed to set '%s' property: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7355
-#, c-format
-msgid "Edit '%s' value: "
-msgstr ""
-
-#: ../src/nmcli/connections.c:7376 ../src/nmcli/settings.c:440
-#, c-format
-msgid "Error: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7395
-#, c-format
-msgid "Unknown command argument: '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7490
-#, c-format
-msgid "Available settings: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7501
-#, c-format
-msgid "Error: invalid setting name; %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7518
-#, c-format
-msgid "Available properties: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7526
-#, c-format
-msgid "Error: property %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7568
-#, c-format
-msgid ""
-"Saving the connection with 'autoconnect=yes'. That might result in an "
-"immediate activation of the connection.\n"
-"Do you still want to save? %s"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7654
-#, c-format
-msgid "You may edit the following settings: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7682
-#, c-format
-msgid ""
-"The connection profile has been removed from another client. You may type "
-"'save' to restore it.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7736 ../src/nmcli/connections.c:8017
-#: ../src/nmcli/connections.c:8050
-#, c-format
-msgid "Error: no setting selected; valid are [%s]\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7737
-#, c-format
-msgid "use 'goto <setting>' first, or 'set <setting>.<property>'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7757 ../src/nmcli/connections.c:7934
-#: ../src/nmcli/connections.c:8039
-#, c-format
-msgid "Error: invalid setting argument '%s'; valid are [%s]\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7767
-#, c-format
-msgid "Error: missing setting for '%s' property\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7774
-#, c-format
-msgid "Error: invalid property: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7835
-#, c-format
-msgid "Error: unknown setting '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7861
-#, c-format
-msgid "You may edit the following properties: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7907 ../src/nmcli/connections.c:7967
-#, c-format
-msgid "Error: failed to remove value of '%s': %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7913
-#, c-format
-msgid "Error: no argument given; valid are [%s]\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7932
-#, c-format
-msgid "Setting '%s' is not present in the connection.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:7993
-#, c-format
-msgid "Error: %s properties, nor it is a setting name.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8018 ../src/nmcli/connections.c:8051
-#, c-format
-msgid "use 'goto <setting>' first, or 'describe <setting>.<property>'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8074
-#, c-format
-msgid "Error: invalid property: %s, neither a valid setting name.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8104
-#, c-format
-msgid "Error: unknown setting: '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8109
-#, c-format
-msgid "Error: '%s' setting not present in the connection\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8141
-#, c-format
-msgid "Error: invalid property: %s%s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8143
-msgid ", neither a valid setting name"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8159
-#, c-format
-msgid "Invalid verify option: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8167
-#, c-format
-msgid "Verify setting '%s': %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8182
-#, fuzzy, c-format
-msgid "Verify connection: %s\n"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:8184
-#, c-format
-msgid "The error cannot be fixed automatically.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8204
-#, c-format
-msgid "Error: invalid argument '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8254
-#, c-format
-msgid "Error: Failed to save '%s' (%s) connection: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8260
-#, fuzzy, c-format
-msgid "Error: Timeout saving '%s' (%s) connection\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8264
-#, c-format
-msgid "Connection '%s' (%s) successfully saved.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8265
-#, c-format
-msgid "Connection '%s' (%s) successfully updated.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8299
-#, c-format
-msgid "Error: connection verification failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8300
-msgid "(unknown error)"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8301
-#, c-format
-msgid "You may try running 'verify fix' to fix errors.\n"
-msgstr ""
-
-#. TRANSLATORS: do not translate 'save', leave it as it is
-#: ../src/nmcli/connections.c:8324
-#, c-format
-msgid "Error: connection is not saved. Type 'save' first.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8328
-#, c-format
-msgid "Error: connection is not valid: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8344
-#, fuzzy, c-format
-msgid "Error: Cannot activate connection: %s.\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8353
-#, c-format
-msgid "Error: Failed to activate '%s' (%s) connection: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8360
-msgid "Monitoring connection activation (press any key to continue)\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8395
-#, c-format
-msgid "Error: status-line: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8403
-#, c-format
-msgid "Error: save-confirmation: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8411
-#, c-format
-msgid "Error: show-secrets: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8419
-#, c-format
-msgid "Current nmcli configuration:\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8427
-#, c-format
-msgid "Invalid configuration option '%s'; allowed [%s]\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8658
-#, c-format
-msgid "Error: only one of 'id', 'filename', uuid, or 'path' can be provided."
-msgstr ""
-
-#: ../src/nmcli/connections.c:8673 ../src/nmcli/connections.c:8840
-#, fuzzy, c-format
-msgid "Error: Unknown connection '%s'."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8690
-#, c-format
-msgid "Warning: editing existing connection '%s'; 'type' argument is ignored\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8694
-#, c-format
-msgid ""
-"Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8721
-#, c-format
-msgid "Valid connection types: %s\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8723
-#, fuzzy, c-format
-msgid "Error: invalid connection type; %s\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8762
-#, c-format
-msgid "===| nmcli interactive connection editor |==="
-msgstr ""
-
-#: ../src/nmcli/connections.c:8765
-#, fuzzy, c-format
-msgid "Editing existing '%s' connection: '%s'"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8767
-#, fuzzy, c-format
-msgid "Adding a new '%s' connection"
-msgstr "أضف اتصال VPN جديد"
-
-#. TRANSLATORS: do not translate 'help', leave it as it is
-#: ../src/nmcli/connections.c:8770
-#, c-format
-msgid "Type 'help' or '?' for available commands."
-msgstr ""
-
-#. TRANSLATORS: do not translate 'print', leave it as it is
-#: ../src/nmcli/connections.c:8773
-#, c-format
-msgid "Type 'print' to show all the connection properties."
-msgstr ""
-
-#. TRANSLATORS: do not translate 'describe', leave it as it is
-#: ../src/nmcli/connections.c:8776
-#, c-format
-msgid "Type 'describe [<setting>.<prop>]' for detailed property description."
-msgstr ""
-
-#: ../src/nmcli/connections.c:8803
-#, fuzzy, c-format
-msgid "Error: Failed to modify connection '%s': %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:8809
-#, c-format
-msgid "Connection '%s' (%s) successfully modified.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8875
-#, c-format
-msgid "%s (%s) cloned as %s (%s).\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:8933
-#, fuzzy
-msgid "New connection name: "
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/connections.c:8935
-#, c-format
-msgid "Error: <new name> argument is missing."
-msgstr ""
-
-#: ../src/nmcli/connections.c:8941 ../src/nmcli/connections.c:9452
-#, c-format
-msgid "Error: unknown extra argument: '%s'."
-msgstr ""
-
-#: ../src/nmcli/connections.c:8975
-#, c-format
-msgid "Error: not all connections deleted."
-msgstr ""
-
-#: ../src/nmcli/connections.c:8976
-#, fuzzy, c-format
-msgid "Error: Connection deletion failed: %s\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:9031 ../src/nmcli/connections.c:9156
-#, c-format
-msgid "Error: %s.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9032 ../src/nmcli/connections.c:9157
-#, c-format
-msgid "Error: not all connections found."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9088
-#, c-format
-msgid "Error: cannot delete unknown connection(s): %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9097
-#, c-format
-msgid "%s: connection profile changed\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9123
-#, c-format
-msgid "%s: connection profile created\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9132
-#, c-format
-msgid "%s: connection profile removed\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9200
-#, fuzzy, c-format
-msgid "Error: failed to reload connections: %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:9254
-#, fuzzy, c-format
-msgid "Error: failed to load connection: %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:9262
-#, c-format
-msgid "Could not load file '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9266
-msgid "File to import: "
-msgstr ""
-
-#: ../src/nmcli/connections.c:9297
-#, c-format
-msgid "Error: No arguments provided."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9328
-#, c-format
-msgid "Warning: 'type' already specified, ignoring extra one.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9343
-#, c-format
-msgid "Warning: 'file' already specified, ignoring extra one.\n"
-msgstr ""
-
-#: ../src/nmcli/connections.c:9357
-#, c-format
-msgid "Error: 'type' argument is required."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9362
-#, c-format
-msgid "Error: 'file' argument is required."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9372
-#, fuzzy, c-format
-msgid "Error: failed to find VPN plugin for %s."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:9381 ../src/nmcli/connections.c:9473
-#, c-format
-msgid "Error: failed to load VPN plugin: %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9392
-#, c-format
-msgid "Error: failed to import '%s': %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9458
-msgid "Output file name: "
-msgstr ""
-
-#: ../src/nmcli/connections.c:9463
-#, fuzzy, c-format
-msgid "Error: the connection is not VPN."
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/connections.c:9487
-#, c-format
-msgid "Error: failed to create temporary file %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9497
-#, c-format
-msgid "Error: failed to export '%s': %s."
-msgstr ""
-
-#: ../src/nmcli/connections.c:9511
-#, c-format
-msgid "Error: failed to read temporary file '%s': %s."
-msgstr ""
-
-#. define some prompts
-#: ../src/nmcli/devices.c:24
-msgid "Interface: "
-msgstr ""
-
-#: ../src/nmcli/devices.c:25
-msgid "Interface(s): "
-msgstr ""
-
-#: ../src/nmcli/devices.c:67 ../src/nmcli/devices.c:1389
-#, fuzzy
-msgid "(none)"
-msgstr "بلا"
-
-#: ../src/nmcli/devices.c:366
-#, c-format
-msgid "<invisible> | %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:367
-msgid "<invisible>"
-msgstr ""
-
-#: ../src/nmcli/devices.c:473
-#, c-format
-msgid "%u Mb/s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:832
-#, c-format
-msgid ""
-"Usage: nmcli device { COMMAND | help }\n"
-"\n"
-"COMMAND := { status | show | set | connect | reapply | modify | disconnect | "
-"delete | monitor | wifi | lldp }\n"
-"\n"
-" status\n"
-"\n"
-" show [<ifname>]\n"
-"\n"
-" set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]\n"
-"\n"
-" connect <ifname>\n"
-"\n"
-" reapply <ifname>\n"
-"\n"
-" modify <ifname> ([+|-]<setting>.<property> <value>)+\n"
-"\n"
-" disconnect <ifname> ...\n"
-"\n"
-" delete <ifname> ...\n"
-"\n"
-" monitor <ifname> ...\n"
-"\n"
-" wifi [list [ifname <ifname>] [bssid <BSSID>] [--rescan yes|no|auto]]\n"
-"\n"
-" wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] "
-"[ifname <ifname>]\n"
-" [bssid <BSSID>] [name <name>] [private yes|no] "
-"[hidden yes|no]\n"
-"\n"
-" wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] "
-"[channel <channel>] [password <password>]\n"
-"\n"
-" wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]\n"
-"\n"
-" wifi show-password [ifname <ifname>]\n"
-"\n"
-" lldp [list [ifname <ifname>]]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:860
-#, c-format
-msgid ""
-"Usage: nmcli device status { help }\n"
-"\n"
-"Show status for all devices.\n"
-"By default, the following columns are shown:\n"
-" DEVICE - interface name\n"
-" TYPE - device type\n"
-" STATE - device state\n"
-" CONNECTION - connection activated on device (if any)\n"
-"Displayed columns can be changed using '--fields' global option. 'status' "
-"is\n"
-"the default command, which means 'nmcli device' calls 'nmcli device "
-"status'.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:875
-#, c-format
-msgid ""
-"Usage: nmcli device show { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [<ifname>]\n"
-"\n"
-"Show details of device(s).\n"
-"The command lists details for all devices, or for a given device.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:886
-#, c-format
-msgid ""
-"Usage: nmcli device connect { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <ifname>\n"
-"\n"
-"Connect the device.\n"
-"NetworkManager will try to find a suitable connection that will be "
-"activated.\n"
-"It will also consider connections that are not set to auto-connect.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:898
-#, c-format
-msgid ""
-"Usage: nmcli device reapply { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <ifname>\n"
-"\n"
-"Attempts to update device with changes to the currently active connection\n"
-"made since it was last applied.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:910
-#, c-format
-msgid ""
-"Usage: nmcli device modify { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <ifname> ([+|-]<setting>.<property> <value>)+\n"
-"\n"
-"Modify one or more properties that are currently active on the device "
-"without modifying\n"
-"the connection profile. The changes have immediate effect. For multi-valued\n"
-"properties you can use optional '+' or '-' prefix to the property name.\n"
-"The '+' sign allows appending items instead of overwriting the whole value.\n"
-"The '-' sign allows removing selected items instead of the whole value.\n"
-"\n"
-"Examples:\n"
-"nmcli dev mod em1 ipv4.method manual ipv4.addr \"192.168.1.2/24, "
-"10.10.1.5/8\"\n"
-"nmcli dev mod em1 +ipv4.dns 8.8.4.4\n"
-"nmcli dev mod em1 -ipv4.dns 1\n"
-"nmcli dev mod em1 -ipv6.addr \"abbe::cafe/56\"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:930
-#, c-format
-msgid ""
-"Usage: nmcli device disconnect { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <ifname> ...\n"
-"\n"
-"Disconnect devices.\n"
-"The command disconnects the device and prevents it from auto-activating\n"
-"further connections without user/manual intervention.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:942
-#, c-format
-msgid ""
-"Usage: nmcli device delete { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := <ifname> ...\n"
-"\n"
-"Delete the software devices.\n"
-"The command removes the interfaces. It only works for software devices\n"
-"(like bonds, bridges, etc.). Hardware devices cannot be deleted by the\n"
-"command.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:955
-#, c-format
-msgid ""
-"Usage: nmcli device set { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := DEVICE { PROPERTY [ PROPERTY ... ] }\n"
-"DEVICE := [ifname] <ifname> \n"
-"PROPERTY := { autoconnect { yes | no } |\n"
-" { managed { yes | no }\n"
-"\n"
-"Modify device properties.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:968
-#, c-format
-msgid ""
-"Usage: nmcli device monitor { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [<ifname>] ...\n"
-"\n"
-"Monitor device activity.\n"
-"This command prints a line whenever the specified devices change state.\n"
-"Monitors all devices in case no interface is specified.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:981
-#, c-format
-msgid ""
-"Usage: nmcli device wifi { ARGUMENTS | help }\n"
-"\n"
-"Perform operation on Wi-Fi devices.\n"
-"\n"
-"ARGUMENTS := [list [ifname <ifname>] [bssid <BSSID>] [--rescan yes|no|"
-"auto]]\n"
-"\n"
-"List available Wi-Fi access points. The 'ifname' and 'bssid' options can be\n"
-"used to list APs for a particular interface, or with a specific BSSID. The\n"
-"--rescan flag tells whether a new Wi-Fi scan should be triggered.\n"
-"\n"
-"ARGUMENTS := connect <(B)SSID> [password <password>] [wep-key-type key|"
-"phrase] [ifname <ifname>]\n"
-" [bssid <BSSID>] [name <name>] [private yes|no] [hidden "
-"yes|no]\n"
-"\n"
-"Connect to a Wi-Fi network specified by SSID or BSSID. The command finds a\n"
-"matching connection or creates one and then activates it on a device. This\n"
-"is a command-line counterpart of clicking an SSID in a GUI client. If a\n"
-"connection for the network already exists, it is possible to bring up the\n"
-"existing profile as follows: nmcli con up id <name>. Note that only open,\n"
-"WEP and WPA-PSK networks are supported if no previous connection exists.\n"
-"It is also assumed that IP configuration is obtained via DHCP.\n"
-"\n"
-"ARGUMENTS := hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>]\n"
-" [band a|bg] [channel <channel>] [password <password>]\n"
-"\n"
-"Create a Wi-Fi hotspot. Use 'connection down' or 'device disconnect'\n"
-"to stop the hotspot.\n"
-"Parameters of the hotspot can be influenced by the optional parameters:\n"
-"ifname - Wi-Fi device to use\n"
-"con-name - name of the created hotspot connection profile\n"
-"ssid - SSID of the hotspot\n"
-"band - Wi-Fi band to use\n"
-"channel - Wi-Fi channel to use\n"
-"password - password to use for the hotspot\n"
-"\n"
-"ARGUMENTS := rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]\n"
-"\n"
-"Request that NetworkManager immediately re-scan for available access "
-"points.\n"
-"NetworkManager scans Wi-Fi networks periodically, but in some cases it "
-"might\n"
-"be useful to start scanning manually. 'ssid' allows scanning for a specific\n"
-"SSID, which is useful for APs with hidden SSIDs. More 'ssid' parameters can "
-"be\n"
-"given. Note that this command does not show the APs,\n"
-"use 'nmcli device wifi list' for that.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1029
-#, c-format
-msgid ""
-"Usage: nmcli device lldp { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [list [ifname <ifname>]]\n"
-"\n"
-"List neighboring devices discovered through LLDP. The 'ifname' option can "
-"be\n"
-"used to list neighbors for a particular interface.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1124
-#, c-format
-msgid "Error: No interface specified."
-msgstr ""
-
-#: ../src/nmcli/devices.c:1147
-#, c-format
-msgid "Warning: argument '%s' is duplicated.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1150
-#, c-format
-msgid "Error: Device '%s' not found.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1151
-#, c-format
-msgid "Error: not all devices found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:1183
-msgid "No interface specified"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1204
-#, c-format
-msgid "Device '%s' not found"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1306
-#, c-format
-msgid "%u MHz"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1307
-#, c-format
-msgid "%u Mbit/s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1350
-msgid "Ad-Hoc"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1351
-msgid "Infra"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1353
-msgid "N/A"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1537
-msgid "Device details"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1554
-#, c-format
-msgid "Error: 'device show': %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1934
-msgid "Status of devices"
-msgstr ""
-
-#: ../src/nmcli/devices.c:1938
-#, c-format
-msgid "Error: 'device status': %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2001 ../src/nmcli/general.c:513
-#, c-format
-msgid "Error: Timeout %d sec expired."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2076
-#, c-format
-msgid "Device '%s' successfully activated with '%s'.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2082
-#, c-format
-msgid ""
-"Hint: \"nmcli dev wifi show-password\" shows the Wi-Fi name and password.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2085
-#, c-format
-msgid "Error: Connection activation failed: (%d) %s.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2115
-#, c-format
-msgid "Error: Failed to setup a Wi-Fi hotspot: %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2119
-#, c-format
-msgid "Error: Failed to add/activate new connection: %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2123
-#, fuzzy, c-format
-msgid "Error: Failed to activate connection: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/devices.c:2186
-#, c-format
-msgid "Error: Device activation failed: %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2236
-#, c-format
-msgid "Error: extra argument not allowed: '%s'."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2305 ../src/nmcli/devices.c:2318
-#: ../src/nmcli/devices.c:2577
-#, c-format
-msgid "Device '%s' successfully disconnected.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2307 ../src/nmcli/devices.c:2647
-#, c-format
-msgid "Device '%s' successfully removed.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2373 ../src/nmcli/devices.c:2453
-#, c-format
-msgid "Error: Reapplying connection to device '%s' (%s) failed: %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2383 ../src/nmcli/devices.c:2462
-#, c-format
-msgid "Connection successfully reapplied to device '%s'.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2484
-#, c-format
-msgid "Error: Reading applied connection from device '%s' (%s) failed: %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2561
-#, c-format
-msgid "Error: not all devices disconnected."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2562
-#, c-format
-msgid "Error: Device '%s' (%s) disconnecting failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2638
-#, c-format
-msgid "Error: not all devices deleted."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2639
-#, c-format
-msgid "Error: Device '%s' (%s) deletion failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2720
-#, c-format
-msgid "Error: No property specified."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2737 ../src/nmcli/devices.c:2756
-#: ../src/nmcli/general.c:783 ../src/nmcli/general.c:805
-#, c-format
-msgid "Error: '%s' argument is missing."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2745
-#, c-format
-msgid "Error: 'managed': %s."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2764
-#, c-format
-msgid "Error: 'autoconnect': %s."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2771 ../src/nmcli/general.c:855
-#, c-format
-msgid "Error: property '%s' is not known."
-msgstr ""
-
-#: ../src/nmcli/devices.c:2818
-#, fuzzy, c-format
-msgid "%s: using connection '%s'\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/devices.c:2844
-#, c-format
-msgid "%s: device created\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:2851
-#, c-format
-msgid "%s: device removed\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:3030
-msgid "Wi-Fi scan list"
-msgstr ""
-
-#: ../src/nmcli/devices.c:3147 ../src/nmcli/devices.c:3428
-#, c-format
-msgid "Error: Access point with bssid '%s' not found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3349
-#, c-format
-msgid "Error: 'device wifi': %s"
-msgstr ""
-
-#: ../src/nmcli/devices.c:3369
-#, c-format
-msgid "Error: invalid rescan argument: '%s' not among [auto, no, yes]"
-msgstr ""
-
-#: ../src/nmcli/devices.c:3408
-#, c-format
-msgid "Error: Device '%s' not found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3412
-#, c-format
-msgid ""
-"Error: Device '%s' was not recognized as a Wi-Fi device, check "
-"NetworkManager Wi-Fi plugin."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3417 ../src/nmcli/devices.c:3769
-#: ../src/nmcli/devices.c:4398 ../src/nmcli/devices.c:4533
-#: ../src/nmcli/devices.c:4668
-#, c-format
-msgid "Error: Device '%s' is not a Wi-Fi device."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3597
-msgid "SSID or BSSID: "
-msgstr ""
-
-#: ../src/nmcli/devices.c:3602
-#, c-format
-msgid "Error: SSID or BSSID are missing."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3646
-#, c-format
-msgid "Error: bssid argument value '%s' is not a valid BSSID."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3677
-#, c-format
-msgid ""
-"Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3705 ../src/nmcli/devices.c:3726
-#, c-format
-msgid "Error: %s: %s."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3748
-#, c-format
-msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3756
-#, c-format
-msgid "Error: Parameter '%s' is neither SSID nor BSSID."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3772 ../src/nmcli/devices.c:4401
-#: ../src/nmcli/devices.c:4536 ../src/nmcli/devices.c:4768
-#, c-format
-msgid "Error: No Wi-Fi device found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3794
-#, c-format
-msgid "Error: Failed to scan hidden SSID: %s."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3826
-#, c-format
-msgid "Error: No network with SSID '%s' found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3830
-#, c-format
-msgid "Error: No access point with BSSID '%s' found."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3859
-#, c-format
-msgid "Error: Connection '%s' exists but properties don't match."
-msgstr ""
-
-#: ../src/nmcli/devices.c:3908
-#, c-format
-msgid ""
-"Warning: '%s' should be SSID for hidden APs; but it looks like a BSSID.\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:3950
-msgid "Password: "
-msgstr ""
-
-#: ../src/nmcli/devices.c:4088
-#, c-format
-msgid "'%s' is not valid WPA PSK"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4109
-#, c-format
-msgid "'%s' is not valid WEP key (it should be 5 or 13 ASCII chars)"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4128
-#, c-format
-msgid "Hotspot password: %s\n"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4307
-#, c-format
-msgid "Error: ssid is too long."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4325
-#, c-format
-msgid "Error: band argument value '%s' is invalid; use 'a' or 'bg'."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4376
-#, c-format
-msgid "Error: channel requires band too."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4383
-#, c-format
-msgid "Error: channel '%s' not valid for band '%s'."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4414
-#, c-format
-msgid "Error: Device '%s' supports neither AP nor Ad-Hoc mode."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4441
-#, c-format
-msgid "Error: Invalid 'password': %s."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4492 ../src/nmcli/devices.c:4722
-#, c-format
-msgid "Error: '%s' cannot repeat."
-msgstr ""
-
-#: ../src/nmcli/devices.c:4627 ../src/nmcli/devices.c:4630
-#: ../src/nmcli/devices.c:4634 ../src/nmcli/devices.c:4637
-#: ../src/nmtui/nmt-page-wifi.c:256
-msgid "Security"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4627
-msgid "None"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4756
-#, c-format
-msgid "%s"
-msgstr ""
-
-#. Main header name
-#: ../src/nmcli/devices.c:4809
-msgid "Device LLDP neighbors"
-msgstr ""
-
-#: ../src/nmcli/devices.c:4942
-#, c-format
-msgid "Error: 'device lldp list': %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:31
-msgid "asleep"
-msgstr ""
-
-#: ../src/nmcli/general.c:32
-#, fuzzy
-msgid "connecting"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/general.c:34
-msgid "connected (local only)"
-msgstr ""
-
-#: ../src/nmcli/general.c:36
-msgid "connected (site only)"
-msgstr ""
-
-#: ../src/nmcli/general.c:38
-#, fuzzy
-msgid "disconnecting"
-msgstr "حرر اتصال VPN"
-
-#: ../src/nmcli/general.c:94
-msgid "auth"
-msgstr ""
-
-#: ../src/nmcli/general.c:122
-msgid "running"
-msgstr ""
-
-#: ../src/nmcli/general.c:136
-msgid "starting"
-msgstr ""
-
-#: ../src/nmcli/general.c:136
-msgid "started"
-msgstr ""
-
-#: ../src/nmcli/general.c:170
-msgid "enabled"
-msgstr ""
-
-#: ../src/nmcli/general.c:170
-msgid "disabled"
-msgstr ""
-
-#: ../src/nmcli/general.c:289
-#, c-format
-msgid ""
-"Usage: nmcli general { COMMAND | help }\n"
-"\n"
-"COMMAND := { status | hostname | permissions | logging }\n"
-"\n"
-" status\n"
-"\n"
-" hostname [<hostname>]\n"
-"\n"
-" permissions\n"
-"\n"
-" logging [level <log level>] [domains <log domains>]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:301
-#, c-format
-msgid ""
-"Usage: nmcli general status { help }\n"
-"\n"
-"Show overall status of NetworkManager.\n"
-"'status' is the default action, which means 'nmcli gen' calls 'nmcli gen "
-"status'\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:311
-#, c-format
-msgid ""
-"Usage: nmcli general hostname { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [<hostname>]\n"
-"\n"
-"Get or change persistent system hostname.\n"
-"With no arguments, this prints currently configured hostname. When you pass\n"
-"a hostname, NetworkManager will set it as the new persistent system "
-"hostname.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:323
-#, c-format
-msgid ""
-"Usage: nmcli general permissions { help }\n"
-"\n"
-"Show caller permissions for authenticated operations.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:331
-#, c-format
-msgid ""
-"Usage: nmcli general reload { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [<flag>[,<flag>...]]\n"
-"\n"
-"Reload NetworkManager's configuration and perform certain updates, like\n"
-"flushing caches or rewriting external state to disk. This is similar to\n"
-"sending SIGHUP to NetworkManager but it allows for more fine-grained\n"
-"control over what to reload through the flags argument. It also allows\n"
-"non-root access via PolicyKit and contrary to signals it is synchronous.\n"
-"\n"
-"Available flags are:\n"
-"\n"
-" 'conf' Reload the NetworkManager.conf configuration from\n"
-" disk. Note that this does not include connections, which\n"
-" can be reloaded through 'nmcli connection reload' instead.\n"
-"\n"
-" 'dns-rc' Update DNS configuration, which usually involves writing\n"
-" /etc/resolv.conf anew. This is equivalent to sending the\n"
-" SIGUSR1 signal to the NetworkManager process.\n"
-"\n"
-" 'dns-full' Restart the DNS plugin. This is for example useful when\n"
-" using dnsmasq plugin, which uses additional configuration\n"
-" in /etc/NetworkManager/dnsmasq.d. If you edit those files,\n"
-" you can restart the DNS plugin. This action shortly\n"
-" interrupts name resolution.\n"
-"\n"
-"With no flags, everything that is supported is reloaded, which is\n"
-"identical to sending a SIGHUP.\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:364
-#, c-format
-msgid ""
-"Usage: nmcli general logging { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [level <log level>] [domains <log domains>]\n"
-"\n"
-"Get or change NetworkManager logging level and domains.\n"
-"Without any argument current logging level and domains are shown. In order "
-"to\n"
-"change logging state, provide level and/or domain. Please refer to the man "
-"page\n"
-"for the list of possible logging domains.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:377
-#, c-format
-msgid ""
-"Usage: nmcli networking { COMMAND | help }\n"
-"\n"
-"COMMAND := { [ on | off | connectivity ] }\n"
-"\n"
-" on\n"
-"\n"
-" off\n"
-"\n"
-" connectivity [check]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:387
-#, c-format
-msgid ""
-"Usage: nmcli networking on { help }\n"
-"\n"
-"Switch networking on.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:395
-#, c-format
-msgid ""
-"Usage: nmcli networking off { help }\n"
-"\n"
-"Switch networking off.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:404
-#, c-format
-msgid ""
-"Usage: nmcli networking connectivity { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [check]\n"
-"\n"
-"Get network connectivity state.\n"
-"The optional 'check' argument makes NetworkManager re-check the "
-"connectivity.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:415
-#, c-format
-msgid ""
-"Usage: nmcli radio { COMMAND | help }\n"
-"\n"
-"COMMAND := { all | wifi | wwan }\n"
-"\n"
-" all | wifi | wwan [ on | off ]\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:423
-#, c-format
-msgid ""
-"Usage: nmcli radio all { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [on | off]\n"
-"\n"
-"Get status of all radio switches, or turn them on/off.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:433
-#, c-format
-msgid ""
-"Usage: nmcli radio wifi { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [on | off]\n"
-"\n"
-"Get status of Wi-Fi radio switch, or turn it on/off.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:443
-#, c-format
-msgid ""
-"Usage: nmcli radio wwan { ARGUMENTS | help }\n"
-"\n"
-"ARGUMENTS := [on | off]\n"
-"\n"
-"Get status of mobile broadband radio switch, or turn it on/off.\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:453
-#, c-format
-msgid ""
-"Usage: nmcli monitor\n"
-"\n"
-"Monitor NetworkManager changes.\n"
-"Prints a line whenever a change occurs in NetworkManager\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:483
-msgid "NetworkManager status"
-msgstr ""
-
-#: ../src/nmcli/general.c:488
-#, c-format
-msgid "Error: only these fields are allowed: %s"
-msgstr ""
-
-#. NetworkManager quit while we were waiting.
-#: ../src/nmcli/general.c:540 ../src/nmtui/nmtui.c:246
-#, c-format
-msgid "NetworkManager is not running."
-msgstr ""
-
-#: ../src/nmcli/general.c:562
-msgid "NetworkManager permissions"
-msgstr ""
-
-#: ../src/nmcli/general.c:566
-#, c-format
-msgid "Error: 'general permissions': %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:613
-#, fuzzy, c-format
-msgid "Error: failed to reload: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/general.c:654
-#, c-format
-msgid "Error: invalid reload flag '%s'. Allowed flags are: %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:665
-#, c-format
-msgid "Error: extra argument '%s'"
-msgstr ""
-
-#: ../src/nmcli/general.c:716
-msgid "NetworkManager logging"
-msgstr ""
-
-#: ../src/nmcli/general.c:720
-#, c-format
-msgid "Error: 'general logging': %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:753
-#, c-format
-msgid "Error: failed to set logging: %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:886
-#, c-format
-msgid "Error: failed to set hostname: %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:947
-#, c-format
-msgid "Error: '--fields' value '%s' is not valid here (allowed field: %s)"
-msgstr ""
-
-#: ../src/nmcli/general.c:974
-#, c-format
-msgid "Error: invalid '%s' argument: '%s' (use on/off)."
-msgstr ""
-
-#: ../src/nmcli/general.c:1000
-#, fuzzy, c-format
-msgid "Error: failed to set networking: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#. no arguments -> get current state
-#: ../src/nmcli/general.c:1045 ../src/nmcli/general.c:1057
-msgid "Connectivity"
-msgstr ""
-
-#: ../src/nmcli/general.c:1061
-#, c-format
-msgid "Error: 'networking' command '%s' is not valid."
-msgstr ""
-
-#: ../src/nmcli/general.c:1074
-msgid "Networking"
-msgstr ""
-
-#. no argument, show all radio switches
-#: ../src/nmcli/general.c:1102
-msgid "Radio switches"
-msgstr ""
-
-#: ../src/nmcli/general.c:1128
-#, fuzzy, c-format
-msgid "Error: failed to set Wi-Fi radio: %s"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#. no argument, show current Wi-Fi state
-#: ../src/nmcli/general.c:1146
-msgid "Wi-Fi radio switch"
-msgstr ""
-
-#. no argument, show current WWAN (mobile broadband) state
-#: ../src/nmcli/general.c:1182
-msgid "WWAN radio switch"
-msgstr ""
-
-#: ../src/nmcli/general.c:1222
-msgid "NetworkManager has started"
-msgstr ""
-
-#: ../src/nmcli/general.c:1222
-msgid "NetworkManager has stopped"
-msgstr ""
-
-#: ../src/nmcli/general.c:1233
-#, c-format
-msgid "Hostname set to '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1248
-#, c-format
-msgid "'%s' is now the primary connection\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1250
-#, c-format
-msgid "There's no primary connection\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1263
-#, c-format
-msgid "Connectivity is now '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1278
-#, c-format
-msgid "Networkmanager is now in the '%s' state\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1298
-#, fuzzy
-msgid "connection available"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/general.c:1300
-#, fuzzy
-msgid "connections available"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/general.c:1316
-#, fuzzy
-msgid "autoconnect"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/general.c:1319
-msgid "fw missing"
-msgstr ""
-
-#: ../src/nmcli/general.c:1326
-msgid "plugin missing"
-msgstr ""
-
-#: ../src/nmcli/general.c:1336 ../src/nmcli/general.c:1351
-msgid "sw disabled"
-msgstr ""
-
-#: ../src/nmcli/general.c:1341 ../src/nmcli/general.c:1357
-msgid "hw disabled"
-msgstr ""
-
-#: ../src/nmcli/general.c:1368
-msgid "sw"
-msgstr ""
-
-#: ../src/nmcli/general.c:1370
-msgid "hw"
-msgstr ""
-
-#: ../src/nmcli/general.c:1373
-msgid "iface"
-msgstr ""
-
-#: ../src/nmcli/general.c:1378
-#, fuzzy
-msgid "port"
-msgstr "_صدِّر"
-
-#: ../src/nmcli/general.c:1382
-msgid "mtu"
-msgstr ""
-
-#: ../src/nmcli/general.c:1401
-msgid "master"
-msgstr ""
-
-#: ../src/nmcli/general.c:1405 ../src/nmtui/nm-editor-utils.c:231
-#: ../src/nmtui/nmt-connect-connection-list.c:389
-msgid "VPN"
-msgstr ""
-
-#: ../src/nmcli/general.c:1407
-msgid "ip4 default"
-msgstr ""
-
-#: ../src/nmcli/general.c:1409
-msgid "ip6 default"
-msgstr ""
-
-#: ../src/nmcli/general.c:1483
-#, fuzzy, c-format
-msgid "%s VPN connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmcli/general.c:1504
-#, c-format
-msgctxt "nmcli-overview"
-msgid "%s: %s to %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:1513
-#, c-format
-msgctxt "nmcli-overview"
-msgid "%s: %s"
-msgstr ""
-
-#: ../src/nmcli/general.c:1563
-#, c-format
-msgid ""
-"Use \"nmcli device show\" to get complete information about known devices "
-"and\n"
-"\"nmcli connection show\" to get an overview on active connection profiles.\n"
-"\n"
-"Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage "
-"details.\n"
-msgstr ""
-
-#: ../src/nmcli/general.c:1580
-#, c-format
-msgid "Error: 'monitor' command '%s' is not valid."
-msgstr ""
-
-#: ../src/nmcli/general.c:1594
-msgid "Networkmanager is not running (waiting for it)\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:240
-#, c-format
-msgid ""
-"Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }\n"
-"\n"
-"OPTIONS\n"
-" -a, --ask ask for missing parameters\n"
-" -c, --colors auto|yes|no whether to use colors in output\n"
-" -e, --escape yes|no escape columns separators in "
-"values\n"
-" -f, --fields <field,...>|all|common specify fields to output\n"
-" -g, --get-values <field,...>|all|common shortcut for -m tabular -t -f\n"
-" -h, --help print this help\n"
-" -m, --mode tabular|multiline output mode\n"
-" -o, --overview overview mode\n"
-" -p, --pretty pretty output\n"
-" -s, --show-secrets allow displaying passwords\n"
-" -t, --terse terse output\n"
-" -v, --version show program version\n"
-" -w, --wait <seconds> set timeout waiting for finishing "
-"operations\n"
-"\n"
-"OBJECT\n"
-" g[eneral] NetworkManager's general status and operations\n"
-" n[etworking] overall networking control\n"
-" r[adio] NetworkManager radio switches\n"
-" c[onnection] NetworkManager's connections\n"
-" d[evice] devices managed by NetworkManager\n"
-" a[gent] NetworkManager secret agent or polkit agent\n"
-" m[onitor] monitor NetworkManager changes\n"
-"\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:312
-#, c-format
-msgid "Error: missing argument for '%s' option."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:625
-#, c-format
-msgid "Unexpected end of file following '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:632
-#, c-format
-msgid "Expected whitespace following '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:643
-#, c-format
-msgid "Expected a value for '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:659
-#, c-format
-msgid "Expected a line break following '%s'\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:784
-#, c-format
-msgid "Error: Option '--terse' is specified the second time."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:790
-#, c-format
-msgid "Error: Option '--terse' is mutually exclusive with '--pretty'."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:798
-#, c-format
-msgid "Error: Option '--pretty' is specified the second time."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:804
-#, c-format
-msgid "Error: Option '--pretty' is mutually exclusive with '--terse'."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:819
-#, c-format
-msgid "Error: '%s' is not a valid argument for '%s' option."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:836 ../src/nmcli/nmcli.c:851
-#, c-format
-msgid "Error: '%s' is not valid argument for '%s' option."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:877
-#, c-format
-msgid "Error: '%s' is not a valid timeout."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:884
-#, c-format
-msgid "nmcli tool, version %s\n"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:893
-#, c-format
-msgid "Error: Option '%s' is unknown, try 'nmcli -help'."
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:952 ../src/nmcli/nmcli.c:961
-#, c-format
-msgid "Error: nmcli terminated by signal %s (%d)"
-msgstr ""
-
-#: ../src/nmcli/nmcli.c:1029
-msgid "Success"
-msgstr ""
-
-#: ../src/nmcli/polkit-agent.c:39
-#, fuzzy, c-format
-msgid "Error: polkit agent failed: %s\n"
-msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#: ../src/nmcli/polkit-agent.c:92
-#, c-format
-msgid "Warning: polkit agent initialization failed: %s\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:32
-#, c-format
-msgid "Do you also want to set '%s' to '%s'? [yes]: "
-msgstr ""
-
-#: ../src/nmcli/settings.c:34
-#, c-format
-msgid "Do you also want to clear '%s'? [yes]: "
-msgstr ""
-
-#: ../src/nmcli/settings.c:249
-#, c-format
-msgid ""
-"Warning: %s.%s set to '%s', but it might be ignored in infrastructure mode\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:269
-#, c-format
-msgid "Warning: setting %s.%s requires removing ipv4 and ipv6 settings\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:272
-msgid "Do you want to remove them? [yes] "
-msgstr ""
-
-#: ../src/nmcli/settings.c:376
-#, c-format
-msgid "Warning: %s is not an UUID of any existing connection profile\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:381 ../src/nmcli/settings.c:394
-#, fuzzy, c-format
-msgid "'%s' is not a VPN connection profile"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/nmcli/settings.c:388
-#, c-format
-msgid "'%s' is not a name of any exiting profile"
-msgstr ""
-
-#: ../src/nmcli/settings.c:434
-#, c-format
-msgid "Warning: %s\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:437
-#, c-format
-msgid "Info: %s\n"
-msgstr ""
-
-#: ../src/nmcli/settings.c:535
-msgid "don't know how to get the property value"
-msgstr ""
-
-#: ../src/nmcli/settings.c:628
-msgid "the property can't be changed"
-msgstr ""
-
-#: ../src/nmcli/settings.c:706
-msgid "[NM property description]"
-msgstr ""
-
-#: ../src/nmcli/settings.c:716
-msgid "[nmcli specific description]"
-msgstr ""
-
-#: ../src/nmcli/utils.c:308
-#, c-format
-msgid "Error: Argument '%s' was expected, but '%s' provided."
-msgstr ""
-
-#: ../src/nmcli/utils.c:315
-#, c-format
-msgid "Error: Unexpected argument '%s'"
-msgstr ""
-
-#: ../src/nmcli/utils.c:702
-#, c-format
-msgid "invalid field '%s%s%s'; no such field"
-msgstr ""
-
-#: ../src/nmcli/utils.c:710
-#, c-format
-msgid "invalid field '%s%s%s'; allowed fields: [%s]"
-msgstr ""
-
-#: ../src/nmcli/utils.c:806
-#, c-format
-msgid "failure to select field"
-msgstr ""
-
-#: ../src/nmcli/utils.c:1432
-#, c-format
-msgid "Error reading nmcli output: %s\n"
-msgstr ""
-
-#: ../src/nmcli/utils.c:1437
-#, c-format
-msgid "Error writing nmcli output: %s\n"
-msgstr ""
-
-#: ../src/nmcli/utils.c:1460
-#, c-format
-msgid "Failed to create pager pipe: %s\n"
-msgstr ""
-
-#: ../src/nmcli/utils.c:1469
-#, c-format
-msgid "Failed to fork pager: %s\n"
-msgstr ""
-
-#: ../src/nmcli/utils.c:1516 ../src/nmcli/utils.c:1520
-#, c-format
-msgid "Failed to duplicate pager pipe: %s\n"
-msgstr ""
-
-#: ../src/nmcli/utils.h:305
-msgid "(unknown)"
-msgstr ""
-
-#: ../src/nmcli/utils.h:345
-#, c-format
-msgid "%lld (%s)"
-msgstr ""
-
-#: ../src/nmcli/utils.h:352
-#, c-format
-msgid "%lld - %s"
-msgstr ""
-
-#: ../src/nmtui/nm-editor-utils.c:132
-#, fuzzy, c-format
-msgid "Ethernet connection %d"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nm-editor-utils.c:140
-#, fuzzy, c-format
-msgid "Veth connection %d"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nm-editor-utils.c:148
-#, c-format
-msgid "Wi-Fi connection %d"
-msgstr ""
-
-#: ../src/nmtui/nm-editor-utils.c:157
-#, fuzzy, c-format
-msgid "InfiniBand connection %d"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/nmtui/nm-editor-utils.c:165
-#, c-format
-msgid "Mobile broadband connection %d"
-msgstr ""
-
-#: ../src/nmtui/nm-editor-utils.c:171 ../src/nmtui/nmt-page-dsl.c:45
-msgid "DSL"
-msgstr ""
-
-#: ../src/nmtui/nm-editor-utils.c:175
-#, fuzzy, c-format
-msgid "DSL connection %d"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nm-editor-utils.c:184
-#, fuzzy, c-format
-msgid "Bond connection %d"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nm-editor-utils.c:194
-#, c-format
-msgid "Bridge connection %d"
-msgstr ""
-
-#: ../src/nmtui/nm-editor-utils.c:203
-#, fuzzy, c-format
-msgid "Team connection %d"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nm-editor-utils.c:211
-#, fuzzy, c-format
-msgid "VLAN connection %d"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nm-editor-utils.c:215 ../src/nmtui/nmt-page-ip-tunnel.c:116
-#, fuzzy
-msgid "IP tunnel"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/nmtui/nm-editor-utils.c:219
-#, fuzzy, c-format
-msgid "IP tunnel connection %d"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/nmtui/nm-editor-utils.c:234
-#, fuzzy, c-format
-msgid "VPN connection %d"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nmt-device-entry.c:348
-msgid "Select..."
-msgstr ""
-
-#: ../src/nmtui/nmt-edit-connection-list.c:101
-msgid "Add"
-msgstr ""
-
-#: ../src/nmtui/nmt-edit-connection-list.c:104 ../src/nmtui/nmt-page-ip4.c:162
-#: ../src/nmtui/nmt-page-ip6.c:161 ../src/nmtui/nmt-page-team-port.c:94
-#: ../src/nmtui/nmt-page-team.c:148
-msgid "Edit..."
-msgstr ""
-
-#: ../src/nmtui/nmt-edit-connection-list.c:107 ../src/nmtui/nmtui-edit.c:518
-msgid "Delete"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor-section.c:89
-msgid "Hide"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor-section.c:89
-msgid "Show"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:88
-#, c-format
-msgid "Could not create editor for connection '%s' of type '%s'."
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:92
-#, c-format
-msgid "Could not create editor for invalid connection '%s'."
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:105
-#, fuzzy
-msgid "Edit Connection"
-msgstr "حرر اتصال VPN"
-
-#: ../src/nmtui/nmt-editor.c:163
-#, fuzzy, c-format
-msgid "Unable to save connection: %s"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nmt-editor.c:180
-#, fuzzy, c-format
-msgid "Unable to add new connection: %s"
-msgstr "لا يمكن إضافة اتصال VPN"
-
-#: ../src/nmtui/nmt-editor.c:329
-msgid "Profile name"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:340
-msgid "Ethernet device"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:342
-msgid "Device"
-msgstr ""
-
-#. And finally the bottom widgets
-#: ../src/nmtui/nmt-editor.c:404
-msgid "Automatically connect"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:412
-msgid "Available to all users"
-msgstr ""
-
-#: ../src/nmtui/nmt-editor.c:430 ../src/nmtui/nmt-password-dialog.c:162
-#: ../src/nmtui/nmt-route-editor.c:97 ../src/nmtui/nmtui-edit.c:206
-#: ../src/nmtui/nmtui-edit.c:517 ../src/nmtui/nmtui-hostname.c:51
-msgid "Cancel"
-msgstr ""
-
-#: ../src/nmtui/nmt-mtu-entry.c:70
-msgid "(default)"
-msgstr ""
-
-#: ../src/nmtui/nmt-mtu-entry.c:72 ../src/nmtui/nmt-mtu-entry.c:102
-msgid "bytes"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:82
-msgid "Round-robin"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:83
-msgid "Active Backup"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:84
-msgid "XOR"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:85
-msgid "Broadcast"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:86
-msgid "802.3ad"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:87
-msgid "Adaptive Transmit Load Balancing (tlb)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:88
-msgid "Adaptive Load Balancing (alb)"
-msgstr ""
-
-#. NB: the ordering/numbering here corresponds to NmtPageBondMonitoringMode
-#: ../src/nmtui/nmt-page-bond.c:92
-msgid "MII (recommended)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:93
-msgid "ARP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:351
-msgid "BOND"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:355 ../src/nmtui/nmt-page-bridge.c:66
-#: ../src/nmtui/nmt-page-team.c:129
-msgid "Slaves"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:365 ../src/nmtui/nmt-page-ip-tunnel.c:131
-#: ../src/nmtui/nmt-page-wifi.c:211
-msgid "Mode"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:370
-msgid "Primary"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:375
-msgid "Link monitoring"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:380 ../src/nmtui/nmt-page-bond.c:386
-#: ../src/nmtui/nmt-page-bond.c:392 ../src/nmtui/nmt-page-bond.c:398
-msgctxt "milliseconds"
-msgid "ms"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:381 ../src/nmtui/nmt-page-bond.c:399
-msgid "Monitoring frequency"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:387
-msgid "Link up delay"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:393
-msgid "Link down delay"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:404
-msgid "ARP targets"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bond.c:413 ../src/nmtui/nmt-page-ethernet.c:67
-#: ../src/nmtui/nmt-page-vlan.c:99 ../src/nmtui/nmt-page-wifi.c:375
-msgid "Cloned MAC address"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge-port.c:44
-msgid "BRIDGE PORT"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge-port.c:53 ../src/nmtui/nmt-page-bridge.c:109
-msgid "Priority"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge-port.c:61
-msgid "Path cost"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge-port.c:63
-msgid "Hairpin mode"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:62
-msgid "BRIDGE"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:79 ../src/nmtui/nmt-page-bridge.c:122
-#: ../src/nmtui/nmt-page-bridge.c:136 ../src/nmtui/nmt-page-bridge.c:150
-msgid "seconds"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:80
-msgid "Aging time"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:82
-msgid "Enable IGMP snooping"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:90
-msgid "Enable STP (Spanning Tree Protocol)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:123
-msgid "Forward delay"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:137
-msgid "Hello time"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:151
-msgid "Max age"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-bridge.c:159
-msgid "Group forward mask"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ethernet.c:58
-msgid "ETHERNET"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ethernet.c:75 ../src/nmtui/nmt-page-infiniband.c:83
-#: ../src/nmtui/nmt-page-ip-tunnel.c:181 ../src/nmtui/nmt-page-vlan.c:107
-#: ../src/nmtui/nmt-page-wifi.c:383
-msgid "MTU"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-infiniband.c:33
-msgid "Datagram"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-infiniband.c:34
-msgid "Connected"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-infiniband.c:66
-msgid "INFINIBAND"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-infiniband.c:75
-msgid "Transport mode"
-msgstr ""
-
-#. The order must match the NM_IP_TUNNEL_MODE_* enum
-#: ../src/nmtui/nmt-page-ip-tunnel.c:64
-msgid "IPIP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:65
-msgid "GRE"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:66
-msgid "SIT"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:67
-msgid "ISATAP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:68
-msgid "VTI"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:69
-msgid "IP6IP6"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:70
-msgid "IPIP6"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:71
-msgid "IP6GRE"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:72
-msgid "VTI6"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:133 ../src/nmtui/nmt-page-vlan.c:69
-msgid "Parent"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:142
-msgid "Local IP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:150
-msgid "Remote IP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:158
-msgid "Input key"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip-tunnel.c:167
-msgid "Output key"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:25 ../src/nmtui/nmt-page-ip6.c:30
-msgid "Disabled"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:26 ../src/nmtui/nmt-page-ip6.c:26
-#, fuzzy
-msgid "Automatic"
-msgstr "WPA آلي"
-
-#: ../src/nmtui/nmt-page-ip4.c:27 ../src/nmtui/nmt-page-ip6.c:28
-msgid "Link-Local"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:28 ../src/nmtui/nmt-page-ip6.c:29
-msgid "Manual"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:29
-msgid "Shared"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:64 ../src/nmtui/nmt-page-ip6.c:65
-msgid "(No custom routes)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:67 ../src/nmtui/nmt-page-ip6.c:68
-#, c-format
-msgid "One custom route"
-msgid_plural "%d custom routes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: ../src/nmtui/nmt-page-ip4.c:111
-msgid "IPv4 CONFIGURATION"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:122 ../src/nmtui/nmt-page-ip6.c:123
-msgid "Addresses"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:140 ../src/nmtui/nmt-page-ip6.c:141
-msgid "DNS servers"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:148 ../src/nmtui/nmt-page-ip6.c:149
-msgid "Search domains"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:164 ../src/nmtui/nmt-page-ip6.c:163
-msgid "Routing"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:166 ../src/nmtui/nmt-page-ip6.c:165
-msgid "Never use this network for default route"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:174 ../src/nmtui/nmt-page-ip6.c:173
-msgid "Ignore automatically obtained routes"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:182 ../src/nmtui/nmt-page-ip6.c:181
-msgid "Ignore automatically obtained DNS parameters"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip4.c:192
-msgid "Require IPv4 addressing for this connection"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip6.c:25
-msgid "Ignore"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip6.c:27
-msgid "Automatic (DHCP-only)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip6.c:112
-msgid "IPv6 CONFIGURATION"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ip6.c:191
-msgid "Require IPv6 addressing for this connection"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:116
-msgid "PPP CONFIGURATION"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:125
-msgid "Allowed authentication methods:"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:132
-#, fuzzy
-msgid "EAP"
-msgstr "LEAP"
-
-#: ../src/nmtui/nmt-page-ppp.c:141
-msgid "PAP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:150
-msgid "CHAP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:159
-msgid "MSCHAPv2"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:168
-msgid "MSCHAP"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:185
-msgid "Use point-to-point encryption (MPPE)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:198
-msgid "Require 128-bit encryption"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:207
-msgid "Use stateful MPPE"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:218
-msgid "Allow BSD data compression"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:227
-msgid "Allow Deflate data compression"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:236
-msgid "Use TCP header compression"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-ppp.c:247
-msgid "Send PPP echo packets"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-team-port.c:74
-msgid "TEAM PORT"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-team-port.c:81 ../src/nmtui/nmt-page-team.c:139
-msgid "JSON configuration"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-team.c:122
-msgid "TEAM"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-vlan.c:89
-msgid "VLAN id"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:47
-msgctxt "Wi-Fi"
-msgid "Client"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:48
-msgid "Access Point"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:49
-msgid "Ad-Hoc Network"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:52
-#, fuzzy
-msgctxt "Wi-Fi"
-msgid "Automatic"
-msgstr "WPA آلي"
-
-#. 802.11a Wi-Fi network
-#: ../src/nmtui/nmt-page-wifi.c:54
-msgid "A (5 GHz)"
-msgstr ""
-
-#. 802.11b / 802.11g Wi-Fi network
-#: ../src/nmtui/nmt-page-wifi.c:56
-msgid "B/G (2.4 GHz)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:59
-msgctxt "Wi-Fi security"
-msgid "None"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:60
-msgid "WPA & WPA2 Personal"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:61
-msgid "WPA3 Personal"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:62
-#, fuzzy
-msgid "WPA & WPA2 Enterprise"
-msgstr "WPA2 مشروعات"
-
-#: ../src/nmtui/nmt-page-wifi.c:63
-msgid "WEP 40/128-bit Key (Hex or ASCII)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:64
-msgid "WEP 128-bit Passphrase"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:65
-msgid "Dynamic WEP (802.1x)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:66
-msgid "LEAP"
-msgstr "LEAP"
-
-#: ../src/nmtui/nmt-page-wifi.c:67
-msgid "Enhanced Open (OWE)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:70
-msgctxt "WEP key index"
-msgid "1 (Default)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:71
-msgctxt "WEP key index"
-msgid "2"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:72
-msgctxt "WEP key index"
-msgid "3"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:73
-msgctxt "WEP key index"
-msgid "4"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:76
-msgid "Open System"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:77
-msgid "Shared Key"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:190
-msgid "WI-FI"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:251
-msgid "Channel"
-msgstr ""
-
-#. "wpa-enterprise"
-#. FIXME
-#: ../src/nmtui/nmt-page-wifi.c:280
-msgid "(No support for wpa-enterprise yet...)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:290 ../src/nmtui/nmt-page-wifi.c:311
-msgid "WEP index"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:300 ../src/nmtui/nmt-page-wifi.c:321
-msgid "Authentication"
-msgstr ""
-
-#. "dynamic-wep"
-#. FIXME
-#: ../src/nmtui/nmt-page-wifi.c:327
-msgid "(No support for dynamic-wep yet...)"
-msgstr ""
-
-#: ../src/nmtui/nmt-page-wifi.c:367
-msgid "BSSID"
-msgstr ""
-
-#: ../src/nmtui/nmt-password-fields.c:108
-msgid "Ask for this password every time"
-msgstr ""
-
-#: ../src/nmtui/nmt-password-fields.c:109
-msgid "Show password"
-msgstr ""
-
-#: ../src/nmtui/nmt-route-table.c:169
-msgid "Destination"
-msgstr ""
-
-#: ../src/nmtui/nmt-route-table.c:169
-msgid "Prefix"
-msgstr ""
-
-#: ../src/nmtui/nmt-route-table.c:176
-msgid "Next Hop"
-msgstr ""
-
-#: ../src/nmtui/nmt-route-table.c:182
-msgid "Metric"
-msgstr ""
-
-#: ../src/nmtui/nmt-route-table.c:201
-msgid "No custom routes are defined."
-msgstr ""
-
-#: ../src/nmtui/nmt-slave-list.c:126
-msgid "Select the type of slave connection you wish to add."
-msgstr ""
-
-#: ../src/nmtui/nmt-widget-list.c:131
-msgid "Add..."
-msgstr ""
-
-#: ../src/nmtui/nmt-widget-list.c:193
-msgid "Remove"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:43
-msgid ""
-"openconnect will be run to authenticate.\n"
-"It will return to nmtui when completed."
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:57
-#, c-format
-msgid "Error: openconnect failed: %s"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:64
-#, c-format
-msgid "openconnect failed with status %d"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:68
-#, c-format
-msgid "openconnect failed with signal %d"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:174
-#, c-format
-msgid "Activation failed: %s"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:227
-#, fuzzy, c-format
-msgid "Could not deactivate connection: %s"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nmtui-connect.c:245
-#, fuzzy
-msgid "Connecting..."
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nmtui-connect.c:290 ../src/nmtui/nmtui-connect.c:330
-#, c-format
-msgid "Could not activate connection: %s"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:390 ../src/nmtui/nmtui-connect.c:443
-msgid "Activate"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:392
-msgid "Deactivate"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:448 ../src/nmtui/nmtui-edit.c:103
-#: ../src/nmtui/nmtui.c:112
-msgid "Quit"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:448 ../src/nmtui/nmtui-edit.c:103
-msgid "Back"
-msgstr ""
-
-#: ../src/nmtui/nmtui-connect.c:471
-#, fuzzy, c-format
-msgid "No such connection '%s'"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nmtui-connect.c:473
-msgid "Connection is already active"
-msgstr ""
-
-#: ../src/nmtui/nmtui-edit.c:215
-msgid "Create"
-msgstr ""
-
-#: ../src/nmtui/nmtui-edit.c:356
-msgid "Select the type of connection you wish to create."
-msgstr ""
-
-#: ../src/nmtui/nmtui-edit.c:365
-msgid ""
-"If you are creating a VPN, and the VPN connection you wish to create does "
-"not appear in the list, you may not have the correct VPN plugin installed."
-msgstr ""
-
-#: ../src/nmtui/nmtui-edit.c:401 ../src/nmtui/nmtui-edit.c:417
-#, fuzzy
-msgid "New Connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nmtui-edit.c:459
-#, fuzzy, c-format
-msgid "Unable to delete connection: %s"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nmtui-edit.c:497
-#, fuzzy, c-format
-msgid "Could not delete connection '%s': %s"
-msgstr "حذف اتصال VPN \"%s\"؟"
-
-#: ../src/nmtui/nmtui-edit.c:519
-#, c-format
-msgid "Are you sure you want to delete the connection '%s'?"
-msgstr ""
-
-#: ../src/nmtui/nmtui-hostname.c:31
-msgid "Set Hostname"
-msgstr ""
-
-#: ../src/nmtui/nmtui-hostname.c:37
-msgid "Hostname"
-msgstr ""
-
-#. TRANSLATORS: this indicates the result. ie, "I have set the hostname to ..."
-#: ../src/nmtui/nmtui-hostname.c:96
-#, c-format
-msgid "Set hostname to '%s'"
-msgstr ""
-
-#: ../src/nmtui/nmtui-hostname.c:98
-#, fuzzy, c-format
-msgid "Unable to set hostname: %s"
-msgstr "تعذّر التحميل"
-
-#: ../src/nmtui/nmtui.c:40 ../src/nmtui/nmtui.c:41
-#, fuzzy
-msgid "connection"
-msgstr "إتّصالات VPN"
-
-#: ../src/nmtui/nmtui.c:40
-#, fuzzy
-msgid "Edit a connection"
-msgstr "حرر اتصال VPN"
-
-#: ../src/nmtui/nmtui.c:41
-#, fuzzy
-msgid "Activate a connection"
-msgstr "أضف اتصال VPN جديد"
-
-#: ../src/nmtui/nmtui.c:42
-msgid "new hostname"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:42
-msgid "Set system hostname"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:85
-msgid "NetworkManager TUI"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:94
-msgid "Please select an option"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:141
-msgid "Usage"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:228
-msgid "Could not parse arguments"
-msgstr ""
-
-#: ../src/nmtui/nmtui.c:241
-#, c-format
-msgid "Could not contact NetworkManager: %s.\n"
-msgstr ""
-
-#, fuzzy, c-format
-#~ msgid "Error: error connecting to system bus: %s"
-#~ msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#, fuzzy, c-format
-#~ msgid "Setting '%s' is not present in the connection."
-#~ msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#, fuzzy, c-format
-#~ msgid "failed to unset bond option \"%s\""
-#~ msgstr "تعذّر التحميل"
-
-#, fuzzy, c-format
-#~ msgid "Error: '%s': %s"
-#~ msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#, fuzzy, c-format
-#~ msgid "Error: error adding bond option '%s=%s'."
-#~ msgstr "خطأ أثناء فتح اتصال VPN '%s'"
-
-#, fuzzy
-#~ msgid "WPA2"
-#~ msgstr "WPA2 TKIP"
diff --git a/src/contrib/nm-vpn-editor-plugin-call.h b/src/contrib/nm-vpn-editor-plugin-call.h
index 713ddf082e..bf6036ee17 100644
--- a/src/contrib/nm-vpn-editor-plugin-call.h
+++ b/src/contrib/nm-vpn-editor-plugin-call.h
@@ -27,9 +27,9 @@
* @NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_CAN_ADD: whether the plugin can
* add a new connection for the given service-type.
**/
-typedef enum { /*< skip >*/
- NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_NONE = 0x00,
- NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_CAN_ADD = 0x01,
+typedef enum /*< skip >*/ {
+ NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_NONE = 0x00,
+ NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_CAN_ADD = 0x01,
} NMVpnEditorPluginServiceFlags;
struct _NMVpnEditorPluginVT {
diff --git a/src/core/NetworkManagerUtils.c b/src/core/NetworkManagerUtils.c
index c50dbadad2..b7dd104b45 100644
--- a/src/core/NetworkManagerUtils.c
+++ b/src/core/NetworkManagerUtils.c
@@ -34,6 +34,11 @@
/*****************************************************************************/
+G_STATIC_ASSERT(NM_SHUTDOWN_TIMEOUT_1500_MSEC <= NM_SHUTDOWN_TIMEOUT_MAX_MSEC);
+G_STATIC_ASSERT(NM_SHUTDOWN_TIMEOUT_5000_MSEC <= NM_SHUTDOWN_TIMEOUT_MAX_MSEC);
+
+/*****************************************************************************/
+
/**
* nm_utils_get_shared_wifi_permission:
* @connection: the NMConnection to lookup the permission.
@@ -1037,7 +1042,7 @@ _shutdown_waitobj_cb(gpointer user_data, GObject *where_the_object_was)
* is still used.
*
* If @wait_type is %NM_SHUTDOWN_WAIT_TYPE_CANCELLABLE, then during shutdown
- * (after %NM_SHUTDOWN_TIMEOUT_MS), the cancellable will be cancelled to notify
+ * (after %NM_SHUTDOWN_TIMEOUT_MAX_MSEC), the cancellable will be cancelled to notify
* the source of the shutdown. Note that otherwise, in this mode also @watched_obj
* is only tracked with a weak-pointer. Especially, it does not register to the
* "cancelled" signal to automatically unregister (otherwise, you would never
@@ -1046,7 +1051,7 @@ _shutdown_waitobj_cb(gpointer user_data, GObject *where_the_object_was)
* FIXME(shutdown): proper shutdown is not yet implemented, and registering
* an object (currently) has no effect.
*
- * FIXME(shutdown): during shutdown, after %NM_SHUTDOWN_TIMEOUT_MS timeout, cancel
+ * FIXME(shutdown): during shutdown, after %NM_SHUTDOWN_TIMEOUT_MAX_MSEC timeout, cancel
* all remaining %NM_SHUTDOWN_WAIT_TYPE_CANCELLABLE instances. Also, when somebody
* enqueues a cancellable after that point, cancel it right away on an idle handler.
*
diff --git a/src/core/NetworkManagerUtils.h b/src/core/NetworkManagerUtils.h
index c9210ba8c5..67c9cba471 100644
--- a/src/core/NetworkManagerUtils.h
+++ b/src/core/NetworkManagerUtils.h
@@ -103,23 +103,37 @@ NMPlatformRoutingRule *nm_ip_routing_rule_to_platform(const NMIPRoutingRule *rul
/*****************************************************************************/
/* during shutdown, there are two relevant timeouts. One is
- * NM_SHUTDOWN_TIMEOUT_MS which is plenty of time, that we give for all
+ * NM_SHUTDOWN_TIMEOUT_MAX_MSEC which is plenty of time, that we give for all
* actions to complete. Of course, during shutdown components should hurry
* to cleanup.
*
* When we initiate shutdown, we should start killing child processes
- * with SIGTERM. If they don't complete within NM_SHUTDOWN_TIMEOUT_MS, we send
+ * with SIGTERM. If they don't complete within NM_SHUTDOWN_TIMEOUT_MAX_MSEC, we send
* SIGKILL.
*
- * After NM_SHUTDOWN_TIMEOUT_MS, NetworkManager will however not yet terminate right
- * away. It iterates the mainloop for another NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG. This
+ * After NM_SHUTDOWN_TIMEOUT_MAX_MSEC, NetworkManager will however not yet terminate right
+ * away. It iterates the mainloop for another NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC. This
* should give time to reap the child process (after SIGKILL).
*
* So, the maximum time we should wait before sending SIGKILL should be at most
- * NM_SHUTDOWN_TIMEOUT_MS.
+ * NM_SHUTDOWN_TIMEOUT_MAX_MSEC.
*/
-#define NM_SHUTDOWN_TIMEOUT_MS 1500
-#define NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG 500
+#define NM_SHUTDOWN_TIMEOUT_MAX_MSEC 5000
+#define NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC 500
+
+/**
+ * NM_SHUTDOWN_TIMEOUT_1500_MSEC: this is just 1500 msec. The special
+ * thing about the define is that you are guaranteed that this is not
+ * longer than NM_SHUTDOWN_TIMEOUT_MAX_MSEC.
+ * When you perform an async operation, it must either be cancellable
+ * (and complete fast) or never take longer than NM_SHUTDOWN_TIMEOUT_MAX_MSEC.
+ * The usage of this macro makes that relation to NM_SHUTDOWN_TIMEOUT_MAX_MSEC
+ * explicit.
+ */
+#define NM_SHUTDOWN_TIMEOUT_1500_MSEC 1500
+
+/* See NM_SHUTDOWN_TIMEOUT_1500_MSEC. */
+#define NM_SHUTDOWN_TIMEOUT_5000_MSEC 5000
typedef enum {
/* There is no watched_obj argument, and the shutdown is delayed until the user
@@ -131,7 +145,7 @@ typedef enum {
NM_SHUTDOWN_WAIT_TYPE_OBJECT,
/* The watched_obj argument is a GCancellable, and shutdown is delayed until the object
- * gets destroyed (or unregistered). Note that after NM_SHUTDOWN_TIMEOUT_MS, the
+ * gets destroyed (or unregistered). Note that after NM_SHUTDOWN_TIMEOUT_MAX_MSEC, the
* cancellable will be cancelled to notify listeners about the shutdown. */
NM_SHUTDOWN_WAIT_TYPE_CANCELLABLE,
} NMShutdownWaitType;
diff --git a/src/core/devices/nm-device-ethernet.c b/src/core/devices/nm-device-ethernet.c
index 6e18d119d0..842d863e8f 100644
--- a/src/core/devices/nm-device-ethernet.c
+++ b/src/core/devices/nm-device-ethernet.c
@@ -1014,7 +1014,7 @@ act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
* get confused and fail to negotiate the new connection. (rh #1023503)
*
* FIXME(shutdown): when exiting, we also need to wait before quitting,
- * at least for additional NM_SHUTDOWN_TIMEOUT_MS seconds because
+ * at least for additional NM_SHUTDOWN_TIMEOUT_MAX_MSEC seconds because
* otherwise after restart the device won't work for the first seconds.
*/
if (priv->ppp_data.last_pppoe_time_msec != 0) {
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 35360ceebb..6886f3c1ce 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -361,7 +361,6 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDevice,
PROP_FIRMWARE_MISSING,
PROP_NM_PLUGIN_MISSING,
PROP_TYPE_DESC,
- PROP_RFKILL_TYPE,
PROP_IFINDEX,
PROP_AVAILABLE_CONNECTIONS,
PROP_PHYSICAL_PORT_ID,
@@ -473,7 +472,6 @@ typedef struct _NMDevicePrivate {
char *driver;
char *driver_version;
char *firmware_version;
- RfKillType rfkill_type;
bool firmware_missing : 1;
bool nm_plugin_missing : 1;
bool
@@ -5158,12 +5156,17 @@ nm_device_get_applied_setting(NMDevice *self, GType setting_type)
return connection ? nm_connection_get_setting(connection, setting_type) : NULL;
}
-RfKillType
+NMRfkillType
nm_device_get_rfkill_type(NMDevice *self)
{
+ NMRfkillType t;
+
g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
- return NM_DEVICE_GET_PRIVATE(self)->rfkill_type;
+ t = NM_DEVICE_GET_CLASS(self)->rfkill_type;
+
+ nm_assert(NM_IN_SET(t, NM_RFKILL_TYPE_UNKNOWN, NM_RFKILL_TYPE_WLAN, NM_RFKILL_TYPE_WWAN));
+ return t;
}
static const char *
@@ -7000,7 +7003,7 @@ sriov_op_queue(NMDevice *self,
*
* FIXME(shutdown): However, during shutdown we don't have a follow-up write request to cancel
* this operation and we have to give it at least some time to complete. The solution is that
- * we register a way to abort the last call during shutdown, and after NM_SHUTDOWN_TIMEOUT_MS
+ * we register a way to abort the last call during shutdown, and after NM_SHUTDOWN_TIMEOUT_MAX_MSEC
* grace period we pull the plug and cancel it. */
op = g_slice_new(SriovOp);
@@ -17001,9 +17004,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_TYPE_DESC:
g_value_set_string(value, priv->type_desc);
break;
- case PROP_RFKILL_TYPE:
- g_value_set_uint(value, priv->rfkill_type);
- break;
case PROP_AVAILABLE_CONNECTIONS:
nm_dbus_utils_g_value_set_object_path_from_hash(value, priv->available_connections, TRUE);
break;
@@ -17139,10 +17139,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
/* construct-only */
priv->type_desc = g_value_dup_string(value);
break;
- case PROP_RFKILL_TYPE:
- /* construct-only */
- priv->rfkill_type = g_value_get_uint(value);
- break;
case PROP_PERM_HW_ADDRESS:
/* construct-only */
priv->hw_addr_perm = g_value_dup_string(value);
@@ -17192,7 +17188,6 @@ nm_device_init(NMDevice *self)
priv->capabilities = NM_DEVICE_CAP_NM_SUPPORTED;
priv->state = NM_DEVICE_STATE_UNMANAGED;
priv->state_reason = NM_DEVICE_STATE_REASON_NONE;
- priv->rfkill_type = RFKILL_TYPE_UNKNOWN;
priv->unmanaged_flags = NM_UNMANAGED_PLATFORM_INIT;
priv->unmanaged_mask = priv->unmanaged_flags;
priv->available_connections = g_hash_table_new_full(nm_direct_hash, NULL, g_object_unref, NULL);
@@ -17595,6 +17590,8 @@ nm_device_class_init(NMDeviceClass *klass)
klass->reapply_connection = reapply_connection;
klass->set_platform_mtu = set_platform_mtu;
+ klass->rfkill_type = NM_RFKILL_TYPE_UNKNOWN;
+
obj_properties[PROP_UDI] =
g_param_spec_string(NM_DEVICE_UDI,
"",
@@ -17752,14 +17749,6 @@ nm_device_class_init(NMDeviceClass *klass)
"",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- obj_properties[PROP_RFKILL_TYPE] =
- g_param_spec_uint(NM_DEVICE_RFKILL_TYPE,
- "",
- "",
- RFKILL_TYPE_WLAN,
- RFKILL_TYPE_MAX,
- RFKILL_TYPE_UNKNOWN,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
obj_properties[PROP_IFINDEX] = g_param_spec_int(NM_DEVICE_IFINDEX,
"",
"",
diff --git a/src/core/devices/nm-device.h b/src/core/devices/nm-device.h
index cfcd4ade6d..d9cfc7e621 100644
--- a/src/core/devices/nm-device.h
+++ b/src/core/devices/nm-device.h
@@ -65,7 +65,6 @@
#define NM_DEVICE_SLAVES "slaves" /* partially internal */
#define NM_DEVICE_TYPE_DESC "type-desc" /* Internal only */
-#define NM_DEVICE_RFKILL_TYPE "rfkill-type" /* Internal only */
#define NM_DEVICE_IFINDEX "ifindex" /* Internal only */
#define NM_DEVICE_MASTER "master" /* Internal only */
#define NM_DEVICE_HAS_PENDING_ACTION "has-pending-action" /* Internal only */
@@ -105,38 +104,38 @@ typedef enum NMActStageReturn NMActStageReturn;
* a condition, so that adding a flag might make a connection available that would
* not be available otherwise. Adding a flag should never make a connection
* not available if it would be available otherwise. */
-typedef enum { /*< skip >*/
- NM_DEVICE_CHECK_CON_AVAILABLE_NONE = 0,
+typedef enum {
+ NM_DEVICE_CHECK_CON_AVAILABLE_NONE = 0,
- /* since NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST is a collection of flags with more fine grained
+ /* since NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST is a collection of flags with more fine grained
* parts, this flag in general indicates that this is a user-request. */
- _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST = (1L << 0),
+ _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST = (1L << 0),
- /* we also consider devices which have no carrier but are still waiting for the driver
+ /* we also consider devices which have no carrier but are still waiting for the driver
* to detect carrier. Usually, such devices are not yet available, however for a user-request
* they are. They might fail later if carrier doesn't come. */
- _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_WAITING_CARRIER = (1L << 1),
+ _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_WAITING_CARRIER = (1L << 1),
- /* usually, a profile is only available if the Wi-Fi AP is in range. For an
+ /* usually, a profile is only available if the Wi-Fi AP is in range. For an
* explicit user request, we also consider profiles for APs that are not (yet)
* visible. */
- _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP = (1L << 2),
+ _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP = (1L << 2),
- /* a device can be marked as unmanaged for various reasons. Some of these reasons
+ /* a device can be marked as unmanaged for various reasons. Some of these reasons
* are authoritative, others not. Non-authoritative reasons can be overruled by
* `nmcli device set $DEVICE managed yes`. Also, for an explicit user activation
* request we may want to consider the device as managed. This flag makes devices
* that are unmanaged appear available. */
- _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_OVERRULE_UNMANAGED = (1L << 3),
+ _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_OVERRULE_UNMANAGED = (1L << 3),
- /* a collection of flags, that are commonly set for an explicit user-request. */
- NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST =
- _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST
- | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_WAITING_CARRIER
- | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP
- | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_OVERRULE_UNMANAGED,
+ /* a collection of flags, that are commonly set for an explicit user-request. */
+ NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST =
+ _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST
+ | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_WAITING_CARRIER
+ | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP
+ | _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_OVERRULE_UNMANAGED,
- NM_DEVICE_CHECK_CON_AVAILABLE_ALL = (1L << 4) - 1,
+ NM_DEVICE_CHECK_CON_AVAILABLE_ALL = (1L << 4) - 1,
} NMDeviceCheckConAvailableFlags;
struct _NMDevicePrivate;
@@ -149,19 +148,18 @@ struct _NMDevice {
/* The flags have an relaxing meaning, that means, specifying more flags, can make
* a device appear more available. It can never make a device less available. */
-typedef enum { /*< skip >*/
- NM_DEVICE_CHECK_DEV_AVAILABLE_NONE = 0,
+typedef enum {
+ NM_DEVICE_CHECK_DEV_AVAILABLE_NONE = 0,
- /* the device is considered available, even if it has no carrier.
+ /* the device is considered available, even if it has no carrier.
*
* For various device types (software devices) we ignore carrier based
* on the type. So, for them, this flag has no effect anyway. */
- _NM_DEVICE_CHECK_DEV_AVAILABLE_IGNORE_CARRIER = (1L << 0),
+ _NM_DEVICE_CHECK_DEV_AVAILABLE_IGNORE_CARRIER = (1L << 0),
- NM_DEVICE_CHECK_DEV_AVAILABLE_FOR_USER_REQUEST =
- _NM_DEVICE_CHECK_DEV_AVAILABLE_IGNORE_CARRIER,
+ NM_DEVICE_CHECK_DEV_AVAILABLE_FOR_USER_REQUEST = _NM_DEVICE_CHECK_DEV_AVAILABLE_IGNORE_CARRIER,
- NM_DEVICE_CHECK_DEV_AVAILABLE_ALL = (1L << 1) - 1,
+ NM_DEVICE_CHECK_DEV_AVAILABLE_ALL = (1L << 1) - 1,
} NMDeviceCheckDevAvailableFlags;
typedef void (*NMDeviceDeactivateCallback)(NMDevice *self, GError *error, gpointer user_data);
@@ -209,6 +207,8 @@ typedef struct _NMDeviceClass {
bool can_reapply_change_ovs_external_ids : 1;
+ NMRfkillType rfkill_type : 4;
+
void (*state_changed)(NMDevice *device,
NMDeviceState new_state,
NMDeviceState old_state,
@@ -410,7 +410,6 @@ typedef struct _NMDeviceClass {
gboolean (*set_platform_mtu)(NMDevice *self, guint32 mtu);
const char *(*get_dhcp_anycast_address)(NMDevice *self);
-
} NMDeviceClass;
GType nm_device_get_type(void);
@@ -536,7 +535,7 @@ gboolean nm_device_get_enabled(NMDevice *device);
void nm_device_set_enabled(NMDevice *device, gboolean enabled);
-RfKillType nm_device_get_rfkill_type(NMDevice *device);
+NMRfkillType nm_device_get_rfkill_type(NMDevice *device);
/* IPv6 prefix delegation */
diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c
index 7c45e0e48b..3c91323d78 100644
--- a/src/core/devices/ovs/nm-ovsdb.c
+++ b/src/core/devices/ovs/nm-ovsdb.c
@@ -104,6 +104,7 @@ typedef struct {
OvsdbMethodCallback callback;
gpointer user_data;
OvsdbMethodPayload payload;
+ GObject *shutdown_wait_obj;
} OvsdbMethodCall;
/*****************************************************************************/
@@ -245,6 +246,8 @@ static NM_UTILS_LOOKUP_STR_DEFINE(_device_type_to_table,
static void
_call_complete(OvsdbMethodCall *call, json_t *response, GError *error)
{
+ g_clear_object(&call->shutdown_wait_obj);
+
if (response) {
gs_free char *str = NULL;
@@ -378,12 +381,14 @@ ovsdb_call_method(NMOvsdb *self,
call = g_slice_new(OvsdbMethodCall);
*call = (OvsdbMethodCall){
- .self = self,
- .call_id = CALL_ID_UNSPEC,
- .command = command,
- .callback = callback,
- .user_data = user_data,
+ .self = self,
+ .call_id = CALL_ID_UNSPEC,
+ .command = command,
+ .callback = callback,
+ .user_data = user_data,
+ .shutdown_wait_obj = g_object_new(G_TYPE_OBJECT, NULL),
};
+ nm_shutdown_wait_obj_register_object(call->shutdown_wait_obj, "ovsdb-call");
if (add_first)
c_list_link_front(&priv->calls_lst_head, &call->calls_lst);
diff --git a/src/core/devices/wifi/nm-device-iwd-p2p.c b/src/core/devices/wifi/nm-device-iwd-p2p.c
index 01774b12f7..40e38321bf 100644
--- a/src/core/devices/wifi/nm-device-iwd-p2p.c
+++ b/src/core/devices/wifi/nm-device-iwd-p2p.c
@@ -1196,8 +1196,6 @@ nm_device_iwd_p2p_new(GDBusObject *dbus_obj)
NM_DEVICE_TYPE_WIFI_P2P,
NM_DEVICE_LINK_TYPE,
NM_LINK_TYPE_WIFI,
- NM_DEVICE_RFKILL_TYPE,
- RFKILL_TYPE_WLAN,
NULL);
if (!self || !nm_device_iwd_p2p_set_dbus_obj(self, dbus_obj))
@@ -1252,6 +1250,8 @@ nm_device_iwd_p2p_class_init(NMDeviceIwdP2PClass *klass)
device_class->state_changed = device_state_changed;
+ device_class->rfkill_type = NM_RFKILL_TYPE_WLAN;
+
obj_properties[PROP_PEERS] = g_param_spec_boxed(NM_DEVICE_IWD_P2P_PEERS,
"",
"",
diff --git a/src/core/devices/wifi/nm-device-iwd.c b/src/core/devices/wifi/nm-device-iwd.c
index 7543d9daf8..ab37cbec91 100644
--- a/src/core/devices/wifi/nm-device-iwd.c
+++ b/src/core/devices/wifi/nm-device-iwd.c
@@ -3426,8 +3426,6 @@ nm_device_iwd_new(const char *iface)
NM_DEVICE_TYPE_WIFI,
NM_DEVICE_LINK_TYPE,
NM_LINK_TYPE_WIFI,
- NM_DEVICE_RFKILL_TYPE,
- RFKILL_TYPE_WLAN,
NULL);
}
@@ -3490,6 +3488,8 @@ nm_device_iwd_class_init(NMDeviceIwdClass *klass)
device_class->state_changed = device_state_changed;
+ device_class->rfkill_type = NM_RFKILL_TYPE_WLAN;
+
obj_properties[PROP_MODE] = g_param_spec_uint(NM_DEVICE_IWD_MODE,
"",
"",
diff --git a/src/core/devices/wifi/nm-device-wifi-p2p.c b/src/core/devices/wifi/nm-device-wifi-p2p.c
index dfbf89785c..4576af95cb 100644
--- a/src/core/devices/wifi/nm-device-wifi-p2p.c
+++ b/src/core/devices/wifi/nm-device-wifi-p2p.c
@@ -1229,8 +1229,6 @@ nm_device_wifi_p2p_new(const char *iface)
NM_DEVICE_TYPE_WIFI_P2P,
NM_DEVICE_LINK_TYPE,
NM_LINK_TYPE_WIFI,
- NM_DEVICE_RFKILL_TYPE,
- RFKILL_TYPE_WLAN,
NULL);
}
@@ -1293,6 +1291,8 @@ nm_device_wifi_p2p_class_init(NMDeviceWifiP2PClass *klass)
device_class->state_changed = device_state_changed;
+ device_class->rfkill_type = NM_RFKILL_TYPE_WLAN;
+
obj_properties[PROP_PEERS] = g_param_spec_boxed(NM_DEVICE_WIFI_P2P_PEERS,
"",
"",
diff --git a/src/core/devices/wifi/nm-device-wifi.c b/src/core/devices/wifi/nm-device-wifi.c
index 010cee0834..314ba56688 100644
--- a/src/core/devices/wifi/nm-device-wifi.c
+++ b/src/core/devices/wifi/nm-device-wifi.c
@@ -3103,28 +3103,75 @@ act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
static void
ensure_hotspot_frequency(NMDeviceWifi *self, NMSettingWireless *s_wifi, NMWifiAP *ap)
{
- NMDevice *device = NM_DEVICE(self);
- const char *band = nm_setting_wireless_get_band(s_wifi);
- const guint32 a_freqs[] = {5180, 5200, 5220, 5745, 5765, 5785, 5805, 0};
- const guint32 bg_freqs[] = {2412, 2437, 2462, 2472, 0};
- guint32 freq = 0;
-
- g_assert(ap);
+ guint32 a_freqs[] = {5180, 5200, 5220, 5745, 5765, 5785, 5805, 0};
+ guint32 bg_freqs[] = {2412, 2437, 2462, 2472, 0};
+ guint32 *rnd_freqs;
+ guint rnd_freqs_len;
+ NMDevice *device = NM_DEVICE(self);
+ const char *band = nm_setting_wireless_get_band(s_wifi);
+ guint32 freq;
+ guint64 rnd;
+ guint i;
+ guint l;
+
+ nm_assert(ap);
+ nm_assert(NM_IN_STRSET(band, NULL, "a", "bg"));
if (nm_wifi_ap_get_freq(ap))
return;
- if (g_strcmp0(band, "a") == 0)
- freq = nm_platform_wifi_find_frequency(nm_device_get_platform(device),
- nm_device_get_ifindex(device),
- a_freqs);
- else
- freq = nm_platform_wifi_find_frequency(nm_device_get_platform(device),
- nm_device_get_ifindex(device),
- bg_freqs);
+ {
+ GBytes *ssid;
+ gsize ssid_len;
+ const guint8 *ssid_data;
+ const guint8 random_seed[16] = {0x9a,
+ 0xdc,
+ 0x86,
+ 0x9a,
+ 0xa8,
+ 0xa2,
+ 0x07,
+ 0x97,
+ 0xbe,
+ 0x6d,
+ 0xe6,
+ 0x99,
+ 0x9f,
+ 0xa8,
+ 0x09,
+ 0x2b};
+
+ /* Calculate a stable "random" number based on the SSID. */
+ ssid = nm_setting_wireless_get_ssid(s_wifi);
+ ssid_data = g_bytes_get_data(ssid, &ssid_len);
+ rnd = c_siphash_hash(random_seed, ssid_data, ssid_len);
+ }
+
+ if (nm_streq0(band, "a")) {
+ rnd_freqs = a_freqs;
+ rnd_freqs_len = G_N_ELEMENTS(a_freqs) - 1;
+ } else {
+ rnd_freqs = bg_freqs;
+ rnd_freqs_len = G_N_ELEMENTS(bg_freqs) - 1;
+ }
- if (!freq)
- freq = (g_strcmp0(band, "a") == 0) ? 5180 : 2462;
+ /* shuffle the frequencies (inplace). The idea is to choose
+ * a different frequency depending on the SSID. */
+ for (i = 0, l = rnd_freqs_len; l > 1; i++, l--) {
+ /* Add an arbitrary chosen (prime) number to rnd, to get more "random"
+ * numbers. Since we only shuffle a handful of elements, that's good
+ * enough (and stable). */
+ rnd += 5630246189u;
+ NM_SWAP(&rnd_freqs[i], &rnd_freqs[i + (rnd % l)]);
+ }
+
+ freq = nm_platform_wifi_find_frequency(nm_device_get_platform(device),
+ nm_device_get_ifindex(device),
+ rnd_freqs);
+ if (freq == 0)
+ freq = rnd_freqs[0];
+
+ _LOGD(LOGD_WIFI, "set frequency for hotspot AP to %u", freq);
if (nm_wifi_ap_set_freq(ap, freq))
_ap_dump(self, LOGL_DEBUG, ap, "updated", 0);
@@ -3663,8 +3710,6 @@ nm_device_wifi_new(const char *iface, _NMDeviceWifiCapabilities capabilities)
NM_DEVICE_TYPE_WIFI,
NM_DEVICE_LINK_TYPE,
NM_LINK_TYPE_WIFI,
- NM_DEVICE_RFKILL_TYPE,
- RFKILL_TYPE_WLAN,
NM_DEVICE_WIFI_CAPABILITIES,
(guint) capabilities,
NULL);
@@ -3756,6 +3801,8 @@ nm_device_wifi_class_init(NMDeviceWifiClass *klass)
device_class->state_changed = device_state_changed;
+ device_class->rfkill_type = NM_RFKILL_TYPE_WLAN;
+
obj_properties[PROP_MODE] = g_param_spec_uint(NM_DEVICE_WIFI_MODE,
"",
"",
diff --git a/src/core/devices/wwan/nm-device-modem.c b/src/core/devices/wwan/nm-device-modem.c
index ef802a44f2..31c03f7350 100644
--- a/src/core/devices/wwan/nm-device-modem.c
+++ b/src/core/devices/wwan/nm-device-modem.c
@@ -757,8 +757,6 @@ nm_device_modem_new(NMModem *modem)
"Broadband",
NM_DEVICE_DEVICE_TYPE,
NM_DEVICE_TYPE_MODEM,
- NM_DEVICE_RFKILL_TYPE,
- RFKILL_TYPE_WWAN,
NM_DEVICE_MODEM_MODEM,
modem,
NM_DEVICE_MODEM_CAPABILITIES,
@@ -840,6 +838,8 @@ nm_device_modem_class_init(NMDeviceModemClass *klass)
device_class->state_changed = device_state_changed;
+ device_class->rfkill_type = NM_RFKILL_TYPE_WWAN;
+
obj_properties[PROP_MODEM] =
g_param_spec_object(NM_DEVICE_MODEM_MODEM,
"",
diff --git a/src/core/dns/nm-dns-dnsmasq.c b/src/core/dns/nm-dns-dnsmasq.c
index f0abf564cb..1be42b958d 100644
--- a/src/core/dns/nm-dns-dnsmasq.c
+++ b/src/core/dns/nm-dns-dnsmasq.c
@@ -39,10 +39,10 @@
#define _NMLOG(level, ...) __NMLOG_DEFAULT(level, _NMLOG_DOMAIN, "dnsmasq", __VA_ARGS__)
#define WAIT_MSEC_AFTER_SIGTERM 1000
-G_STATIC_ASSERT(WAIT_MSEC_AFTER_SIGTERM <= NM_SHUTDOWN_TIMEOUT_MS);
+G_STATIC_ASSERT(WAIT_MSEC_AFTER_SIGTERM <= NM_SHUTDOWN_TIMEOUT_MAX_MSEC);
#define WAIT_MSEC_AFTER_SIGKILL 400
-G_STATIC_ASSERT(WAIT_MSEC_AFTER_SIGKILL + 100 <= NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG);
+G_STATIC_ASSERT(WAIT_MSEC_AFTER_SIGKILL + 100 <= NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC);
typedef void (*GlPidSpawnAsyncNotify)(GCancellable *cancellable,
GPid pid,
diff --git a/src/core/nm-connectivity.c b/src/core/nm-connectivity.c
index 7199c9a242..eee837be17 100644
--- a/src/core/nm-connectivity.c
+++ b/src/core/nm-connectivity.c
@@ -694,6 +694,7 @@ do_curl_request(NMConnectivityCheckHandle *cb_data)
curl_easy_setopt(ehandle, CURLOPT_INTERFACE, cb_data->ifspec);
curl_easy_setopt(ehandle, CURLOPT_RESOLVE, cb_data->concheck.hosts);
curl_easy_setopt(ehandle, CURLOPT_IPRESOLVE, resolve);
+ curl_easy_setopt(ehandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_multi_add_handle(mhandle, ehandle);
}
diff --git a/src/core/nm-firewall-utils.c b/src/core/nm-firewall-utils.c
index ddac1137bf..8fa8059e00 100644
--- a/src/core/nm-firewall-utils.c
+++ b/src/core/nm-firewall-utils.c
@@ -422,7 +422,7 @@ _fw_nft_call_communicate_cb(GObject *source, GAsyncResult *result, gpointer user
nm_g_main_context_push_thread_default_if_necessary(NULL);
nm_shutdown_wait_obj_register_object(call_data->subprocess, "nft-terminate");
- G_STATIC_ASSERT_EXPR(200 < NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG * 2 / 3);
+ G_STATIC_ASSERT_EXPR(200 < NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC * 2 / 3);
nm_g_subprocess_terminate_in_background(call_data->subprocess, 200);
}
} else if (g_subprocess_get_successful(call_data->subprocess)) {
@@ -546,7 +546,7 @@ _fw_nft_call(GBytes *stdin_buf,
call_data);
call_data->timeout_source =
- nm_g_source_attach(nm_g_timeout_source_new((NM_SHUTDOWN_TIMEOUT_MS * 2) / 3,
+ nm_g_source_attach(nm_g_timeout_source_new((NM_SHUTDOWN_TIMEOUT_1500_MSEC * 2) / 3,
G_PRIORITY_DEFAULT,
_fw_nft_call_timeout_cb,
call_data,
diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c
index b440b22457..003552bc47 100644
--- a/src/core/nm-manager.c
+++ b/src/core/nm-manager.c
@@ -54,15 +54,16 @@
/*****************************************************************************/
typedef struct {
- gboolean user_enabled;
- gboolean sw_enabled;
- gboolean hw_enabled;
- RfKillType rtype;
+ guint prop_id;
+ guint hw_prop_id;
NMConfigRunStatePropertyType key;
- const char *desc;
- const char *prop;
- const char *hw_prop;
-} RadioState;
+} RfkillTypeDesc;
+
+typedef struct {
+ bool user_enabled : 1;
+ bool sw_enabled : 1;
+ bool hw_enabled : 1;
+} RfkillRadioState;
typedef enum {
ASYNC_OP_TYPE_AC_AUTH_ACTIVATE_INTERNAL,
@@ -169,7 +170,8 @@ typedef struct {
NMSettings *settings;
- RadioState radio_states[RFKILL_TYPE_MAX];
+ RfkillRadioState radio_states[NM_RFKILL_TYPE_MAX];
+
NMVpnManager *vpn_manager;
NMSleepMonitor *sleep_monitor;
@@ -2276,11 +2278,24 @@ _static_hostname_changed_cb(NMHostnameManager *hostname_manager, GParamSpec *psp
}
/*****************************************************************************/
-/* General NMManager stuff */
-/*****************************************************************************/
+
+static const RfkillTypeDesc _rfkill_type_desc[NM_RFKILL_TYPE_MAX] = {
+ [NM_RFKILL_TYPE_WLAN] =
+ {
+ .prop_id = PROP_WIRELESS_ENABLED,
+ .hw_prop_id = PROP_WIRELESS_HARDWARE_ENABLED,
+ .key = NM_CONFIG_STATE_PROPERTY_WIFI_ENABLED,
+ },
+ [NM_RFKILL_TYPE_WWAN] =
+ {
+ .prop_id = PROP_WWAN_ENABLED,
+ .hw_prop_id = PROP_WWAN_HARDWARE_ENABLED,
+ .key = NM_CONFIG_STATE_PROPERTY_WWAN_ENABLED,
+ },
+};
static gboolean
-radio_enabled_for_rstate(RadioState *rstate, gboolean check_changeable)
+_rfkill_radio_state_get_enabled(const RfkillRadioState *rstate, gboolean check_changeable)
{
gboolean enabled;
@@ -2290,25 +2305,45 @@ radio_enabled_for_rstate(RadioState *rstate, gboolean check_changeable)
return enabled;
}
+static void
+_rfkill_radio_state_set_from_manager(NMRfkillManager *rfkill_mgr,
+ NMRfkillType rtype,
+ RfkillRadioState *rstate)
+{
+ switch (nm_rfkill_manager_get_rfkill_state(rfkill_mgr, rtype)) {
+ case NM_RFKILL_STATE_UNBLOCKED:
+ rstate->sw_enabled = TRUE;
+ rstate->hw_enabled = TRUE;
+ return;
+ case NM_RFKILL_STATE_SOFT_BLOCKED:
+ rstate->sw_enabled = FALSE;
+ rstate->hw_enabled = TRUE;
+ return;
+ case NM_RFKILL_STATE_HARD_BLOCKED:
+ rstate->sw_enabled = FALSE;
+ rstate->hw_enabled = FALSE;
+ return;
+ }
+ nm_assert_not_reached();
+}
+
static gboolean
-radio_enabled_for_type(NMManager *self, RfKillType rtype, gboolean check_changeable)
+_rfkill_radio_state_get(NMManager *self, NMRfkillType rtype)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
- return radio_enabled_for_rstate(&priv->radio_states[rtype], check_changeable);
+ nm_assert(_NM_INT_NOT_NEGATIVE(rtype) && rtype < G_N_ELEMENTS(priv->radio_states));
+
+ return _rfkill_radio_state_get_enabled(&priv->radio_states[rtype], TRUE);
}
static void
-manager_update_radio_enabled(NMManager *self, RadioState *rstate, gboolean enabled)
+_rfkill_update_devices(NMManager *self, NMRfkillType rtype, gboolean enabled)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
NMDevice *device;
- /* Do nothing for radio types not yet implemented */
- if (!rstate->prop)
- return;
-
- g_object_notify(G_OBJECT(self), rstate->prop);
+ _notify(self, _rfkill_type_desc[rtype].prop_id);
/* Don't touch devices if asleep/networking disabled */
if (manager_sleeping(self))
@@ -2316,7 +2351,7 @@ manager_update_radio_enabled(NMManager *self, RadioState *rstate, gboolean enabl
/* enable/disable wireless devices as required */
c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
- if (nm_device_get_rfkill_type(device) == rstate->rtype) {
+ if (nm_device_get_rfkill_type(device) == rtype) {
_LOG2D(LOGD_RFKILL,
device,
"rfkill: setting radio %s",
@@ -2327,89 +2362,185 @@ manager_update_radio_enabled(NMManager *self, RadioState *rstate, gboolean enabl
}
static void
-update_rstate_from_rfkill(NMRfkillManager *rfkill_mgr, RadioState *rstate)
+_rfkill_update_one_type(NMManager *self, NMRfkillType rtype)
{
- switch (nm_rfkill_manager_get_rfkill_state(rfkill_mgr, rstate->rtype)) {
- case RFKILL_UNBLOCKED:
- rstate->sw_enabled = TRUE;
- rstate->hw_enabled = TRUE;
- break;
- case RFKILL_SOFT_BLOCKED:
- rstate->sw_enabled = FALSE;
- rstate->hw_enabled = TRUE;
- break;
- case RFKILL_HARD_BLOCKED:
- rstate->sw_enabled = FALSE;
- rstate->hw_enabled = FALSE;
- break;
- default:
- g_warn_if_reached();
- break;
- }
-}
+ NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
+ RfkillRadioState *rstate = &priv->radio_states[rtype];
+ gboolean old_enabled;
+ gboolean new_enabled;
+ gboolean old_rfkilled;
+ gboolean new_rfkilled;
+ gboolean old_hwe;
-static void
-manager_rfkill_update_one_type(NMManager *self, RadioState *rstate, RfKillType rtype)
-{
- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
- gboolean old_enabled, new_enabled, old_rfkilled, new_rfkilled, old_hwe;
+ nm_assert(_NM_INT_NOT_NEGATIVE(rtype) && rtype < G_N_ELEMENTS(priv->radio_states));
- old_enabled = radio_enabled_for_rstate(rstate, TRUE);
+ old_enabled = _rfkill_radio_state_get_enabled(rstate, TRUE);
old_rfkilled = rstate->hw_enabled && rstate->sw_enabled;
old_hwe = rstate->hw_enabled;
/* recheck kernel rfkill state */
- update_rstate_from_rfkill(priv->rfkill_mgr, rstate);
+ _rfkill_radio_state_set_from_manager(priv->rfkill_mgr, rtype, rstate);
/* Print out all states affecting device enablement */
- if (rstate->desc) {
- _LOGD(LOGD_RFKILL,
- "rfkill: %s hw-enabled %d sw-enabled %d",
- rstate->desc,
- rstate->hw_enabled,
- rstate->sw_enabled);
- }
+ _LOGD(LOGD_RFKILL,
+ "rfkill: %s hw-enabled %d sw-enabled %d",
+ nm_rfkill_type_to_string(rtype),
+ rstate->hw_enabled,
+ rstate->sw_enabled);
/* Log new killswitch state */
new_rfkilled = rstate->hw_enabled && rstate->sw_enabled;
if (old_rfkilled != new_rfkilled) {
_LOGI(LOGD_RFKILL,
"rfkill: %s now %s by radio killswitch",
- rstate->desc,
+ nm_rfkill_type_to_string(rtype),
new_rfkilled ? "enabled" : "disabled");
}
/* Send out property changed signal for HW enabled */
- if (rstate->hw_enabled != old_hwe) {
- if (rstate->hw_prop)
- g_object_notify(G_OBJECT(self), rstate->hw_prop);
- }
+ if (rstate->hw_enabled != old_hwe)
+ _notify(self, _rfkill_type_desc[rtype].hw_prop_id);
/* And finally update the actual device radio state itself; respect the
* daemon state here because this is never called from user-triggered
* radio changes and we only want to ignore the daemon enabled state when
* handling user radio change requests.
*/
- new_enabled = radio_enabled_for_rstate(rstate, TRUE);
+ new_enabled = _rfkill_radio_state_get_enabled(rstate, TRUE);
if (new_enabled != old_enabled)
- manager_update_radio_enabled(self, rstate, new_enabled);
+ _rfkill_update_devices(self, rtype, new_enabled);
}
static void
-nm_manager_rfkill_update(NMManager *self, RfKillType rtype)
+_rfkill_update(NMManager *self, NMRfkillType rtype)
{
- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
- guint i;
+ guint i;
- if (rtype != RFKILL_TYPE_UNKNOWN)
- manager_rfkill_update_one_type(self, &priv->radio_states[rtype], rtype);
+ if (rtype != NM_RFKILL_TYPE_UNKNOWN)
+ _rfkill_update_one_type(self, rtype);
else {
/* Otherwise, sync all radio types */
- for (i = 0; i < RFKILL_TYPE_MAX; i++)
- manager_rfkill_update_one_type(self, &priv->radio_states[i], i);
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++)
+ _rfkill_update_one_type(self, i);
}
}
+/*****************************************************************************/
+
+#define KERN_RFKILL_OP_CHANGE_ALL 3
+#define KERN_RFKILL_TYPE_WLAN 1
+#define KERN_RFKILL_TYPE_WWAN 5
+
+struct rfkill_event {
+ uint32_t idx;
+ uint8_t type;
+ uint8_t op;
+ uint8_t soft;
+ uint8_t hard;
+} _nm_packed;
+
+static void
+_rfkill_update_system(NMManager *self, NMRfkillType rtype, gboolean enabled)
+{
+ nm_auto_close int fd = -1;
+ struct rfkill_event event;
+ ssize_t len;
+ int errsv;
+
+ nm_assert(NM_IN_SET(rtype, NM_RFKILL_TYPE_WLAN, NM_RFKILL_TYPE_WWAN));
+
+ fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC);
+ if (fd < 0) {
+ if (errno == EACCES)
+ _LOGW(LOGD_RFKILL,
+ "rfkill: (%s): failed to open killswitch device",
+ nm_rfkill_type_to_string(rtype));
+ return;
+ }
+
+ if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
+ _LOGW(LOGD_RFKILL,
+ "rfkill: (%s): failed to set killswitch device for "
+ "non-blocking operation",
+ nm_rfkill_type_to_string(rtype));
+ return;
+ }
+
+ memset(&event, 0, sizeof(event));
+ event.op = KERN_RFKILL_OP_CHANGE_ALL;
+ switch (rtype) {
+ case NM_RFKILL_TYPE_WLAN:
+ event.type = KERN_RFKILL_TYPE_WLAN;
+ break;
+ case NM_RFKILL_TYPE_WWAN:
+ event.type = KERN_RFKILL_TYPE_WWAN;
+ break;
+ default:
+ nm_assert_not_reached();
+ }
+ event.soft = enabled ? 0 : 1;
+
+ len = write(fd, &event, sizeof(event));
+ if (len < 0) {
+ errsv = errno;
+ _LOGW(LOGD_RFKILL,
+ "rfkill: (%s): failed to change Wi-Fi killswitch state: (%d) %s",
+ nm_rfkill_type_to_string(rtype),
+ errsv,
+ nm_strerror_native(errsv));
+ } else if (len == sizeof(event)) {
+ _LOGI(LOGD_RFKILL,
+ "rfkill: %s hardware radio set %s",
+ nm_rfkill_type_to_string(rtype),
+ enabled ? "enabled" : "disabled");
+ } else {
+ /* Failed to write full structure */
+ _LOGW(LOGD_RFKILL,
+ "rfkill: (%s): failed to change Wi-Fi killswitch state",
+ nm_rfkill_type_to_string(rtype));
+ }
+}
+
+static void
+_rfkill_update_from_user(NMManager *self, NMRfkillType rtype, gboolean enabled)
+{
+ NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
+ RfkillRadioState *rstate = &priv->radio_states[rtype];
+ gboolean old_enabled, new_enabled;
+
+ /* Don't touch devices if asleep/networking disabled */
+ if (manager_sleeping(self))
+ return;
+
+ _LOGD(LOGD_RFKILL,
+ "rfkill: (%s): setting radio %s by user",
+ nm_rfkill_type_to_string(rtype),
+ enabled ? "enabled" : "disabled");
+
+ /* Update enabled key in state file */
+ nm_config_state_set(priv->config, TRUE, FALSE, _rfkill_type_desc[rtype].key, enabled);
+
+ /* When the user toggles the radio, their request should override any
+ * daemon (like ModemManager) enabled state that can be changed. For WWAN
+ * for example, we want the WwanEnabled property to reflect the daemon state
+ * too so that users can toggle the modem powered, but we don't want that
+ * daemon state to affect whether or not the user *can* turn it on, which is
+ * what the kernel rfkill state does. So we ignore daemon enabled state
+ * when determining what the new state should be since it shouldn't block
+ * the user's request.
+ */
+ old_enabled = _rfkill_radio_state_get_enabled(rstate, TRUE);
+ rstate->user_enabled = enabled;
+ new_enabled = _rfkill_radio_state_get_enabled(rstate, FALSE);
+ if (new_enabled != old_enabled) {
+ /* Try to change the kernel rfkill state */
+ _rfkill_update_system(self, rtype, new_enabled);
+ _rfkill_update_devices(self, rtype, new_enabled);
+ }
+}
+
+/*****************************************************************************/
+
static void
device_auth_done_cb(NMAuthChain *chain, GDBusMethodInvocation *context, gpointer user_data)
{
@@ -3207,7 +3338,7 @@ add_device(NMManager *self, NMDevice *device, GError **error)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
const char *iface, *type_desc;
- RfKillType rtype;
+ NMRfkillType rtype;
GSList *iter, *remove = NULL;
int ifindex;
const char *dbus_path;
@@ -3294,9 +3425,9 @@ add_device(NMManager *self, NMDevice *device, GError **error)
* global state.
*/
rtype = nm_device_get_rfkill_type(device);
- if (rtype != RFKILL_TYPE_UNKNOWN) {
- nm_manager_rfkill_update(self, rtype);
- nm_device_set_enabled(device, radio_enabled_for_type(self, rtype, TRUE));
+ if (rtype != NM_RFKILL_TYPE_UNKNOWN) {
+ _rfkill_update(self, rtype);
+ nm_device_set_enabled(device, _rfkill_radio_state_get(self, rtype));
}
iface = nm_device_get_iface(device);
@@ -3671,12 +3802,14 @@ platform_query_devices(NMManager *self)
}
static void
-rfkill_manager_rfkill_changed_cb(NMRfkillManager *rfkill_mgr,
- RfKillType rtype,
- RfKillState udev_state,
- gpointer user_data)
+rfkill_manager_rfkill_changed_cb(NMRfkillManager *rfkill_mgr,
+ /* NMRfkillType */ guint rtype,
+ /* NMRfkillState */ guint udev_state,
+ gpointer user_data)
{
- nm_manager_rfkill_update(NM_MANAGER(user_data), rtype);
+ nm_assert(rtype < NM_RFKILL_TYPE_MAX);
+
+ _rfkill_update(NM_MANAGER(user_data), rtype);
}
const CList *
@@ -6313,7 +6446,7 @@ do_sleep_wake(NMManager *self, gboolean sleeping_changed)
/* Ensure rfkill state is up-to-date since we don't respond to state
* changes during sleep.
*/
- nm_manager_rfkill_update(self, RFKILL_TYPE_UNKNOWN);
+ _rfkill_update(self, NM_RFKILL_TYPE_UNKNOWN);
/* Re-manage managed devices */
c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
@@ -6330,20 +6463,19 @@ do_sleep_wake(NMManager *self, gboolean sleeping_changed)
/* enable/disable wireless devices since that we don't respond
* to killswitch changes during sleep.
*/
- for (i = 0; i < RFKILL_TYPE_MAX; i++) {
- RadioState *rstate = &priv->radio_states[i];
- gboolean enabled = radio_enabled_for_rstate(rstate, TRUE);
-
- if (rstate->desc) {
- _LOGD(LOGD_RFKILL,
- "rfkill: %s %s devices (hw_enabled %d, sw_enabled %d, user_enabled %d)",
- enabled ? "enabling" : "disabling",
- rstate->desc,
- rstate->hw_enabled,
- rstate->sw_enabled,
- rstate->user_enabled);
- }
- if (nm_device_get_rfkill_type(device) == rstate->rtype)
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++) {
+ const NMRfkillType rtype = i;
+ const RfkillRadioState *rstate = &priv->radio_states[rtype];
+ gboolean enabled = _rfkill_radio_state_get_enabled(rstate, TRUE);
+
+ _LOGD(LOGD_RFKILL,
+ "rfkill: %s %s devices (hw_enabled %d, sw_enabled %d, user_enabled %d)",
+ enabled ? "enabling" : "disabling",
+ nm_rfkill_type_to_string(rtype),
+ rstate->hw_enabled,
+ rstate->sw_enabled,
+ rstate->user_enabled);
+ if (nm_device_get_rfkill_type(device) == rtype)
nm_device_set_enabled(device, enabled);
}
@@ -6929,25 +7061,21 @@ nm_manager_start(NMManager *self, GError **error)
nm_device_factory_manager_for_each_factory(start_factory, NULL);
/* Set initial radio enabled/disabled state */
- for (i = 0; i < RFKILL_TYPE_MAX; i++) {
- RadioState *rstate = &priv->radio_states[i];
- gboolean enabled;
-
- if (!rstate->desc)
- continue;
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++) {
+ const NMRfkillType rtype = i;
+ RfkillRadioState *rstate = &priv->radio_states[rtype];
+ gboolean enabled;
/* recheck kernel rfkill state */
- update_rstate_from_rfkill(priv->rfkill_mgr, rstate);
-
- if (rstate->desc) {
- _LOGI(LOGD_RFKILL,
- "rfkill: %s %s by radio killswitch; %s by state file",
- rstate->desc,
- (rstate->hw_enabled && rstate->sw_enabled) ? "enabled" : "disabled",
- rstate->user_enabled ? "enabled" : "disabled");
- }
- enabled = radio_enabled_for_rstate(rstate, TRUE);
- manager_update_radio_enabled(self, rstate, enabled);
+ _rfkill_radio_state_set_from_manager(priv->rfkill_mgr, rtype, rstate);
+
+ _LOGI(LOGD_RFKILL,
+ "rfkill: %s %s by radio killswitch; %s by state file",
+ nm_rfkill_type_to_string(rtype),
+ (rstate->hw_enabled && rstate->sw_enabled) ? "enabled" : "disabled",
+ rstate->user_enabled ? "enabled" : "disabled");
+ enabled = _rfkill_radio_state_get_enabled(rstate, TRUE);
+ _rfkill_update_devices(self, rtype, enabled);
}
_LOGI(LOGD_CORE, "Networking is %s by state file", priv->net_enabled ? "enabled" : "disabled");
@@ -7588,118 +7716,7 @@ auth_mgr_changed(NMAuthManager *auth_manager, gpointer user_data)
"()");
}
-#define KERN_RFKILL_OP_CHANGE_ALL 3
-#define KERN_RFKILL_TYPE_WLAN 1
-#define KERN_RFKILL_TYPE_WWAN 5
-struct rfkill_event {
- uint32_t idx;
- uint8_t type;
- uint8_t op;
- uint8_t soft;
- uint8_t hard;
-} _nm_packed;
-
-static void
-rfkill_change(NMManager *self, const char *desc, RfKillType rtype, gboolean enabled)
-{
- int fd;
- struct rfkill_event event;
- ssize_t len;
- int errsv;
-
- g_return_if_fail(rtype == RFKILL_TYPE_WLAN || rtype == RFKILL_TYPE_WWAN);
-
- fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC);
- if (fd < 0) {
- if (errno == EACCES)
- _LOGW(LOGD_RFKILL, "rfkill: (%s): failed to open killswitch device", desc);
- return;
- }
-
- if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
- _LOGW(LOGD_RFKILL,
- "rfkill: (%s): failed to set killswitch device for "
- "non-blocking operation",
- desc);
- nm_close(fd);
- return;
- }
-
- memset(&event, 0, sizeof(event));
- event.op = KERN_RFKILL_OP_CHANGE_ALL;
- switch (rtype) {
- case RFKILL_TYPE_WLAN:
- event.type = KERN_RFKILL_TYPE_WLAN;
- break;
- case RFKILL_TYPE_WWAN:
- event.type = KERN_RFKILL_TYPE_WWAN;
- break;
- default:
- g_assert_not_reached();
- }
- event.soft = enabled ? 0 : 1;
-
- len = write(fd, &event, sizeof(event));
- if (len < 0) {
- errsv = errno;
- _LOGW(LOGD_RFKILL,
- "rfkill: (%s): failed to change Wi-Fi killswitch state: (%d) %s",
- desc,
- errsv,
- nm_strerror_native(errsv));
- } else if (len == sizeof(event)) {
- _LOGI(LOGD_RFKILL,
- "rfkill: %s hardware radio set %s",
- desc,
- enabled ? "enabled" : "disabled");
- } else {
- /* Failed to write full structure */
- _LOGW(LOGD_RFKILL, "rfkill: (%s): failed to change Wi-Fi killswitch state", desc);
- }
-
- nm_close(fd);
-}
-
-static void
-manager_radio_user_toggled(NMManager *self, RadioState *rstate, gboolean enabled)
-{
- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
- gboolean old_enabled, new_enabled;
-
- /* Don't touch devices if asleep/networking disabled */
- if (manager_sleeping(self))
- return;
-
- if (rstate->desc) {
- _LOGD(LOGD_RFKILL,
- "rfkill: (%s): setting radio %s by user",
- rstate->desc,
- enabled ? "enabled" : "disabled");
- }
-
- /* Update enabled key in state file */
- nm_config_state_set(priv->config, TRUE, FALSE, rstate->key, enabled);
-
- /* When the user toggles the radio, their request should override any
- * daemon (like ModemManager) enabled state that can be changed. For WWAN
- * for example, we want the WwanEnabled property to reflect the daemon state
- * too so that users can toggle the modem powered, but we don't want that
- * daemon state to affect whether or not the user *can* turn it on, which is
- * what the kernel rfkill state does. So we ignore daemon enabled state
- * when determining what the new state should be since it shouldn't block
- * the user's request.
- */
- old_enabled = radio_enabled_for_rstate(rstate, TRUE);
- rstate->user_enabled = enabled;
- new_enabled = radio_enabled_for_rstate(rstate, FALSE);
- if (new_enabled != old_enabled) {
- /* Try to change the kernel rfkill state */
- if (rstate->rtype == RFKILL_TYPE_WLAN || rstate->rtype == RFKILL_TYPE_WWAN)
- rfkill_change(self, rstate->desc, rstate->rtype, new_enabled);
-
- manager_update_radio_enabled(self, rstate, new_enabled);
- }
-}
+/*****************************************************************************/
static gboolean
periodic_update_active_connection_timestamps(gpointer user_data)
@@ -7876,8 +7893,8 @@ constructed(GObject *object)
priv->net_enabled = state->net_enabled;
- priv->radio_states[RFKILL_TYPE_WLAN].user_enabled = state->wifi_enabled;
- priv->radio_states[RFKILL_TYPE_WWAN].user_enabled = state->wwan_enabled;
+ priv->radio_states[NM_RFKILL_TYPE_WLAN].user_enabled = state->wifi_enabled;
+ priv->radio_states[NM_RFKILL_TYPE_WWAN].user_enabled = state->wwan_enabled;
priv->rfkill_mgr = nm_rfkill_manager_new();
g_signal_connect(priv->rfkill_mgr,
@@ -7890,21 +7907,18 @@ constructed(GObject *object)
* changes to the WirelessEnabled/WWANEnabled properties which toggle kernel
* rfkill.
*/
- rfkill_change(self,
- priv->radio_states[RFKILL_TYPE_WLAN].desc,
- RFKILL_TYPE_WLAN,
- priv->radio_states[RFKILL_TYPE_WLAN].user_enabled);
- rfkill_change(self,
- priv->radio_states[RFKILL_TYPE_WWAN].desc,
- RFKILL_TYPE_WWAN,
- priv->radio_states[RFKILL_TYPE_WWAN].user_enabled);
+ _rfkill_update_system(self,
+ NM_RFKILL_TYPE_WLAN,
+ priv->radio_states[NM_RFKILL_TYPE_WLAN].user_enabled);
+ _rfkill_update_system(self,
+ NM_RFKILL_TYPE_WWAN,
+ priv->radio_states[NM_RFKILL_TYPE_WWAN].user_enabled);
}
static void
nm_manager_init(NMManager *self)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self);
- guint i;
GFile *file;
c_list_init(&priv->auth_lst_head);
@@ -7918,25 +7932,16 @@ nm_manager_init(NMManager *self)
priv->capabilities = g_array_new(FALSE, FALSE, sizeof(guint32));
- /* Initialize rfkill structures and states */
- memset(priv->radio_states, 0, sizeof(priv->radio_states));
-
- priv->radio_states[RFKILL_TYPE_WLAN].user_enabled = TRUE;
- priv->radio_states[RFKILL_TYPE_WLAN].key = NM_CONFIG_STATE_PROPERTY_WIFI_ENABLED;
- priv->radio_states[RFKILL_TYPE_WLAN].prop = NM_MANAGER_WIRELESS_ENABLED;
- priv->radio_states[RFKILL_TYPE_WLAN].hw_prop = NM_MANAGER_WIRELESS_HARDWARE_ENABLED;
- priv->radio_states[RFKILL_TYPE_WLAN].desc = "Wi-Fi";
- priv->radio_states[RFKILL_TYPE_WLAN].rtype = RFKILL_TYPE_WLAN;
-
- priv->radio_states[RFKILL_TYPE_WWAN].user_enabled = TRUE;
- priv->radio_states[RFKILL_TYPE_WWAN].key = NM_CONFIG_STATE_PROPERTY_WWAN_ENABLED;
- priv->radio_states[RFKILL_TYPE_WWAN].prop = NM_MANAGER_WWAN_ENABLED;
- priv->radio_states[RFKILL_TYPE_WWAN].hw_prop = NM_MANAGER_WWAN_HARDWARE_ENABLED;
- priv->radio_states[RFKILL_TYPE_WWAN].desc = "WWAN";
- priv->radio_states[RFKILL_TYPE_WWAN].rtype = RFKILL_TYPE_WWAN;
-
- for (i = 0; i < RFKILL_TYPE_MAX; i++)
- priv->radio_states[i].hw_enabled = TRUE;
+ priv->radio_states[NM_RFKILL_TYPE_WLAN] = (RfkillRadioState){
+ .user_enabled = TRUE,
+ .sw_enabled = FALSE,
+ .hw_enabled = TRUE,
+ };
+ priv->radio_states[NM_RFKILL_TYPE_WWAN] = (RfkillRadioState){
+ .user_enabled = TRUE,
+ .sw_enabled = FALSE,
+ .hw_enabled = TRUE,
+ };
priv->sleeping = FALSE;
priv->state = NM_STATE_DISCONNECTED;
@@ -8008,16 +8013,16 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_set_boolean(value, priv->net_enabled);
break;
case PROP_WIRELESS_ENABLED:
- g_value_set_boolean(value, radio_enabled_for_type(self, RFKILL_TYPE_WLAN, TRUE));
+ g_value_set_boolean(value, _rfkill_radio_state_get(self, NM_RFKILL_TYPE_WLAN));
break;
case PROP_WIRELESS_HARDWARE_ENABLED:
- g_value_set_boolean(value, priv->radio_states[RFKILL_TYPE_WLAN].hw_enabled);
+ g_value_set_boolean(value, priv->radio_states[NM_RFKILL_TYPE_WLAN].hw_enabled);
break;
case PROP_WWAN_ENABLED:
- g_value_set_boolean(value, radio_enabled_for_type(self, RFKILL_TYPE_WWAN, TRUE));
+ g_value_set_boolean(value, _rfkill_radio_state_get(self, NM_RFKILL_TYPE_WWAN));
break;
case PROP_WWAN_HARDWARE_ENABLED:
- g_value_set_boolean(value, priv->radio_states[RFKILL_TYPE_WWAN].hw_enabled);
+ g_value_set_boolean(value, priv->radio_states[NM_RFKILL_TYPE_WWAN].hw_enabled);
break;
case PROP_WIMAX_ENABLED:
g_value_set_boolean(value, FALSE);
@@ -8108,14 +8113,14 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
switch (prop_id) {
case PROP_WIRELESS_ENABLED:
- manager_radio_user_toggled(NM_MANAGER(object),
- &priv->radio_states[RFKILL_TYPE_WLAN],
- g_value_get_boolean(value));
+ _rfkill_update_from_user(NM_MANAGER(object),
+ NM_RFKILL_TYPE_WLAN,
+ g_value_get_boolean(value));
break;
case PROP_WWAN_ENABLED:
- manager_radio_user_toggled(NM_MANAGER(object),
- &priv->radio_states[RFKILL_TYPE_WWAN],
- g_value_get_boolean(value));
+ _rfkill_update_from_user(NM_MANAGER(object),
+ NM_RFKILL_TYPE_WWAN,
+ g_value_get_boolean(value));
break;
case PROP_WIMAX_ENABLED:
/* WIMAX is deprecated. This does nothing. */
diff --git a/src/core/nm-pacrunner-manager.c b/src/core/nm-pacrunner-manager.c
index 5ef425bb97..86a406326e 100644
--- a/src/core/nm-pacrunner-manager.c
+++ b/src/core/nm-pacrunner-manager.c
@@ -291,7 +291,7 @@ _call_destroy_proxy_configuration(NMPacrunnerManager *self,
g_variant_new("(o)", path),
G_VARIANT_TYPE("()"),
G_DBUS_CALL_FLAGS_NO_AUTO_START,
- NM_SHUTDOWN_TIMEOUT_MS,
+ NM_SHUTDOWN_TIMEOUT_1500_MSEC,
priv->cancellable,
_call_destroy_proxy_configuration_cb,
conf_id_ref(conf_id));
@@ -315,7 +315,7 @@ _call_create_proxy_configuration(NMPacrunnerManager *self,
conf_id->parameters,
G_VARIANT_TYPE("(o)"),
G_DBUS_CALL_FLAGS_NO_AUTO_START,
- NM_SHUTDOWN_TIMEOUT_MS,
+ NM_SHUTDOWN_TIMEOUT_1500_MSEC,
priv->cancellable,
_call_create_proxy_configuration_cb,
conf_id_ref(conf_id));
diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c
index d77fc0a025..c9bf31ee49 100644
--- a/src/core/nm-policy.c
+++ b/src/core/nm-policy.c
@@ -609,7 +609,10 @@ _set_hostname(NMPolicy *self, const char *new_hostname, const char *msg)
_LOGI(LOGD_DNS, "set-hostname: set hostname to '%s' (%s)", name, msg);
/* Ask NMSettings to update the transient hostname using its
- * systemd-hostnamed proxy */
+ * systemd-hostnamed proxy.
+ *
+ * FIXME(shutdown): an async request must be cancellable, so we are guaranteed
+ * to tear down in a reasonable time.*/
nm_hostname_manager_set_transient_hostname(priv->hostname_manager,
name,
settings_set_hostname_cb,
diff --git a/src/core/nm-rfkill-manager.c b/src/core/nm-rfkill-manager.c
index f3851e5ca6..bb6dcfd72c 100644
--- a/src/core/nm-rfkill-manager.c
+++ b/src/core/nm-rfkill-manager.c
@@ -9,6 +9,7 @@
#include <libudev.h>
+#include "c-list/src/c-list.h"
#include "libnm-udev-aux/nm-udev-utils.h"
/*****************************************************************************/
@@ -24,8 +25,9 @@ typedef struct {
NMUdevClient *udev_client;
/* Authoritative rfkill state (RFKILL_* enum) */
- RfKillState rfkill_states[RFKILL_TYPE_MAX];
- GSList *killswitches;
+ NMRfkillState rfkill_states[NM_RFKILL_TYPE_MAX];
+
+ CList killswitch_lst_head;
} NMRfkillManagerPrivate;
struct _NMRfkillManager {
@@ -45,60 +47,63 @@ G_DEFINE_TYPE(NMRfkillManager, nm_rfkill_manager, G_TYPE_OBJECT)
/*****************************************************************************/
typedef struct {
- char *name;
- guint64 seqnum;
- char *path;
- char *driver;
- RfKillType rtype;
- int state;
- gboolean platform;
+ CList killswitch_lst;
+ char *name;
+ char *path;
+ char *driver;
+ guint64 seqnum;
+ NMRfkillType rtype;
+ int state;
+ bool platform : 1;
} Killswitch;
-RfKillState
-nm_rfkill_manager_get_rfkill_state(NMRfkillManager *self, RfKillType rtype)
+NMRfkillState
+nm_rfkill_manager_get_rfkill_state(NMRfkillManager *self, NMRfkillType rtype)
{
- g_return_val_if_fail(self != NULL, RFKILL_UNBLOCKED);
- g_return_val_if_fail(rtype < RFKILL_TYPE_MAX, RFKILL_UNBLOCKED);
+ g_return_val_if_fail(self != NULL, NM_RFKILL_STATE_UNBLOCKED);
+ g_return_val_if_fail(rtype < NM_RFKILL_TYPE_MAX, NM_RFKILL_STATE_UNBLOCKED);
return NM_RFKILL_MANAGER_GET_PRIVATE(self)->rfkill_states[rtype];
}
-static const char *
-rfkill_type_to_desc(RfKillType rtype)
+const char *
+nm_rfkill_type_to_string(NMRfkillType type)
{
- if (rtype == 0)
+ switch (type) {
+ case NM_RFKILL_TYPE_WLAN:
return "Wi-Fi";
- else if (rtype == 1)
+ case NM_RFKILL_TYPE_WWAN:
return "WWAN";
- else if (rtype == 2)
- return "WiMAX";
- return "unknown";
+ case NM_RFKILL_TYPE_UNKNOWN:
+ break;
+ }
+ return nm_assert_unreachable_val("unknown");
}
static const char *
-rfkill_state_to_desc(RfKillState rstate)
+nm_rfkill_state_to_string(NMRfkillState state)
{
- if (rstate == 0)
+ switch (state) {
+ case NM_RFKILL_STATE_UNBLOCKED:
return "unblocked";
- else if (rstate == 1)
+ case NM_RFKILL_STATE_SOFT_BLOCKED:
return "soft-blocked";
- else if (rstate == 2)
+ case NM_RFKILL_STATE_HARD_BLOCKED:
return "hard-blocked";
- return "unknown";
+ }
+ return nm_assert_unreachable_val("unknown");
}
static Killswitch *
-killswitch_new(struct udev_device *device, RfKillType rtype)
+killswitch_new(struct udev_device *device, NMRfkillType rtype)
{
Killswitch *ks;
- struct udev_device *parent = NULL, *grandparent = NULL;
- const char *driver, *subsys, *parent_subsys = NULL;
-
- ks = g_malloc0(sizeof(Killswitch));
- ks->name = g_strdup(udev_device_get_sysname(device));
- ks->seqnum = udev_device_get_seqnum(device);
- ks->path = g_strdup(udev_device_get_syspath(device));
- ks->rtype = rtype;
+ struct udev_device *parent = NULL;
+ struct udev_device *grandparent = NULL;
+ const char *driver;
+ const char *subsys;
+ const char *parent_subsys = NULL;
+ gboolean platform;
driver = udev_device_get_property_value(device, "DRIVER");
subsys = udev_device_get_subsystem(device);
@@ -116,14 +121,23 @@ killswitch_new(struct udev_device *device, RfKillType rtype)
driver = udev_device_get_property_value(grandparent, "DRIVER");
}
}
-
if (!driver)
driver = "(unknown)";
- ks->driver = g_strdup(driver);
- if (g_strcmp0(subsys, "platform") == 0 || g_strcmp0(parent_subsys, "platform") == 0
- || g_strcmp0(subsys, "acpi") == 0 || g_strcmp0(parent_subsys, "acpi") == 0)
- ks->platform = TRUE;
+ platform = FALSE;
+ if (nm_streq0(subsys, "platform") || nm_streq0(parent_subsys, "platform")
+ || nm_streq0(subsys, "acpi") || nm_streq0(parent_subsys, "acpi"))
+ platform = TRUE;
+
+ ks = g_slice_new(Killswitch);
+ *ks = (Killswitch){
+ .name = g_strdup(udev_device_get_sysname(device)),
+ .seqnum = udev_device_get_seqnum(device),
+ .path = g_strdup(udev_device_get_syspath(device)),
+ .rtype = rtype,
+ .driver = g_strdup(driver),
+ .platform = platform,
+ };
return ks;
}
@@ -131,54 +145,51 @@ killswitch_new(struct udev_device *device, RfKillType rtype)
static void
killswitch_destroy(Killswitch *ks)
{
- g_return_if_fail(ks != NULL);
-
+ c_list_unlink_stale(&ks->killswitch_lst);
g_free(ks->name);
g_free(ks->path);
g_free(ks->driver);
- memset(ks, 0, sizeof(Killswitch));
- g_free(ks);
+ nm_g_slice_free(ks);
}
-static RfKillState
+static NMRfkillState
sysfs_state_to_nm_state(int sysfs_state)
{
switch (sysfs_state) {
case 0:
- return RFKILL_SOFT_BLOCKED;
+ return NM_RFKILL_STATE_SOFT_BLOCKED;
case 1:
- return RFKILL_UNBLOCKED;
+ return NM_RFKILL_STATE_UNBLOCKED;
case 2:
- return RFKILL_HARD_BLOCKED;
+ return NM_RFKILL_STATE_HARD_BLOCKED;
default:
nm_log_warn(LOGD_RFKILL, "unhandled rfkill state %d", sysfs_state);
break;
}
- return RFKILL_UNBLOCKED;
+ return NM_RFKILL_STATE_UNBLOCKED;
}
static void
recheck_killswitches(NMRfkillManager *self)
{
NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE(self);
- GSList *iter;
- RfKillState poll_states[RFKILL_TYPE_MAX];
- RfKillState platform_states[RFKILL_TYPE_MAX];
- gboolean platform_checked[RFKILL_TYPE_MAX];
+ Killswitch *ks;
+ NMRfkillState poll_states[NM_RFKILL_TYPE_MAX];
+ NMRfkillState platform_states[NM_RFKILL_TYPE_MAX];
+ gboolean platform_checked[NM_RFKILL_TYPE_MAX];
int i;
/* Default state is unblocked */
- for (i = 0; i < RFKILL_TYPE_MAX; i++) {
- poll_states[i] = RFKILL_UNBLOCKED;
- platform_states[i] = RFKILL_UNBLOCKED;
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++) {
+ poll_states[i] = NM_RFKILL_STATE_UNBLOCKED;
+ platform_states[i] = NM_RFKILL_STATE_UNBLOCKED;
platform_checked[i] = FALSE;
}
/* Poll the states of all killswitches */
- for (iter = priv->killswitches; iter; iter = g_slist_next(iter)) {
- Killswitch *ks = iter->data;
+ c_list_for_each_entry (ks, &priv->killswitch_lst_head, killswitch_lst) {
struct udev_device *device;
- RfKillState dev_state;
+ NMRfkillState dev_state;
int sysfs_state;
device = udev_device_new_from_subsystem_sysname(nm_udev_client_get_udev(priv->udev_client),
@@ -196,7 +207,7 @@ recheck_killswitches(NMRfkillManager *self)
nm_log_dbg(LOGD_RFKILL,
"%s rfkill%s switch %s state now %d/%u",
- rfkill_type_to_desc(ks->rtype),
+ nm_rfkill_type_to_string(ks->rtype),
ks->platform ? " platform" : "",
ks->name,
sysfs_state,
@@ -210,27 +221,32 @@ recheck_killswitches(NMRfkillManager *self)
if (dev_state > platform_states[ks->rtype])
platform_states[ks->rtype] = dev_state;
}
+
udev_device_unref(device);
}
/* Log and emit change signal for final rfkill states */
- for (i = 0; i < RFKILL_TYPE_MAX; i++) {
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++) {
if (platform_checked[i] == TRUE) {
/* blocked platform switch state overrides device state, otherwise
* let the device state stand. (bgo #655773)
*/
- if (platform_states[i] != RFKILL_UNBLOCKED)
+ if (platform_states[i] != NM_RFKILL_STATE_UNBLOCKED)
poll_states[i] = platform_states[i];
}
if (poll_states[i] != priv->rfkill_states[i]) {
nm_log_dbg(LOGD_RFKILL,
"%s rfkill state now '%s'",
- rfkill_type_to_desc(i),
- rfkill_state_to_desc(poll_states[i]));
+ nm_rfkill_type_to_string(i),
+ nm_rfkill_state_to_string(poll_states[i]));
priv->rfkill_states[i] = poll_states[i];
- g_signal_emit(self, signals[RFKILL_CHANGED], 0, i, priv->rfkill_states[i]);
+ g_signal_emit(self,
+ signals[RFKILL_CHANGED],
+ 0,
+ (guint) i,
+ (guint) priv->rfkill_states[i]);
}
}
}
@@ -239,52 +255,48 @@ static Killswitch *
killswitch_find_by_name(NMRfkillManager *self, const char *name)
{
NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE(self);
- GSList *iter;
-
- g_return_val_if_fail(name != NULL, NULL);
+ Killswitch *ks;
- for (iter = priv->killswitches; iter; iter = g_slist_next(iter)) {
- Killswitch *candidate = iter->data;
+ nm_assert(name);
- if (!strcmp(name, candidate->name))
- return candidate;
+ c_list_for_each_entry (ks, &priv->killswitch_lst_head, killswitch_lst) {
+ if (nm_streq(name, ks->name))
+ return ks;
}
return NULL;
}
-static RfKillType
+static NMRfkillType
rfkill_type_to_enum(const char *str)
{
- g_return_val_if_fail(str != NULL, RFKILL_TYPE_UNKNOWN);
-
- if (!strcmp(str, "wlan"))
- return RFKILL_TYPE_WLAN;
- else if (!strcmp(str, "wwan"))
- return RFKILL_TYPE_WWAN;
+ if (str) {
+ if (nm_streq(str, "wlan"))
+ return NM_RFKILL_TYPE_WLAN;
+ if (nm_streq(str, "wwan"))
+ return NM_RFKILL_TYPE_WWAN;
+ }
- return RFKILL_TYPE_UNKNOWN;
+ return NM_RFKILL_TYPE_UNKNOWN;
}
static void
add_one_killswitch(NMRfkillManager *self, struct udev_device *device)
{
NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE(self);
- const char *str_type;
- RfKillType rtype;
+ NMRfkillType rtype;
Killswitch *ks;
- str_type = udev_device_get_property_value(device, "RFKILL_TYPE");
- rtype = rfkill_type_to_enum(str_type);
- if (rtype == RFKILL_TYPE_UNKNOWN)
+ rtype = rfkill_type_to_enum(udev_device_get_property_value(device, "RFKILL_TYPE"));
+ if (rtype == NM_RFKILL_TYPE_UNKNOWN)
return;
- ks = killswitch_new(device, rtype);
- priv->killswitches = g_slist_prepend(priv->killswitches, ks);
+ ks = killswitch_new(device, rtype);
+ c_list_link_front(&priv->killswitch_lst_head, &ks->killswitch_lst);
nm_log_info(LOGD_RFKILL,
"%s: found %s radio killswitch (at %s) (%sdriver %s)",
ks->name,
- rfkill_type_to_desc(rtype),
+ nm_rfkill_type_to_string(rtype),
ks->path,
ks->platform ? "platform " : "",
ks->driver ?: "<unknown>");
@@ -297,6 +309,7 @@ rfkill_add(NMRfkillManager *self, struct udev_device *device)
g_return_if_fail(device != NULL);
name = udev_device_get_sysname(device);
+
g_return_if_fail(name != NULL);
if (!killswitch_find_by_name(self, name))
@@ -307,21 +320,20 @@ static void
rfkill_remove(NMRfkillManager *self, struct udev_device *device)
{
NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE(self);
- GSList *iter;
+ Killswitch *ks;
const char *name;
g_return_if_fail(device != NULL);
+
name = udev_device_get_sysname(device);
- g_return_if_fail(name != NULL);
- for (iter = priv->killswitches; iter; iter = g_slist_next(iter)) {
- Killswitch *ks = iter->data;
+ g_return_if_fail(name != NULL);
- if (!strcmp(ks->name, name)) {
+ c_list_for_each_entry (ks, &priv->killswitch_lst_head, killswitch_lst) {
+ if (nm_streq(ks->name, name)) {
nm_log_info(LOGD_RFKILL, "radio killswitch %s disappeared", ks->path);
- priv->killswitches = g_slist_remove(priv->killswitches, ks);
killswitch_destroy(ks);
- break;
+ return;
}
}
}
@@ -339,16 +351,16 @@ handle_uevent(NMUdevClient *client, struct udev_device *device, gpointer user_da
/* A bit paranoid */
subsys = udev_device_get_subsystem(device);
- g_return_if_fail(!g_strcmp0(subsys, "rfkill"));
+ g_return_if_fail(nm_streq0(subsys, "rfkill"));
nm_log_dbg(LOGD_PLATFORM,
"udev rfkill event: action '%s' device '%s'",
action,
udev_device_get_sysname(device));
- if (!strcmp(action, "add"))
+ if (nm_streq(action, "add"))
rfkill_add(self, device);
- else if (!strcmp(action, "remove"))
+ else if (nm_streq(action, "remove"))
rfkill_remove(self, device);
recheck_killswitches(self);
@@ -364,8 +376,10 @@ nm_rfkill_manager_init(NMRfkillManager *self)
struct udev_list_entry *iter;
guint i;
- for (i = 0; i < RFKILL_TYPE_MAX; i++)
- priv->rfkill_states[i] = RFKILL_UNBLOCKED;
+ c_list_init(&priv->killswitch_lst_head);
+
+ for (i = 0; i < NM_RFKILL_TYPE_MAX; i++)
+ priv->rfkill_states[i] = NM_RFKILL_STATE_UNBLOCKED;
priv->udev_client = nm_udev_client_new(NM_MAKE_STRV("rfkill"), handle_uevent, self);
@@ -399,11 +413,10 @@ dispose(GObject *object)
{
NMRfkillManager *self = NM_RFKILL_MANAGER(object);
NMRfkillManagerPrivate *priv = NM_RFKILL_MANAGER_GET_PRIVATE(self);
+ Killswitch *ks;
- if (priv->killswitches) {
- g_slist_free_full(priv->killswitches, (GDestroyNotify) killswitch_destroy);
- priv->killswitches = NULL;
- }
+ while ((ks = c_list_first_entry(&priv->killswitch_lst_head, Killswitch, killswitch_lst)))
+ killswitch_destroy(ks);
priv->udev_client = nm_udev_client_destroy(priv->udev_client);
@@ -426,6 +439,6 @@ nm_rfkill_manager_class_init(NMRfkillManagerClass *klass)
NULL,
G_TYPE_NONE,
2,
- G_TYPE_UINT,
- G_TYPE_UINT);
+ G_TYPE_UINT /* NMRfkillType */,
+ G_TYPE_UINT /* NMRfkillState */);
}
diff --git a/src/core/nm-rfkill-manager.h b/src/core/nm-rfkill-manager.h
index d3f6634935..db1385ea6a 100644
--- a/src/core/nm-rfkill-manager.h
+++ b/src/core/nm-rfkill-manager.h
@@ -7,23 +7,25 @@
#ifndef __NM_RFKILL_MANAGER_H__
#define __NM_RFKILL_MANAGER_H__
-typedef enum { /*< skip >*/
- RFKILL_UNBLOCKED = 0,
- RFKILL_SOFT_BLOCKED = 1,
- RFKILL_HARD_BLOCKED = 2
-} RfKillState;
-
-typedef enum { /*< skip >*/
- RFKILL_TYPE_WLAN = 0,
- RFKILL_TYPE_WWAN = 1,
-
- /* UNKNOWN and MAX should always be 1 more than
- * the last rfkill type since RFKILL_TYPE_MAX is
+typedef enum {
+ NM_RFKILL_STATE_UNBLOCKED = 0,
+ NM_RFKILL_STATE_SOFT_BLOCKED = 1,
+ NM_RFKILL_STATE_HARD_BLOCKED = 2,
+} NMRfkillState;
+
+typedef enum {
+ NM_RFKILL_TYPE_WLAN = 0,
+ NM_RFKILL_TYPE_WWAN = 1,
+
+ /* UNKNOWN and MAX should always be 1 more than
+ * the last rfkill type since NM_RFKILL_TYPE_MAX is
* used as an array size.
*/
- RFKILL_TYPE_UNKNOWN, /* KEEP LAST */
- RFKILL_TYPE_MAX = RFKILL_TYPE_UNKNOWN
-} RfKillType;
+ NM_RFKILL_TYPE_UNKNOWN, /* KEEP LAST */
+ NM_RFKILL_TYPE_MAX = NM_RFKILL_TYPE_UNKNOWN,
+} NMRfkillType;
+
+const char *nm_rfkill_type_to_string(NMRfkillType rtype);
#define NM_TYPE_RFKILL_MANAGER (nm_rfkill_manager_get_type())
#define NM_RFKILL_MANAGER(obj) \
@@ -43,6 +45,6 @@ GType nm_rfkill_manager_get_type(void);
NMRfkillManager *nm_rfkill_manager_new(void);
-RfKillState nm_rfkill_manager_get_rfkill_state(NMRfkillManager *manager, RfKillType rtype);
+NMRfkillState nm_rfkill_manager_get_rfkill_state(NMRfkillManager *manager, NMRfkillType rtype);
#endif /* __NM_RFKILL_MANAGER_H__ */
diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c
index 9053d35173..864c97dd10 100644
--- a/src/core/platform/tests/test-common.c
+++ b/src/core/platform/tests/test-common.c
@@ -241,6 +241,7 @@ _nmtstp_platform_ip_addresses_assert(const char *filename,
if ((IS_IPv4 ? force_exact_4 : force_exact_6) && nm_g_ptr_array_len(plat_addrs) > 0) {
char sbuf[sizeof(_nm_utils_to_string_buffer)];
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("%s:%d: %u IPv%c addresses found on ifindex %d that should not be there (one "
"is %s)",
filename,
@@ -252,6 +253,7 @@ _nmtstp_platform_ip_addresses_assert(const char *filename,
NMP_OBJECT_TO_STRING_PUBLIC,
sbuf,
sizeof(sbuf)));
+ NM_PRAGMA_WARNING_REENABLE
}
}
}
@@ -580,6 +582,7 @@ _nmtstp_assert_ip4_route_exists(const char *file,
if (c != c_exists && c_exists != -1) {
char sbuf[NM_UTILS_INET_ADDRSTRLEN];
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("[%s:%u] %s(): The ip4 route %s/%d metric %u tos %u shall exist %u times, but "
"platform has it %u times",
file,
@@ -591,6 +594,7 @@ _nmtstp_assert_ip4_route_exists(const char *file,
tos,
c_exists,
c);
+ NM_PRAGMA_WARNING_REENABLE
}
return r;
@@ -673,6 +677,7 @@ _nmtstp_assert_ip6_route_exists(const char *file,
char s_src[NM_UTILS_INET_ADDRSTRLEN];
char s_network[NM_UTILS_INET_ADDRSTRLEN];
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("[%s:%u] %s(): The ip6 route %s/%d metric %u src %s/%d shall exist %u times, but "
"platform has it %u times",
file,
@@ -685,6 +690,7 @@ _nmtstp_assert_ip6_route_exists(const char *file,
src_plen,
c_exists,
c);
+ NM_PRAGMA_WARNING_REENABLE
}
return r;
diff --git a/src/core/platform/tests/test-platform-general.c b/src/core/platform/tests/test-platform-general.c
index 9629326aa3..6d156d2a87 100644
--- a/src/core/platform/tests/test-platform-general.c
+++ b/src/core/platform/tests/test-platform-general.c
@@ -731,15 +731,17 @@ test_platform_ip_address_pretty_sort_cmp(gconstpointer test_data)
&bin_len);
if (bin_len != ELM_SIZE * N_ADDRESSES || memcmp(addresses, bin_arr, bin_len) != 0) {
- char *addresses_str = nm_utils_bin2hexstr(addresses, ELM_SIZE * N_ADDRESSES, -1);
+ gs_free char *addresses_str = NULL;
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error(">>> test_platform_ip_address_pretty_sort_cmp() will fail:\n"
">>> addresses[%zu]: %s\n"
">>> expected [%zu]: %s\n",
ELM_SIZE * N_ADDRESSES,
- addresses_str,
+ (addresses_str = nm_utils_bin2hexstr(addresses, ELM_SIZE * N_ADDRESSES, -1)),
bin_len,
EXPECTED_BUFFER[TEST_DATA_I]);
+ NM_PRAGMA_WARNING_REENABLE
}
g_assert_cmpmem(addresses, ELM_SIZE * N_ADDRESSES, bin_arr, bin_len);
diff --git a/src/core/ppp/nm-ppp-manager.c b/src/core/ppp/nm-ppp-manager.c
index dd6b1bc7f0..213e3761cc 100644
--- a/src/core/ppp/nm-ppp-manager.c
+++ b/src/core/ppp/nm-ppp-manager.c
@@ -1246,7 +1246,7 @@ _ppp_manager_stop(NMPPPManager *self,
SIGTERM,
LOGD_PPP,
"pppd",
- 5000,
+ NM_SHUTDOWN_TIMEOUT_5000_MSEC,
_stop_child_cb,
handle);
diff --git a/src/core/settings/nm-secret-agent.c b/src/core/settings/nm-secret-agent.c
index b222bd5ced..a3df449739 100644
--- a/src/core/settings/nm-secret-agent.c
+++ b/src/core/settings/nm-secret-agent.c
@@ -511,7 +511,7 @@ nm_secret_agent_cancel_call(NMSecretAgent *self, NMSecretAgentCallId *call_id)
g_variant_new("(os)", call_id->path, call_id->setting_name),
G_VARIANT_TYPE("()"),
G_DBUS_CALL_FLAGS_NO_AUTO_START,
- NM_SHUTDOWN_TIMEOUT_MS,
+ NM_SHUTDOWN_TIMEOUT_1500_MSEC,
NULL, /* this operation is not cancellable. We rely on the timeout. */
_call_cancel_cb,
call_id);
diff --git a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index 7960ea2a9c..83e48b81b8 100644
--- a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
@@ -221,6 +221,7 @@ _assert_expected_content(NMConnection *connection, const char *filename, const c
success = g_file_set_contents(expected, content_written, len_written, &error);
nmtst_assert_success(success, error);
} else {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error(
"The content of \"%s\" (%zu) differs from \"%s\" (%zu). Set "
"NMTST_IFCFG_RH_UPDATE_EXPECTED=yes (or NM_TEST_REGENERATE=1) to update the files "
@@ -231,6 +232,7 @@ _assert_expected_content(NMConnection *connection, const char *filename, const c
len_expectd,
content_written,
content_expectd);
+ NM_PRAGMA_WARNING_REENABLE
}
}
}
diff --git a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
index b4c30df7d2..11a8e4169c 100644
--- a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
+++ b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
@@ -2635,8 +2635,11 @@ _escape_filename(gboolean with_extension, const char *filename, gboolean would_b
g_assert(esc && esc[0]);
g_assert(!strchr(esc, '/'));
- if (nm_keyfile_utils_ignore_filename(esc, with_extension))
+ if (nm_keyfile_utils_ignore_filename(esc, with_extension)) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("Escaping filename \"%s\" yielded \"%s\", but this is ignored", filename, esc);
+ NM_PRAGMA_WARNING_REENABLE
+ }
}
static void
diff --git a/src/core/tests/test-core.c b/src/core/tests/test-core.c
index f61d66d911..b4e1c4d5f3 100644
--- a/src/core/tests/test-core.c
+++ b/src/core/tests/test-core.c
@@ -2319,10 +2319,25 @@ test_machine_id_read(void)
char machine_id_str[33];
gpointer logstate;
+ /* This unit test checks our functions to read /etc/machine-id. As
+ * the path name is not configurable (and the test does not setup
+ * a chroot/mountns), we read the actual file from the system. That
+ * is ugly, as the test depends on the system where it's running.
+ *
+ * Still, better a bad test, than no test. Patch welcome to fix this
+ * shortcoming.
+ *
+ * Also, if you have a sufficiently broken system, the unit test fails.
+ * In particular, if the machine-id file exists but does not contain
+ * a valid ID. Just don't have that. Fix your system. */
+
logstate = nmtst_logging_disable(FALSE);
/* If you run this test as root, without a valid /etc/machine-id,
* the code will try to get the secret-key. That is a bit ugly,
- * but no real problem. */
+ * but no real problem.
+ *
+ * The real answer is: don't run our unit tests as root. That's
+ * not the way to do it. */
machine_id = nm_utils_machine_id_bin();
nmtst_logging_reenable(logstate);
@@ -2338,9 +2353,15 @@ test_machine_id_read(void)
* is invalid. Our machine-id is fake, and we have nothing to
* compare against. */
- /* NOTE: this test will fail, if you don't have /etc/machine-id,
- * but a valid "LOCALSTATEDIR/lib/dbus/machine-id" file.
- * Just don't do that. */
+ if (g_file_test(LOCALSTATEDIR "/lib/dbus/machine-id", G_FILE_TEST_EXISTS)) {
+ /* Hm. So systemd failed to read /etc/machine-id, but we may have the one from D-Bus.
+ * With LOCALSTATEDIR"/lib/dbus/machine-id", we don't really know whether we
+ * parsed that file. Assume we don't know and skip the test on this system. */
+ g_assert(!nm_utils_machine_id_is_fake());
+ return;
+ }
+
+ /* OK, in this case, our function should have generated a random machine ID. */
g_assert(nm_utils_machine_id_is_fake());
} else {
g_assert(!nm_utils_machine_id_is_fake());
diff --git a/src/libnm-client-impl/tests/test-libnm.c b/src/libnm-client-impl/tests/test-libnm.c
index 0f600a4a01..d3265e9fb4 100644
--- a/src/libnm-client-impl/tests/test-libnm.c
+++ b/src/libnm-client-impl/tests/test-libnm.c
@@ -2327,13 +2327,14 @@ _do_read_vpn_details_impl1(const char *file,
if (nm_streq(_expected[_i].key, _k)) \
break; \
} \
- if (_i >= _expected_len) \
+ if (_i >= _expected_len) { \
g_error("%s:%d: hash '%s' contains unexpected data key '%s' with value '%s'", \
file, \
line, \
G_STRINGIFY(hash), \
_k, \
_v); \
+ } \
} \
\
for (_i = 0; _i < _expected_len; _i++) { \
@@ -2342,7 +2343,7 @@ _do_read_vpn_details_impl1(const char *file,
g_assert(_d->key); \
g_assert(_d->val); \
_v = g_hash_table_lookup(_hash, _d->key); \
- if (!nm_streq0(_v, _d->val)) \
+ if (!nm_streq0(_v, _d->val)) { \
g_error("%s:%d: hash '%s' contains data key '%s' with value %s%s%s but we " \
"expected '%s'", \
file, \
@@ -2351,14 +2352,17 @@ _do_read_vpn_details_impl1(const char *file,
_d->key, \
NM_PRINT_FMT_QUOTE_STRING(_v), \
_d->val); \
+ } \
} \
\
g_assert_cmpint(g_hash_table_size(_hash), ==, _expected_len); \
} \
G_STMT_END
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
_assert_hash(data, expected_data, expected_data_len);
_assert_hash(secrets, expected_secrets, expected_secrets_len);
+ NM_PRAGMA_WARNING_REENABLE
#undef _assert_hash
return TRUE;
@@ -3049,10 +3053,12 @@ check_dbus_properties:
break;
p_expected_type++;
if (p_expected_type >= &expected_types[G_N_ELEMENTS(expected_types)]) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("D-Bus type \"%s\" is not implemented (in property %s.%s)",
(const char *) mpr->dbus_type,
mif->dbus_iface_name,
mpr->dbus_property_name);
+ NM_PRAGMA_WARNING_REENABLE
}
}
@@ -3151,6 +3157,7 @@ check_dbus_properties:
break;
}
if (p_expected_type_2 >= &expected_types[G_N_ELEMENTS(expected_types)]) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("D-Bus property \"%s.%s\" (type \"%s\") maps to property \"%s\", "
"but that has an unexpected property type %s (expected %s)",
mif->dbus_iface_name,
@@ -3159,6 +3166,7 @@ check_dbus_properties:
pspec->name,
g_type_name(pspec->value_type),
g_type_name(p_expected_type->default_gtype));
+ NM_PRAGMA_WARNING_REENABLE
}
}
diff --git a/src/libnm-client-public/nm-client.h b/src/libnm-client-public/nm-client.h
index ac615b5716..eb97e4d4fb 100644
--- a/src/libnm-client-public/nm-client.h
+++ b/src/libnm-client-public/nm-client.h
@@ -27,9 +27,9 @@ G_BEGIN_DECLS
*
* Since: 1.24
*/
-typedef enum { /*< flags >*/
- NM_CLIENT_INSTANCE_FLAGS_NONE = 0,
- NM_CLIENT_INSTANCE_FLAGS_NO_AUTO_FETCH_PERMISSIONS = 1,
+typedef enum /*< flags >*/ {
+ NM_CLIENT_INSTANCE_FLAGS_NONE = 0,
+ NM_CLIENT_INSTANCE_FLAGS_NO_AUTO_FETCH_PERMISSIONS = 1,
} NMClientInstanceFlags;
#define NM_TYPE_CLIENT (nm_client_get_type())
diff --git a/src/libnm-client-test/nm-test-utils-impl.c b/src/libnm-client-test/nm-test-utils-impl.c
index ef98d9c221..ad642d2530 100644
--- a/src/libnm-client-test/nm-test-utils-impl.c
+++ b/src/libnm-client-test/nm-test-utils-impl.c
@@ -159,7 +159,9 @@ nmtstc_service_init(void)
* via pygobject. */
return NULL;
}
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("test service %s exited with error code %d", NMTSTC_NM_SERVICE, data.exit_code);
+ NM_PRAGMA_WARNING_REENABLE
}
}
diff --git a/src/libnm-core-impl/meson.build b/src/libnm-core-impl/meson.build
index 2e1f175177..3ee044fe10 100644
--- a/src/libnm-core-impl/meson.build
+++ b/src/libnm-core-impl/meson.build
@@ -24,11 +24,21 @@ if crypto_gnutls_dep.found()
)
endif
+libnm_crypto_null = static_library(
+ 'nm-crypto-null',
+ sources: 'nm-crypto-null.c',
+ dependencies: [
+ libnm_core_public_dep,
+ ],
+)
+
if crypto == 'nss'
libnm_crypto = libnm_crypto_nss
-else
- assert(crypto == 'gnutls', 'Unexpected setting "crypto=' + crypto + '"')
+elif crypto == 'gnutls'
libnm_crypto = libnm_crypto_gnutls
+else
+ assert(crypto == 'null', 'Unexpected setting "crypto=' + crypto + '"')
+ libnm_crypto = libnm_crypto_null
endif
libnm_core_settings_sources = files(
diff --git a/src/libnm-core-impl/nm-crypto-null.c b/src/libnm-core-impl/nm-crypto-null.c
new file mode 100644
index 0000000000..2f072257ec
--- /dev/null
+++ b/src/libnm-core-impl/nm-crypto-null.c
@@ -0,0 +1,104 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Christian Eggers <ceggers@arri.de>
+ * Copyright (C) 2020 - 2022 ARRI Lighting
+ */
+
+#include "libnm-glib-aux/nm-default-glib-i18n-lib.h"
+
+#include "nm-crypto-impl.h"
+
+#include "libnm-glib-aux/nm-secret-utils.h"
+#include "nm-errors.h"
+
+/*****************************************************************************/
+
+gboolean
+_nm_crypto_init(GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return FALSE;
+}
+
+guint8 *
+_nmtst_crypto_decrypt(NMCryptoCipherType cipher,
+ const guint8 *data,
+ gsize data_len,
+ const guint8 *iv,
+ gsize iv_len,
+ const guint8 *key,
+ gsize key_len,
+ gsize *out_len,
+ GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return NULL;
+}
+
+guint8 *
+_nmtst_crypto_encrypt(NMCryptoCipherType cipher,
+ const guint8 *data,
+ gsize data_len,
+ const guint8 *iv,
+ gsize iv_len,
+ const guint8 *key,
+ gsize key_len,
+ gsize *out_len,
+ GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return NULL;
+}
+
+gboolean
+_nm_crypto_verify_x509(const guint8 *data, gsize len, GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return FALSE;
+}
+
+gboolean
+_nm_crypto_verify_pkcs12(const guint8 *data, gsize data_len, const char *password, GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return FALSE;
+}
+
+gboolean
+_nm_crypto_verify_pkcs8(const guint8 *data,
+ gsize data_len,
+ gboolean is_encrypted,
+ const char *password,
+ GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return FALSE;
+}
+
+gboolean
+_nm_crypto_randomize(void *buffer, gsize buffer_len, GError **error)
+{
+ g_set_error(error,
+ NM_CRYPTO_ERROR,
+ NM_CRYPTO_ERROR_FAILED,
+ _("Compiled without crypto support."));
+ return FALSE;
+}
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 736110049b..86ebefd734 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -71,32 +71,32 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingConnection,
PROP_MUD_URL, );
typedef struct {
- GArray *permissions;
- GArray *secondaries;
- char *id;
- char *uuid;
- char *stable_id;
- char *interface_name;
- char *type;
- char *master;
- char *slave_type;
- char *zone;
- char *mud_url;
- guint64 timestamp;
- int autoconnect_slaves;
- int metered;
- gint32 autoconnect_priority;
- gint32 autoconnect_retries;
- gint32 multi_connect;
- gint32 auth_retries;
- gint32 mdns;
- gint32 llmnr;
- gint32 dns_over_tls;
- gint32 wait_device_timeout;
- gint32 lldp;
- guint32 gateway_ping_timeout;
- bool autoconnect;
- bool read_only;
+ GArray *permissions;
+ NMValueStrv secondaries;
+ char *id;
+ char *uuid;
+ char *stable_id;
+ char *interface_name;
+ char *type;
+ char *master;
+ char *slave_type;
+ char *zone;
+ char *mud_url;
+ guint64 timestamp;
+ int autoconnect_slaves;
+ int metered;
+ gint32 autoconnect_priority;
+ gint32 autoconnect_retries;
+ gint32 multi_connect;
+ gint32 auth_retries;
+ gint32 mdns;
+ gint32 llmnr;
+ gint32 dns_over_tls;
+ gint32 wait_device_timeout;
+ gint32 lldp;
+ guint32 gateway_ping_timeout;
+ bool autoconnect;
+ bool read_only;
} NMSettingConnectionPrivate;
/**
@@ -757,7 +757,7 @@ nm_setting_connection_get_autoconnect_slaves(NMSettingConnection *setting)
GArray *
_nm_setting_connection_get_secondaries(NMSettingConnection *setting)
{
- return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->secondaries;
+ return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->secondaries.arr;
}
/**
@@ -771,7 +771,7 @@ nm_setting_connection_get_num_secondaries(NMSettingConnection *setting)
{
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
- return nm_g_array_len(NM_SETTING_CONNECTION_GET_PRIVATE(setting)->secondaries);
+ return nm_g_array_len(NM_SETTING_CONNECTION_GET_PRIVATE(setting)->secondaries.arr);
}
/**
@@ -794,14 +794,14 @@ nm_setting_connection_get_secondary(NMSettingConnection *setting, guint32 idx)
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
- secondaries_len = nm_g_array_len(priv->secondaries);
+ secondaries_len = nm_g_array_len(priv->secondaries.arr);
if (idx >= secondaries_len) {
/* access one past the length is OK. */
g_return_val_if_fail(idx == secondaries_len, NULL);
return NULL;
}
- return nm_strvarray_get_idx(priv->secondaries, idx);
+ return nm_strvarray_get_idx(priv->secondaries.arr, idx);
}
/**
@@ -841,10 +841,10 @@ nm_setting_connection_add_secondary(NMSettingConnection *setting, const char *se
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
- if (nm_strvarray_find_first(priv->secondaries, sec_uuid) >= 0)
+ if (nm_strvarray_find_first(priv->secondaries.arr, sec_uuid) >= 0)
return FALSE;
- nm_strvarray_add(nm_strvarray_ensure(&priv->secondaries), sec_uuid);
+ nm_strvarray_add(nm_strvarray_ensure(&priv->secondaries.arr), sec_uuid);
_notify(setting, PROP_SECONDARIES);
return TRUE;
}
@@ -865,9 +865,9 @@ nm_setting_connection_remove_secondary(NMSettingConnection *setting, guint32 idx
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
- g_return_if_fail(idx < nm_g_array_len(priv->secondaries));
+ g_return_if_fail(idx < nm_g_array_len(priv->secondaries.arr));
- g_array_remove_index(priv->secondaries, idx);
+ g_array_remove_index(priv->secondaries.arr, idx);
_notify(setting, PROP_SECONDARIES);
}
@@ -890,7 +890,7 @@ nm_setting_connection_remove_secondary_by_value(NMSettingConnection *setting, co
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
- if (nm_strvarray_remove_first(priv->secondaries, sec_uuid)) {
+ if (nm_strvarray_remove_first(priv->secondaries.arr, sec_uuid)) {
_notify(setting, PROP_SECONDARIES);
return TRUE;
}
@@ -1524,7 +1524,7 @@ after_interface_name:
return NM_SETTING_VERIFY_NORMALIZABLE;
}
- if (!_nm_setting_connection_verify_secondaries(priv->secondaries, error))
+ if (!_nm_setting_connection_verify_secondaries(priv->secondaries.arr, error))
return NM_SETTING_VERIFY_NORMALIZABLE;
return TRUE;
@@ -1637,9 +1637,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_TIMESTAMP:
g_value_set_uint64(value, nm_setting_connection_get_timestamp(setting));
break;
- case PROP_SECONDARIES:
- g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(priv->secondaries, NULL));
- break;
default:
_nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
@@ -1675,9 +1672,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
case PROP_TIMESTAMP:
priv->timestamp = g_value_get_uint64(value);
break;
- case PROP_SECONDARIES:
- nm_strvarray_set_strv(&priv->secondaries, g_value_get_boxed(value));
- break;
default:
_nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
@@ -1709,7 +1703,7 @@ finalize(GObject *object)
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(object);
nm_clear_pointer(&priv->permissions, g_array_unref);
- nm_clear_pointer(&priv->secondaries, g_array_unref);
+ nm_clear_pointer(&priv->secondaries.arr, g_array_unref);
G_OBJECT_CLASS(nm_setting_connection_parent_class)->finalize(object);
}
@@ -2230,12 +2224,13 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* together with this connection.
* ---end---
*/
- obj_properties[PROP_SECONDARIES] = g_param_spec_boxed(
- NM_SETTING_CONNECTION_SECONDARIES,
- "",
- "",
- G_TYPE_STRV,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_strv(properties_override,
+ obj_properties,
+ NM_SETTING_CONNECTION_SECONDARIES,
+ PROP_SECONDARIES,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingConnectionPrivate,
+ secondaries);
/**
* NMSettingConnection:gateway-ping-timeout:
diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c
index 52aa651570..46824819dd 100644
--- a/src/libnm-core-impl/nm-setting-ip-config.c
+++ b/src/libnm-core-impl/nm-setting-ip-config.c
@@ -2684,7 +2684,7 @@ nm_ip_routing_rule_validate(const NMIPRoutingRule *self, GError **error)
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("invalid priority"));
+ _("missing priority"));
return FALSE;
}
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index 0ddffee582..f0e9fdf8d3 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -32,11 +32,11 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingMatch,
* Since: 1.14
*/
struct _NMSettingMatch {
- NMSetting parent;
- GArray *interface_name;
- GArray *kernel_command_line;
- GArray *driver;
- GArray *path;
+ NMSetting parent;
+ NMValueStrv interface_name;
+ NMValueStrv kernel_command_line;
+ NMValueStrv driver;
+ NMValueStrv path;
};
struct _NMSettingMatchClass {
@@ -60,7 +60,7 @@ nm_setting_match_get_num_interface_names(NMSettingMatch *setting)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
- return nm_g_array_len(setting->interface_name);
+ return nm_g_array_len(setting->interface_name.arr);
}
/**
@@ -77,10 +77,11 @@ nm_setting_match_get_interface_name(NMSettingMatch *setting, int idx)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- g_return_val_if_fail(setting->interface_name && idx >= 0 && idx < setting->interface_name->len,
+ g_return_val_if_fail(setting->interface_name.arr && idx >= 0
+ && idx < setting->interface_name.arr->len,
NULL);
- return nm_strvarray_get_idx(setting->interface_name, idx);
+ return nm_strvarray_get_idx(setting->interface_name.arr, idx);
}
/**
@@ -98,7 +99,7 @@ nm_setting_match_add_interface_name(NMSettingMatch *setting, const char *interfa
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
g_return_if_fail(interface_name);
- nm_strvarray_add(nm_strvarray_ensure(&setting->interface_name), interface_name);
+ nm_strvarray_add(nm_strvarray_ensure(&setting->interface_name.arr), interface_name);
_notify(setting, PROP_INTERFACE_NAME);
}
@@ -116,9 +117,10 @@ nm_setting_match_remove_interface_name(NMSettingMatch *setting, int idx)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- g_return_if_fail(setting->interface_name && idx >= 0 && idx < setting->interface_name->len);
+ g_return_if_fail(setting->interface_name.arr && idx >= 0
+ && idx < setting->interface_name.arr->len);
- g_array_remove_index(setting->interface_name, idx);
+ g_array_remove_index(setting->interface_name.arr, idx);
_notify(setting, PROP_INTERFACE_NAME);
}
@@ -139,7 +141,7 @@ nm_setting_match_remove_interface_name_by_value(NMSettingMatch *setting, const c
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
g_return_val_if_fail(interface_name, FALSE);
- if (nm_strvarray_remove_first(setting->interface_name, interface_name)) {
+ if (nm_strvarray_remove_first(setting->interface_name.arr, interface_name)) {
_notify(setting, PROP_INTERFACE_NAME);
return TRUE;
}
@@ -160,8 +162,8 @@ nm_setting_match_clear_interface_names(NMSettingMatch *setting)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- if (nm_g_array_len(setting->interface_name) != 0) {
- nm_clear_pointer(&setting->interface_name, g_array_unref);
+ if (nm_g_array_len(setting->interface_name.arr) != 0) {
+ nm_clear_pointer(&setting->interface_name.arr, g_array_unref);
_notify(setting, PROP_INTERFACE_NAME);
}
}
@@ -185,7 +187,7 @@ nm_setting_match_get_interface_names(NMSettingMatch *setting, guint *length)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- return nm_strvarray_get_strv(&setting->interface_name, length);
+ return nm_strvarray_get_strv(&setting->interface_name.arr, length);
}
/*****************************************************************************/
@@ -203,7 +205,7 @@ nm_setting_match_get_num_kernel_command_lines(NMSettingMatch *setting)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
- return nm_g_array_len(setting->kernel_command_line);
+ return nm_g_array_len(setting->kernel_command_line.arr);
}
/**
@@ -220,10 +222,11 @@ nm_setting_match_get_kernel_command_line(NMSettingMatch *setting, guint idx)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- g_return_val_if_fail(setting->kernel_command_line && idx < setting->kernel_command_line->len,
+ g_return_val_if_fail(setting->kernel_command_line.arr
+ && idx < setting->kernel_command_line.arr->len,
NULL);
- return nm_strvarray_get_idx(setting->kernel_command_line, idx);
+ return nm_strvarray_get_idx(setting->kernel_command_line.arr, idx);
}
/**
@@ -241,7 +244,7 @@ nm_setting_match_add_kernel_command_line(NMSettingMatch *setting, const char *ke
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
g_return_if_fail(kernel_command_line);
- nm_strvarray_add(nm_strvarray_ensure(&setting->kernel_command_line), kernel_command_line);
+ nm_strvarray_add(nm_strvarray_ensure(&setting->kernel_command_line.arr), kernel_command_line);
_notify(setting, PROP_KERNEL_COMMAND_LINE);
}
@@ -259,9 +262,10 @@ nm_setting_match_remove_kernel_command_line(NMSettingMatch *setting, guint idx)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- g_return_if_fail(setting->kernel_command_line && idx < setting->kernel_command_line->len);
+ g_return_if_fail(setting->kernel_command_line.arr
+ && idx < setting->kernel_command_line.arr->len);
- g_array_remove_index(setting->kernel_command_line, idx);
+ g_array_remove_index(setting->kernel_command_line.arr, idx);
_notify(setting, PROP_KERNEL_COMMAND_LINE);
}
@@ -283,7 +287,7 @@ nm_setting_match_remove_kernel_command_line_by_value(NMSettingMatch *setting,
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
g_return_val_if_fail(kernel_command_line, FALSE);
- if (nm_strvarray_remove_first(setting->kernel_command_line, kernel_command_line)) {
+ if (nm_strvarray_remove_first(setting->kernel_command_line.arr, kernel_command_line)) {
_notify(setting, PROP_KERNEL_COMMAND_LINE);
return TRUE;
}
@@ -304,8 +308,8 @@ nm_setting_match_clear_kernel_command_lines(NMSettingMatch *setting)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- if (nm_g_array_len(setting->kernel_command_line) != 0) {
- nm_clear_pointer(&setting->kernel_command_line, g_array_unref);
+ if (nm_g_array_len(setting->kernel_command_line.arr) != 0) {
+ nm_clear_pointer(&setting->kernel_command_line.arr, g_array_unref);
_notify(setting, PROP_KERNEL_COMMAND_LINE);
}
}
@@ -326,7 +330,7 @@ nm_setting_match_get_kernel_command_lines(NMSettingMatch *setting, guint *length
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- return nm_strvarray_get_strv(&setting->kernel_command_line, length);
+ return nm_strvarray_get_strv(&setting->kernel_command_line.arr, length);
}
/*****************************************************************************/
@@ -344,7 +348,7 @@ nm_setting_match_get_num_drivers(NMSettingMatch *setting)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
- return nm_g_array_len(setting->driver);
+ return nm_g_array_len(setting->driver.arr);
}
/**
@@ -361,9 +365,9 @@ nm_setting_match_get_driver(NMSettingMatch *setting, guint idx)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- g_return_val_if_fail(setting->driver && idx < setting->driver->len, NULL);
+ g_return_val_if_fail(setting->driver.arr && idx < setting->driver.arr->len, NULL);
- return nm_strvarray_get_idx(setting->driver, idx);
+ return nm_strvarray_get_idx(setting->driver.arr, idx);
}
/**
@@ -381,7 +385,7 @@ nm_setting_match_add_driver(NMSettingMatch *setting, const char *driver)
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
g_return_if_fail(driver);
- nm_strvarray_add(nm_strvarray_ensure(&setting->driver), driver);
+ nm_strvarray_add(nm_strvarray_ensure(&setting->driver.arr), driver);
_notify(setting, PROP_DRIVER);
}
@@ -399,9 +403,9 @@ nm_setting_match_remove_driver(NMSettingMatch *setting, guint idx)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- g_return_if_fail(setting->driver && idx < setting->driver->len);
+ g_return_if_fail(setting->driver.arr && idx < setting->driver.arr->len);
- g_array_remove_index(setting->driver, idx);
+ g_array_remove_index(setting->driver.arr, idx);
_notify(setting, PROP_DRIVER);
}
@@ -422,7 +426,7 @@ nm_setting_match_remove_driver_by_value(NMSettingMatch *setting, const char *dri
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
g_return_val_if_fail(driver, FALSE);
- if (nm_strvarray_remove_first(setting->driver, driver)) {
+ if (nm_strvarray_remove_first(setting->driver.arr, driver)) {
_notify(setting, PROP_DRIVER);
return TRUE;
}
@@ -443,8 +447,8 @@ nm_setting_match_clear_drivers(NMSettingMatch *setting)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- if (nm_g_array_len(setting->driver) != 0) {
- nm_clear_pointer(&setting->driver, g_array_unref);
+ if (nm_g_array_len(setting->driver.arr) != 0) {
+ nm_clear_pointer(&setting->driver.arr, g_array_unref);
_notify(setting, PROP_DRIVER);
}
}
@@ -465,7 +469,7 @@ nm_setting_match_get_drivers(NMSettingMatch *setting, guint *length)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- return nm_strvarray_get_strv(&setting->driver, length);
+ return nm_strvarray_get_strv(&setting->driver.arr, length);
}
/*****************************************************************************/
@@ -483,7 +487,7 @@ nm_setting_match_get_num_paths(NMSettingMatch *setting)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
- return nm_g_array_len(setting->path);
+ return nm_g_array_len(setting->path.arr);
}
/**
@@ -500,9 +504,9 @@ nm_setting_match_get_path(NMSettingMatch *setting, guint idx)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- g_return_val_if_fail(setting->path && idx < setting->path->len, NULL);
+ g_return_val_if_fail(setting->path.arr && idx < setting->path.arr->len, NULL);
- return nm_strvarray_get_idx(setting->path, idx);
+ return nm_strvarray_get_idx(setting->path.arr, idx);
}
/**
@@ -520,7 +524,7 @@ nm_setting_match_add_path(NMSettingMatch *setting, const char *path)
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
g_return_if_fail(path);
- nm_strvarray_add(nm_strvarray_ensure(&setting->path), path);
+ nm_strvarray_add(nm_strvarray_ensure(&setting->path.arr), path);
_notify(setting, PROP_PATH);
}
@@ -538,9 +542,9 @@ nm_setting_match_remove_path(NMSettingMatch *setting, guint idx)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- g_return_if_fail(setting->path && idx < setting->path->len);
+ g_return_if_fail(setting->path.arr && idx < setting->path.arr->len);
- g_array_remove_index(setting->path, idx);
+ g_array_remove_index(setting->path.arr, idx);
_notify(setting, PROP_PATH);
}
@@ -561,7 +565,7 @@ nm_setting_match_remove_path_by_value(NMSettingMatch *setting, const char *path)
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
g_return_val_if_fail(path, FALSE);
- if (nm_strvarray_remove_first(setting->path, path)) {
+ if (nm_strvarray_remove_first(setting->path.arr, path)) {
_notify(setting, PROP_PATH);
return TRUE;
}
@@ -582,8 +586,8 @@ nm_setting_match_clear_paths(NMSettingMatch *setting)
{
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
- if (nm_g_array_len(setting->path) != 0) {
- nm_clear_pointer(&setting->path, g_array_unref);
+ if (nm_g_array_len(setting->path.arr) != 0) {
+ nm_clear_pointer(&setting->path.arr, g_array_unref);
_notify(setting, PROP_PATH);
}
}
@@ -604,58 +608,7 @@ nm_setting_match_get_paths(NMSettingMatch *setting, guint *length)
{
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
- return nm_strvarray_get_strv(&setting->path, length);
-}
-
-/*****************************************************************************/
-
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingMatch *self = NM_SETTING_MATCH(object);
-
- switch (prop_id) {
- case PROP_INTERFACE_NAME:
- g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->interface_name, NULL));
- break;
- case PROP_KERNEL_COMMAND_LINE:
- g_value_take_boxed(value,
- nm_strvarray_get_strv_non_empty_dup(self->kernel_command_line, NULL));
- break;
- case PROP_DRIVER:
- g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->driver, NULL));
- break;
- case PROP_PATH:
- g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->path, NULL));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingMatch *self = NM_SETTING_MATCH(object);
-
- switch (prop_id) {
- case PROP_INTERFACE_NAME:
- nm_strvarray_set_strv(&self->interface_name, g_value_get_boxed(value));
- break;
- case PROP_KERNEL_COMMAND_LINE:
- nm_strvarray_set_strv(&self->kernel_command_line, g_value_get_boxed(value));
- break;
- case PROP_DRIVER:
- nm_strvarray_set_strv(&self->driver, g_value_get_boxed(value));
- break;
- case PROP_PATH:
- nm_strvarray_set_strv(&self->path, g_value_get_boxed(value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
+ return nm_strvarray_get_strv(&setting->path.arr, length);
}
/*****************************************************************************/
@@ -698,9 +651,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
NMSettingMatch *self = NM_SETTING_MATCH(setting);
guint i;
- if (self->interface_name) {
- for (i = 0; i < self->interface_name->len; i++) {
- if (nm_str_is_empty(nm_strvarray_get_idx(self->interface_name, i))) {
+ if (self->interface_name.arr) {
+ for (i = 0; i < self->interface_name.arr->len; i++) {
+ if (nm_str_is_empty(nm_strvarray_get_idx(self->interface_name.arr, i))) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -714,9 +667,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
}
}
- if (self->kernel_command_line) {
- for (i = 0; i < self->kernel_command_line->len; i++) {
- if (nm_str_is_empty(nm_strvarray_get_idx(self->kernel_command_line, i))) {
+ if (self->kernel_command_line.arr) {
+ for (i = 0; i < self->kernel_command_line.arr->len; i++) {
+ if (nm_str_is_empty(nm_strvarray_get_idx(self->kernel_command_line.arr, i))) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -730,9 +683,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
}
}
- if (self->driver) {
- for (i = 0; i < self->driver->len; i++) {
- if (nm_str_is_empty(nm_strvarray_get_idx(self->driver, i))) {
+ if (self->driver.arr) {
+ for (i = 0; i < self->driver.arr->len; i++) {
+ if (nm_str_is_empty(nm_strvarray_get_idx(self->driver.arr, i))) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -746,9 +699,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
}
}
- if (self->path) {
- for (i = 0; i < self->path->len; i++) {
- if (nm_str_is_empty(nm_strvarray_get_idx(self->path, i))) {
+ if (self->path.arr) {
+ for (i = 0; i < self->path.arr->len; i++) {
+ if (nm_str_is_empty(nm_strvarray_get_idx(self->path.arr, i))) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -770,10 +723,10 @@ finalize(GObject *object)
{
NMSettingMatch *self = NM_SETTING_MATCH(object);
- nm_clear_pointer(&self->interface_name, g_array_unref);
- nm_clear_pointer(&self->kernel_command_line, g_array_unref);
- nm_clear_pointer(&self->driver, g_array_unref);
- nm_clear_pointer(&self->path, g_array_unref);
+ nm_clear_pointer(&self->interface_name.arr, g_array_unref);
+ nm_clear_pointer(&self->kernel_command_line.arr, g_array_unref);
+ nm_clear_pointer(&self->driver.arr, g_array_unref);
+ nm_clear_pointer(&self->path.arr, g_array_unref);
G_OBJECT_CLASS(nm_setting_match_parent_class)->finalize(object);
}
@@ -781,11 +734,12 @@ finalize(GObject *object)
static void
nm_setting_match_class_init(NMSettingMatchClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GArray *properties_override = _nm_sett_info_property_override_create_array();
- object_class->get_property = get_property;
- object_class->set_property = set_property;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
object_class->finalize = finalize;
setting_class->verify = verify;
@@ -810,12 +764,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
*
* Since: 1.14
**/
- obj_properties[PROP_INTERFACE_NAME] = g_param_spec_boxed(
- NM_SETTING_MATCH_INTERFACE_NAME,
- "",
- "",
- G_TYPE_STRV,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_strv(properties_override,
+ obj_properties,
+ NM_SETTING_MATCH_INTERFACE_NAME,
+ PROP_INTERFACE_NAME,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingMatch,
+ interface_name);
/**
* NMSettingMatch:kernel-command-line
@@ -834,12 +789,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
*
* Since: 1.26
**/
- obj_properties[PROP_KERNEL_COMMAND_LINE] = g_param_spec_boxed(
- NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
- "",
- "",
- G_TYPE_STRV,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_strv(properties_override,
+ obj_properties,
+ NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
+ PROP_KERNEL_COMMAND_LINE,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingMatch,
+ kernel_command_line);
/**
* NMSettingMatch:driver
@@ -852,12 +808,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
*
* Since: 1.26
**/
- obj_properties[PROP_DRIVER] = g_param_spec_boxed(
- NM_SETTING_MATCH_DRIVER,
- "",
- "",
- G_TYPE_STRV,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_strv(properties_override,
+ obj_properties,
+ NM_SETTING_MATCH_DRIVER,
+ PROP_DRIVER,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingMatch,
+ driver);
/**
* NMSettingMatch:path
@@ -892,14 +849,19 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
* example: MATCH_PATH="pci-0000:01:00.0 pci-0000:0c:00.0"
* ---end---
*/
- obj_properties[PROP_PATH] = g_param_spec_boxed(NM_SETTING_MATCH_PATH,
- "",
- "",
- G_TYPE_STRV,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE
- | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_strv(properties_override,
+ obj_properties,
+ NM_SETTING_MATCH_PATH,
+ PROP_PATH,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingMatch,
+ path);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MATCH, NULL, NULL, 0);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_MATCH,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index 7483eaedda..38b233e92a 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -232,6 +232,14 @@ gboolean _nm_setting_clear_secrets(NMSetting *setting,
/*****************************************************************************/
+/* This holds a property of type NM_VALUE_TYPE_STRV. You probably want
+ * to use nm_strvarray_*() API with this. */
+typedef struct {
+ GArray *arr;
+} NMValueStrv;
+
+/*****************************************************************************/
+
#define NM_SETTING_PARAM_NONE 0
/* The property of the #NMSetting should be considered during comparisons that
@@ -277,6 +285,7 @@ extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_int64;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_uint64;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_string;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_bytes;
+extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_strv;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_enum;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_flags;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_mac_address;
@@ -774,6 +783,42 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
/*****************************************************************************/
+#define _nm_setting_property_define_direct_strv(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ G_STMT_START \
+ { \
+ GParamSpec *_param_spec; \
+ \
+ G_STATIC_ASSERT(!NM_FLAGS_ANY((param_flags), ~(NM_SETTING_PARAM_FUZZY_IGNORE))); \
+ \
+ _param_spec = \
+ g_param_spec_boxed("" prop_name "", \
+ "", \
+ "", \
+ G_TYPE_STRV, \
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ \
+ (obj_properties)[(prop_id)] = _param_spec; \
+ \
+ _nm_properties_override_gobj((properties_override), \
+ _param_spec, \
+ &nm_sett_info_propert_type_direct_strv, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(NMValueStrv, \
+ private_struct_type, \
+ private_struct_field), \
+ __VA_ARGS__); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
#define _nm_setting_property_define_direct_enum(properties_override, \
obj_properties, \
prop_name, \
diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c
index be88effb88..e65e75e736 100644
--- a/src/libnm-core-impl/nm-setting.c
+++ b/src/libnm-core-impl/nm-setting.c
@@ -774,6 +774,13 @@ _nm_setting_property_get_property_direct(GObject *object,
g_value_set_boxed(value, *p_val);
return;
}
+ case NM_VALUE_TYPE_STRV:
+ {
+ const NMValueStrv *p_val = _nm_setting_get_private_field(setting, sett_info, property_info);
+
+ g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(p_val->arr, NULL));
+ return;
+ }
default:
goto out_fail;
}
@@ -909,6 +916,18 @@ _nm_setting_property_set_property_direct(GObject *object,
*p_val = v ? g_bytes_ref(v) : NULL;
goto out_notify;
}
+ case NM_VALUE_TYPE_STRV:
+ {
+ NMValueStrv *p_val = _nm_setting_get_private_field(setting, sett_info, property_info);
+ const char *const *v;
+
+ v = g_value_get_boxed(value);
+ if (nm_strvarray_equal_strv(p_val->arr, v, -1))
+ return;
+
+ nm_strvarray_set_strv(&p_val->arr, v);
+ goto out_notify;
+ }
default:
goto out_fail;
}
@@ -1026,6 +1045,11 @@ _init_direct(NMSetting *setting)
nm_assert(!(*((const GBytes *const *)
_nm_setting_get_private_field(setting, sett_info, property_info))));
break;
+ case NM_VALUE_TYPE_STRV:
+ nm_assert(!((const NMValueStrv *)
+ _nm_setting_get_private_field(setting, sett_info, property_info))
+ ->arr);
+ break;
default:
nm_assert_not_reached();
break;
@@ -1081,6 +1105,13 @@ _finalize_direct(NMSetting *setting)
nm_clear_pointer(p_val, g_bytes_unref);
break;
}
+ case NM_VALUE_TYPE_STRV:
+ {
+ NMValueStrv *p_val = _nm_setting_get_private_field(setting, sett_info, property_info);
+
+ nm_clear_pointer(&p_val->arr, g_array_unref);
+ break;
+ }
default:
nm_assert_not_reached();
break;
@@ -1199,6 +1230,20 @@ _nm_setting_property_to_dbus_fcn_direct(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_
return NULL;
return nm_g_bytes_to_variant_ay(val);
}
+ case NM_VALUE_TYPE_STRV:
+ {
+ const NMValueStrv *val;
+
+ /* Strv properties have always NULL as default. Setting "including_default" has no defined meaning
+ * (but it could have). */
+ nm_assert(!property_info->to_dbus_including_default);
+
+ val =
+ (const NMValueStrv *) _nm_setting_get_private_field(setting, sett_info, property_info);
+ if (!val->arr)
+ return NULL;
+ return g_variant_new_strv((const char *const *) val->arr->data, val->arr->len);
+ }
default:
return nm_assert_unreachable_val(NULL);
}
@@ -1545,6 +1590,8 @@ _nm_setting_property_from_dbus_fcn_direct(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS
gs_unref_bytes GBytes *v = NULL;
GBytes **p_val;
+ nm_assert(!property_info->property_type->from_dbus_direct_allow_transform);
+
if (!g_variant_is_of_type(value, G_VARIANT_TYPE_BYTESTRING))
goto out_error_wrong_dbus_type;
@@ -1557,6 +1604,28 @@ _nm_setting_property_from_dbus_fcn_direct(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS
NM_SWAP(p_val, &v);
goto out_notify;
}
+ case NM_VALUE_TYPE_STRV:
+ {
+ NMValueStrv *p_val;
+ gs_free const char **ss = NULL;
+ gsize ss_len;
+
+ nm_assert(!property_info->property_type->from_dbus_direct_allow_transform);
+
+ if (!g_variant_is_of_type(value, G_VARIANT_TYPE_STRING_ARRAY))
+ goto out_error_wrong_dbus_type;
+
+ ss = g_variant_get_strv(value, &ss_len);
+ nm_assert(ss_len <= G_MAXUINT);
+
+ p_val = _nm_setting_get_private_field(setting, sett_info, property_info);
+
+ if (nm_strvarray_equal_strv(p_val->arr, ss, ss_len))
+ goto out_unchanged;
+
+ nm_strvarray_set_strv(&p_val->arr, ss);
+ goto out_notify;
+ }
default:
break;
}
@@ -2465,6 +2534,9 @@ _nm_setting_property_compare_fcn_direct(_NM_SETT_INFO_PROP_COMPARE_FCN_ARGS _nm_
return nm_streq0(*((const char *const *) p_a), *((const char *const *) p_b));
case NM_VALUE_TYPE_BYTES:
return nm_g_bytes_equal0(*((const GBytes *const *) p_a), *((const GBytes *const *) p_b));
+ case NM_VALUE_TYPE_STRV:
+ return nm_strvarray_equal(((const NMValueStrv *) p_a)->arr,
+ ((const NMValueStrv *) p_b)->arr);
default:
return nm_assert_unreachable_val(TRUE);
}
@@ -3529,8 +3601,15 @@ const NMSettInfoPropertType nm_sett_info_propert_type_direct_bytes =
.compare_fcn = _nm_setting_property_compare_fcn_direct,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
.from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
- .from_dbus_is_full = TRUE,
- .from_dbus_direct_allow_transform = TRUE);
+ .from_dbus_is_full = TRUE);
+
+const NMSettInfoPropertType nm_sett_info_propert_type_direct_strv =
+ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING_ARRAY,
+ .direct_type = NM_VALUE_TYPE_STRV,
+ .compare_fcn = _nm_setting_property_compare_fcn_direct,
+ .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
+ .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
+ .from_dbus_is_full = TRUE);
const NMSettInfoPropertType nm_sett_info_propert_type_direct_enum =
NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_INT32,
diff --git a/src/libnm-core-impl/tests/test-general-enums.h b/src/libnm-core-impl/tests/test-general-enums.h
index b3163e2330..2ac8cf2bd7 100644
--- a/src/libnm-core-impl/tests/test-general-enums.h
+++ b/src/libnm-core-impl/tests/test-general-enums.h
@@ -25,11 +25,11 @@ typedef enum {
NM_TEST_GENERAL_META_FLAGS_0x4 = (1 << 4),
} NMTestGeneralMetaFlags;
-typedef enum { /*< flags >*/
- NM_TEST_GENERAL_COLOR_FLAGS_WHITE = 1, /*< skip >*/
- NM_TEST_GENERAL_COLOR_FLAGS_BLUE = 2,
- NM_TEST_GENERAL_COLOR_FLAGS_RED = 4,
- NM_TEST_GENERAL_COLOR_FLAGS_GREEN = 8,
+typedef enum /*< flags >*/ {
+ NM_TEST_GENERAL_COLOR_FLAGS_WHITE = 1, /*< skip >*/
+ NM_TEST_GENERAL_COLOR_FLAGS_BLUE = 2,
+ NM_TEST_GENERAL_COLOR_FLAGS_RED = 4,
+ NM_TEST_GENERAL_COLOR_FLAGS_GREEN = 8,
} NMTestGeneralColorFlags;
#endif /* _NM_TEST_GENERAL_ENUMS_H_ */
diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c
index d0f85a9f97..1856f6ad50 100644
--- a/src/libnm-core-impl/tests/test-general.c
+++ b/src/libnm-core-impl/tests/test-general.c
@@ -5060,7 +5060,7 @@ test_setting_connection_changed_signal(void)
ASSERT_CHANGED(nm_setting_connection_add_secondary(s_con, uuid));
ASSERT_CHANGED(nm_setting_connection_remove_secondary(s_con, 0));
- NMTST_EXPECT_LIBNM_CRITICAL(NMTST_G_RETURN_MSG(idx < nm_g_array_len(priv->secondaries)));
+ NMTST_EXPECT_LIBNM_CRITICAL(NMTST_G_RETURN_MSG(idx < nm_g_array_len(priv->secondaries.arr)));
ASSERT_UNCHANGED(nm_setting_connection_remove_secondary(s_con, 1));
g_test_assert_expected_messages();
diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c
index b260ac3767..788f218d2f 100644
--- a/src/libnm-core-impl/tests/test-setting.c
+++ b/src/libnm-core-impl/tests/test-setting.c
@@ -4565,6 +4565,12 @@ test_setting_metadata(void)
== _nm_setting_property_to_dbus_fcn_direct);
g_assert(sip->param_spec);
g_assert(sip->param_spec->value_type == G_TYPE_BYTES);
+ } else if (sip->property_type->direct_type == NM_VALUE_TYPE_STRV) {
+ g_assert(g_variant_type_equal(sip->property_type->dbus_type, "as"));
+ g_assert(sip->property_type->to_dbus_fcn
+ == _nm_setting_property_to_dbus_fcn_direct);
+ g_assert(sip->param_spec);
+ g_assert(sip->param_spec->value_type == G_TYPE_STRV);
} else
g_assert_not_reached();
@@ -4653,7 +4659,12 @@ check_done:;
}
if (sip->property_type->from_dbus_fcn == _nm_setting_property_from_dbus_fcn_direct) {
/* for the moment, all direct properties allow transformation. */
- g_assert(sip->property_type->from_dbus_direct_allow_transform);
+ if (NM_IN_SET(sip->property_type->direct_type,
+ NM_VALUE_TYPE_BYTES,
+ NM_VALUE_TYPE_STRV))
+ g_assert(!sip->property_type->from_dbus_direct_allow_transform);
+ else
+ g_assert(sip->property_type->from_dbus_direct_allow_transform);
}
if (sip->property_type->from_dbus_fcn == _nm_setting_property_from_dbus_fcn_gprop)
@@ -4763,10 +4774,12 @@ check_done:;
g_assert(NM_IS_SETTING_VPN(setting));
g_assert_cmpstr(sip->name, ==, NM_SETTING_VPN_SECRETS);
} else {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("secret %s.%s is of unexpected property type %s",
nm_setting_get_name(setting),
sip->name,
g_type_name(sip->param_spec->value_type));
+ NM_PRAGMA_WARNING_REENABLE
}
}
}
@@ -4889,12 +4902,14 @@ check_done:;
/* the property-types with same content should all be shared. Here we have two that
* are the same content, but different instances. Bug. */
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("The identical property type for D-Bus type \"%s\" is used by: %s and %s. "
"If a NMSettInfoPropertType is identical, it should be shared by creating "
"a common instance of the property type",
(const char *) pt->dbus_type,
_PROP_IDX_OWNER(h_property_types, pt),
_PROP_IDX_OWNER(h_property_types, pt_2));
+ NM_PRAGMA_WARNING_REENABLE
}
}
}
diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h
index d9634b04ea..032f6a9a4c 100644
--- a/src/libnm-core-intern/nm-core-internal.h
+++ b/src/libnm-core-intern/nm-core-internal.h
@@ -189,14 +189,14 @@ NM_TERNARY_TO_OPTION_BOOL(NMTernary v)
NMSetting **_nm_connection_get_settings_arr(NMConnection *connection);
-typedef enum { /*< skip >*/
- NM_SETTING_PARSE_FLAGS_NONE = 0,
- NM_SETTING_PARSE_FLAGS_STRICT = 1LL << 0,
- NM_SETTING_PARSE_FLAGS_BEST_EFFORT = 1LL << 1,
- NM_SETTING_PARSE_FLAGS_NORMALIZE = 1LL << 2,
-
- _NM_SETTING_PARSE_FLAGS_LAST,
- NM_SETTING_PARSE_FLAGS_ALL = ((_NM_SETTING_PARSE_FLAGS_LAST - 1) << 1) - 1,
+typedef enum /*< skip >*/ {
+ NM_SETTING_PARSE_FLAGS_NONE = 0,
+ NM_SETTING_PARSE_FLAGS_STRICT = 1LL << 0,
+ NM_SETTING_PARSE_FLAGS_BEST_EFFORT = 1LL << 1,
+ NM_SETTING_PARSE_FLAGS_NORMALIZE = 1LL << 2,
+
+ _NM_SETTING_PARSE_FLAGS_LAST,
+ NM_SETTING_PARSE_FLAGS_ALL = ((_NM_SETTING_PARSE_FLAGS_LAST - 1) << 1) - 1,
} NMSettingParseFlags;
gboolean _nm_connection_replace_settings(NMConnection *connection,
diff --git a/src/libnm-core-intern/nm-meta-setting-base-impl.h b/src/libnm-core-intern/nm-meta-setting-base-impl.h
index ea4f85ff1b..b1f1263693 100644
--- a/src/libnm-core-intern/nm-meta-setting-base-impl.h
+++ b/src/libnm-core-intern/nm-meta-setting-base-impl.h
@@ -38,15 +38,15 @@
*
* 10: NMSettingUser
*/
-typedef enum { /*< skip >*/
- NM_SETTING_PRIORITY_INVALID = 0,
- NM_SETTING_PRIORITY_CONNECTION = 1,
- NM_SETTING_PRIORITY_HW_BASE = 2,
- NM_SETTING_PRIORITY_HW_NON_BASE = 3,
- NM_SETTING_PRIORITY_HW_AUX = 4,
- NM_SETTING_PRIORITY_AUX = 5,
- NM_SETTING_PRIORITY_IP = 6,
- NM_SETTING_PRIORITY_USER = 10,
+typedef enum /*< skip >*/ {
+ NM_SETTING_PRIORITY_INVALID = 0,
+ NM_SETTING_PRIORITY_CONNECTION = 1,
+ NM_SETTING_PRIORITY_HW_BASE = 2,
+ NM_SETTING_PRIORITY_HW_NON_BASE = 3,
+ NM_SETTING_PRIORITY_HW_AUX = 4,
+ NM_SETTING_PRIORITY_AUX = 5,
+ NM_SETTING_PRIORITY_IP = 6,
+ NM_SETTING_PRIORITY_USER = 10,
} NMSettingPriority;
/*****************************************************************************/
diff --git a/src/libnm-core-public/nm-connection.h b/src/libnm-core-public/nm-connection.h
index 081f115e80..93061f2539 100644
--- a/src/libnm-core-public/nm-connection.h
+++ b/src/libnm-core-public/nm-connection.h
@@ -122,15 +122,15 @@ NMSetting *nm_connection_get_setting_by_name(NMConnection *connection, const cha
* These flags determine which properties are serialized when calling
* nm_connection_to_dbus().
**/
-typedef enum { /*< flags >*/
- NM_CONNECTION_SERIALIZE_ALL = 0x00000000,
- NM_CONNECTION_SERIALIZE_WITH_NON_SECRET = 0x00000001,
- NM_CONNECTION_SERIALIZE_NO_SECRETS = 0x00000001,
- NM_CONNECTION_SERIALIZE_WITH_SECRETS = 0x00000002,
- NM_CONNECTION_SERIALIZE_ONLY_SECRETS = 0x00000002,
- NM_CONNECTION_SERIALIZE_WITH_SECRETS_AGENT_OWNED = 0x00000004,
- NM_CONNECTION_SERIALIZE_WITH_SECRETS_SYSTEM_OWNED = 0x00000008,
- NM_CONNECTION_SERIALIZE_WITH_SECRETS_NOT_SAVED = 0x00000010,
+typedef enum /*< flags >*/ {
+ NM_CONNECTION_SERIALIZE_ALL = 0x00000000,
+ NM_CONNECTION_SERIALIZE_WITH_NON_SECRET = 0x00000001,
+ NM_CONNECTION_SERIALIZE_NO_SECRETS = 0x00000001,
+ NM_CONNECTION_SERIALIZE_WITH_SECRETS = 0x00000002,
+ NM_CONNECTION_SERIALIZE_ONLY_SECRETS = 0x00000002,
+ NM_CONNECTION_SERIALIZE_WITH_SECRETS_AGENT_OWNED = 0x00000004,
+ NM_CONNECTION_SERIALIZE_WITH_SECRETS_SYSTEM_OWNED = 0x00000008,
+ NM_CONNECTION_SERIALIZE_WITH_SECRETS_NOT_SAVED = 0x00000010,
} NMConnectionSerializationFlags;
GVariant *nm_connection_to_dbus(NMConnection *connection, NMConnectionSerializationFlags flags);
diff --git a/src/libnm-core-public/nm-dbus-interface.h b/src/libnm-core-public/nm-dbus-interface.h
index fe2a6c09db..310dbbb0a3 100644
--- a/src/libnm-core-public/nm-dbus-interface.h
+++ b/src/libnm-core-public/nm-dbus-interface.h
@@ -265,12 +265,12 @@ typedef enum {
*
* General device capability flags.
**/
-typedef enum { /*< flags >*/
- NM_DEVICE_CAP_NONE = 0x00000000,
- NM_DEVICE_CAP_NM_SUPPORTED = 0x00000001,
- NM_DEVICE_CAP_CARRIER_DETECT = 0x00000002,
- NM_DEVICE_CAP_IS_SOFTWARE = 0x00000004,
- NM_DEVICE_CAP_SRIOV = 0x00000008,
+typedef enum /*< flags >*/ {
+ NM_DEVICE_CAP_NONE = 0x00000000,
+ NM_DEVICE_CAP_NM_SUPPORTED = 0x00000001,
+ NM_DEVICE_CAP_CARRIER_DETECT = 0x00000002,
+ NM_DEVICE_CAP_IS_SOFTWARE = 0x00000004,
+ NM_DEVICE_CAP_SRIOV = 0x00000008,
} NMDeviceCapabilities;
/**
@@ -292,21 +292,21 @@ typedef enum { /*< flags >*/
*
* 802.11 specific device encryption and authentication capabilities.
**/
-typedef enum { /*< flags >*/
- NM_WIFI_DEVICE_CAP_NONE = 0x00000000,
- NM_WIFI_DEVICE_CAP_CIPHER_WEP40 = 0x00000001,
- NM_WIFI_DEVICE_CAP_CIPHER_WEP104 = 0x00000002,
- NM_WIFI_DEVICE_CAP_CIPHER_TKIP = 0x00000004,
- NM_WIFI_DEVICE_CAP_CIPHER_CCMP = 0x00000008,
- NM_WIFI_DEVICE_CAP_WPA = 0x00000010,
- NM_WIFI_DEVICE_CAP_RSN = 0x00000020,
- NM_WIFI_DEVICE_CAP_AP = 0x00000040,
- NM_WIFI_DEVICE_CAP_ADHOC = 0x00000080,
- NM_WIFI_DEVICE_CAP_FREQ_VALID = 0x00000100,
- NM_WIFI_DEVICE_CAP_FREQ_2GHZ = 0x00000200,
- NM_WIFI_DEVICE_CAP_FREQ_5GHZ = 0x00000400,
- NM_WIFI_DEVICE_CAP_MESH = 0x00001000,
- NM_WIFI_DEVICE_CAP_IBSS_RSN = 0x00002000,
+typedef enum /*< flags >*/ {
+ NM_WIFI_DEVICE_CAP_NONE = 0x00000000,
+ NM_WIFI_DEVICE_CAP_CIPHER_WEP40 = 0x00000001,
+ NM_WIFI_DEVICE_CAP_CIPHER_WEP104 = 0x00000002,
+ NM_WIFI_DEVICE_CAP_CIPHER_TKIP = 0x00000004,
+ NM_WIFI_DEVICE_CAP_CIPHER_CCMP = 0x00000008,
+ NM_WIFI_DEVICE_CAP_WPA = 0x00000010,
+ NM_WIFI_DEVICE_CAP_RSN = 0x00000020,
+ NM_WIFI_DEVICE_CAP_AP = 0x00000040,
+ NM_WIFI_DEVICE_CAP_ADHOC = 0x00000080,
+ NM_WIFI_DEVICE_CAP_FREQ_VALID = 0x00000100,
+ NM_WIFI_DEVICE_CAP_FREQ_2GHZ = 0x00000200,
+ NM_WIFI_DEVICE_CAP_FREQ_5GHZ = 0x00000400,
+ NM_WIFI_DEVICE_CAP_MESH = 0x00001000,
+ NM_WIFI_DEVICE_CAP_IBSS_RSN = 0x00002000,
} NMDeviceWifiCapabilities;
/**
@@ -320,12 +320,12 @@ typedef enum { /*< flags >*/
*
* 802.11 access point flags.
**/
-typedef enum { /*< underscore_name=nm_802_11_ap_flags, flags >*/
- NM_802_11_AP_FLAGS_NONE = 0x00000000,
- NM_802_11_AP_FLAGS_PRIVACY = 0x00000001,
- NM_802_11_AP_FLAGS_WPS = 0x00000002,
- NM_802_11_AP_FLAGS_WPS_PBC = 0x00000004,
- NM_802_11_AP_FLAGS_WPS_PIN = 0x00000008,
+typedef enum /*< underscore_name=nm_802_11_ap_flags, flags >*/ {
+ NM_802_11_AP_FLAGS_NONE = 0x00000000,
+ NM_802_11_AP_FLAGS_PRIVACY = 0x00000001,
+ NM_802_11_AP_FLAGS_WPS = 0x00000002,
+ NM_802_11_AP_FLAGS_WPS_PBC = 0x00000004,
+ NM_802_11_AP_FLAGS_WPS_PIN = 0x00000008,
} NM80211ApFlags;
/**
@@ -361,22 +361,22 @@ typedef enum { /*< underscore_name=nm_802_11_ap_flags, flags >*/
* the current security requirements of an access point as determined from the
* access point's beacon.
**/
-typedef enum { /*< underscore_name=nm_802_11_ap_security_flags, flags >*/
- NM_802_11_AP_SEC_NONE = 0x00000000,
- NM_802_11_AP_SEC_PAIR_WEP40 = 0x00000001,
- NM_802_11_AP_SEC_PAIR_WEP104 = 0x00000002,
- NM_802_11_AP_SEC_PAIR_TKIP = 0x00000004,
- NM_802_11_AP_SEC_PAIR_CCMP = 0x00000008,
- NM_802_11_AP_SEC_GROUP_WEP40 = 0x00000010,
- NM_802_11_AP_SEC_GROUP_WEP104 = 0x00000020,
- NM_802_11_AP_SEC_GROUP_TKIP = 0x00000040,
- NM_802_11_AP_SEC_GROUP_CCMP = 0x00000080,
- NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x00000100,
- NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x00000200,
- NM_802_11_AP_SEC_KEY_MGMT_SAE = 0x00000400,
- NM_802_11_AP_SEC_KEY_MGMT_OWE = 0x00000800,
- NM_802_11_AP_SEC_KEY_MGMT_OWE_TM = 0x00001000,
- NM_802_11_AP_SEC_KEY_MGMT_EAP_SUITE_B_192 = 0x00002000,
+typedef enum /*< underscore_name=nm_802_11_ap_security_flags, flags >*/ {
+ NM_802_11_AP_SEC_NONE = 0x00000000,
+ NM_802_11_AP_SEC_PAIR_WEP40 = 0x00000001,
+ NM_802_11_AP_SEC_PAIR_WEP104 = 0x00000002,
+ NM_802_11_AP_SEC_PAIR_TKIP = 0x00000004,
+ NM_802_11_AP_SEC_PAIR_CCMP = 0x00000008,
+ NM_802_11_AP_SEC_GROUP_WEP40 = 0x00000010,
+ NM_802_11_AP_SEC_GROUP_WEP104 = 0x00000020,
+ NM_802_11_AP_SEC_GROUP_TKIP = 0x00000040,
+ NM_802_11_AP_SEC_GROUP_CCMP = 0x00000080,
+ NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x00000100,
+ NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x00000200,
+ NM_802_11_AP_SEC_KEY_MGMT_SAE = 0x00000400,
+ NM_802_11_AP_SEC_KEY_MGMT_OWE = 0x00000800,
+ NM_802_11_AP_SEC_KEY_MGMT_OWE_TM = 0x00001000,
+ NM_802_11_AP_SEC_KEY_MGMT_EAP_SUITE_B_192 = 0x00002000,
} NM80211ApSecurityFlags;
/**
@@ -412,10 +412,10 @@ typedef enum { /*< underscore_name=nm_802_11_mode >*/
* #NMBluetoothCapabilities values indicate the usable capabilities of a
* Bluetooth device.
**/
-typedef enum { /*< flags >*/
- NM_BT_CAPABILITY_NONE = 0x00000000,
- NM_BT_CAPABILITY_DUN = 0x00000001,
- NM_BT_CAPABILITY_NAP = 0x00000002,
+typedef enum /*< flags >*/ {
+ NM_BT_CAPABILITY_NONE = 0x00000000,
+ NM_BT_CAPABILITY_DUN = 0x00000001,
+ NM_BT_CAPABILITY_NAP = 0x00000002,
} NMBluetoothCapabilities;
/**
@@ -435,13 +435,13 @@ typedef enum { /*< flags >*/
* specific access technologies the device supports use the ModemManager D-Bus
* API.
**/
-typedef enum { /*< flags >*/
- NM_DEVICE_MODEM_CAPABILITY_NONE = 0x00000000,
- NM_DEVICE_MODEM_CAPABILITY_POTS = 0x00000001,
- NM_DEVICE_MODEM_CAPABILITY_CDMA_EVDO = 0x00000002,
- NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS = 0x00000004,
- NM_DEVICE_MODEM_CAPABILITY_LTE = 0x00000008,
- NM_DEVICE_MODEM_CAPABILITY_5GNR = 0x00000040,
+typedef enum /*< flags >*/ {
+ NM_DEVICE_MODEM_CAPABILITY_NONE = 0x00000000,
+ NM_DEVICE_MODEM_CAPABILITY_POTS = 0x00000001,
+ NM_DEVICE_MODEM_CAPABILITY_CDMA_EVDO = 0x00000002,
+ NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS = 0x00000004,
+ NM_DEVICE_MODEM_CAPABILITY_LTE = 0x00000008,
+ NM_DEVICE_MODEM_CAPABILITY_5GNR = 0x00000040,
} NMDeviceModemCapabilities;
/* Note: the numeric values of NMDeviceModemCapabilities must be identical to the values
* in MMModemCapability. See the G_STATIC_ASSERT() in nm-modem-broadband.c's get_capabilities(). */
@@ -834,16 +834,16 @@ typedef enum {
*
* #NMSecretAgentGetSecretsFlags values modify the behavior of a GetSecrets request.
*/
-typedef enum { /*< flags >*/
- NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0,
- NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1,
- NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2,
- NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4,
- NM_SECRET_AGENT_GET_SECRETS_FLAG_WPS_PBC_ACTIVE = 0x8,
+typedef enum /*< flags >*/ {
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0,
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1,
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2,
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4,
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_WPS_PBC_ACTIVE = 0x8,
- /* Internal to NM; not part of the D-Bus API */
- NM_SECRET_AGENT_GET_SECRETS_FLAG_ONLY_SYSTEM = 0x80000000,
- NM_SECRET_AGENT_GET_SECRETS_FLAG_NO_ERRORS = 0x40000000,
+ /* Internal to NM; not part of the D-Bus API */
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_ONLY_SYSTEM = 0x80000000,
+ NM_SECRET_AGENT_GET_SECRETS_FLAG_NO_ERRORS = 0x40000000,
} NMSecretAgentGetSecretsFlags;
/**
@@ -964,12 +964,12 @@ typedef enum {
*
* Since: 1.4 (gi flags generated since 1.12)
*/
-typedef enum { /*< flags >*/
- NM_CHECKPOINT_CREATE_FLAG_NONE = 0,
- NM_CHECKPOINT_CREATE_FLAG_DESTROY_ALL = 0x01,
- NM_CHECKPOINT_CREATE_FLAG_DELETE_NEW_CONNECTIONS = 0x02,
- NM_CHECKPOINT_CREATE_FLAG_DISCONNECT_NEW_DEVICES = 0x04,
- NM_CHECKPOINT_CREATE_FLAG_ALLOW_OVERLAPPING = 0x08,
+typedef enum /*< flags >*/ {
+ NM_CHECKPOINT_CREATE_FLAG_NONE = 0,
+ NM_CHECKPOINT_CREATE_FLAG_DESTROY_ALL = 0x01,
+ NM_CHECKPOINT_CREATE_FLAG_DELETE_NEW_CONNECTIONS = 0x02,
+ NM_CHECKPOINT_CREATE_FLAG_DISCONNECT_NEW_DEVICES = 0x04,
+ NM_CHECKPOINT_CREATE_FLAG_ALLOW_OVERLAPPING = 0x08,
} NMCheckpointCreateFlags;
/**
@@ -983,11 +983,11 @@ typedef enum { /*< flags >*/
*
* Since: 1.4
**/
-typedef enum { /*< skip >*/
- NM_ROLLBACK_RESULT_OK = 0,
- NM_ROLLBACK_RESULT_ERR_NO_DEVICE = 1,
- NM_ROLLBACK_RESULT_ERR_DEVICE_UNMANAGED = 2,
- NM_ROLLBACK_RESULT_ERR_FAILED = 3,
+typedef enum /*< skip >*/ {
+ NM_ROLLBACK_RESULT_OK = 0,
+ NM_ROLLBACK_RESULT_ERR_NO_DEVICE = 1,
+ NM_ROLLBACK_RESULT_ERR_DEVICE_UNMANAGED = 2,
+ NM_ROLLBACK_RESULT_ERR_FAILED = 3,
} NMRollbackResult;
/**
@@ -1013,12 +1013,12 @@ typedef enum { /*< skip >*/
*
* Since: 1.12
**/
-typedef enum { /*< flags >*/
- NM_SETTINGS_CONNECTION_FLAG_NONE = 0,
- NM_SETTINGS_CONNECTION_FLAG_UNSAVED = 0x01,
- NM_SETTINGS_CONNECTION_FLAG_NM_GENERATED = 0x02,
- NM_SETTINGS_CONNECTION_FLAG_VOLATILE = 0x04,
- NM_SETTINGS_CONNECTION_FLAG_EXTERNAL = 0x08,
+typedef enum /*< flags >*/ {
+ NM_SETTINGS_CONNECTION_FLAG_NONE = 0,
+ NM_SETTINGS_CONNECTION_FLAG_UNSAVED = 0x01,
+ NM_SETTINGS_CONNECTION_FLAG_NM_GENERATED = 0x02,
+ NM_SETTINGS_CONNECTION_FLAG_VOLATILE = 0x04,
+ NM_SETTINGS_CONNECTION_FLAG_EXTERNAL = 0x08,
} NMSettingsConnectionFlags;
/**
@@ -1042,17 +1042,17 @@ typedef enum { /*< flags >*/
*
* Since: 1.10
**/
-typedef enum { /*< flags >*/
- NM_ACTIVATION_STATE_FLAG_NONE = 0,
+typedef enum /*< flags >*/ {
+ NM_ACTIVATION_STATE_FLAG_NONE = 0,
- NM_ACTIVATION_STATE_FLAG_IS_MASTER = 0x1,
- NM_ACTIVATION_STATE_FLAG_IS_SLAVE = 0x2,
- NM_ACTIVATION_STATE_FLAG_LAYER2_READY = 0x4,
- NM_ACTIVATION_STATE_FLAG_IP4_READY = 0x8,
- NM_ACTIVATION_STATE_FLAG_IP6_READY = 0x10,
- NM_ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES = 0x20,
- NM_ACTIVATION_STATE_FLAG_LIFETIME_BOUND_TO_PROFILE_VISIBILITY = 0x40,
- NM_ACTIVATION_STATE_FLAG_EXTERNAL = 0x80,
+ NM_ACTIVATION_STATE_FLAG_IS_MASTER = 0x1,
+ NM_ACTIVATION_STATE_FLAG_IS_SLAVE = 0x2,
+ NM_ACTIVATION_STATE_FLAG_LAYER2_READY = 0x4,
+ NM_ACTIVATION_STATE_FLAG_IP4_READY = 0x8,
+ NM_ACTIVATION_STATE_FLAG_IP6_READY = 0x10,
+ NM_ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES = 0x20,
+ NM_ACTIVATION_STATE_FLAG_LIFETIME_BOUND_TO_PROFILE_VISIBILITY = 0x40,
+ NM_ACTIVATION_STATE_FLAG_EXTERNAL = 0x80,
} NMActivationStateFlags;
/**
@@ -1069,11 +1069,11 @@ typedef enum { /*< flags >*/
*
* Since: 1.20
*/
-typedef enum { /*< flags >*/
- NM_SETTINGS_ADD_CONNECTION2_FLAG_NONE = 0,
- NM_SETTINGS_ADD_CONNECTION2_FLAG_TO_DISK = 0x1,
- NM_SETTINGS_ADD_CONNECTION2_FLAG_IN_MEMORY = 0x2,
- NM_SETTINGS_ADD_CONNECTION2_FLAG_BLOCK_AUTOCONNECT = 0x20,
+typedef enum /*< flags >*/ {
+ NM_SETTINGS_ADD_CONNECTION2_FLAG_NONE = 0,
+ NM_SETTINGS_ADD_CONNECTION2_FLAG_TO_DISK = 0x1,
+ NM_SETTINGS_ADD_CONNECTION2_FLAG_IN_MEMORY = 0x2,
+ NM_SETTINGS_ADD_CONNECTION2_FLAG_BLOCK_AUTOCONNECT = 0x20,
} NMSettingsAddConnection2Flags;
/**
@@ -1125,15 +1125,15 @@ typedef enum { /*< flags >*/
*
* Since: 1.12
*/
-typedef enum { /*< flags >*/
- NM_SETTINGS_UPDATE2_FLAG_NONE = 0,
- NM_SETTINGS_UPDATE2_FLAG_TO_DISK = 0x1,
- NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY = 0x2,
- NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_DETACHED = 0x4,
- NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_ONLY = 0x8,
- NM_SETTINGS_UPDATE2_FLAG_VOLATILE = 0x10,
- NM_SETTINGS_UPDATE2_FLAG_BLOCK_AUTOCONNECT = 0x20,
- NM_SETTINGS_UPDATE2_FLAG_NO_REAPPLY = 0x40,
+typedef enum /*< flags >*/ {
+ NM_SETTINGS_UPDATE2_FLAG_NONE = 0,
+ NM_SETTINGS_UPDATE2_FLAG_TO_DISK = 0x1,
+ NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY = 0x2,
+ NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_DETACHED = 0x4,
+ NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY_ONLY = 0x8,
+ NM_SETTINGS_UPDATE2_FLAG_VOLATILE = 0x10,
+ NM_SETTINGS_UPDATE2_FLAG_BLOCK_AUTOCONNECT = 0x20,
+ NM_SETTINGS_UPDATE2_FLAG_NO_REAPPLY = 0x40,
} NMSettingsUpdate2Flags;
/**
@@ -1172,12 +1172,12 @@ typedef enum {
*
* Since: 1.22
*/
-typedef enum { /*< flags >*/
- NM_MANAGER_RELOAD_FLAG_NONE = 0, /*< skip >*/
- NM_MANAGER_RELOAD_FLAG_CONF = 0x1,
- NM_MANAGER_RELOAD_FLAG_DNS_RC = 0x2,
- NM_MANAGER_RELOAD_FLAG_DNS_FULL = 0x4,
- NM_MANAGER_RELOAD_FLAG_ALL = 0x7, /*< skip >*/
+typedef enum /*< flags >*/ {
+ NM_MANAGER_RELOAD_FLAG_NONE = 0, /*< skip >*/
+ NM_MANAGER_RELOAD_FLAG_CONF = 0x1,
+ NM_MANAGER_RELOAD_FLAG_DNS_RC = 0x2,
+ NM_MANAGER_RELOAD_FLAG_DNS_FULL = 0x4,
+ NM_MANAGER_RELOAD_FLAG_ALL = 0x7, /*< skip >*/
} NMManagerReloadFlags;
/**
@@ -1199,15 +1199,15 @@ typedef enum { /*< flags >*/
*
* Since: 1.22
*/
-typedef enum { /*< flags >*/
- /* kernel flags */
- NM_DEVICE_INTERFACE_FLAG_NONE = 0, /*< skip >*/
- NM_DEVICE_INTERFACE_FLAG_UP = 0x1,
- NM_DEVICE_INTERFACE_FLAG_LOWER_UP = 0x2,
- NM_DEVICE_INTERFACE_FLAG_PROMISC = 0x4,
- /* NM-specific flags */
- NM_DEVICE_INTERFACE_FLAG_CARRIER = 0x10000,
- NM_DEVICE_INTERFACE_FLAG_LLDP_CLIENT_ENABLED = 0x20000,
+typedef enum /*< flags >*/ {
+ /* kernel flags */
+ NM_DEVICE_INTERFACE_FLAG_NONE = 0, /*< skip >*/
+ NM_DEVICE_INTERFACE_FLAG_UP = 0x1,
+ NM_DEVICE_INTERFACE_FLAG_LOWER_UP = 0x2,
+ NM_DEVICE_INTERFACE_FLAG_PROMISC = 0x4,
+ /* NM-specific flags */
+ NM_DEVICE_INTERFACE_FLAG_CARRIER = 0x10000,
+ NM_DEVICE_INTERFACE_FLAG_LLDP_CLIENT_ENABLED = 0x20000,
} NMDeviceInterfaceFlags;
/**
diff --git a/src/libnm-core-public/nm-keyfile.h b/src/libnm-core-public/nm-keyfile.h
index 8f8b1f1b5f..80fd0043b4 100644
--- a/src/libnm-core-public/nm-keyfile.h
+++ b/src/libnm-core-public/nm-keyfile.h
@@ -21,8 +21,8 @@ G_BEGIN_DECLS
*
* Since: 1.30
*/
-typedef enum { /*< flags >*/
- NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
+typedef enum /*< flags >*/ {
+ NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
} NMKeyfileHandlerFlags;
/**
diff --git a/src/libnm-core-public/nm-setting-8021x.h b/src/libnm-core-public/nm-setting-8021x.h
index 2bd089dacf..93c78fa374 100644
--- a/src/libnm-core-public/nm-setting-8021x.h
+++ b/src/libnm-core-public/nm-setting-8021x.h
@@ -75,13 +75,13 @@ typedef enum { /*< underscore_name=nm_setting_802_1x_ck_scheme >*/
*
* Since: 1.8
*/
-typedef enum { /*< flags, underscore_name=nm_setting_802_1x_auth_flags >*/
- NM_SETTING_802_1X_AUTH_FLAGS_NONE = 0,
- NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_0_DISABLE = 0x1,
- NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_1_DISABLE = 0x2,
- NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_2_DISABLE = 0x4,
+typedef enum /*< underscore_name=nm_setting_802_1x_auth_flags, flags >*/ {
+ NM_SETTING_802_1X_AUTH_FLAGS_NONE = 0,
+ NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_0_DISABLE = 0x1,
+ NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_1_DISABLE = 0x2,
+ NM_SETTING_802_1X_AUTH_FLAGS_TLS_1_2_DISABLE = 0x4,
- NM_SETTING_802_1X_AUTH_FLAGS_ALL = 0x7,
+ NM_SETTING_802_1X_AUTH_FLAGS_ALL = 0x7,
} NMSetting8021xAuthFlags;
#define NM_TYPE_SETTING_802_1X (nm_setting_802_1x_get_type())
diff --git a/src/libnm-core-public/nm-setting-dcb.h b/src/libnm-core-public/nm-setting-dcb.h
index ba702bd708..2567609033 100644
--- a/src/libnm-core-public/nm-setting-dcb.h
+++ b/src/libnm-core-public/nm-setting-dcb.h
@@ -35,11 +35,11 @@ G_BEGIN_DECLS
*
* DCB feature flags.
**/
-typedef enum { /*< flags >*/
- NM_SETTING_DCB_FLAG_NONE = 0x00000000,
- NM_SETTING_DCB_FLAG_ENABLE = 0x00000001,
- NM_SETTING_DCB_FLAG_ADVERTISE = 0x00000002,
- NM_SETTING_DCB_FLAG_WILLING = 0x00000004
+typedef enum /*< flags >*/ {
+ NM_SETTING_DCB_FLAG_NONE = 0x00000000,
+ NM_SETTING_DCB_FLAG_ENABLE = 0x00000001,
+ NM_SETTING_DCB_FLAG_ADVERTISE = 0x00000002,
+ NM_SETTING_DCB_FLAG_WILLING = 0x00000004
} NMSettingDcbFlags;
/**
diff --git a/src/libnm-core-public/nm-setting-ip-config.h b/src/libnm-core-public/nm-setting-ip-config.h
index 6a19bdb39f..257a687a1c 100644
--- a/src/libnm-core-public/nm-setting-ip-config.h
+++ b/src/libnm-core-public/nm-setting-ip-config.h
@@ -31,9 +31,9 @@ G_BEGIN_DECLS
*
* Since: 1.22
*/
-typedef enum { /*< flags >*/
- NM_IP_ADDRESS_CMP_FLAGS_NONE = 0,
- NM_IP_ADDRESS_CMP_FLAGS_WITH_ATTRS = 0x1,
+typedef enum /*< flags >*/ {
+ NM_IP_ADDRESS_CMP_FLAGS_NONE = 0,
+ NM_IP_ADDRESS_CMP_FLAGS_WITH_ATTRS = 0x1,
} NMIPAddressCmpFlags;
typedef struct NMIPAddress NMIPAddress;
@@ -86,9 +86,9 @@ void nm_ip_route_ref(NMIPRoute *route);
void nm_ip_route_unref(NMIPRoute *route);
gboolean nm_ip_route_equal(NMIPRoute *route, NMIPRoute *other);
-enum { /*< flags >*/
- NM_IP_ROUTE_EQUAL_CMP_FLAGS_NONE = 0,
- NM_IP_ROUTE_EQUAL_CMP_FLAGS_WITH_ATTRS = 0x1,
+enum /*< flags >*/ {
+ NM_IP_ROUTE_EQUAL_CMP_FLAGS_NONE = 0,
+ NM_IP_ROUTE_EQUAL_CMP_FLAGS_WITH_ATTRS = 0x1,
};
NM_AVAILABLE_IN_1_10
@@ -277,12 +277,12 @@ gboolean nm_ip_routing_rule_validate(const NMIPRoutingRule *self, GError **error
*
* Since: 1.18
*/
-typedef enum { /*< flags >*/
- NM_IP_ROUTING_RULE_AS_STRING_FLAGS_NONE = 0,
+typedef enum /*< flags >*/ {
+ NM_IP_ROUTING_RULE_AS_STRING_FLAGS_NONE = 0,
- NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET = 0x1,
- NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET6 = 0x2,
- NM_IP_ROUTING_RULE_AS_STRING_FLAGS_VALIDATE = 0x4,
+ NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET = 0x1,
+ NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET6 = 0x2,
+ NM_IP_ROUTING_RULE_AS_STRING_FLAGS_VALIDATE = 0x4,
} NMIPRoutingRuleAsStringFlags;
NM_AVAILABLE_IN_1_18
@@ -386,14 +386,14 @@ typedef struct _NMSettingIPConfigClass NMSettingIPConfigClass;
*
* Since: 1.22
*/
-typedef enum { /*< flags >*/
- NM_DHCP_HOSTNAME_FLAG_NONE = 0x0,
+typedef enum /*< flags >*/ {
+ NM_DHCP_HOSTNAME_FLAG_NONE = 0x0,
- NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE = 0x1,
- NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED = 0x2,
- NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE = 0x4,
+ NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE = 0x1,
+ NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED = 0x2,
+ NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE = 0x4,
- NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS = 0x8,
+ NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS = 0x8,
} NMDhcpHostnameFlags;
diff --git a/src/libnm-core-public/nm-setting-ip-tunnel.h b/src/libnm-core-public/nm-setting-ip-tunnel.h
index 4710411cc4..3492009974 100644
--- a/src/libnm-core-public/nm-setting-ip-tunnel.h
+++ b/src/libnm-core-public/nm-setting-ip-tunnel.h
@@ -60,14 +60,14 @@ typedef struct _NMSettingIPTunnelClass NMSettingIPTunnelClass;
*
* Since: 1.12
*/
-typedef enum { /*< flags, prefix=NM_IP_TUNNEL_FLAG >*/
- NM_IP_TUNNEL_FLAG_NONE = 0x0,
- NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT = 0x1,
- NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_TCLASS = 0x2,
- NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FLOWLABEL = 0x4,
- NM_IP_TUNNEL_FLAG_IP6_MIP6_DEV = 0x8,
- NM_IP_TUNNEL_FLAG_IP6_RCV_DSCP_COPY = 0x10,
- NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK = 0x20,
+typedef enum /*< prefix=NM_IP_TUNNEL_FLAG, flags >*/ {
+ NM_IP_TUNNEL_FLAG_NONE = 0x0,
+ NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT = 0x1,
+ NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_TCLASS = 0x2,
+ NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FLOWLABEL = 0x4,
+ NM_IP_TUNNEL_FLAG_IP6_MIP6_DEV = 0x8,
+ NM_IP_TUNNEL_FLAG_IP6_RCV_DSCP_COPY = 0x10,
+ NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK = 0x20,
} NMIPTunnelFlags;
NM_AVAILABLE_IN_1_2
diff --git a/src/libnm-core-public/nm-setting-team.h b/src/libnm-core-public/nm-setting-team.h
index 339830d3e3..63df408011 100644
--- a/src/libnm-core-public/nm-setting-team.h
+++ b/src/libnm-core-public/nm-setting-team.h
@@ -26,11 +26,11 @@ G_BEGIN_DECLS
* @NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_SEND_ALWAYS: the arp_ping link watcher option
* 'send_always' is enabled (set to true).
*/
-typedef enum { /*< flags >*/
- NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE = 0, /*< skip >*/
- NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_ACTIVE = 0x2,
- NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_INACTIVE = 0x4,
- NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_SEND_ALWAYS = 0x8,
+typedef enum /*< flags >*/ {
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE = 0, /*< skip >*/
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_ACTIVE = 0x2,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_INACTIVE = 0x4,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_SEND_ALWAYS = 0x8,
} NMTeamLinkWatcherArpPingFlags;
#define NM_TEAM_LINK_WATCHER_ETHTOOL "ethtool"
diff --git a/src/libnm-core-public/nm-setting-vlan.h b/src/libnm-core-public/nm-setting-vlan.h
index 10a95da056..a99d725613 100644
--- a/src/libnm-core-public/nm-setting-vlan.h
+++ b/src/libnm-core-public/nm-setting-vlan.h
@@ -42,12 +42,10 @@ typedef struct _NMSettingVlanClass NMSettingVlanClass;
* A selector for traffic priority maps; these map Linux SKB priorities
* to 802.1p priorities used in VLANs.
**/
-/* clang-format off */
typedef enum {
NM_VLAN_INGRESS_MAP,
- NM_VLAN_EGRESS_MAP
+ NM_VLAN_EGRESS_MAP,
} NMVlanPriorityMap;
-/* clang-format on */
/**
* NMVlanFlags:
@@ -63,17 +61,17 @@ typedef enum {
*
* #NMVlanFlags values control the behavior of the VLAN interface.
**/
-typedef enum { /*< flags >*/
+typedef enum /*< flags >*/ {
- NM_VLAN_FLAG_REORDER_HEADERS = 0x1,
- NM_VLAN_FLAG_GVRP = 0x2,
- NM_VLAN_FLAG_LOOSE_BINDING = 0x4,
- NM_VLAN_FLAG_MVRP = 0x8,
+ NM_VLAN_FLAG_REORDER_HEADERS = 0x1,
+ NM_VLAN_FLAG_GVRP = 0x2,
+ NM_VLAN_FLAG_LOOSE_BINDING = 0x4,
+ NM_VLAN_FLAG_MVRP = 0x8,
- /* NOTE: if adding flags update nm-setting-vlan.c::verify() */
+ /* NOTE: if adding flags update nm-setting-vlan.c::verify() */
- /* NOTE: these flags must correspond to the value from the kernel
- * header files. */
+ /* NOTE: these flags must correspond to the value from the kernel
+ * header files. */
} NMVlanFlags;
#define NM_VLAN_FLAGS_ALL \
diff --git a/src/libnm-core-public/nm-setting-wired.h b/src/libnm-core-public/nm-setting-wired.h
index ebe0d00a05..5ad3b7f2c9 100644
--- a/src/libnm-core-public/nm-setting-wired.h
+++ b/src/libnm-core-public/nm-setting-wired.h
@@ -49,20 +49,20 @@ G_BEGIN_DECLS
*
* Since: 1.2
*/
-typedef enum { /*< flags >*/
- NM_SETTING_WIRED_WAKE_ON_LAN_NONE = 0, /*< skip >*/
- NM_SETTING_WIRED_WAKE_ON_LAN_PHY = 0x2,
- NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST = 0x4,
- NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST = 0x8,
- NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST = 0x10,
- NM_SETTING_WIRED_WAKE_ON_LAN_ARP = 0x20,
- NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC = 0x40,
-
- NM_SETTING_WIRED_WAKE_ON_LAN_ALL = 0x7E, /*< skip >*/
-
- NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT = 0x1,
- NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE = 0x8000,
- NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS = 0x8001, /*< skip >*/
+typedef enum /*< flags >*/ {
+ NM_SETTING_WIRED_WAKE_ON_LAN_NONE = 0, /*< skip >*/
+ NM_SETTING_WIRED_WAKE_ON_LAN_PHY = 0x2,
+ NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST = 0x4,
+ NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST = 0x8,
+ NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST = 0x10,
+ NM_SETTING_WIRED_WAKE_ON_LAN_ARP = 0x20,
+ NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC = 0x40,
+
+ NM_SETTING_WIRED_WAKE_ON_LAN_ALL = 0x7E, /*< skip >*/
+
+ NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT = 0x1,
+ NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE = 0x8000,
+ NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS = 0x8001, /*< skip >*/
} NMSettingWiredWakeOnLan;
#define NM_SETTING_WIRED_PORT "port"
diff --git a/src/libnm-core-public/nm-setting-wireless-security.h b/src/libnm-core-public/nm-setting-wireless-security.h
index c9aec27da9..e564204bb4 100644
--- a/src/libnm-core-public/nm-setting-wireless-security.h
+++ b/src/libnm-core-public/nm-setting-wireless-security.h
@@ -99,12 +99,12 @@ typedef enum {
*
* Since: 1.10
**/
-typedef enum { /*< flags >*/
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DEFAULT = 0x00000000,
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DISABLED = 0x00000001,
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_AUTO = 0x00000002,
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_PBC = 0x00000004,
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_PIN = 0x00000008,
+typedef enum /*< flags >*/ {
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DEFAULT = 0x00000000,
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DISABLED = 0x00000001,
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_AUTO = 0x00000002,
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_PBC = 0x00000004,
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_PIN = 0x00000008,
} NMSettingWirelessSecurityWpsMethod;
/**
diff --git a/src/libnm-core-public/nm-setting-wireless.h b/src/libnm-core-public/nm-setting-wireless.h
index 0d4872fb61..1f94060cde 100644
--- a/src/libnm-core-public/nm-setting-wireless.h
+++ b/src/libnm-core-public/nm-setting-wireless.h
@@ -53,7 +53,7 @@ G_BEGIN_DECLS
* Since: 1.12
*/
/* clang-format off */
-typedef enum { /*< flags >*/
+typedef enum /*< flags >*/ {
NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE = 0, /*< skip >*/
NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY = 0x2,
NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT = 0x4,
diff --git a/src/libnm-core-public/nm-setting.h b/src/libnm-core-public/nm-setting.h
index ddf648bca2..ee2076c362 100644
--- a/src/libnm-core-public/nm-setting.h
+++ b/src/libnm-core-public/nm-setting.h
@@ -57,13 +57,13 @@ G_BEGIN_DECLS
* is to be stored and/or requested when it is needed.
*
**/
-typedef enum { /*< flags >*/
- NM_SETTING_SECRET_FLAG_NONE = 0x00000000,
- NM_SETTING_SECRET_FLAG_AGENT_OWNED = 0x00000001,
- NM_SETTING_SECRET_FLAG_NOT_SAVED = 0x00000002,
- NM_SETTING_SECRET_FLAG_NOT_REQUIRED = 0x00000004
+typedef enum /*< flags >*/ {
+ NM_SETTING_SECRET_FLAG_NONE = 0x00000000,
+ NM_SETTING_SECRET_FLAG_AGENT_OWNED = 0x00000001,
+ NM_SETTING_SECRET_FLAG_NOT_SAVED = 0x00000002,
+ NM_SETTING_SECRET_FLAG_NOT_REQUIRED = 0x00000004
- /* NOTE: if adding flags, update nm-core-internal.h as well */
+ /* NOTE: if adding flags, update nm-core-internal.h as well */
} NMSettingSecretFlags;
/**
diff --git a/src/libnm-core-public/nm-version-macros.h.in b/src/libnm-core-public/nm-version-macros.h.in
index 76dd424029..516aded5e1 100644
--- a/src/libnm-core-public/nm-version-macros.h.in
+++ b/src/libnm-core-public/nm-version-macros.h.in
@@ -70,6 +70,7 @@
#define NM_VERSION_1_32 (NM_ENCODE_VERSION (1, 32, 0))
#define NM_VERSION_1_34 (NM_ENCODE_VERSION (1, 34, 0))
#define NM_VERSION_1_36 (NM_ENCODE_VERSION (1, 36, 0))
+#define NM_VERSION_1_38 (NM_ENCODE_VERSION (1, 38, 0))
/* For releases, NM_API_VERSION is equal to NM_VERSION.
*
diff --git a/src/libnm-core-public/nm-version.h b/src/libnm-core-public/nm-version.h
index d6f58924a7..ac98f86819 100644
--- a/src/libnm-core-public/nm-version.h
+++ b/src/libnm-core-public/nm-version.h
@@ -313,6 +313,20 @@
#define NM_AVAILABLE_IN_1_36
#endif
+#if NM_VERSION_MIN_REQUIRED >= NM_VERSION_1_38
+#define NM_DEPRECATED_IN_1_38 G_DEPRECATED
+#define NM_DEPRECATED_IN_1_38_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define NM_DEPRECATED_IN_1_38
+#define NM_DEPRECATED_IN_1_38_FOR(f)
+#endif
+
+#if NM_VERSION_MAX_ALLOWED < NM_VERSION_1_38
+#define NM_AVAILABLE_IN_1_38 G_UNAVAILABLE(1, 38)
+#else
+#define NM_AVAILABLE_IN_1_38
+#endif
+
/*
* Synchronous API for calling D-Bus in libnm is deprecated. See
* https://developer.gnome.org/libnm/stable/usage.html#sync-api
diff --git a/src/libnm-glib-aux/nm-json-aux.h b/src/libnm-glib-aux/nm-json-aux.h
index 275ed7709a..3054b1f944 100644
--- a/src/libnm-glib-aux/nm-json-aux.h
+++ b/src/libnm-glib-aux/nm-json-aux.h
@@ -391,6 +391,7 @@ nm_value_type_to_json(NMValueType value_type, GString *gstr, gconstpointer p_fie
nm_json_gstr_append_string(gstr, *((const char *const *) p_field));
return;
case NM_VALUE_TYPE_BYTES:
+ case NM_VALUE_TYPE_STRV:
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -428,12 +429,12 @@ nm_value_type_from_json(const NMJsonVt *vt,
return (nm_jansson_json_as_string(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_BYTES:
+ case NM_VALUE_TYPE_STRV:
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
}
- nm_assert_not_reached();
- return FALSE;
+ return nm_assert_unreachable_val(FALSE);
}
#endif /* NM_VALUE_TYPE_DEFINE_FUNCTIONS */
diff --git a/src/libnm-glib-aux/nm-logging-fwd.h b/src/libnm-glib-aux/nm-logging-fwd.h
index 3e999c4a9c..0e715c5047 100644
--- a/src/libnm-glib-aux/nm-logging-fwd.h
+++ b/src/libnm-glib-aux/nm-logging-fwd.h
@@ -9,54 +9,54 @@
/* Log domains */
-typedef enum { /*< skip >*/
- LOGD_NONE = 0LL,
- LOGD_PLATFORM = (1LL << 0), /* Platform services */
- LOGD_RFKILL = (1LL << 1),
- LOGD_ETHER = (1LL << 2),
- LOGD_WIFI = (1LL << 3),
- LOGD_BT = (1LL << 4),
- LOGD_MB = (1LL << 5), /* mobile broadband */
- LOGD_DHCP4 = (1LL << 6),
- LOGD_DHCP6 = (1LL << 7),
- LOGD_PPP = (1LL << 8),
- LOGD_WIFI_SCAN = (1LL << 9),
- LOGD_IP4 = (1LL << 10),
- LOGD_IP6 = (1LL << 11),
- LOGD_AUTOIP4 = (1LL << 12),
- LOGD_DNS = (1LL << 13),
- LOGD_VPN = (1LL << 14),
- LOGD_SHARING = (1LL << 15), /* Connection sharing/dnsmasq */
- LOGD_SUPPLICANT = (1LL << 16), /* Wi-Fi and 802.1x */
- LOGD_AGENTS = (1LL << 17), /* Secret agents */
- LOGD_SETTINGS = (1LL << 18), /* Settings */
- LOGD_SUSPEND = (1LL << 19), /* Suspend/Resume */
- LOGD_CORE = (1LL << 20), /* Core daemon and policy stuff */
- LOGD_DEVICE = (1LL << 21), /* Device state and activation */
- LOGD_OLPC = (1LL << 22),
- LOGD_INFINIBAND = (1LL << 23),
- LOGD_FIREWALL = (1LL << 24),
- LOGD_ADSL = (1LL << 25),
- LOGD_BOND = (1LL << 26),
- LOGD_VLAN = (1LL << 27),
- LOGD_BRIDGE = (1LL << 28),
- LOGD_DBUS_PROPS = (1LL << 29),
- LOGD_TEAM = (1LL << 30),
- LOGD_CONCHECK = (1LL << 31),
- LOGD_DCB = (1LL << 32), /* Data Center Bridging */
- LOGD_DISPATCH = (1LL << 33),
- LOGD_AUDIT = (1LL << 34),
- LOGD_SYSTEMD = (1LL << 35),
- LOGD_VPN_PLUGIN = (1LL << 36),
- LOGD_PROXY = (1LL << 37),
-
- __LOGD_MAX,
- LOGD_ALL = (((__LOGD_MAX - 1LL) << 1) - 1LL),
- LOGD_DEFAULT = LOGD_ALL & ~(LOGD_DBUS_PROPS | LOGD_WIFI_SCAN | LOGD_VPN_PLUGIN | 0),
-
- /* aliases: */
- LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6,
- LOGD_IP = LOGD_IP4 | LOGD_IP6,
+typedef enum {
+ LOGD_NONE = 0LL,
+ LOGD_PLATFORM = (1LL << 0), /* Platform services */
+ LOGD_RFKILL = (1LL << 1),
+ LOGD_ETHER = (1LL << 2),
+ LOGD_WIFI = (1LL << 3),
+ LOGD_BT = (1LL << 4),
+ LOGD_MB = (1LL << 5), /* mobile broadband */
+ LOGD_DHCP4 = (1LL << 6),
+ LOGD_DHCP6 = (1LL << 7),
+ LOGD_PPP = (1LL << 8),
+ LOGD_WIFI_SCAN = (1LL << 9),
+ LOGD_IP4 = (1LL << 10),
+ LOGD_IP6 = (1LL << 11),
+ LOGD_AUTOIP4 = (1LL << 12),
+ LOGD_DNS = (1LL << 13),
+ LOGD_VPN = (1LL << 14),
+ LOGD_SHARING = (1LL << 15), /* Connection sharing/dnsmasq */
+ LOGD_SUPPLICANT = (1LL << 16), /* Wi-Fi and 802.1x */
+ LOGD_AGENTS = (1LL << 17), /* Secret agents */
+ LOGD_SETTINGS = (1LL << 18), /* Settings */
+ LOGD_SUSPEND = (1LL << 19), /* Suspend/Resume */
+ LOGD_CORE = (1LL << 20), /* Core daemon and policy stuff */
+ LOGD_DEVICE = (1LL << 21), /* Device state and activation */
+ LOGD_OLPC = (1LL << 22),
+ LOGD_INFINIBAND = (1LL << 23),
+ LOGD_FIREWALL = (1LL << 24),
+ LOGD_ADSL = (1LL << 25),
+ LOGD_BOND = (1LL << 26),
+ LOGD_VLAN = (1LL << 27),
+ LOGD_BRIDGE = (1LL << 28),
+ LOGD_DBUS_PROPS = (1LL << 29),
+ LOGD_TEAM = (1LL << 30),
+ LOGD_CONCHECK = (1LL << 31),
+ LOGD_DCB = (1LL << 32), /* Data Center Bridging */
+ LOGD_DISPATCH = (1LL << 33),
+ LOGD_AUDIT = (1LL << 34),
+ LOGD_SYSTEMD = (1LL << 35),
+ LOGD_VPN_PLUGIN = (1LL << 36),
+ LOGD_PROXY = (1LL << 37),
+
+ __LOGD_MAX,
+ LOGD_ALL = (((__LOGD_MAX - 1LL) << 1) - 1LL),
+ LOGD_DEFAULT = LOGD_ALL & ~(LOGD_DBUS_PROPS | LOGD_WIFI_SCAN | LOGD_VPN_PLUGIN | 0),
+
+ /* aliases: */
+ LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6,
+ LOGD_IP = LOGD_IP4 | LOGD_IP6,
#define LOGD_DHCPX(is_ipv4) ((is_ipv4) ? LOGD_DHCP4 : LOGD_DHCP6)
#define LOGD_IPX(is_ipv4) ((is_ipv4) ? LOGD_IP4 : LOGD_IP6)
@@ -64,19 +64,20 @@ typedef enum { /*< skip >*/
} NMLogDomain;
/* Log levels */
-typedef enum { /*< skip >*/
- LOGL_TRACE,
- LOGL_DEBUG,
- LOGL_INFO,
- LOGL_WARN,
- LOGL_ERR,
+typedef enum {
- _LOGL_N_REAL, /* the number of actual logging levels */
+ LOGL_TRACE,
+ LOGL_DEBUG,
+ LOGL_INFO,
+ LOGL_WARN,
+ LOGL_ERR,
- _LOGL_OFF = _LOGL_N_REAL, /* special logging level that is always disabled. */
- _LOGL_KEEP, /* special logging level to indicate that the logging level should not be changed. */
+ _LOGL_N_REAL, /* the number of actual logging levels */
- _LOGL_N, /* the number of logging levels including "OFF" */
+ _LOGL_OFF = _LOGL_N_REAL, /* special logging level that is always disabled. */
+ _LOGL_KEEP, /* special logging level to indicate that the logging level should not be changed. */
+
+ _LOGL_N, /* the number of logging levels including "OFF" */
} NMLogLevel;
gboolean _nm_log_enabled_impl(gboolean mt_require_locking, NMLogLevel level, NMLogDomain domain);
diff --git a/src/libnm-glib-aux/nm-macros-internal.h b/src/libnm-glib-aux/nm-macros-internal.h
index 14c160204b..3ccf9dea22 100644
--- a/src/libnm-glib-aux/nm-macros-internal.h
+++ b/src/libnm-glib-aux/nm-macros-internal.h
@@ -184,22 +184,32 @@ _nm_auto_freev(gpointer ptr)
* same name for the same warning. */
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define NM_PRAGMA_DIAGNOSTICS_PUSH _Pragma("GCC diagnostic push")
#define NM_PRAGMA_WARNING_DISABLE(warning) \
- _Pragma("GCC diagnostic push") _Pragma(_NM_PRAGMA_WARNING_DO(warning))
+ NM_PRAGMA_DIAGNOSTICS_PUSH _Pragma(_NM_PRAGMA_WARNING_DO(warning))
+#define NM_PRAGMA_WARNING_REENABLE _Pragma("GCC diagnostic pop")
#elif defined(__clang__)
-#define NM_PRAGMA_WARNING_DISABLE(warning) \
- _Pragma("clang diagnostic push") _Pragma(_NM_PRAGMA_WARNING_DO("-Wunknown-warning-option")) \
+#define NM_PRAGMA_DIAGNOSTICS_PUSH _Pragma("clang diagnostic push")
+#define NM_PRAGMA_WARNING_DISABLE(warning) \
+ NM_PRAGMA_DIAGNOSTICS_PUSH _Pragma(_NM_PRAGMA_WARNING_DO("-Wunknown-warning-option")) \
_Pragma(_NM_PRAGMA_WARNING_DO(warning))
+#define NM_PRAGMA_WARNING_REENABLE _Pragma("clang diagnostic pop")
#else
+#define NM_PRAGMA_DIAGNOSTICS_PUSH
#define NM_PRAGMA_WARNING_DISABLE(warning)
+#define NM_PRAGMA_WARNING_REENABLE
#endif
-#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
-#define NM_PRAGMA_WARNING_REENABLE _Pragma("GCC diagnostic pop")
-#elif defined(__clang__)
-#define NM_PRAGMA_WARNING_REENABLE _Pragma("clang diagnostic pop")
+/*****************************************************************************/
+
+/* Seems gcc-12 has a tendency for false-positive -Wdangling-pointer warnings with
+ * g_error()'s `for(;;);`.
+ *
+ * Work around that, but it's only for gcc 12 (for now). */
+#if defined(__GNUC__) && __GNUC__ == 12
+#define NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER NM_PRAGMA_WARNING_DISABLE("-Wdangling-pointer")
#else
-#define NM_PRAGMA_WARNING_REENABLE
+#define NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER NM_PRAGMA_DIAGNOSTICS_PUSH
#endif
/*****************************************************************************/
diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c
index 6e6fed12c2..262be5feea 100644
--- a/src/libnm-glib-aux/nm-shared-utils.c
+++ b/src/libnm-glib-aux/nm-shared-utils.c
@@ -1130,6 +1130,7 @@ nm_utils_parse_inaddr_bin_full(int addr_family,
#if NM_MORE_ASSERTS > 10
if (addr_family == AF_INET) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
gs_free_error GError *error = NULL;
in_addr_t a;
@@ -1145,6 +1146,7 @@ nm_utils_parse_inaddr_bin_full(int addr_family,
error->message);
}
nm_assert(addrbin.addr4 == a);
+ NM_PRAGMA_WARNING_REENABLE
}
#endif
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 54550f2737..390b4ccb4a 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -3139,6 +3139,33 @@ nm_strvarray_remove_first(GArray *strv, const char *needle)
return TRUE;
}
+static inline int
+nm_strvarray_cmp(const GArray *a, const GArray *b)
+{
+ NM_CMP_SELF(a, b);
+
+ return nm_strv_cmp_n((const char *const *) a->data,
+ a->len,
+ (const char *const *) b->data,
+ b->len);
+}
+
+#define nm_strvarray_equal(a, b) (nm_strvarray_cmp((a), (b)) == 0)
+
+static inline int
+_nm_strvarray_cmp_strv(const GArray *strv, const char *const *ss, gsize ss_len)
+{
+ return nm_strv_cmp_n(strv ? (const char *const *) strv->data : NULL,
+ strv ? ((gssize) strv->len) : -1,
+ ss,
+ ss_len);
+}
+#define nm_strvarray_cmp_strv(strv, ss, ss_len) \
+ _nm_strvarray_cmp_strv((strv), NM_CAST_STRV_CC(ss), (ss_len))
+
+#define nm_strvarray_equal_strv(strv, ss, ss_len) \
+ (nm_strvarray_cmp_strv((strv), (ss), (ss_len)) == 0)
+
/*****************************************************************************/
struct _NMVariantAttributeSpec {
diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h
index caf43d5f48..2dfe9e323e 100644
--- a/src/libnm-glib-aux/nm-test-utils.h
+++ b/src/libnm-glib-aux/nm-test-utils.h
@@ -1714,8 +1714,11 @@ __nmtst_spawn_sync(const char *working_directory,
standard_err,
&exit_status,
&error);
- if (!success)
+ if (!success) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("nmtst_spawn_sync(%s): %s", ((char **) argv->pdata)[0], error->message);
+ NM_PRAGMA_WARNING_REENABLE
+ }
g_assert(!error);
g_assert(!standard_out || *standard_out);
@@ -1844,7 +1847,8 @@ _nmtst_assert_resolve_relative_path_equals(const char *f1,
/* Fixme: later we might need to coalesce repeated '/', "./", and "../".
* For now, it's good enough. */
- if (g_strcmp0(p1, p2) != 0)
+ if (g_strcmp0(p1, p2) != 0) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("%s:%d : filenames don't match \"%s\" vs. \"%s\" // \"%s\" - \"%s\"",
file,
line,
@@ -1852,6 +1856,8 @@ _nmtst_assert_resolve_relative_path_equals(const char *f1,
f2,
p1,
p2);
+ NM_PRAGMA_WARNING_REENABLE
+ }
}
#define nmtst_assert_resolve_relative_path_equals(f1, f2) \
_nmtst_assert_resolve_relative_path_equals(f1, f2, __FILE__, __LINE__);
@@ -2404,9 +2410,11 @@ _nmtst_assert_connection_has_settings(NMConnection *connection,
settings = nm_connection_get_settings(connection, &len);
for (i = 0; i < len; i++) {
if (!g_hash_table_remove(names, nm_setting_get_name(settings[i])) && has_at_most) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error(
"nmtst_assert_connection_has_settings(): has setting \"%s\" which is not expected",
nm_setting_get_name(settings[i]));
+ NM_PRAGMA_WARNING_REENABLE
}
}
if (g_hash_table_size(names) > 0 && has_at_least) {
@@ -2419,11 +2427,13 @@ _nmtst_assert_connection_has_settings(NMConnection *connection,
settings_names[i] = nm_setting_get_name(settings[i]);
has_str = g_strjoinv(" ", (char **) settings_names);
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("nmtst_assert_connection_has_settings(): the setting lacks %u expected settings "
"(expected: [%s] vs. has: [%s])",
g_hash_table_size(names),
expected_str,
has_str);
+ NM_PRAGMA_WARNING_REENABLE
}
}
#define nmtst_assert_connection_has_settings(connection, ...) \
diff --git a/src/libnm-glib-aux/nm-value-type.h b/src/libnm-glib-aux/nm-value-type.h
index d774e12072..771021da4c 100644
--- a/src/libnm-glib-aux/nm-value-type.h
+++ b/src/libnm-glib-aux/nm-value-type.h
@@ -9,25 +9,26 @@
typedef enum _nm_packed {
NM_VALUE_TYPE_NONE = 0,
NM_VALUE_TYPE_UNSPEC = 1,
- NM_VALUE_TYPE_BOOL = 2,
- NM_VALUE_TYPE_INT32 = 3,
- NM_VALUE_TYPE_INT = 4,
- NM_VALUE_TYPE_INT64 = 5,
- NM_VALUE_TYPE_UINT32 = 6,
- NM_VALUE_TYPE_UINT = 7,
- NM_VALUE_TYPE_UINT64 = 8,
+
+ NM_VALUE_TYPE_BOOL,
+ NM_VALUE_TYPE_INT32,
+ NM_VALUE_TYPE_INT,
+ NM_VALUE_TYPE_INT64,
+ NM_VALUE_TYPE_UINT32,
+ NM_VALUE_TYPE_UINT,
+ NM_VALUE_TYPE_UINT64,
/* Flags are for G_TYPE_FLAGS. That is, internally they are tracked
* as a guint, they have a g_param_spec_flags() property and they are
* serialized on D-Bus as "u". */
- NM_VALUE_TYPE_FLAGS = 9,
+ NM_VALUE_TYPE_FLAGS,
/* G_TYPE_ENUM */
- NM_VALUE_TYPE_ENUM = 10,
-
- NM_VALUE_TYPE_STRING = 11,
+ NM_VALUE_TYPE_ENUM,
- NM_VALUE_TYPE_BYTES = 12,
+ NM_VALUE_TYPE_STRING,
+ NM_VALUE_TYPE_BYTES,
+ NM_VALUE_TYPE_STRV,
} NMValueType;
/*****************************************************************************/
@@ -112,14 +113,17 @@ nm_value_type_cmp(NMValueType value_type, gconstpointer p_a, gconstpointer p_b)
return 0;
case NM_VALUE_TYPE_STRING:
return nm_strcmp0(*((const char *const *) p_a), *((const char *const *) p_b));
+
case NM_VALUE_TYPE_BYTES:
- return nm_g_bytes_equal0(*((const GBytes *const *) p_a), *((const GBytes *const *) p_b));
+ case NM_VALUE_TYPE_STRV:
+ /* These types have implementation define memory representations. */
+ break;
+
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
}
- nm_assert_not_reached();
- return 0;
+ return nm_assert_unreachable_val(0);
}
static inline gboolean
@@ -163,14 +167,12 @@ nm_value_type_copy(NMValueType value_type, gpointer dst, gconstpointer src)
*((char **) dst) = g_strdup(*((const char *const *) src));
}
return;
+
case NM_VALUE_TYPE_BYTES:
- /* self assignment safe! */
- if (*((GBytes **) dst) != *((const GBytes *const *) src)) {
- _nm_unused gs_unref_bytes GBytes *old = *((GBytes **) dst);
+ case NM_VALUE_TYPE_STRV:
+ /* These types have implementation define memory representations. */
+ break;
- *((GBytes **) dst) = g_bytes_ref(*((GBytes *const *) src));
- }
- return;
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -212,14 +214,18 @@ nm_value_type_get_from_variant(NMValueType value_type,
return;
case NM_VALUE_TYPE_BYTES:
+ case NM_VALUE_TYPE_STRV:
+ /* These types have implementation define memory representations. */
+ break;
+
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
case NM_VALUE_TYPE_ENUM:
case NM_VALUE_TYPE_FLAGS:
/* These types don't have a defined variant type, because it's not
* clear how many bits we would need or how to handle the type. */
+ break;
- /* fall-through */
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -230,8 +236,7 @@ nm_value_type_get_from_variant(NMValueType value_type,
static inline GVariant *
nm_value_type_to_variant(NMValueType value_type, gconstpointer src)
{
- const char *v_string;
- const GBytes *v_bytes;
+ const char *v_string;
switch (value_type) {
case NM_VALUE_TYPE_BOOL:
@@ -247,9 +252,11 @@ nm_value_type_to_variant(NMValueType value_type, gconstpointer src)
case NM_VALUE_TYPE_STRING:
v_string = *((const char *const *) src);
return v_string ? g_variant_new_string(v_string) : NULL;
+
case NM_VALUE_TYPE_BYTES:
- v_bytes = *((const GBytes *const *) src);
- return v_bytes ? nm_g_bytes_to_variant_ay(v_bytes) : NULL;
+ case NM_VALUE_TYPE_STRV:
+ /* These types have implementation define memory representations. */
+ break;
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
@@ -257,14 +264,13 @@ nm_value_type_to_variant(NMValueType value_type, gconstpointer src)
case NM_VALUE_TYPE_FLAGS:
/* These types don't have a defined variant type, because it's not
* clear how many bits we would need or how to handle the type. */
+ break;
- /* fall-through */
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
}
- nm_assert_not_reached();
- return NULL;
+ return nm_assert_unreachable_val(NULL);
}
static inline const GVariantType *
@@ -285,6 +291,8 @@ nm_value_type_get_variant_type(NMValueType value_type)
return G_VARIANT_TYPE_STRING;
case NM_VALUE_TYPE_BYTES:
return G_VARIANT_TYPE_BYTESTRING;
+ case NM_VALUE_TYPE_STRV:
+ return G_VARIANT_TYPE_STRING_ARRAY;
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index ce21ebbb7a..e3cc7a4dbc 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -1114,20 +1114,22 @@ _linktype_get_type(NMPlatform *platform,
return link_type;
}
- if (arptype == ARPHRD_LOOPBACK)
+ switch (arptype) {
+ case ARPHRD_LOOPBACK:
return NM_LINK_TYPE_LOOPBACK;
- else if (arptype == ARPHRD_INFINIBAND)
+ case ARPHRD_INFINIBAND:
return NM_LINK_TYPE_INFINIBAND;
- else if (arptype == ARPHRD_SIT)
+ case ARPHRD_SIT:
return NM_LINK_TYPE_SIT;
- else if (arptype == ARPHRD_TUNNEL6)
+ case ARPHRD_TUNNEL6:
return NM_LINK_TYPE_IP6TNL;
- else if (arptype == ARPHRD_PPP)
+ case ARPHRD_PPP:
return NM_LINK_TYPE_PPP;
- else if (arptype == ARPHRD_IEEE802154)
+ case ARPHRD_IEEE802154:
return NM_LINK_TYPE_WPAN;
- else if (arptype == ARPHRD_6LOWPAN)
+ case ARPHRD_6LOWPAN:
return NM_LINK_TYPE_6LOWPAN;
+ }
{
NMPUtilsEthtoolDriverInfo driver_info;
@@ -8451,6 +8453,7 @@ static gboolean
wifi_get_capabilities(NMPlatform *platform, int ifindex, _NMDeviceWifiCapabilities *caps)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
if (caps)
*caps = nm_wifi_utils_get_caps(wifi_data);
return TRUE;
@@ -8460,6 +8463,7 @@ static guint32
wifi_get_frequency(NMPlatform *platform, int ifindex)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, 0);
+
return nm_wifi_utils_get_freq(wifi_data);
}
@@ -8471,6 +8475,7 @@ wifi_get_station(NMPlatform *platform,
guint32 *out_rate)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
return nm_wifi_utils_get_station(wifi_data, out_bssid, out_quality, out_rate);
}
@@ -8478,6 +8483,7 @@ static _NM80211Mode
wifi_get_mode(NMPlatform *platform, int ifindex)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, _NM_802_11_MODE_UNKNOWN);
+
return nm_wifi_utils_get_mode(wifi_data);
}
@@ -8485,6 +8491,7 @@ static void
wifi_set_mode(NMPlatform *platform, int ifindex, _NM80211Mode mode)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, );
+
nm_wifi_utils_set_mode(wifi_data, mode);
}
@@ -8492,6 +8499,7 @@ static void
wifi_set_powersave(NMPlatform *platform, int ifindex, guint32 powersave)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, );
+
nm_wifi_utils_set_powersave(wifi_data, powersave);
}
@@ -8499,6 +8507,7 @@ static guint32
wifi_find_frequency(NMPlatform *platform, int ifindex, const guint32 *freqs)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, 0);
+
return nm_wifi_utils_find_freq(wifi_data, freqs);
}
@@ -8506,6 +8515,7 @@ static void
wifi_indicate_addressing_running(NMPlatform *platform, int ifindex, gboolean running)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, );
+
nm_wifi_utils_indicate_addressing_running(wifi_data, running);
}
@@ -8513,6 +8523,7 @@ static _NMSettingWirelessWakeOnWLan
wifi_get_wake_on_wlan(NMPlatform *platform, int ifindex)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
return nm_wifi_utils_get_wake_on_wlan(wifi_data);
}
@@ -8520,6 +8531,7 @@ static gboolean
wifi_set_wake_on_wlan(NMPlatform *platform, int ifindex, _NMSettingWirelessWakeOnWLan wowl)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
return nm_wifi_utils_set_wake_on_wlan(wifi_data, wowl);
}
@@ -8565,6 +8577,7 @@ static guint32
mesh_get_channel(NMPlatform *platform, int ifindex)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, 0);
+
return nm_wifi_utils_get_mesh_channel(wifi_data);
}
@@ -8572,6 +8585,7 @@ static gboolean
mesh_set_channel(NMPlatform *platform, int ifindex, guint32 channel)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
return nm_wifi_utils_set_mesh_channel(wifi_data, channel);
}
@@ -8579,6 +8593,7 @@ static gboolean
mesh_set_ssid(NMPlatform *platform, int ifindex, const guint8 *ssid, gsize len)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+
return nm_wifi_utils_set_mesh_ssid(wifi_data, ssid, len);
}
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c
index 922f412df7..f76cdfcf78 100644
--- a/src/libnm-platform/nm-platform.c
+++ b/src/libnm-platform/nm-platform.c
@@ -2092,7 +2092,10 @@ nm_platform_link_release(NMPlatform *self, int master, int ifindex)
if (nm_platform_link_get_master(self, ifindex) != master)
return FALSE;
- _LOG3D("link: releasing from master '%s'", nm_platform_link_get_name(self, master));
+ _LOG3D("link: releasing %d from master '%s' (%d)",
+ ifindex,
+ nm_platform_link_get_name(self, master),
+ master);
return klass->link_release(self, master, ifindex);
}
diff --git a/src/libnm-platform/nm-platform.h b/src/libnm-platform/nm-platform.h
index 6f5cd5248f..0882f240e3 100644
--- a/src/libnm-platform/nm-platform.h
+++ b/src/libnm-platform/nm-platform.h
@@ -259,17 +259,17 @@ struct _NMPlatformLink {
bool initialized : 1;
};
-typedef enum { /*< skip >*/
- NM_PLATFORM_SIGNAL_ID_NONE,
- NM_PLATFORM_SIGNAL_ID_LINK,
- NM_PLATFORM_SIGNAL_ID_IP4_ADDRESS,
- NM_PLATFORM_SIGNAL_ID_IP6_ADDRESS,
- NM_PLATFORM_SIGNAL_ID_IP4_ROUTE,
- NM_PLATFORM_SIGNAL_ID_IP6_ROUTE,
- NM_PLATFORM_SIGNAL_ID_ROUTING_RULE,
- NM_PLATFORM_SIGNAL_ID_QDISC,
- NM_PLATFORM_SIGNAL_ID_TFILTER,
- _NM_PLATFORM_SIGNAL_ID_LAST,
+typedef enum {
+ NM_PLATFORM_SIGNAL_ID_NONE,
+ NM_PLATFORM_SIGNAL_ID_LINK,
+ NM_PLATFORM_SIGNAL_ID_IP4_ADDRESS,
+ NM_PLATFORM_SIGNAL_ID_IP6_ADDRESS,
+ NM_PLATFORM_SIGNAL_ID_IP4_ROUTE,
+ NM_PLATFORM_SIGNAL_ID_IP6_ROUTE,
+ NM_PLATFORM_SIGNAL_ID_ROUTING_RULE,
+ NM_PLATFORM_SIGNAL_ID_QDISC,
+ NM_PLATFORM_SIGNAL_ID_TFILTER,
+ _NM_PLATFORM_SIGNAL_ID_LAST,
} NMPlatformSignalIdType;
guint _nm_platform_signal_id_get(NMPlatformSignalIdType signal_type);
diff --git a/src/libnm-platform/nmp-object.h b/src/libnm-platform/nmp-object.h
index 784dcc2dec..508def45f2 100644
--- a/src/libnm-platform/nmp-object.h
+++ b/src/libnm-platform/nmp-object.h
@@ -91,17 +91,17 @@ typedef struct _NMPWireGuardPeer {
/*****************************************************************************/
-typedef enum { /*< skip >*/
- NMP_OBJECT_TO_STRING_ID,
- NMP_OBJECT_TO_STRING_PUBLIC,
- NMP_OBJECT_TO_STRING_ALL,
+typedef enum {
+ NMP_OBJECT_TO_STRING_ID,
+ NMP_OBJECT_TO_STRING_PUBLIC,
+ NMP_OBJECT_TO_STRING_ALL,
} NMPObjectToStringMode;
-typedef enum { /*< skip >*/
- NMP_CACHE_OPS_UNCHANGED = NM_PLATFORM_SIGNAL_NONE,
- NMP_CACHE_OPS_ADDED = NM_PLATFORM_SIGNAL_ADDED,
- NMP_CACHE_OPS_UPDATED = NM_PLATFORM_SIGNAL_CHANGED,
- NMP_CACHE_OPS_REMOVED = NM_PLATFORM_SIGNAL_REMOVED,
+typedef enum {
+ NMP_CACHE_OPS_UNCHANGED = NM_PLATFORM_SIGNAL_NONE,
+ NMP_CACHE_OPS_ADDED = NM_PLATFORM_SIGNAL_ADDED,
+ NMP_CACHE_OPS_UPDATED = NM_PLATFORM_SIGNAL_CHANGED,
+ NMP_CACHE_OPS_REMOVED = NM_PLATFORM_SIGNAL_REMOVED,
} NMPCacheOpsType;
/* The NMPCacheIdType are the different index types.
diff --git a/src/libnm-platform/tests/test-nm-platform.c b/src/libnm-platform/tests/test-nm-platform.c
index d4de0dd5ea..9ac69bdeda 100644
--- a/src/libnm-platform/tests/test-nm-platform.c
+++ b/src/libnm-platform/tests/test-nm-platform.c
@@ -131,11 +131,13 @@ test_nmp_link_mode_all_advertised_modes_bits(void)
for (i = 0; i < (int) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes); i++) {
if (flags[i] != _nmp_link_mode_all_advertised_modes[i]) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("_nmp_link_mode_all_advertised_modes[%d] should be 0x%0x but is 0x%0x "
"(according to the bits in _nmp_link_mode_all_advertised_modes_bits)",
i,
flags[i],
_nmp_link_mode_all_advertised_modes[i]);
+ NM_PRAGMA_WARNING_REENABLE
}
}
}
diff --git a/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c b/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c
index 3906384b13..2659414e11 100644
--- a/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c
+++ b/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c
@@ -384,8 +384,10 @@ wifi_nl80211_find_freq(NMWifiUtils *data, const guint32 *freqs)
int i;
int j;
- for (i = 0; i < self->num_freqs; i++) {
- for (j = 0; freqs[j] != 0; j++) {
+ /* It's important to check the values in the order of @freqs, because
+ * that array might be sorted to contain preferred frequencies first. */
+ for (j = 0; freqs[j] != 0; j++) {
+ for (i = 0; i < self->num_freqs; i++) {
if (self->freqs[i] == freqs[j])
return freqs[j];
}
diff --git a/src/libnm-platform/wifi/nm-wifi-utils-wext.c b/src/libnm-platform/wifi/nm-wifi-utils-wext.c
index 8d0e6ed04a..678d71fe60 100644
--- a/src/libnm-platform/wifi/nm-wifi-utils-wext.c
+++ b/src/libnm-platform/wifi/nm-wifi-utils-wext.c
@@ -255,8 +255,10 @@ wifi_wext_find_freq(NMWifiUtils *data, const guint32 *freqs)
guint i;
guint j;
- for (i = 0; i < wext->num_freqs; i++) {
- for (j = 0; freqs[j] != 0; j++) {
+ /* It's important to check the values in the order of @freqs, because
+ * that array might be sorted to contain preferred frequencies first. */
+ for (j = 0; freqs[j] != 0; j++) {
+ for (i = 0; i < wext->num_freqs; i++) {
if (wext->freqs[i] == freqs[j])
return freqs[j];
}
diff --git a/src/libnm-platform/wifi/nm-wifi-utils.c b/src/libnm-platform/wifi/nm-wifi-utils.c
index 8bdd65c2bc..1e484cfd1b 100644
--- a/src/libnm-platform/wifi/nm-wifi-utils.c
+++ b/src/libnm-platform/wifi/nm-wifi-utils.c
@@ -60,6 +60,7 @@ _NM80211Mode
nm_wifi_utils_get_mode(NMWifiUtils *data)
{
g_return_val_if_fail(data != NULL, _NM_802_11_MODE_UNKNOWN);
+
return NM_WIFI_UTILS_GET_CLASS(data)->get_mode(data);
}
@@ -118,6 +119,7 @@ guint32
nm_wifi_utils_get_freq(NMWifiUtils *data)
{
g_return_val_if_fail(data != NULL, 0);
+
return NM_WIFI_UTILS_GET_CLASS(data)->get_freq(data);
}
@@ -126,6 +128,7 @@ nm_wifi_utils_find_freq(NMWifiUtils *data, const guint32 *freqs)
{
g_return_val_if_fail(data != NULL, 0);
g_return_val_if_fail(freqs != NULL, 0);
+
return NM_WIFI_UTILS_GET_CLASS(data)->find_freq(data, freqs);
}
diff --git a/src/libnmc-base/nm-client-utils.c b/src/libnmc-base/nm-client-utils.c
index 01b3df327d..e2ed7fc287 100644
--- a/src/libnmc-base/nm-client-utils.c
+++ b/src/libnmc-base/nm-client-utils.c
@@ -732,7 +732,7 @@ nmc_print_qrcode(const char *str)
* Example of @passwd_file contents:
* wifi.psk:tajne heslo
* 802-1x.password:krakonos
- * 802-11-wireless-security:leap-password:my leap password
+ * 802-11-wireless-security.leap-password:my leap password
*
* Returns: (transfer full): hash table with parsed passwords, or %NULL on an error
*/
diff --git a/src/libnmc-setting/nm-meta-setting-base-impl.h b/src/libnmc-setting/nm-meta-setting-base-impl.h
index ea4f85ff1b..b1f1263693 100644
--- a/src/libnmc-setting/nm-meta-setting-base-impl.h
+++ b/src/libnmc-setting/nm-meta-setting-base-impl.h
@@ -38,15 +38,15 @@
*
* 10: NMSettingUser
*/
-typedef enum { /*< skip >*/
- NM_SETTING_PRIORITY_INVALID = 0,
- NM_SETTING_PRIORITY_CONNECTION = 1,
- NM_SETTING_PRIORITY_HW_BASE = 2,
- NM_SETTING_PRIORITY_HW_NON_BASE = 3,
- NM_SETTING_PRIORITY_HW_AUX = 4,
- NM_SETTING_PRIORITY_AUX = 5,
- NM_SETTING_PRIORITY_IP = 6,
- NM_SETTING_PRIORITY_USER = 10,
+typedef enum /*< skip >*/ {
+ NM_SETTING_PRIORITY_INVALID = 0,
+ NM_SETTING_PRIORITY_CONNECTION = 1,
+ NM_SETTING_PRIORITY_HW_BASE = 2,
+ NM_SETTING_PRIORITY_HW_NON_BASE = 3,
+ NM_SETTING_PRIORITY_HW_AUX = 4,
+ NM_SETTING_PRIORITY_AUX = 5,
+ NM_SETTING_PRIORITY_IP = 6,
+ NM_SETTING_PRIORITY_USER = 10,
} NMSettingPriority;
/*****************************************************************************/
diff --git a/src/nm-cloud-setup/nm-http-client.c b/src/nm-cloud-setup/nm-http-client.c
index 2f71cefa3d..7ef9f38d34 100644
--- a/src/nm-cloud-setup/nm-http-client.c
+++ b/src/nm-cloud-setup/nm-http-client.c
@@ -305,6 +305,7 @@ nm_http_client_get(NMHttpClient *self,
curl_easy_setopt(edata->ehandle, CURLOPT_WRITEFUNCTION, _get_writefunction_cb);
curl_easy_setopt(edata->ehandle, CURLOPT_WRITEDATA, edata);
curl_easy_setopt(edata->ehandle, CURLOPT_PRIVATE, edata);
+ curl_easy_setopt(edata->ehandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
if (http_headers) {
for (i = 0; http_headers[i]; ++i) {
diff --git a/src/nm-dispatcher/tests/test-dispatcher-envp.c b/src/nm-dispatcher/tests/test-dispatcher-envp.c
index f53bb1c137..51d31544ec 100644
--- a/src/nm-dispatcher/tests/test-dispatcher-envp.c
+++ b/src/nm-dispatcher/tests/test-dispatcher-envp.c
@@ -530,8 +530,11 @@ test_generic(const char *file, const char *override_vpn_ip_iface)
g_assert((!denv && error_message) || (denv && !error_message));
- if (error_message)
+ if (error_message) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
g_error("FAILED: %s", error_message);
+ NM_PRAGMA_WARNING_REENABLE
+ }
if (g_strv_length(denv) != g_hash_table_size(expected_env)) {
_print_env(NM_CAST_STRV_CC(denv), expected_env);
@@ -552,8 +555,10 @@ test_generic(const char *file, const char *override_vpn_ip_iface)
foo = g_hash_table_lookup(expected_env, i_value);
if (!foo) {
+ NM_PRAGMA_WARNING_DISABLE_DANGLING_POINTER
_print_env(NM_CAST_STRV_CC(denv), expected_env);
g_error("Failed to find %s in environment", i_value);
+ NM_PRAGMA_WARNING_REENABLE
}
}
diff --git a/src/nmcli/nmcli.c b/src/nmcli/nmcli.c
index fae4058490..fa5ce42687 100644
--- a/src/nmcli/nmcli.c
+++ b/src/nmcli/nmcli.c
@@ -11,7 +11,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
-#include <termios.h>
#include <unistd.h>
#include <locale.h>
#if HAVE_EDITLINE_READLINE
@@ -118,8 +117,7 @@ typedef struct {
} ArgsInfo;
/* --- Global variables --- */
-GMainLoop *loop = NULL;
-struct termios termios_orig;
+GMainLoop *loop = NULL;
NM_CACHED_QUARK_FCN("nmcli-error-quark", nmcli_error_quark);
@@ -935,7 +933,6 @@ nmc_clear_sigint(void)
void
nmc_exit(void)
{
- tcsetattr(STDIN_FILENO, TCSADRAIN, &termios_orig);
nmc_cleanup_readline();
exit(1);
}
@@ -1026,9 +1023,6 @@ main(int argc, char *argv[])
textdomain(GETTEXT_PACKAGE);
#endif
- /* Save terminal settings */
- tcgetattr(STDIN_FILENO, &termios_orig);
-
nm_cli.return_text = g_string_new(_("Success"));
loop = g_main_loop_new(NULL, FALSE);
diff --git a/src/nmtui/nmt-mac-entry.h b/src/nmtui/nmt-mac-entry.h
index 0ed5a28cbd..de44fb9d0e 100644
--- a/src/nmtui/nmt-mac-entry.h
+++ b/src/nmtui/nmt-mac-entry.h
@@ -9,9 +9,9 @@
#include "nm-utils.h"
#include "libnmt-newt/nmt-newt.h"
-typedef enum { /*< skip >*/
- NMT_MAC_ENTRY_TYPE_MAC,
- NMT_MAC_ENTRY_TYPE_CLONED,
+typedef enum {
+ NMT_MAC_ENTRY_TYPE_MAC,
+ NMT_MAC_ENTRY_TYPE_CLONED,
} NmtMacEntryType;
#define NMT_TYPE_MAC_ENTRY (nmt_mac_entry_get_type())