diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2022-02-24 19:31:08 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2022-02-24 19:31:09 +0100 |
commit | 2c9d3ef6c7f8604e9ba1fad81e0d1f316e2fc7d7 (patch) | |
tree | d4c1c0f9c8236756ac4e11ae31ff801cb1428df9 | |
parent | ccb20e23e335b13f6b71354737d653ed3e88101b (diff) | |
parent | 38290b1b8699937ea1137063a4d5f9757c21dec5 (diff) |
release: bump version to 1.37.1 (development)1.37.1-dev
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) ############################################################################### @@ -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 ============================================= @@ -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()) |