From 067fb576988f685e83ac8b0ae690334aff547c85 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 22 Feb 2026 00:39:58 +0100 Subject: New upstream version 1.56.0 --- .gitlab-ci.yml | 300 +- .gitlab-ci/ci.template | 2 +- .gitlab-ci/config.yml | 31 +- .gitlab-ci/distros-info.yml | 52 +- .gitlab-ci/run-test.sh | 7 +- MAINTAINERS.md | 26 +- NEWS | 61 +- config.h.meson | 9 + contrib/alpine/REQUIRED_PACKAGES | 1 - contrib/debian/REQUIRED_PACKAGES | 1 - contrib/fedora/REQUIRED_PACKAGES | 1 - contrib/fedora/rpm/NetworkManager.spec | 62 +- contrib/fedora/rpm/build.sh | 14 +- contrib/fedora/rpm/configure-for-system.sh | 2 - contrib/fedora/rpm/release.sh | 253 +- contrib/scripts/nm-ci-run.sh | 3 +- data/NetworkManager.service.in | 2 +- docs/api/meson.build | 2 + man/NetworkManager.conf.xml | 8 +- man/meson.build | 128 +- man/nmcli.xml | 5 +- meson.build | 101 +- meson_options.txt | 3 +- po/ca.po | 97 +- po/it.po | 2 +- po/ru.po | 4797 +++++++++--------- po/sk.po | 368 +- po/sl.po | 5107 ++++++++++---------- src/contrib/nm-vpn-plugin-utils.c | 30 + src/contrib/nm-vpn-plugin-utils.h | 2 + src/core/devices/nm-device-bridge.c | 2 +- src/core/devices/nm-device-ethernet.c | 16 +- src/core/devices/nm-device-macsec.c | 13 + src/core/devices/nm-device-private.h | 3 - src/core/devices/nm-device-utils.c | 4 +- src/core/devices/nm-device-wireguard.c | 61 +- src/core/devices/nm-device.c | 122 +- src/core/devices/nm-device.h | 3 + src/core/devices/ovs/nm-ovsdb.c | 105 +- src/core/devices/wifi/nm-device-wifi.c | 38 + src/core/devices/wifi/nm-iwd-manager.c | 2 +- src/core/devices/wwan/nm-modem-broadband.c | 12 +- src/core/devices/wwan/nm-modem.c | 41 +- src/core/devices/wwan/nm-modem.h | 2 + src/core/dns/nm-dns-dnsconfd.c | 2 +- src/core/dns/nm-dns-dnsmasq.c | 5 +- src/core/dns/nm-dns-manager.c | 13 +- src/core/dns/nm-dns-systemd-resolved.c | 28 +- src/core/main-utils.c | 2 +- src/core/main.c | 2 +- src/core/ndisc/nm-lndp-ndisc.c | 69 +- src/core/nm-connectivity.c | 134 +- src/core/nm-core-utils.c | 158 + src/core/nm-core-utils.h | 13 + src/core/nm-l3-config-data.c | 42 + src/core/nm-l3-config-data.h | 4 + src/core/nm-l3cfg.c | 24 +- src/core/nm-netns.c | 161 +- src/core/nm-netns.h | 19 +- src/core/nm-policy.c | 5 +- src/core/platform/tests/monitor.c | 1 + src/core/platform/tests/test-link.c | 3 +- src/core/platform/tests/test-route.c | 74 + src/core/settings/nm-settings-storage.h | 13 + src/core/settings/nm-settings.c | 48 +- .../plugins/ifcfg-rh/nms-ifcfg-rh-reader.c | 24 +- .../plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 9 + .../settings/plugins/keyfile/nms-keyfile-utils.c | 1 + .../settings/plugins/keyfile/nms-keyfile-writer.c | 10 +- .../plugins/keyfile/tests/keyfiles/Test_Write_GSM | 1 + .../plugins/keyfile/tests/test-keyfile-settings.c | 2 + src/core/supplicant/nm-supplicant-config.c | 48 +- src/core/supplicant/nm-supplicant-interface.c | 15 + src/core/supplicant/nm-supplicant-interface.h | 1 + src/core/tests/meson.build | 1 + src/core/tests/test-netns.c | 69 + src/core/tests/test-utils.c | 65 + src/core/vpn/nm-vpn-connection.c | 51 +- .../tests/test-libnm-client-aux.c | 222 + src/libnm-client-impl/libnm.ver | 16 +- src/libnm-client-impl/nm-client.c | 24 + src/libnm-client-impl/tests/test-gir.py | 2 - src/libnm-client-impl/tests/test-libnm.c | 2 + src/libnm-core-aux-extern/nm-libnm-core-aux.c | 175 + src/libnm-core-aux-extern/nm-libnm-core-aux.h | 6 +- src/libnm-core-aux-intern/nm-libnm-core-utils.c | 88 +- src/libnm-core-aux-intern/nm-libnm-core-utils.h | 16 +- .../gen-metadata-nm-settings-libnm-core.xml.in | 8 + src/libnm-core-impl/nm-keyfile.c | 51 +- src/libnm-core-impl/nm-setting-connection.c | 50 +- src/libnm-core-impl/nm-setting-gsm.c | 40 +- src/libnm-core-impl/nm-setting-hsr.c | 8 +- src/libnm-core-impl/nm-setting-ip-config.c | 56 +- src/libnm-core-impl/nm-setting-wireguard.c | 67 + src/libnm-core-impl/nm-utils.c | 3 +- src/libnm-core-impl/nm-vpn-plugin-info.c | 2 +- src/libnm-core-impl/tests/test-general.c | 20 +- src/libnm-core-impl/tests/test-setting.c | 39 + src/libnm-core-public/nm-dbus-interface.h | 14 + src/libnm-core-public/nm-errors.h | 7 + src/libnm-core-public/nm-setting-connection.h | 22 + src/libnm-core-public/nm-setting-gsm.h | 3 + src/libnm-core-public/nm-setting-hsr.h | 6 +- src/libnm-core-public/nm-setting-ip-config.h | 3 + src/libnm-core-public/nm-utils.h | 2 +- src/libnm-core-public/nm-version-macros.h.in | 9 +- src/libnm-core-public/nm-version.h | 24 +- src/libnm-core-public/nm-vpn-plugin-info.h | 2 +- src/libnm-glib-aux/nm-io-utils.c | 18 +- src/libnm-glib-aux/nm-io-utils.h | 1 + src/libnm-platform/nm-linux-platform.c | 56 +- src/libnm-platform/nm-platform.c | 25 +- src/libnm-platform/nm-platform.h | 15 + src/libnm-platform/nmp-ethtool.c | 2 +- src/libnm-platform/nmp-object.c | 2 +- src/libnm-systemd-core/meson.build | 1 + .../src/libsystemd-network/dhcp6-internal.h | 2 +- .../src/libsystemd-network/dhcp6-lease-internal.h | 2 +- .../src/libsystemd-network/dhcp6-network.c | 2 +- .../src/libsystemd-network/sd-dhcp6-client.c | 5 +- .../src/libsystemd/sd-device/device-internal.h | 94 +- .../src/libsystemd/sd-device/device-private.c | 35 +- .../src/libsystemd/sd-device/device-private.h | 10 +- .../src/libsystemd/sd-device/device-util.c | 156 + .../src/libsystemd/sd-device/device-util.h | 17 +- .../src/libsystemd/sd-device/sd-device.c | 436 +- .../src/libsystemd/sd-event/event-util.c | 158 +- .../src/libsystemd/sd-event/event-util.h | 9 + .../src/libsystemd/sd-event/sd-event.c | 128 +- .../src/libsystemd/sd-id128/id128-util.c | 1 + .../src/libsystemd/sd-id128/sd-id128.c | 13 +- src/libnm-systemd-core/src/systemd/_sd-common.h | 2 +- src/libnm-systemd-core/src/systemd/sd-device.h | 3 +- .../src/systemd/sd-dhcp6-client.h | 3 +- .../src/systemd/sd-dhcp6-lease.h | 3 +- .../src/systemd/sd-dhcp6-option.h | 3 +- src/libnm-systemd-core/src/systemd/sd-ndisc.h | 3 +- src/libnm-systemd-shared/meson.build | 2 + src/libnm-systemd-shared/src/basic/alloc-util.c | 1 - src/libnm-systemd-shared/src/basic/alloc-util.h | 13 +- src/libnm-systemd-shared/src/basic/assert-util.h | 48 + src/libnm-systemd-shared/src/basic/bitfield.h | 1 + src/libnm-systemd-shared/src/basic/cgroup-util.h | 12 +- src/libnm-systemd-shared/src/basic/chattr-util.c | 2 +- src/libnm-systemd-shared/src/basic/chattr-util.h | 13 +- src/libnm-systemd-shared/src/basic/devnum-util.h | 10 +- src/libnm-systemd-shared/src/basic/env-file.c | 1 + src/libnm-systemd-shared/src/basic/env-util.c | 41 +- src/libnm-systemd-shared/src/basic/env-util.h | 2 - src/libnm-systemd-shared/src/basic/errno-util.h | 1 + src/libnm-systemd-shared/src/basic/escape.c | 25 +- src/libnm-systemd-shared/src/basic/escape.h | 9 +- .../src/basic/ether-addr-util.c | 17 +- .../src/basic/ether-addr-util.h | 1 - src/libnm-systemd-shared/src/basic/fd-util.c | 41 +- src/libnm-systemd-shared/src/basic/fd-util.h | 1 + src/libnm-systemd-shared/src/basic/fileio.c | 231 +- src/libnm-systemd-shared/src/basic/fileio.h | 12 +- src/libnm-systemd-shared/src/basic/format-ifname.c | 2 + src/libnm-systemd-shared/src/basic/format-util.c | 1 - src/libnm-systemd-shared/src/basic/fs-util.c | 15 +- src/libnm-systemd-shared/src/basic/fs-util.h | 9 + src/libnm-systemd-shared/src/basic/glyph-util.c | 208 +- src/libnm-systemd-shared/src/basic/glyph-util.h | 128 +- src/libnm-systemd-shared/src/basic/hash-funcs.c | 78 +- src/libnm-systemd-shared/src/basic/hash-funcs.h | 3 + src/libnm-systemd-shared/src/basic/hashmap.c | 40 +- src/libnm-systemd-shared/src/basic/hashmap.h | 89 +- src/libnm-systemd-shared/src/basic/hexdecoct.h | 14 +- src/libnm-systemd-shared/src/basic/hostname-util.c | 50 +- src/libnm-systemd-shared/src/basic/hostname-util.h | 36 +- src/libnm-systemd-shared/src/basic/in-addr-util.c | 18 +- .../src/basic/include/net/if.h | 9 + .../src/basic/include/netinet/in.h | 19 + src/libnm-systemd-shared/src/basic/io-util.c | 7 +- src/libnm-systemd-shared/src/basic/io-util.h | 9 +- src/libnm-systemd-shared/src/basic/iovec-util.h | 8 +- src/libnm-systemd-shared/src/basic/list.h | 6 +- src/libnm-systemd-shared/src/basic/locale-util.c | 120 +- src/libnm-systemd-shared/src/basic/lock-util.h | 2 + src/libnm-systemd-shared/src/basic/log.h | 229 +- src/libnm-systemd-shared/src/basic/macro.h | 131 - src/libnm-systemd-shared/src/basic/memory-util.c | 16 +- src/libnm-systemd-shared/src/basic/memory-util.h | 88 +- src/libnm-systemd-shared/src/basic/mempool.c | 1 + src/libnm-systemd-shared/src/basic/missing_fcntl.h | 73 +- src/libnm-systemd-shared/src/basic/missing_fs.h | 14 + .../src/basic/missing_random.h | 21 +- .../src/basic/missing_socket.h | 57 +- src/libnm-systemd-shared/src/basic/missing_stat.h | 139 - .../src/basic/missing_syscall.h | 482 +- .../src/basic/missing_threads.h | 13 - src/libnm-systemd-shared/src/basic/missing_type.h | 12 - src/libnm-systemd-shared/src/basic/missing_wait.h | 1 + .../src/basic/mountpoint-util.c | 823 ++++ .../src/basic/mountpoint-util.h | 87 + .../src/basic/namespace-util.h | 5 +- src/libnm-systemd-shared/src/basic/ordered-set.h | 21 - src/libnm-systemd-shared/src/basic/parse-util.c | 14 +- src/libnm-systemd-shared/src/basic/parse-util.h | 16 +- src/libnm-systemd-shared/src/basic/path-util.c | 71 +- src/libnm-systemd-shared/src/basic/path-util.h | 1 + src/libnm-systemd-shared/src/basic/pidfd-util.c | 55 +- src/libnm-systemd-shared/src/basic/pidref.h | 22 +- src/libnm-systemd-shared/src/basic/prioq.c | 12 + src/libnm-systemd-shared/src/basic/process-util.c | 259 +- src/libnm-systemd-shared/src/basic/process-util.h | 39 +- src/libnm-systemd-shared/src/basic/random-util.c | 3 +- src/libnm-systemd-shared/src/basic/random-util.h | 8 +- src/libnm-systemd-shared/src/basic/ratelimit.h | 52 + src/libnm-systemd-shared/src/basic/set.h | 31 +- src/libnm-systemd-shared/src/basic/signal-util.c | 6 +- src/libnm-systemd-shared/src/basic/signal-util.h | 1 + src/libnm-systemd-shared/src/basic/socket-util.c | 94 +- src/libnm-systemd-shared/src/basic/socket-util.h | 61 +- src/libnm-systemd-shared/src/basic/stat-util.c | 91 +- src/libnm-systemd-shared/src/basic/stat-util.h | 30 +- src/libnm-systemd-shared/src/basic/stdio-util.h | 1 + src/libnm-systemd-shared/src/basic/string-util.c | 108 +- src/libnm-systemd-shared/src/basic/string-util.h | 18 +- src/libnm-systemd-shared/src/basic/strv.c | 58 +- src/libnm-systemd-shared/src/basic/strv.h | 10 +- src/libnm-systemd-shared/src/basic/time-util.c | 5 +- src/libnm-systemd-shared/src/basic/time-util.h | 4 +- src/libnm-systemd-shared/src/basic/tmpfile-util.c | 1 + src/libnm-systemd-shared/src/basic/user-util.c | 1243 +++++ src/libnm-systemd-shared/src/basic/utf8.c | 25 + src/libnm-systemd-shared/src/basic/utf8.h | 3 +- .../src/fundamental/assert-fundamental.h | 141 + .../src/fundamental/iovec-util-fundamental.h | 12 +- .../src/fundamental/macro-fundamental.h | 187 +- .../src/fundamental/memory-util-fundamental.h | 115 +- .../src/fundamental/sha256-fundamental.c | 7 + .../src/fundamental/string-util-fundamental.c | 2 +- .../src/fundamental/string-util-fundamental.h | 3 + src/libnm-systemd-shared/src/shared/dns-domain.c | 7 +- src/libnmc-base/nm-client-utils.c | 4 +- src/libnmc-setting/nm-meta-setting-desc.c | 65 + src/libnmc-setting/settings-docs.h.in | 9 +- src/linux-headers/mptcp.h | 1 + src/meson.build | 2 +- src/n-acd/.github/workflows/ci.yml | 36 - src/n-acd/README.md | 7 - src/n-acd/meson.build | 2 - src/n-acd/meson_options.txt | 1 - src/n-acd/src/libnacd.sym | 1 + src/n-acd/src/meson.build | 17 +- src/n-acd/src/n-acd-bpf-fallback.c | 30 - src/n-acd/src/n-acd-bpf.c | 8 + src/n-acd/src/n-acd.c | 34 +- src/n-acd/src/n-acd.h | 1 + src/n-acd/src/test-api.c | 1 + src/n-acd/src/test-bpf.c | 28 +- src/n-dhcp4/src/n-dhcp4-c-connection.c | 4 + src/n-dhcp4/src/n-dhcp4-c-probe.c | 4 +- src/n-dhcp4/src/n-dhcp4-private.h | 2 + src/nm-cloud-setup/main.c | 4 +- src/nm-initrd-generator/nm-initrd-generator.c | 2 +- src/nm-initrd-generator/nmi-cmdline-reader.c | 37 +- .../tests/test-cmdline-reader.c | 63 +- src/nmcli/devices.c | 53 +- src/nmcli/gen-metadata-nm-settings-nmcli.xml.in | 18 +- src/tests/client/meson.build | 6 - .../test-client.check-on-disk/test_002.expected | 10 +- .../test-client.check-on-disk/test_003.expected | 556 ++- .../test-client.check-on-disk/test_004.expected | 678 +-- src/tests/client/test-client.py | 34 +- src/tests/client/test-client.sh | 12 +- tools/create-exports-NetworkManager.sh | 27 +- tools/meson-post-install.sh | 5 +- tools/nm-in-container | 10 +- tools/run-nm-test.sh | 29 +- tools/test-sudo-wrapper.sh | 16 +- valgrind.suppressions | 17 - 274 files changed, 13855 insertions(+), 9573 deletions(-) create mode 100644 src/core/tests/test-netns.c create mode 100644 src/libnm-systemd-core/src/libsystemd/sd-device/device-util.c create mode 100644 src/libnm-systemd-shared/src/basic/assert-util.h create mode 100644 src/libnm-systemd-shared/src/basic/include/net/if.h create mode 100644 src/libnm-systemd-shared/src/basic/include/netinet/in.h create mode 100644 src/libnm-systemd-shared/src/basic/missing_fs.h delete mode 100644 src/libnm-systemd-shared/src/basic/missing_stat.h delete mode 100644 src/libnm-systemd-shared/src/basic/missing_threads.h delete mode 100644 src/libnm-systemd-shared/src/basic/missing_type.h create mode 100644 src/libnm-systemd-shared/src/basic/mountpoint-util.c create mode 100644 src/libnm-systemd-shared/src/basic/mountpoint-util.h create mode 100644 src/libnm-systemd-shared/src/basic/user-util.c create mode 100644 src/libnm-systemd-shared/src/fundamental/assert-fundamental.h delete mode 100644 src/n-acd/meson_options.txt delete mode 100644 src/n-acd/src/n-acd-bpf-fallback.c diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a938fa10..67fcf026 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -60,11 +60,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-dcc430216167' - CENTOS_TAG: 'tag-feb1adbc208e' - DEBIAN_TAG: 'tag-afb784497c2f' - FEDORA_TAG: 'tag-feb1adbc208e' - UBUNTU_TAG: 'tag-afb784497c2f' + ALPINE_TAG: 'tag-0c3a6f855fb8' + CENTOS_TAG: 'tag-c1c23df75dda' + DEBIAN_TAG: 'tag-d4bf5db9e214' + FEDORA_TAG: 'tag-c1c23df75dda' + UBUNTU_TAG: 'tag-d4bf5db9e214' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -102,25 +102,123 @@ variables: # Build a container for each distribution + version. The ci-templates # will re-use the containers if the tag doesn't change. -tier1:fedora:43@prep: +tier1:fedora:42@prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '43' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC rules: - if: $CI_PIPELINE_SOURCE != 'schedule' || $SCHEDULED_PIPELINE_NAME == "weekly" -tier3:fedora:42@prep: +tier2:fedora:rawhide@prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '42' + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:centos:stream10@prep: + extends: + - .fdo.container-build@centos + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'stream10' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:centos:stream9@prep: + extends: + - .fdo.container-build@centos + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'stream9' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:ubuntu:devel@prep: + extends: + - .fdo.container-build@ubuntu + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'devel' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:debian:testing@prep: + extends: + - .fdo.container-build@debian + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:debian:sid@prep: + extends: + - .fdo.container-build@debian + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:alpine:edge@prep: + extends: + - .fdo.container-build@alpine + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'edge' + FDO_DISTRIBUTION_TAG: $ALPINE_TAG + FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier3:fedora:43@prep: + extends: + - .fdo.container-build@fedora + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '43' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC rules: @@ -268,34 +366,6 @@ tier3:alpine:3.19@prep: when: manual allow_failure: true -tier3:centos:stream10@prep: - extends: - - .fdo.container-build@centos - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'stream10' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -tier3:centos:stream9@prep: - extends: - - .fdo.container-build@centos - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'stream9' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - ################################################################# # # # tierN stage # @@ -312,7 +382,7 @@ tier3:centos:stream9@prep: dependencies: [] -t_fedora:43: +t_fedora:42: extends: - .build@template - .fdo.distribution-image@fedora @@ -328,24 +398,122 @@ t_fedora:43: - tarball - subtree variables: - FDO_DISTRIBUTION_VERSION: '43' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:43@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_fedora:42: +t_fedora:rawhide: + extends: + - .build@template + - .fdo.distribution-image@fedora + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + needs: + - "tier2:fedora:rawhide@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_centos:stream10: + extends: + - .build@template + - .fdo.distribution-image@centos + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'stream10' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + needs: + - "tier2:centos:stream10@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_centos:stream9: + extends: + - .build@template + - .fdo.distribution-image@centos + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'stream9' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + needs: + - "tier2:centos:stream9@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_ubuntu:devel: + extends: + - .build@template + - .fdo.distribution-image@ubuntu + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'devel' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + needs: + - "tier2:ubuntu:devel@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_debian:testing: + extends: + - .build@template + - .fdo.distribution-image@debian + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + needs: + - "tier2:debian:testing@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_debian:sid: + extends: + - .build@template + - .fdo.distribution-image@debian + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + needs: + - "tier2:debian:sid@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_alpine:edge: + extends: + - .build@template + - .fdo.distribution-image@alpine + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'edge' + FDO_DISTRIBUTION_TAG: $ALPINE_TAG + needs: + - "tier2:alpine:edge@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_fedora:43: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '42' + FDO_DISTRIBUTION_VERSION: '43' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier3:fedora:42@prep" + - "tier3:fedora:43@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' @@ -489,34 +657,6 @@ t_alpine:3.19: rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_centos:stream10: - extends: - - .build@template - - .fdo.distribution-image@centos - - .nm_artifacts_debug - stage: tier3 - variables: - FDO_DISTRIBUTION_VERSION: 'stream10' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - needs: - - "tier3:centos:stream10@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -t_centos:stream9: - extends: - - .build@template - - .fdo.distribution-image@centos - - .nm_artifacts_debug - stage: tier3 - variables: - FDO_DISTRIBUTION_VERSION: 'stream9' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - needs: - - "tier3:centos:stream9@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - ################################################################# # # # specific jobs # @@ -527,10 +667,10 @@ check-patch: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '43' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:43@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 @@ -542,10 +682,10 @@ check-tree: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '43' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:43@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH allow_failure: true @@ -573,11 +713,11 @@ pages: rules: - if: $CI_PIPELINE_SOURCE == 'schedule' when: never - - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' + - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH dependencies: - - "t_fedora:43: [meson+gcc+docs+valgrind]" + - "t_fedora:42: [meson+gcc+docs+valgrind]" needs: - - "t_fedora:43: [meson+gcc+docs+valgrind]" + - "t_fedora:42: [meson+gcc+docs+valgrind]" triage:issues: stage: triage @@ -594,11 +734,11 @@ coverity: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '43' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG stage: coverity needs: - - "tier1:fedora:43@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "weekly" script: diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 3af5cac4..4ef3ff9e 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -240,7 +240,7 @@ pages: rules: - if: $CI_PIPELINE_SOURCE == 'schedule' when: never - - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' + - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH dependencies: - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [meson+gcc+docs+valgrind]" needs: diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index b99c1673..28d31931 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -23,17 +23,39 @@ distributions: - name: fedora tier: 1 versions: - - '43' + - '42' # TIER 2: distribution versions that will or might use the current NM version. # Run when doing a release. + - name: fedora + tier: 2 + versions: + - 'rawhide' + - name: centos + tier: 2 + versions: + - 'stream10' + - 'stream9' + - name: ubuntu + tier: 2 + versions: + - 'devel' + - name: debian + tier: 2 + versions: + - 'testing' + - 'sid' + - name: alpine + tier: 2 + versions: + - 'edge' # TIER 3: distribution versions not in EOL but don't use the current NM version. # Run when doing a release, but a failure won't be blocking for the release. - name: fedora tier: 3 versions: - - '42' + - '43' - '41' - name: ubuntu tier: 3 @@ -53,8 +75,3 @@ distributions: - '3.21' - '3.20' - '3.19' - - name: centos - tier: 3 - versions: - - 'stream10' - - 'stream9' diff --git a/.gitlab-ci/distros-info.yml b/.gitlab-ci/distros-info.yml index 90d23993..e2ac2829 100644 --- a/.gitlab-ci/distros-info.yml +++ b/.gitlab-ci/distros-info.yml @@ -8,6 +8,9 @@ fedora: - version: rawhide support: yes nm: main +- version: 43 + support: 2026-12-02 + nm: 1.54 - version: 42 support: 2026-05-13 nm: 1.52 @@ -18,8 +21,11 @@ fedora: # CentOS Stream centos: +- version: stream10 + support: 2030-12-31 # exact date unknown, only the year + nm: main - version: stream9 - support: 2027-05-31 + support: 2027-12-31 # exact date unknown, only the year nm: main # RHEL: @@ -31,33 +37,43 @@ centos: # support: 6 months # Releases and support info: https://access.redhat.com/support/policy/updates/errata rhel: -- version: 9.6 # not released yet +# Not released yet +- version: 10.1 support: yes - nm: main -- version: 9.5 + nm: 1.54 +- version: 9.7 # not released yet support: yes - nm: 1.48 + nm: 1.54 +# Full support or EUS support: +- version: 10.0 + support: 2027-05-31 + extended-support: 2029-05-31 + nm: 1.52 +- version: 9.6 + support: 2027-05-31 + extended-support: 2029-05-31 + nm: 1.52 - version: 9.4 support: 2026-04-30 extended-support: 2028-04-30 nm: 1.46 -- version: 9.2 - support: 2025-05-31 - extended-support: 2027-05-31 - nm: 1.42 - version: 8.10 # last RHEL 8 release, maintenaince support only support: 2029-05-31 extended-support: no nm: 1.40 -- version: 8.8 +# SAP / Enhaced EUS only: +- version: 9.2 support: 2025-05-31 extended-support: 2027-05-31 - nm: 1.40 -# SAP / Enhaced EUS only: + nm: 1.42 - version: 9.0 support: 2024-05-31 extended-support: 2026-05-31 nm: 1.36 +- version: 8.8 + support: 2025-05-31 + extended-support: 2027-05-31 + nm: 1.40 - version: 8.6 support: 2024-05-31 extended-support: 2026-05-31 @@ -81,10 +97,6 @@ ubuntu: name: plucky support: 2026-01-15 nm: 1.52 -- version: 24.10 - name: oracular - support: 2025-07-10 - nm: 1.48 - version: 24.04 name: noble support: 2029-05-31 @@ -109,6 +121,11 @@ debian: - version: sid support: yes nm: main +- version: 13 + name: trixie + support: 2028-08-09 + extended-support: 2030-06-30 + nm: 1.52 - version: 12 name: bookworm support: 2026-06-11 @@ -130,6 +147,9 @@ alpine: - version: edge support: yes nm: main +- version: 3.22 + support: 2027-05-01 + nm: 1.52 - version: 3.21 support: 2026-11-01 nm: 1.50 diff --git a/.gitlab-ci/run-test.sh b/.gitlab-ci/run-test.sh index 44405558..b58a1c32 100755 --- a/.gitlab-ci/run-test.sh +++ b/.gitlab-ci/run-test.sh @@ -155,12 +155,7 @@ test_subtree() { do_clean pushd ./src/$d - ARGS=() - if [ "$d" = n-acd ]; then - ARGS+=('-Debpf=false') - fi - - CC="$cc" CFLAGS="-Werror -Wall" meson build "${ARGS[@]}" + CC="$cc" CFLAGS="-Werror -Wall" meson build ninja -v -C build test popd diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 9be6901e..f6384c92 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -252,17 +252,25 @@ Versioning scheme (version numbers are called MAJOR.MINOR.MICRO): versioning scheme than the main NM project despite there are no development versions here. +Before starting: +- You need to have the maintainer role in the project. +- The GPG key used to sign the release must be added to your GNOME's Gitlab + profile and uploaded to a keyserver. +- All details: https://handbook.gnome.org/maintainers/making-a-release.html + When doing a release, follow this process: 1. Ensure that `NEWS` file is up to date. -2. Increment the version in `meson.build`, commit and tag the commit. Example: - `git tag -s 1.2.8 -m 'Tag 1.2.8'`. -3. Ensure that you are on the right commit and create the tarball: - `git clean -fdx && meson setup build && cd build && meson dist` -4. Upload the tarball: `scp ./*-*.tar.xz "$user@master.gnome.org:"` -5. Login to `master.gnome.org` and run `ftpadmin install`. - Ensure the new tarballs show up at https://download.gnome.org/sources/ - (happens after a short delay) -6. Announce the release on the mailing list. +2. Increment the version in `meson.build` or `configure.ac`. +3. Commit and push to the `main` branch. +4. Check that the Gitlab's pipeline finishes without errors. +5. Tag the commit with a signed tag. Example: `git tag -s 1.2.8 -m 'Release 1.2.8'`. +6. Push the tag. Example: `git push origin 1.2.8`. + WARN: this is what starts the automatic CI release. As GNOME doesn't allow + to delete tags, any error detected after this will force a new version bump. +7. Check that the Gitlab's pipeline finishes without errors. If that happens, + the release is done and available both in the Gitlab's releases section and + https://download.gnome.org/sources/* +8. Announce the release on the mailing list. Notes: - You need access to master.gnome.org, see [here](https://handbook.gnome.org/infrastructure/accounts.html). diff --git a/NEWS b/NEWS index 339ff253..3ee8e88a 100644 --- a/NEWS +++ b/NEWS @@ -1,36 +1,45 @@ -=============================================== -NetworkManager-1.54.3 -Overview of changes since NetworkManager-1.54.2 -=============================================== - -* For private connections (the ones that specify a user in the - "connection.permissions" property), verify that the user can access - the 802.1X certificates and keys set in the connection. -* Introduce a libnm function that can be used by VPN plugins to check - user permissions on certificate and keys. - -=============================================== -NetworkManager-1.54.2 -Overview of changes since NetworkManager-1.54.1 -=============================================== +============================================= +NetworkManager-1.56 +Overview of changes since NetworkManager-1.54 +============================================= +* Unify the versioning to use everywhere the scheme with the -rcX or -dev + suffixes when appropriate. This affects, for example, the URL and filename + of the release tarball and the version reported by nmcli and the daemon. + As an exception, the C API will continue to use the 90+ scheme for RC versions. +* nmcli now supports viewing and managing WireGuard peers. * Support reapplying the "sriov.vfs" property as long as "sriov.total-vfs" is not changed. -* Support configuring the HSR protocol version via the - "hsr.protocol-version" property. -* Support configuring the HSR interlink port via the - "hsr.interlink" property. - -=============================================== -NetworkManager-1.54.1 -Overview of changes since NetworkManager-1.54.0 -=============================================== - +* Support reapplying "bond-port.vlans". +* Accept hostnames longer than 64 characters from DNS lookup. * Make that global-dns configuration overwrites DNS searches and options from connections, instead of merging all together. * Add support for a new rd.net.dhcp.client-id option in nm-initrd-generator. -* Minor bug fixes. +* Add gsm device-uid setting to restrict the devices the connection applies to. +* Support configuring the HSR protocol version via the + "hsr.protocol-version" property. +* Fix a bug that makes broadband connections auto-connect getting + blocked if the connection tries to reconnect when modem status is + "disconnecting" / "disconnected". +* Treat modem connection not having an operator code available + as a recoverable error. +* Add support for configuring systemd-resolved's DNSSEC option + per-connection via the "connection.dnssec" connection property. +* Support configuring the HSR interlink port via the + "hsr.interlink" property. +* Fix some connection properties not being applied to vpn connections + (connection.mdns, connection.llmnr, connection.dns-over-tls, + connection.mptcp-flags, ipv6.ip6-privacy) +* Update n-acd to always compile with eBPF enabled, as support + for eBPF is now detected at run time. +* Add new MPTCP 'laminar' endpoint type, and set it by default alongside + the 'subflow' one. +* For private connections (the ones that specify a user in the + "connection.permissions" property), verify that the user can access + the 802.1X certificates and keys set in the connection. +* Introduce a libnm function that can be used by VPN plugins to check + user permissions on certificate and keys. ============================================= NetworkManager-1.54 diff --git a/config.h.meson b/config.h.meson index d41304db..05d346bb 100644 --- a/config.h.meson +++ b/config.h.meson @@ -239,6 +239,15 @@ /* Whether we build with OVS plugin */ #mesondefine WITH_OPENVSWITCH +/* Whether we build with team support */ +#mesondefine WITH_TEAMDCTL + +/* Whether we build with Wi-Fi support */ +#mesondefine WITH_WIFI + +/* Whether we build with WWAN support */ +#mesondefine WITH_WWAN + /* Define if you have PPP support */ #mesondefine WITH_PPP diff --git a/contrib/alpine/REQUIRED_PACKAGES b/contrib/alpine/REQUIRED_PACKAGES index 9f1affcb..3a3cc1ab 100755 --- a/contrib/alpine/REQUIRED_PACKAGES +++ b/contrib/alpine/REQUIRED_PACKAGES @@ -30,7 +30,6 @@ apk add \ 'libpsl-dev' \ 'libsoup-dev' \ 'libteam-dev' \ - 'libtool' \ 'linux-headers' \ 'meson' \ 'mobile-broadband-provider-info' \ diff --git a/contrib/debian/REQUIRED_PACKAGES b/contrib/debian/REQUIRED_PACKAGES index d91e54d2..68f62570 100755 --- a/contrib/debian/REQUIRED_PACKAGES +++ b/contrib/debian/REQUIRED_PACKAGES @@ -62,7 +62,6 @@ install \ libreadline-dev \ libsystemd-dev \ libteam-dev \ - libtool \ libudev-dev \ locales \ meson \ diff --git a/contrib/fedora/REQUIRED_PACKAGES b/contrib/fedora/REQUIRED_PACKAGES index 38a2cbbf..6f70537d 100755 --- a/contrib/fedora/REQUIRED_PACKAGES +++ b/contrib/fedora/REQUIRED_PACKAGES @@ -68,7 +68,6 @@ install \ libndp-devel \ libnvme-devel \ libselinux-devel \ - libtool \ libuuid-devel \ meson \ mobile-broadband-provider-info-devel \ diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 29bf8050..73ab88f3 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -6,18 +6,23 @@ # # Note that it contains __PLACEHOLDERS__ that will be replaced by the accompanying 'build.sh' script. +Name: NetworkManager +Summary: Network connection manager and user applications +License: GPL-2.0-or-later AND LGPL-2.1-or-later +URL: https://networkmanager.dev/ +Group: System Environment/Base + +Epoch: 1 +Version: __VERSION__ +Release: __RELEASE_VERSION__%{?dist} + +############################################################################### %global wpa_supplicant_version 1:1.1 %global ppp_version %(pkg-config --modversion pppd 2>/dev/null || sed -n 's/^#define\\s*VERSION\\s*"\\([^\\s]*\\)"$/\\1/p' %{_includedir}/pppd/patchlevel.h 2>/dev/null | grep . || echo bad) %global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad) -%global epoch_version 1 -%global real_version __VERSION__ -%global rpm_version %{real_version} -%global release_version __RELEASE_VERSION__ -%global snapshot __SNAPSHOT__ -%global git_sha __COMMIT__ %global bcond_default_debug __BCOND_DEFAULT_DEBUG__ %global bcond_default_lto __BCOND_DEFAULT_LTO__ %global bcond_default_test __BCOND_DEFAULT_TEST__ @@ -32,17 +37,6 @@ %global _hardened_build 1 -%if "x%{?snapshot}" != "x" -%global snapshot_dot .%{snapshot} -%endif -%if "x%{?git_sha}" != "x" -%global git_sha_dot .%{git_sha} -%endif - -%global snap %{?snapshot_dot}%{?git_sha_dot} - -%global real_version_major %(printf '%s' '%{real_version}' | sed -n 's/^\\([1-9][0-9]*\\.[0-9][0-9]*\\)\\.[0-9][0-9]*$/\\1/p') - %global systemd_units NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service %global systemd_units_cloud_setup nm-cloud-setup.service nm-cloud-setup.timer @@ -153,17 +147,6 @@ %bcond_with ifcfg_migrate %endif -%if 0%{?fedora} -# Although eBPF would be available on Fedora's kernel, it seems -# we often get SELinux denials (rh#1651654). But even aside them, -# bpf(BPF_MAP_CREATE, ...) randomly fails with EPERM. That might -# be related to `ulimit -l`. Anyway, this is not usable at the -# moment. -%global ebpf_enabled "no" -%else -%global ebpf_enabled "no" -%endif - # Fedora 33 enables LTO by default by setting CFLAGS="-flto -ffat-lto-objects". # However, we also require "-flto -flto-partition=none", so disable Fedora's # default and use our configure option --with-lto instead. @@ -171,16 +154,7 @@ ############################################################################### -Name: NetworkManager -Summary: Network connection manager and user applications -Epoch: %{epoch_version} -Version: %{rpm_version} -Release: %{release_version}%{?snap}%{?dist} -Group: System Environment/Base -License: GPL-2.0-or-later AND LGPL-2.1-or-later -URL: https://networkmanager.dev/ - -#Source: https://download.gnome.org/sources/NetworkManager/%{real_version_major}/%{name}-%{real_version}.tar.xz +#Source: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/releases/%{version_no_tilde}/downloads/%{name}-%{version_no_tilde}.tar.xz Source: __SOURCE1__ Source1: NetworkManager.conf Source2: 00-server.conf @@ -253,7 +227,6 @@ Conflicts: NetworkManager-dispatcher-routing-rules <= 1:1.47.5-3 %endif BuildRequires: gcc -BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: meson BuildRequires: gettext-devel >= 0.19.8 @@ -586,7 +559,7 @@ Preferably use nmcli instead. %prep -%autosetup -p1 -n NetworkManager-%{real_version} +%autosetup -p1 -n NetworkManager-%{version_no_tilde} %build @@ -682,11 +655,6 @@ Preferably use nmcli instead. -Dlibpsl=true \ %else -Dlibpsl=false \ -%endif -%if %{ebpf_enabled} != "yes" - -Debpf=false \ -%else - -Debpf=true \ %endif -Dsession_tracking=systemd \ -Dsuspend_resume=systemd \ @@ -771,8 +739,8 @@ rm -f %{buildroot}%{_unitdir}/NetworkManager-wait-online-initrd.service find %{buildroot}%{_datadir}/gtk-doc -exec touch --reference meson.build '{}' \+ %if 0%{?__debug_package} && ! 0%{?flatpak} -mkdir -p %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version} -cp valgrind.suppressions %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version} +mkdir -p %{buildroot}%{_prefix}/src/debug/NetworkManager-%{version_no_tilde} +cp valgrind.suppressions %{buildroot}%{_prefix}/src/debug/NetworkManager-%{version_no_tilde} %endif %if %{with ifcfg_rh} diff --git a/contrib/fedora/rpm/build.sh b/contrib/fedora/rpm/build.sh index 4a89a6b4..10180587 100755 --- a/contrib/fedora/rpm/build.sh +++ b/contrib/fedora/rpm/build.sh @@ -110,7 +110,6 @@ exec 2>&1 UUID=`uuidgen` RELEASE_VERSION="${RELEASE_VERSION:-$(git rev-list HEAD | wc -l)}" -SNAPSHOT="${SNAPSHOT:-%{nil\}}" VERSION="${VERSION:-$(get_version || die "Could not read $VERSION")}" COMMIT_FULL="${COMMIT_FULL:-$(git rev-parse --verify HEAD || die "Error reading HEAD revision")}" COMMIT="${COMMIT:-$(printf '%s' "$COMMIT_FULL" | sed 's/^\(.\{10\}\).*/\1/' || die "Error reading HEAD revision")}" @@ -206,12 +205,8 @@ cp "$SOURCE_README_IFCFG_MIGRATED" "$TEMP/SOURCES/readme-ifcfg-rh-migrated.txt" write_changelog -sed -e "s/__VERSION__/$VERSION/g" \ +sed -e "s/__VERSION__/${VERSION/-/\~}/g" \ -e "s/__RELEASE_VERSION__/$RELEASE_VERSION/g" \ - -e "s/__SNAPSHOT__/$SNAPSHOT/g" \ - -e "s/__COMMIT__/$COMMIT/g" \ - -e "s/__COMMIT_FULL__/$COMMIT_FULL/g" \ - -e "s/__SNAPSHOT__/$SNAPSHOT/g" \ -e "s/__SOURCE1__/$(basename "$SOURCE")/g" \ -e "s/__BCOND_DEFAULT_DEBUG__/$BCOND_DEFAULT_DEBUG/g" \ -e "s/__BCOND_DEFAULT_LTO__/${BCOND_DEFAULT_LTO:-"%{nil}"}/g" \ @@ -232,7 +227,12 @@ case "$BUILDTYPE" in ;; esac -rpmbuild --define "_topdir $TEMP" $RPM_BUILD_OPTION "$TEMPSPEC" $NM_RPMBUILD_ARGS || die "ERROR: rpmbuild FAILED" +DIST= +[[ "$COMMIT" != "" ]] && DIST=".${COMMIT}${DIST}" +[[ "$SNAPSHOT" != "" ]] && DIST=".${SNAPSHOT}${DIST}" +[[ "$DIST" != "" ]] && DIST=("--define" "dist ${DIST}$(rpmbuild --eval '%{dist}')") + +rpmbuild --define "_topdir $TEMP" "${DIST[@]}" $RPM_BUILD_OPTION "$TEMPSPEC" $NM_RPMBUILD_ARGS || die "ERROR: rpmbuild FAILED" LS_EXTRA=() diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index f0638591..6bdf6682 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -155,7 +155,6 @@ P_CRYPTO="${CRYPTO-}" P_DBUS_SYS_DIR="${DBUS_SYS_DIR-}" P_DHCP_DEFAULT="${DHCP_DEFAULT-}" P_DNS_RC_MANAGER_DEFAULT="${DNS_RC_MANAGER_DEFAULT-}" -P_EBPF_ENABLED="${EBPF_ENABLED-no}" P_FIREWALLD_ZONE="${FIREWALLD_ZONE-}" P_IWD="${IWD-}" P_LOGGING_BACKEND_DEFAULT="${LOGGING_BACKEND_DEFAULT-}" @@ -396,7 +395,6 @@ meson setup\ -Dmodify_system=true \ -Dconcheck=true \ -Dlibpsl="$(bool_true "$P_FEDORA")" \ - -Debpf="$(bool_true "$P_EBPF_ENABLED")" \ -Dsession_tracking=systemd \ -Dsuspend_resume=systemd \ -Dsystemdsystemunitdir=/usr/lib/systemd/system \ diff --git a/contrib/fedora/rpm/release.sh b/contrib/fedora/rpm/release.sh index ff18cc5b..6caf1100 100755 --- a/contrib/fedora/rpm/release.sh +++ b/contrib/fedora/rpm/release.sh @@ -27,7 +27,7 @@ # * Run in a "clean" environment, i.e. no unusual environment variables set, on a recent # Fedora, with suitable dependencies installed. # -# * First, ensure that you have a valid Gitlab's private token for gitlab.freedestkop.org +# * First, ensure that you have a valid Gitlab's private token for gitlab.freedesktop.org # stored in ~/.config/nm-release-token, or pass one with --gitlab-token argument. # Also, ensure you have a GPG key that you want to use for signing. Also, have gpg-agent running # and possibly configure `git config --get user.signingkey` for the proper key. @@ -102,14 +102,8 @@ do_command() { SCRIPTDIR="$(dirname "$(readlink -f "$0")")" GITDIR="$(cd "$SCRIPTDIR" && git rev-parse --show-toplevel || die "Could not get GITDIR")" -parse_version() { - local VERSION=$(grep -E -m1 '^\s+version:' "$GITDIR/meson.build" \ - | cut -d"'" -f2 \ - | sed 's/\./ /g') - - re='^(0|[1-9][0-9]*) (0|[1-9][0-9]*) (0|[1-9][0-9]*)$' - [[ "$VERSION" =~ $re ]] || return 1 - echo "$VERSION" +get_version() { + grep -E -m1 '^\s+version:' "$GITDIR/meson.build" | cut -d"'" -f2 } number_is_even() { @@ -155,14 +149,12 @@ check_gitlab_pipeline() { set_version_number() { sed -i \ - -e '1,20 s/^\( *version: *'\''\)[0-9]\+\.[0-9]\+\.[0-9]\+\('\'',\)$/\1'"$1.$2.$3"'\2/' \ + -E "1,20 s/^( *version: *')[^']+(',) *\$/\1$1\2/" \ meson.build } check_news() { local mode="$1" - shift - local ver_arr=("$@") case "$mode" in major|minor) @@ -259,12 +251,18 @@ done [ -n "$RELEASE_MODE" ] || die_usage "specify the desired release mode" -VERSION_ARR=( $(parse_version) ) || die "cannot detect NetworkManager version" -VERSION_STR="$(IFS=.; echo "${VERSION_ARR[*]}")" +VERSION_STR="$(get_version)" +VERSION_ARR=( $(echo "$VERSION_STR" | sed 's/[\.\-]/ /g') ) +if [[ ${VERSION_ARR[2]} =~ ^rc ]]; then + RC_VERSION=${VERSION_ARR[2]#rc} + VERSION_ARR[2]=0 +else + RC_VERSION= +fi echo "Current version before release: $VERSION_STR (do \"$RELEASE_MODE\" release)" -grep -q "version: '${VERSION_ARR[0]}.${VERSION_ARR[1]}.${VERSION_ARR[2]}'," ./meson.build || die "meson.build does not have expected version" +grep -q "version: '$VERSION_STR'," ./meson.build || die "meson.build does not have expected version" TMP="$(git status --porcelain)" || die "git status failed" test -z "$TMP" || die "git working directory is not clean (git status --porcelain)" @@ -280,50 +278,41 @@ if [ "$CUR_BRANCH" = main ]; then number_is_odd "${VERSION_ARR[1]}" || die "Unexpected version number on main. Should be an odd development version" [ "$RELEASE_MODE" = devel -o "$RELEASE_MODE" = rc1 -o "$RELEASE_MODE" = major-post ] || die "Unexpected branch name \"$CUR_BRANCH\" for \"$RELEASE_MODE\"" else - re='^nm-[0-9]+-[0-9]+$' - [[ "$CUR_BRANCH" =~ $re ]] || die "Unexpected current branch $CUR_BRANCH. Should be main or nm-?-??" - if number_is_odd "${VERSION_ARR[1]}"; then - # we are on a release candiate branch. - [ "$RELEASE_MODE" = rc -o "$RELEASE_MODE" = major ] || die "Unexpected branch name \"$CUR_BRANCH\" for \"$RELEASE_MODE\"" - [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))" ] || die "Unexpected current branch $CUR_BRANCH. Should be nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))" - else - [ "$RELEASE_MODE" = minor ] || die "Unexpected branch name \"$CUR_BRANCH\" for \"$RELEASE_MODE\"" - [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" ] || die "Unexpected current branch $CUR_BRANCH. Should be nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" - fi + [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" ] || die "Unexpected current branch $CUR_BRANCH. Should be nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" + [ "$RELEASE_MODE" = rc -o "$RELEASE_MODE" = major -o "$RELEASE_MODE" = minor ] || die "Unexpected branch name \"$CUR_BRANCH\" for \"$RELEASE_MODE\"" fi -RC_VERSION= RELEASE_BRANCH= case "$RELEASE_MODE" in minor) number_is_even "${VERSION_ARR[1]}" || die "cannot do minor release on top of version $VERSION_STR" - [ "$CUR_BRANCH" != main ] || die "cannot do a minor release on main" + [ "$RC_VERSION" = "" ] || die "cannot do a minor release on top of an RC version" + [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" ] || die "minor release can only be on \"nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}\" branch" ;; devel) number_is_odd "${VERSION_ARR[1]}" || die "cannot do devel release on top of version $VERSION_STR" - [ "$((${VERSION_ARR[2]} + 1))" -lt 90 ] || die "devel release must have a micro version smaller than 90 but current version is $VERSION_STR" + [ "$RC_VERSION" = "" ] || die "cannot do a devel release on top of an RC version" [ "$CUR_BRANCH" == main ] || die "devel release can only be on main" ;; - rc) - number_is_odd "${VERSION_ARR[1]}" || die "cannot do rc release on top of version $VERSION_STR" - [ "${VERSION_ARR[2]}" -ge 90 ] || die "rc release must have a micro version larger than ${VERSION_ARR[0]}.90 but current version is $VERSION_STR" - RC_VERSION="$((${VERSION_ARR[2]} - 88))" - [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))" ] || die "devel release can only be on \"nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))\" branch" - ;; rc1) number_is_odd "${VERSION_ARR[1]}" || die "cannot do rc release on top of version $VERSION_STR" - [ "${VERSION_ARR[2]}" -lt 90 ] || die "rc release must have a micro version smaller than ${VERSION_ARR[0]}.${VERSION_ARR[1]}.90 but current version is $VERSION_STR" + [ "$RC_VERSION" = "" ] || die "rc1 release cannot be done on top of an RC version" [ "$CUR_BRANCH" == main ] || die "rc1 release can only be on main" RELEASE_BRANCH="nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))" ;; + rc) + number_is_even "${VERSION_ARR[1]}" || die "cannot do rc release on top of version $VERSION_STR" + [ "$RC_VERSION" != "" ] || die "rc release must be done on top of an RC version" + [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" ] || die "rc release can only be on \"nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}\" branch" + ;; major) - number_is_odd "${VERSION_ARR[1]}" || die "cannot do major release on top of version $VERSION_STR" - [ "${VERSION_ARR[2]}" -ge 90 ] || die "parent version for major release must have a micro version larger than ${VERSION_ARR[0]}.90 but current version is $VERSION_STR" - [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))" ] || die "major release can only be on \"nm-${VERSION_ARR[0]}-$((${VERSION_ARR[1]} + 1))\" branch" + number_is_even "${VERSION_ARR[1]}" || die "cannot do major release on top of version $VERSION_STR" + [ "$RC_VERSION" != "" ] || die "major release must be done on top of an RC version" + [ "$CUR_BRANCH" == "nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}" ] || die "major release can only be on \"nm-${VERSION_ARR[0]}-${VERSION_ARR[1]}\" branch" ;; major-post) number_is_odd "${VERSION_ARR[1]}" || die "cannot do major-post release on top of version $VERSION_STR" - [ "$((${VERSION_ARR[2]} + 1))" -lt 90 ] || die "major-post release must have a micro version smaller than 90 but current version is $VERSION_STR" + [ "$RC_VERSION" = "" ] || die "major-post release cannot be done on top of an RC version" [ "$CUR_BRANCH" == main ] || die "major-post release can only be on main" ;; *) @@ -370,7 +359,7 @@ if [ "$ALLOW_LOCAL_BRANCHES" != 1 ]; then cmp <(git show "$ORIGIN/main:contrib/fedora/rpm/release.sh") "$BASH_SOURCE_ABSOLUTE" || die "$BASH_SOURCE is not identical to \`git show \"$ORIGIN/main:contrib/fedora/rpm/release.sh\"\`" fi -if ! check_news "$RELEASE_MODE" "@{VERSION_ARR[@]}" ; then +if ! check_news "$RELEASE_MODE"; then if [ "$CHECK_NEWS" == 1 ]; then die "NEWS file needs update to mention stable release (skip check with --no-check-news)" fi @@ -389,7 +378,7 @@ if [ "$RELEASE_MODE" = major -o "$RELEASE_MODE" = minor ]; then fi echo "$(echo_color 36 -n "https://gitlab.freedesktop.org/NetworkManager/networkmanager.pages.freedesktop.org.git") by running" if [ "$RELEASE_MODE" = major ]; then - v="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1)).0" + v="${VERSION_ARR[0]}.${VERSION_ARR[1]}.0" else v="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((${VERSION_ARR[2]} + 1))" fi @@ -418,71 +407,36 @@ if [ $CHECK_GITLAB = 1 ]; then fi fi -BRANCHES=() -BUILD_TAG= - +# Work on a temporary branch CLEANUP_CHECKOUT_BRANCH="$CUR_BRANCH" - git checkout -B "$TMP_BRANCH" CLEANUP_REFS+=("refs/heads/$TMP_BRANCH") case "$RELEASE_MODE" in minor) - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 1)) - git commit -m "release: bump version to ${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" -a || die "failed to commit release" - - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" - git tag -s -a -m "Tag $b" "$b" HEAD || die "failed to tag release" - BRANCHES+=("$b") - CLEANUP_REFS+=("refs/tags/$b") - BUILD_TAG="$b" - TAR_VERSION="$b" + # Version is already correct in meson.build + BUILD_VERSION="$VERSION_STR" + NEXT_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((${VERSION_ARR[2]} + 1))" ;; devel) - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 1)) - git commit -m "release: bump version to ${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1)) (development)" -a || die "failed to commit devel version bump" - - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" - git tag -s -a -m "Tag $b (development)" "$b-dev" HEAD || die "failed to tag release" - BRANCHES+=("$b-dev") - CLEANUP_REFS+=("refs/tags/$b-dev") - BUILD_TAG="$b-dev" - TAR_VERSION="$b" + # Version is already correct in meson.build + BUILD_VERSION="$VERSION_STR" + NEXT_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((${VERSION_ARR[2]} + 1))-dev" ;; rc) - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" - t="${VERSION_ARR[0]}.$(("${VERSION_ARR[1]}" + 1))-rc$RC_VERSION" - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 1)) - git commit -m "release: bump version to $b ($t) (development)" -a || die "failed to commit rc version bump" - - git tag -s -a -m "Tag $b ($t) (development)" "$t" HEAD || die "failed to tag release" - BRANCHES+=("$t") - CLEANUP_REFS+=("refs/tags/$t") - BUILD_TAG="$t" - TAR_VERSION="$b" + # Version is already correct in meson.build + BUILD_VERSION="$VERSION_STR" + NEXT_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}-rc$((RC_VERSION + 1))" ;; rc1) - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" 90 - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.90" - t="${VERSION_ARR[0]}.$(("${VERSION_ARR[1]}" + 1))-rc1" - git commit -m "release: bump version to $b ($t)" -a || die "failed to commit rc1 version bump" - - git tag -s -a -m "Tag $b ($t) (development)" "$t" HEAD || die "failed to tag release $t" - BRANCHES+=("$t") - CLEANUP_REFS+=("refs/tags/$t") - BUILD_TAG="$t" - TAR_VERSION="$b" + # Current version is wrong (dev version), need to set rc1 version + BUILD_VERSION="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1))-rc1" + NEXT_VERSION="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1))-rc2" ;; major) - b="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1)).0" - set_version_number "${VERSION_ARR[0]}" "$((${VERSION_ARR[1]} + 1))" 0 - git commit -m "release: bump version to $b" -a || die "failed to commit major version bump" - - git tag -s -a -m "Tag $b" "$b" HEAD || die "failed to tag release" - BRANCHES+=("$b") - CLEANUP_REFS+=("refs/tags/$b") - BUILD_TAG="$b" - TAR_VERSION="$b" + # Current version is wrong (rc version), need to set major version + BUILD_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}.0" + NEXT_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}.1" ;; major-post) # We create a merge commit with the content of current "main", with two @@ -494,65 +448,77 @@ case "$RELEASE_MODE" in git merge -Xours --commit -m tmp main || die "merge1" git rm --cached -r . || die "merge2" git checkout main -- . || die "merge3" - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((${VERSION_ARR[2]} + 1))" git commit --amend -m tmp -a || die "failed to commit major version bump" test x = "x$(git diff main HEAD)" || die "there is a diff after merge!" - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" "$((${VERSION_ARR[2]} + 1))" - git commit --amend -m "release: bump version to $b (development)" -a || die "failed to commit major version bump" - git tag -s -a -m "Tag $b (development)" "$b-dev" HEAD || die "failed to tag release" - BRANCHES+=("$b-dev") - CLEANUP_REFS+=("refs/tags/$b-dev") - BUILD_TAG="$b-dev" - TAR_VERSION="$b" + # Version is already correct in meson.build + BUILD_VERSION="$VERSION_STR" + NEXT_VERSION="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((${VERSION_ARR[2]} + 1))-dev" ;; *) die "Release mode $RELEASE_MODE not yet implemented" ;; esac -build_tag() { - local BUILD_TAG="$1" - local TAR_FILE="NetworkManager-$2.tar.xz" +build_version() { + local CURR_VERSION="$(get_version)" + local BUILD_VERSION="$1" + local NEXT_VERSION="$2" + local BUILD_VERSION_DESCR="${BUILD_VERSION/-dev/ (development)}" + local NEXT_VERSION_DESCR="${NEXT_VERSION/-dev/ (development)}" + local TAR_FILE="NetworkManager-$BUILD_VERSION.tar.xz" local SUM_FILE="$TAR_FILE.sha256sum" - git checkout "$BUILD_TAG" || die "failed to checkout $BUILD_TAG" + # The current version is usually already correct, except for rc1 and major. Bump version in those cases. + if [[ "$BUILD_VERSION" != "$CURR_VERSION" ]]; then + set_version_number "$BUILD_VERSION" + git commit -m "release: bump version to $BUILD_VERSION_DESCR" -a || die "failed to commit release" + fi + + # Tag the release + git tag -s -a -m "Release $BUILD_VERSION_DESCR" "$BUILD_VERSION" HEAD || die "failed to tag release" + PUSH_REFS+=("$BUILD_VERSION") + CLEANUP_REFS+=("refs/tags/$BUILD_VERSION") + + # Build to get the tarball for the release ./contrib/fedora/rpm/build_clean.sh -r || die "build release failed" cp "./build/meson-dist/$TAR_FILE" /tmp/ || die "failed to copy $TAR_FILE to /tmp" cp "./build/meson-dist/$SUM_FILE" /tmp/ || die "failed to copy $SUM_FILE to /tmp" git clean -fdx -} -RELEASE_TAR_VERSIONS=() -RELEASE_TAGS=() -if [ -n "$BUILD_TAG" ]; then - build_tag "$BUILD_TAG" "$TAR_VERSION" - RELEASE_TAR_VERSIONS+=("$TAR_VERSION") - RELEASE_TAGS+=("$BUILD_TAG") -fi -git checkout -B "$CUR_BRANCH" "$TMP_BRANCH" || die "cannot checkout $CUR_BRANCH" + # Store the release version for later use + RELEASE_VERSIONS+=("$BUILD_VERSION") -BRANCHES+=( "$CUR_BRANCH" ) + # Bump to next version, so that build between now and the next release has the next version already. + # Otherwise the macros in nm_version.h don't work correctly. + set_version_number "$NEXT_VERSION" + git commit -m "release: bump version to $NEXT_VERSION_DESCR" -a || die "failed to commit version bump" +} + +# Build and create tarball. Bump version as needed. +PUSH_REFS=() +RELEASE_VERSIONS=() +build_version "$BUILD_VERSION" "$NEXT_VERSION" if [ "$RELEASE_MODE" = rc1 ]; then - git branch "$RELEASE_BRANCH" "$TMP_BRANCH" || die "cannot checkout $CUR_BRANCH" - BRANCHES+=( "$RELEASE_BRANCH" ) + # Create the release branch (nm-1-xx) + git branch "$RELEASE_BRANCH" "$TMP_BRANCH" || die "cannot checkout $RELEASE_BRANCH" + PUSH_REFS+=( "$RELEASE_BRANCH" ) CLEANUP_REFS+=( "refs/heads/$RELEASE_BRANCH" ) - git checkout "$TMP_BRANCH" - b="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 2)).0" - set_version_number "${VERSION_ARR[0]}" "$((${VERSION_ARR[1]} + 2))" 0 - git commit -m "release: bump version to $b (development)" -a || die "failed to commit devel version bump" - git tag -s -a -m "Tag $b (development)" "$b-dev" HEAD || die "failed to tag release" - BRANCHES+=("$b-dev") - CLEANUP_REFS+=("refs/tags/$b-dev") - BUILD_TAG="$b-dev" - TAR_VERSION="$b" - build_tag "$BUILD_TAG" "$TAR_VERSION" - RELEASE_TAR_VERSIONS+=("$TAR_VERSION") - RELEASE_TAGS+=("$BUILD_TAG") - git checkout -B "$CUR_BRANCH" "$TMP_BRANCH" || die "cannot checkout $CUR_BRANCH" + + # Go back to the commit of the rc1 release, nm-1-xx is one commit further now. + git checkout -B "$TMP_BRANCH" "$BUILD_VERSION" || die "cannot checkout $TMP_BRANCH" + + # Second release for rc1: create new dev version on main + BUILD_VERSION="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 2)).0-dev" + NEXT_VERSION="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 2)).1-dev" + build_version "$BUILD_VERSION" "$NEXT_VERSION" fi +# Work was done on the temporary branch, advance the real branch +git checkout -B "$CUR_BRANCH" "$TMP_BRANCH" || die "cannot checkout $CUR_BRANCH" +PUSH_REFS+=( "$CUR_BRANCH" ) + if [[ $GITLAB_TOKEN == "" ]]; then [[ -r ~/.config/nm-release-token ]] || die "cannot read ~/.config/nm-release-token" GITLAB_TOKEN=$(< ~/.config/nm-release-token) @@ -565,20 +531,21 @@ if [ -z "$GITLAB_USER_ID" ] || [ "$GITLAB_USER_ID" = "null" ]; then die "failed to authenticate to gitlab.freedesktop.org with the private token" fi -do_command git push "$ORIGIN" "${BRANCHES[@]}" || die "failed to to push branches ${BRANCHES[@]} to $ORIGIN" +# Push the modified branches and tags to the origin repository +do_command git push "$ORIGIN" "${PUSH_REFS[@]}" || die "failed to to push branches ${PUSH_REFS[@]} to $ORIGIN" +# Create the releases CREATE_RELEASE_FAIL=0 -for I in "${!RELEASE_TAR_VERSIONS[@]}"; do - TAR_FILE="NetworkManager-${RELEASE_TAR_VERSIONS[$I]}.tar.xz" +for BUILD_VERSION in "${RELEASE_VERSIONS[@]}"; do + TAR_FILE="NetworkManager-$BUILD_VERSION.tar.xz" SUM_FILE="$TAR_FILE.sha256sum" - BUILD_TAG="${RELEASE_TAGS["$I"]}" FAIL=0 # upload tarball and checksum file as generic packages for F in "$TAR_FILE" "$SUM_FILE"; do do_command curl --location --fail-with-body --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --upload-file "/tmp/$F" \ - "https://gitlab.freedesktop.org/api/v4/projects/411/packages/generic/NetworkManager/$BUILD_TAG/$F" \ + "https://gitlab.freedesktop.org/api/v4/projects/411/packages/generic/NetworkManager/$BUILD_VERSION/$F" \ || FAIL=1 if [[ $FAIL = 1 ]]; then @@ -595,25 +562,25 @@ for I in "${!RELEASE_TAR_VERSIONS[@]}"; do --request POST "https://gitlab.freedesktop.org/api/v4/projects/411/releases" \ --data "$(cat < connection.mptcp-flags - If unspecified, the fallback is 0x22 ("enabled,subflow"). Note that if sysctl /proc/sys/net/mptcp/enabled is disabled, NetworkManager will still not configure endpoints. + If unspecified, the fallback is 0x122 ("enabled,subflow,laminar"). Note that if sysctl /proc/sys/net/mptcp/enabled is disabled, NetworkManager will still not configure endpoints. connection.dns-over-tls - If unspecified, the ultimate default values depends on the DNS plugin. With systemd-resolved the default currently is global setting and for all other plugins "no" (0). + If unspecified, the ultimate default values depends on the DNS plugin. With systemd-resolved the default currently is its global setting and for all other plugins "no" (0). + + + connection.dnssec + If unspecified, the ultimate default values depends on the DNS plugin. With systemd-resolved the default currently is its global setting and for all other plugins "no" (0). connection.stable-id diff --git a/man/meson.build b/man/meson.build index 56f52bb4..d3310dc1 100644 --- a/man/meson.build +++ b/man/meson.build @@ -1,29 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -common_ent_file = configure_file( - input: 'common.ent.in', - output: '@BASENAME@', - configuration: data_conf, -) - -xsltproc_options = [ - xsltproc, - '--output', '@OUTPUT@', - '--path', meson.current_build_dir(), - '--xinclude', - '--nonet', - '--stringparam', 'man.output.quietly', '1', - '--stringparam', 'funcsynopsis.style', 'ansi', - '--stringparam', 'man.th.extra1.suppress', '1', - '--stringparam', 'man.authors.section.enabled', '0', - '--stringparam', 'man.copyright.section.enabled', '0', - '--stringparam', 'man.th.title.max.length', '30', -] - -docbook_xls = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' - -mans_xmls = [] - mans = [ ['NetworkManager', '8'], ['NetworkManager-dispatcher', '8'], @@ -44,24 +20,74 @@ if enable_nm_cloud_setup mans += [['nm-cloud-setup', '8']] endif -foreach man: mans - input = man[0] + '.xml' - content_files += join_paths(meson.current_source_dir(), input) +introspection_mans = [ + ['nm-settings-keyfile', '5'], + ['nm-settings-dbus', '5'], + ['nm-settings-nmcli', '5'], +] - output = '@0@.@1@'.format(man[0], man[1]) +if enable_ifcfg_rh + introspection_mans += [['nm-settings-ifcfg-rh', '5']] +endif - custom_target( - output, - input: input, - output: output, - command: xsltproc_options + [docbook_xls, '@INPUT@'], - depend_files: common_ent_file, - install: true, - install_dir: join_paths(nm_mandir, 'man' + man[1]), - ) +built_mans = [] +foreach man: mans + introspection_mans + name = man[0] + '.' + man[1] + if not fs.exists(name) + built_mans = [] + break + endif + + built_mans += name endforeach -if enable_introspection +if enable_introspection or enable_docs + common_ent_file = configure_file( + input: 'common.ent.in', + output: '@BASENAME@', + configuration: data_conf, + ) +endif + +if enable_introspection and (enable_man or enable_docs) + xsltproc_options = [ + find_program('xsltproc'), + '--output', '@OUTPUT@', + '--path', meson.current_build_dir(), + '--xinclude', + '--nonet', + '--stringparam', 'man.output.quietly', '1', + '--stringparam', 'funcsynopsis.style', 'ansi', + '--stringparam', 'man.th.extra1.suppress', '1', + '--stringparam', 'man.authors.section.enabled', '0', + '--stringparam', 'man.copyright.section.enabled', '0', + '--stringparam', 'man.th.title.max.length', '30', + ] + + docbook_xls = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' + + mans_xmls = [] + + foreach man: mans + input = man[0] + '.xml' + content_files += join_paths(meson.current_source_dir(), input) + + output = '@0@.@1@'.format(man[0], man[1]) + + # not needed if only html requested + if enable_man + custom_target( + output, + input: input, + output: output, + command: xsltproc_options + [docbook_xls, '@INPUT@'], + depend_files: common_ent_file, + install: true, + install_dir: join_paths(nm_mandir, 'man' + man[1]), + ) + endif + endforeach + merge_cmd = files(source_root / 'tools' / 'generate-docs-nm-settings-docs-merge.py') name = 'dbus' @@ -124,13 +150,23 @@ if enable_introspection output = '@0@.@1@'.format(man[0], man[1]) - custom_target( - output, - input: input, - output: output, - command: xsltproc_options + [docbook_xls, '@INPUT@'], - install: true, - install_dir: join_paths(nm_mandir, 'man' + man[1]), - ) + # not needed if only html requested + if enable_man + custom_target( + output, + input: input, + output: output, + command: xsltproc_options + [docbook_xls, '@INPUT@'], + install: true, + install_dir: join_paths(nm_mandir, 'man' + man[1]), + ) + endif endforeach +# not needed if only html requested +elif enable_man + if built_mans.length() > 0 + install_man(built_mans) + else + error('Building manpages requires xsltproc and -Dintrospection=true, and no prebuilt manpages were found. Try building from a release tarball or using -Dman=false.') + endif endif diff --git a/man/nmcli.xml b/man/nmcli.xml index f3b6706e..7bce0de7 100644 --- a/man/nmcli.xml +++ b/man/nmcli.xml @@ -1066,15 +1066,16 @@ dummy generic gsm + hsr infiniband ip-tunnel + ipvlan + loopback macsec macvlan olpc-mesh ovs-bridge - ovs-dpdk ovs-interface - ovs-patch ovs-port pppoe team diff --git a/meson.build b/meson.build index 7998b0d3..0657ce5a 100644 --- a/meson.build +++ b/meson.build @@ -5,23 +5,48 @@ project( # NOTE: When incrementing version also add corresponding # NM_VERSION_x_y_z macros in # "src/libnm-core-public/nm-version-macros.h.in" - version: '1.54.3', + version: '1.56.0', license: 'GPL2+', default_options: [ 'buildtype=debugoptimized', 'c_std=gnu11', 'warning_level=2' # value "2" will add "-Wall" and "-Wextra" to the compiler flags ], - meson_version: '>= 0.51.0', + meson_version: '>= 0.56.0', ) nm_name = meson.project_name() - nm_version = meson.project_version() -version_array = nm_version.split('.') -nm_major_version = version_array[0].to_int() -nm_minor_version = version_array[1].to_int() -nm_micro_version = version_array[2].to_int() + +version_and_suffix = nm_version.split('-') +version_array = version_and_suffix[0].split('.') +if version_and_suffix.length() == 2 + version_suffix = version_and_suffix[1] +else + assert(version_and_suffix.length() == 1) + version_suffix = '' +endif + +# In the C API we encode the version in 90+ scheme (1.56-rc1 = 1.55.90, rc2 = .91, etc) +if version_suffix == '' or version_suffix == 'dev' + assert(version_array.length() == 3) + nm_major_version = version_array[0].to_int() + nm_minor_version = version_array[1].to_int() + nm_micro_version = version_array[2].to_int() +elif version_suffix.startswith('rc') + assert(version_array.length() == 2) + nm_major_version = version_array[0].to_int() + nm_minor_version = version_array[1].to_int() - 1 + nm_micro_version = version_suffix.substring(2).to_int() + 89 +else + error('Invalid suffix: ' + version_suffix) +endif + +if nm_minor_version % 2 == 1 and version_suffix == '' + error('Expected a "-dev" or "-rc" suffix') +elif nm_minor_version %2 == 0 and version_suffix != '' + error('Unexpected "' + version_suffix + '" suffix') +endif nm_id_prefix = 'NM' @@ -77,6 +102,7 @@ libnm_version = '@0@.@1@.@2@'.format(current - age, age, revision) libnm_pkgincludedir = join_paths(nm_includedir, libnm_name) +fs = import('fs') gnome = import('gnome') i18n = import('i18n') pkg = import('pkgconfig') @@ -89,7 +115,6 @@ po_dir = source_root / 'po' top_inc = include_directories('.') perl = find_program('perl') -xsltproc = find_program('xsltproc') check_exports = find_program(join_paths(source_root, 'tools', 'check-exports.sh')) @@ -327,6 +352,7 @@ config_h.set10('WITH_CONFIG_PLUGIN_IFUPDOWN', enable_ifupdown) config_h.set_quoted('NM_DIST_VERSION', dist_version) enable_wifi = get_option('wifi') +config_h.set10('WITH_WIFI', enable_wifi) enable_iwd = get_option('iwd') assert((not enable_iwd) or enable_wifi, 'Enabling iwd support requires Wi-Fi support as well') @@ -476,19 +502,6 @@ if enable_selinux endif config_h.set10('HAVE_SELINUX', enable_selinux) -# eBPF support -ebpf_opt = get_option('ebpf') -# 'auto' means 'false', because there are still issues. -if ebpf_opt != 'true' - enable_ebpf = false -else - enable_ebpf = true - if not cc.has_header('linux/bpf.h') - assert(ebpf_opt != 'true', 'eBPF requires kernel support') - enable_ebpf = false - endif -endif - # libaudit support libaudit = get_option('libaudit') enable_libaudit = libaudit.contains('yes') @@ -507,6 +520,7 @@ if enable_teamdctl libteamdctl_dep = dependency('libteamdctl', version: '>= 1.9') assert(libteamdctl_dep.found(), 'You must have libteamdctl installed to build. Use -Dteamdctl=false to disable it') endif +config_h.set10('WITH_TEAMDCTL', enable_teamdctl) # polkit enable_polkit = get_option('polkit') @@ -616,6 +630,7 @@ if enable_modem_manager endif config_h.set_quoted('MOBILE_BROADBAND_PROVIDER_INFO_DATABASE', mobile_broadband_provider_info_database) endif +config_h.set10('WITH_WWAN', enable_modem_manager) # Bluez5 DUN support enable_bluez5_dun = get_option('bluez5_dun') @@ -816,6 +831,7 @@ if enable_nm_cloud_setup assert(jansson_dep.found(), 'nm-cloud-setup requires jansson library. Use -Dnm_cloud_setup=false to disable it') endif +enable_man = get_option('man') enable_docs = get_option('docs') more_asserts = get_option('more_asserts') @@ -914,7 +930,6 @@ endif test_args = [ '--called-from-make', build_root, - '', enable_valgrind ? valgrind_path : '', enable_valgrind ? valgrind_suppressions_path : '', '--launch-dbus=auto', @@ -964,38 +979,6 @@ data_conf.set('nmstatedir', nm_pkgstatedir) data_conf.set('sbindir', nm_sbindir) data_conf.set('sysconfdir', nm_sysconfdir) -# check if we can build setting property documentation -''' -build_docs=no -if test -n "$INTROSPECTION_MAKEFILE"; then - # If g-i is installed we know we have python, but we might not have pygobject - if ! "$PYTHON" -c 'from gi.repository import GObject' >& /dev/null; then - AC_MSG_ERROR(["--enable-introspection aims to build the settings documentation. This requires GObject introspection for python (pygobject)]) - fi - - AC_PATH_PROG(PERL, perl) - if test -z "$PERL"; then - AC_MSG_ERROR([--enable-introspection requires perl]) - fi - AC_PATH_PROG(XSLTPROC, xsltproc) - if test -z "$XSLTPROC"; then - AC_MSG_ERROR([--enable-introspection requires xsltproc]) - fi - - have_introspection=yes - if test "$enable_gtk_doc" = "yes"; then - build_docs=yes - fi -else - if test "$enable_gtk_doc" = "yes"; then - # large parts of the documentation require introspection/pygobject to extract - # the documentation out of the source files. You cannot enable gtk-doc without alone. - AC_MSG_ERROR(["--with-gtk-doc requires --enable-introspection"]) - fi - have_introspection=no -fi -''' - content_files = [] subdir('introspection') @@ -1033,9 +1016,14 @@ if enable_qt != 'false' endif endif +# The man/ directory builds a couple targets needed by the docs build too. +# If we build with docs but no man, then enter the subdir and only build +# some targets. +if enable_docs or enable_man + subdir('man') +endif if enable_docs assert(enable_introspection, '-Ddocs=true requires -Dintrospection=true') - subdir('man') subdir('docs') meson.add_dist_script( 'tools/meson-dist-data.sh', @@ -1086,7 +1074,7 @@ meson.add_install_script( nm_pkgstatedir, nm_mandir, nm_sysconfdir, - enable_docs ? '1' : '0', + enable_man ? '1' : '0', enable_ifcfg_rh ? '1' : '0', enable_nm_cloud_setup ? '1' : '0', install_systemdunitdir ? '1' : '0', @@ -1184,6 +1172,5 @@ output += 'have-nss: ' + crypto_nss_dep.found().to_string() + ')\n' output += ' sanitizers: ' + get_option('b_sanitize') + '\n' output += ' Mozilla Public Suffix List: ' + enable_libpsl.to_string() + '\n' output += ' vapi: ' + enable_vapi.to_string() + '\n' -output += ' ebpf: ' + enable_ebpf.to_string() + '\n' output += ' readline: ' + with_readline + '\n' message(output) diff --git a/meson_options.txt b/meson_options.txt index 18d8bfc4..d28cc76f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -44,7 +44,7 @@ option('nmcli', type: 'boolean', value: true, description: 'Build nmcli') option('nmtui', type: 'boolean', value: true, description: 'Build nmtui') option('nm_cloud_setup', type: 'boolean', value: true, description: 'Build nm-cloud-setup, a tool for automatically configuring networking in cloud') option('bluez5_dun', type: 'boolean', value: false, description: 'enable Bluez5 DUN support') -option('ebpf', type: 'combo', choices: ['auto', 'true', 'false'], description: 'Enable eBPF support') +option('ebpf', type: 'combo', choices: ['auto', 'true', 'false'], description: 'Enable eBPF support (deprecated)') option('nbft', type: 'boolean', value: true, description: 'Enable NBFT support in the initrd generator') # configuration plugins @@ -67,6 +67,7 @@ option('config_dhcp_default', type: 'combo', choices: ['dhclient', 'dhcpcd', 'in option('introspection', type: 'boolean', value: true, description: 'Enable introspection for this build') option('vapi', type : 'combo', choices : ['auto', 'true', 'false'], description: 'build Vala bindings') option('docs', type: 'boolean', value: false, description: 'use to build documentation') +option('man', type: 'boolean', value: true, description: 'Install manpages') option('tests', type: 'combo', choices: ['yes', 'no', 'root'], value: 'yes', description: 'Build NetworkManager tests') option('firewalld_zone', type: 'boolean', value: true, description: 'Install and use firewalld zone for shared mode') option('more_asserts', type: 'string', value: 'auto', description: 'Enable more assertions for debugging (0 = no, 100 = all, default: auto)') diff --git a/po/ca.po b/po/ca.po index 828a2016..1f46c668 100644 --- a/po/ca.po +++ b/po/ca.po @@ -8,14 +8,15 @@ # Lubomir Rintel , 2016. #zanata # Lubomir Rintel , 2017. #zanata # Thomas Haller , 2017. #zanata +# Jordi Mas i Hernàndez , 2025 msgid "" msgstr "" "Project-Id-Version: NetworkManager\n" "Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/NetworkManager/" "NetworkManager/issues\n" "POT-Creation-Date: 2023-06-16 15:26+0000\n" -"PO-Revision-Date: 2023-06-17 00:07+0200\n" -"Last-Translator: Copied by Zanata \n" +"PO-Revision-Date: 2025-09-28 00:07+0200\n" +"Last-Translator: Jordi Mas i Hernàndez \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" @@ -355,7 +356,7 @@ msgstr "Connexió WPAN" #: src/core/devices/team/nm-device-team.c:131 msgid "Team connection" -msgstr "Connexió equip" +msgstr "Connexió d'equip" #: src/core/devices/wifi/nm-device-olpc-mesh.c:112 src/nmcli/devices.c:1400 msgid "Mesh" @@ -648,7 +649,7 @@ msgstr "Surt després de la configuració inicial" #: src/core/nm-config.c:639 msgid "Don't become a daemon, and log to stderr" msgstr "" -"No et converteixis en un dimoni, i envia el registre a la sortida estàndard" +"No et converteixis en un dimoni, i envia el registre a la sortida d'error" #: src/core/nm-config.c:648 msgid "An http(s) address for checking internet connectivity" @@ -795,7 +796,7 @@ msgstr "La connexió no era una connexió Ethernet o PPPoE." #: src/libnm-client-impl/nm-device-ethernet.c:206 msgid "The connection and device differ in S390 subchannels." -msgstr "La connexió i el dispositiu difereixen als subcanals 5930." +msgstr "La connexió i el dispositiu difereixen als subcanals S390." #: src/libnm-client-impl/nm-device-ethernet.c:223 #, c-format @@ -881,7 +882,7 @@ msgstr "La connexió no era una connexió tun." #: src/libnm-client-impl/nm-device-team.c:124 msgid "The connection was not a team connection." -msgstr "La connexió no era una connexió equip." +msgstr "La connexió no era una connexió d'equip." #: src/libnm-client-impl/nm-device-tun.c:204 msgid "The connection was not a tun connection." @@ -1325,27 +1326,27 @@ msgstr "" #: src/libnm-core-impl/nm-keyfile.c:333 msgid "ignoring missing number" -msgstr "s'ignorarà el número faltant" +msgstr "s'ignora el número faltant" #: src/libnm-core-impl/nm-keyfile.c:345 #, c-format msgid "ignoring invalid number '%s'" -msgstr "s'ignorarà el número «%s» no vàlid" +msgstr "s'ignora el número «%s» no vàlid" #: src/libnm-core-impl/nm-keyfile.c:374 #, c-format msgid "ignoring invalid %s address: %s" -msgstr "s'ignorarà l'adreça %s no vàlida: %s" +msgstr "s'ignora l'adreça %s no vàlida: %s" #: src/libnm-core-impl/nm-keyfile.c:420 #, c-format msgid "ignoring invalid gateway '%s' for %s route" -msgstr "s'ignorarà la passarel·la «%s» no vàlida per a la ruta %s" +msgstr "s'ignora la passarel·la «%s» no vàlida per a la ruta %s" #: src/libnm-core-impl/nm-keyfile.c:442 #, c-format msgid "ignoring invalid %s route: %s" -msgstr "s'ignorarà la ruta %s no vàlida: %s" +msgstr "s'ignora la ruta %s no vàlida: %s" #: src/libnm-core-impl/nm-keyfile.c:620 #, c-format @@ -1361,7 +1362,7 @@ msgstr "caràcter «%c» inesperat per a %s: «%s» (posició %td)" #, c-format msgid "unexpected character '%c' in prefix length for %s: '%s' (position %td)" msgstr "" -"caràcter «%c» inesperat a la longitud de prefix %s: «%s» (posició %td)<" +"caràcter «%c» inesperat a la longitud de prefix %s: «%s» (posició %td)" #: src/libnm-core-impl/nm-keyfile.c:669 #, c-format @@ -1413,11 +1414,11 @@ msgstr "s'ignorarà l'adreça %s no vàlida: %s" #: src/libnm-core-impl/nm-keyfile.c:1518 msgid "ignoring invalid SSID" -msgstr "s'ignorarà l'SSID no vàlida" +msgstr "s'ignora l'SSID no vàlida" #: src/libnm-core-impl/nm-keyfile.c:1536 msgid "ignoring invalid raw password" -msgstr "s'ignorarà la contrasenya sense processar no vàlida" +msgstr "s'ignora la contrasenya sense processar no vàlida" #: src/libnm-core-impl/nm-keyfile.c:1681 msgid "invalid key/cert value" @@ -1458,7 +1459,7 @@ msgstr "valor de paritat «%s» no vàlid" #: src/libnm-core-impl/nm-keyfile.c:1958 src/libnm-core-impl/nm-keyfile.c:3540 #, c-format msgid "invalid setting: %s" -msgstr "el paràmetre no és vàlid: «%s»" +msgstr "el paràmetre no és vàlid: %s" #: src/libnm-core-impl/nm-keyfile.c:1978 #, fuzzy, c-format @@ -1973,7 +1974,7 @@ msgstr "file:// URI no és UTF-8 vàlida" #: src/libnm-core-impl/nm-setting-connection.c:1501 msgid "invalid permissions not in format \"user:$UNAME[:]\"" -msgstr "els permisos no són vàlids, no estan en el format «user:$UNANE[:]" +msgstr "els permisos no són vàlids, no estan en el format «user:$UNAME[:]" #: src/libnm-core-impl/nm-setting-connection.c:1530 #, c-format @@ -2086,7 +2087,7 @@ msgstr "«%s» no és un número" #: src/libnm-core-impl/nm-setting-gsm.c:479 msgid "property is empty or wrong size" -msgstr "la propietat és buda o de mida incorrecta" +msgstr "la propietat és buida o de mida incorrecta" #: src/libnm-core-impl/nm-setting-gsm.c:492 msgid "property must contain only digits" @@ -2098,12 +2099,12 @@ msgstr "no es pot activar quan hi ha una configuració manual" #: src/libnm-core-impl/nm-setting-infiniband.c:215 msgid "Must specify a P_Key if specifying parent" -msgstr "S'ha d'especificar una P-Key si s'especifica el pare" +msgstr "S'ha d'especificar una P_Key si s'especifica el pare" #: src/libnm-core-impl/nm-setting-infiniband.c:226 msgid "InfiniBand P_Key connection did not specify parent interface name" msgstr "" -"La connexió InfiniBand P_Key no ha especificat el nom de l'interfície pare" +"La connexió InfiniBand P_Key no ha especificat el nom de la interfície pare" #: src/libnm-core-impl/nm-setting-infiniband.c:234 msgid "the values 0 and 0x8000 are not allowed" @@ -2156,12 +2157,12 @@ msgstr "Adreça IPv4 «%s» no és vàlida" #: src/libnm-core-impl/nm-setting-ip-config.c:106 #, c-format msgid "Invalid IPv4 address prefix '%u'" -msgstr "Prefix «%u» d'adreça IPv4 no vàlida" +msgstr "Prefix «%u» d'adreça IPv4 no vàlid" #: src/libnm-core-impl/nm-setting-ip-config.c:107 #, c-format msgid "Invalid IPv6 address prefix '%u'" -msgstr "Prefix «%u» d'adreça IPv6 no vàlida<" +msgstr "Prefix «%u» d'adreça IPv6 no vàlid" #: src/libnm-core-impl/nm-setting-ip-config.c:124 #, c-format @@ -2208,7 +2209,7 @@ msgstr "el prefix %s no és vàlid" #: src/libnm-core-impl/nm-setting-ip-config.c:1423 #, c-format msgid "%s is not a valid route type" -msgstr "%s no és un nom de ruta vàlid" +msgstr "%s no és un tipus de ruta vàlid" #: src/libnm-core-impl/nm-setting-ip-config.c:1442 #, fuzzy @@ -2432,7 +2433,7 @@ msgstr "La ruta %d. no és vàlida" #: src/libnm-core-impl/nm-setting-ip-config.c:5638 #, c-format msgid "invalid attribute: %s" -msgstr "atribut no vàlid: «%s»" +msgstr "atribut no vàlid: %s" #: src/libnm-core-impl/nm-setting-ip-config.c:5658 #, c-format @@ -4105,7 +4106,7 @@ msgstr "«%s» no és vàlid; useu [%s] or [%s]" #: src/libnmc-base/nm-client-utils.c:176 #, c-format msgid "'%s' is not valid; use [%s], [%s] or [%s]" -msgstr "«%s» no és vàld, useu [%s], [%s] o [%s]" +msgstr "«%s» no és vàlid, useu [%s], [%s] o [%s]" #: src/libnmc-base/nm-client-utils.c:230 #, c-format @@ -4676,7 +4677,7 @@ msgstr "clau privada no vàlida" #, fuzzy, c-format msgid "Secrets are required to connect WireGuard VPN '%s'" msgstr "" -"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sens " +"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sense " "fil «%s»." #: src/libnmc-base/nm-secret-agent-simple.c:620 @@ -4698,7 +4699,7 @@ msgid "" "Passwords or encryption keys are required to access the wireless network " "'%s'." msgstr "" -"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sens " +"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sense " "fil «%s»." #: src/libnmc-base/nm-secret-agent-simple.c:886 @@ -4709,7 +4710,7 @@ msgstr "Autenticació 802.1X de xarxa amb fil" #, fuzzy, c-format msgid "Secrets are required to access the wired network '%s'" msgstr "" -"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sens " +"Es requereixen contrasenyes o claus d'encriptació per accedir la xarxa sense " "fil «%s»." #: src/libnmc-base/nm-secret-agent-simple.c:893 @@ -5418,10 +5419,10 @@ msgid "" msgstr "" "Entreu els bytes com una llista de valors hexadecimals.\n" "S'accepten dos formats:\n" -"(a) una cadena de dígits exadecimals, on cada dos dígits representen un " +"(a) una cadena de dígits hexadecimals, on cada dos dígits representen un " "byte\n" -"(b) una llista separada per espais de bytes escrits com a dígits hexadecimas " -"(amb prefix opcional 0x/0X,i un 0 inicial opcional). \n" +"(b) una llista separada per espais de bytes escrits com a dígits hexadecimals " +"(amb prefix opcional 0x/0X,i un 0 inicial opcional).\n" "\n" "Exemples: ab0455a6ea3a74C2\n" " ab 4 55 0xa6 ea 3a 74 C2\n" @@ -5493,7 +5494,7 @@ msgstr "Demora cap endavant" #: src/libnmc-setting/nm-meta-setting-desc.c:5280 #: src/nmtui/nmt-page-bridge.c:134 msgid "Hello time" -msgstr "Temps de benviguda" +msgstr "Temps de benvinguda" #: src/libnmc-setting/nm-meta-setting-desc.c:5286 #: src/nmtui/nmt-page-bridge.c:148 @@ -5567,7 +5568,7 @@ msgid "" msgstr "" "Entreu les connexions secundàries que s'haurien d'activar quan s'activa " "aquesta connexió. Les connexions es poden especificar o bé per UUID o per ID " -"(nom). L'nmcli tradueix transparentment els noms a UUID. Noteu que el " +"(nom). nmcli tradueix transparentment els noms a UUID. Noteu que el " "NetworkManager actualment sols dóna suport els VPN com a connexions " "secundàries.\n" "Els elements es poden separar per comes o espais.\n" @@ -5676,7 +5677,7 @@ msgid "" " priority [prio] [from [src]] [to [dst]], ,...\n" "\n" msgstr "" -"Introduïu una llista de regles d'encaminanent IPv4 amb el següent format:\n" +"Introduïu una llista de regles d'encaminament IPv4 amb el següent format:\n" " priority [prioritat] [from [origen]] [to [destí]], ,...\n" "\n" "\n" @@ -5696,7 +5697,7 @@ msgstr "" "configuració IPv6 \n" "és «auto» aquests servidors DNS s'annexen als que retorna (si retorna cap) " "la \n" -"configuració automatica. Els servidors DNS no es poden usar amb els métodes " +"configuració automàtica. Els servidors DNS no es poden usar amb els mètodes " "de \n" "configuracó DNS «shared» o «link-local», atès que no hi una xarxa superior. " "A tots\n" @@ -8151,12 +8152,12 @@ msgstr "" "canonada (|) o un ampersand (&). El primer indica que l'element és opcional " "i el segon significa que és obligatori. Si hi ha algun element opcional, " "llavors la coincidència avalua a cert si almenys un dels elements opcionals " -"coincideix (O lògicà). Si hi ha elements obligatoris, llavors tots han de " +"coincideix (O lògica). Si hi ha elements obligatoris, llavors tots han de " "coincidir (I lògica). Per defecte, un element és opcional. Això significa " "que un element «foo» es comporta igual que «|foo». Un element també es pot " "invertir amb el símbol d'exclamació (!) entre el símbol de la canonada (o de " "l'ampersand) i abans del patró. Tingueu en compte que «!foo» és una drecera " -"per al patró obligatòri «&!foo». Finalment, es pot utilitzar una barra " +"per al patró obligatori «&!foo». Finalment, es pot utilitzar una barra " "inversa al començament de l'element (després dels caràcters especials " "opcionals) per no considerar-lo inici del patró. Per exemple, «\\!a» és una " "coincidència obligatòria per literalment «!a»." @@ -10722,7 +10723,7 @@ msgstr "Error: «%s» no és una connexió activa.\n" #: src/nmcli/connections.c:3436 msgid "Error: not all active connections found." -msgstr "Error: No s'han trobar totes les connexions actives." +msgstr "Error: No s'han trobat totes les connexions actives." #: src/nmcli/connections.c:3444 msgid "Error: no active connection provided." @@ -11041,7 +11042,7 @@ msgstr "" "Verifica si el paràmetre o la connexió és vàlida i es pot desar més tard.\n" "Indica valors no vàlids quan hi ha un error. Alguns errors es poden " "corregir\n" -"automàticaent amb l'opció «fix».\n" +"automàticament amb l'opció «fix».\n" "\n" "Exemples: nmcli> verify\n" " nmcli> verify fix\n" @@ -11063,7 +11064,7 @@ msgid "" msgstr "" "save [persistent|temporary] :: desa la connexió\n" "\n" -"Envia el perfil de la connexió al NetworManager que o bé la desarà de forma\n" +"Envia el perfil de la connexió al NetworkManager que o bé la desarà de forma\n" "persistent o bé sols la mantindrà a la memòria. «desa» sense cap argument\n" "significa «desa de forma persistent».\n" "Noteu que un cop que deseu el perfile de forma persistent aquestes " @@ -11485,7 +11486,7 @@ msgstr "Opció no vàlida de verificació: %s\n" #: src/nmcli/connections.c:8486 #, c-format msgid "Verify setting '%s': %s\n" -msgstr "Verifica el paràmere «%s»: %s\n" +msgstr "Verifica el paràmetre «%s»: %s\n" #: src/nmcli/connections.c:8501 #, c-format @@ -11552,12 +11553,12 @@ msgstr "Error: no es pot activar la connexió: %s.\n" #: src/nmcli/connections.c:8679 #, c-format msgid "Error: Failed to activate '%s' (%s) connection: %s\n" -msgstr "Error: no s'ha pogut desconnectar la connexió «%s» (%s): %s\n" +msgstr "Error: no s'ha pogut activar la connexió «%s» (%s): %s\n" #: src/nmcli/connections.c:8686 msgid "Monitoring connection activation (press any key to continue)\n" msgstr "" -"S'està supervisant l'activació de la connexio (premeu qualsevol teclar per " +"S'està supervisant l'activació de la connexió (premeu qualsevol tecla per " "continuar)\n" #: src/nmcli/connections.c:8721 @@ -11582,7 +11583,7 @@ msgstr "Configuració actual del nmcli:\n" #: src/nmcli/connections.c:8753 #, c-format msgid "Invalid configuration option '%s'; allowed [%s]\n" -msgstr "Opció de configuració no vàida: «%s»; es permet [%s]\n" +msgstr "Opció de configuració no vàlida: «%s»; es permet [%s]\n" #: src/nmcli/connections.c:8985 #, fuzzy @@ -12396,7 +12397,7 @@ msgstr "Error: no s'ha pogut afegir/activar la connexió nova: %s" #: src/nmcli/devices.c:2266 #, c-format msgid "Error: Device activation failed: %s" -msgstr "Error: no s'ha pogut activar el dispositu: %s" +msgstr "Error: no s'ha pogut activar el dispositiu: %s" #: src/nmcli/devices.c:2322 #, c-format @@ -12603,7 +12604,7 @@ msgstr "Contrasenya: " #: src/nmcli/devices.c:4172 #, c-format msgid "'%s' is not valid WPA PSK" -msgstr "«%s» no és una WPS PSK vàlida" +msgstr "«%s» no és una WPA PSK vàlida" #: src/nmcli/devices.c:4193 #, c-format @@ -13538,7 +13539,7 @@ msgstr "Error: s'esperava l'argument «%s», però s'ha proporcionat «%s»." #: src/nmcli/utils.c:315 #, c-format msgid "Error: Unexpected argument '%s'" -msgstr "Error: argument inesperat «%s»." +msgstr "Error: argument inesperat «%s»" #: src/nmcli/utils.c:702 #, fuzzy, c-format @@ -13897,7 +13898,7 @@ msgstr "«%s» <" #. NB: the ordering/numbering here corresponds to NmtPageBondMonitoringMode #: src/nmtui/nmt-page-bond.c:92 msgid "MII (recommended)" -msgstr "MII (recomendat)" +msgstr "MII (recomanat)" #: src/nmtui/nmt-page-bond.c:93 msgid "ARP" @@ -14543,7 +14544,7 @@ msgstr "" #: src/nmtui/nmtui-edit.c:394 src/nmtui/nmtui-edit.c:410 msgid "New Connection" -msgstr "Connexions nova" +msgstr "Connexió nova" #: src/nmtui/nmtui-edit.c:452 #, c-format diff --git a/po/it.po b/po/it.po index ae036b82..9ef6bc14 100644 --- a/po/it.po +++ b/po/it.po @@ -12596,7 +12596,7 @@ msgstr "Digitare «help» o «?» per i comandi disponibili." #. TRANSLATORS: do not translate 'print', leave it as it is #: src/nmcli/connections.c:9072 msgid "Type 'print' to show all the connection properties." -msgstr "Digitare «stampa» per mostrare tutte le proprietà della connessione." +msgstr "Digitare «print» per mostrare tutte le proprietà della connessione." #. TRANSLATORS: do not translate 'describe', leave it as it is #: src/nmcli/connections.c:9075 diff --git a/po/ru.po b/po/ru.po index beac01bf..849805bf 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1,4 +1,3 @@ -# Copyright (C) 2024 Дронова Юлия , # Leonid Kanter , 2006, 2007. # Артём Попов , 2009. # Yulia , 2010. @@ -11,23 +10,24 @@ # tchuang , 2017. #zanata. # ljanda , 2018. #zanata. # lrintel , 2018. #zanata. -# Дронова Юлия , 2023. +# Дронова Юлия , 2023, 2025. # This file is distributed under the same license as the NetworkManager package. msgid "" msgstr "" -"Project-Id-Version: NetworkManager\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-31 11:59+0200\n" -"PO-Revision-Date: 2024-07-18 17:46+0300\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/NetworkManager/NetworkMan" +"ager/issues\n" +"POT-Creation-Date: 2025-08-14 03:31+0000\n" +"PO-Revision-Date: 2025-09-05 18:36+0300\n" "Last-Translator: Дронова Юлия \n" "Language-Team: RU\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Lokalize 23.08.1\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 25.08.0\n" #: data/org.freedesktop.NetworkManager.policy.in.in:13 msgid "Enable or disable system networking" @@ -211,7 +211,7 @@ msgid "%s %u" msgstr "%s %u" #: src/core/devices/adsl/nm-device-adsl.c:118 -#: src/libnmc-setting/nm-meta-setting-desc.c:8697 +#: src/libnmc-setting/nm-meta-setting-desc.c:8993 msgid "ADSL connection" msgstr "Подключение ADSL" @@ -251,12 +251,12 @@ msgid "DUN connection must include a GSM or CDMA setting" msgstr "Подключения DUN должны содержать параметры GSM или CDMA" #: src/core/devices/bluetooth/nm-device-bt.c:382 -#: src/core/devices/wwan/nm-modem-broadband.c:897 +#: src/core/devices/wwan/nm-modem-broadband.c:918 msgid "GSM connection" msgstr "Подключение GSM" #: src/core/devices/bluetooth/nm-device-bt.c:384 -#: src/core/devices/wwan/nm-modem-broadband.c:918 +#: src/core/devices/wwan/nm-modem-broadband.c:938 msgid "CDMA connection" msgstr "Подключение CDMA" @@ -264,11 +264,11 @@ msgstr "Подключение CDMA" msgid "Unknown/unhandled Bluetooth connection type" msgstr "Неизвестный/необрабатываемый тип подключения Bluetooth" -#: src/core/devices/bluetooth/nm-device-bt.c:417 +#: src/core/devices/bluetooth/nm-device-bt.c:416 msgid "connection does not match device" msgstr "подключение не соответствует устройству" -#: src/core/devices/nm-device-6lowpan.c:162 +#: src/core/devices/nm-device-6lowpan.c:154 msgid "6LOWPAN connection" msgstr "Подключение 6LOWPAN" @@ -276,7 +276,7 @@ msgstr "Подключение 6LOWPAN" msgid "Bond connection" msgstr "Агрегированное подключение (bond)" -#: src/core/devices/nm-device-bridge.c:164 +#: src/core/devices/nm-device-bridge.c:165 msgid "Bridge connection" msgstr "Мостовое подключение" @@ -289,21 +289,21 @@ msgstr "Фиктивное подключение" msgid "Wired connection %d" msgstr "Проводное подключение %d" -#: src/core/devices/nm-device-ethernet.c:1641 -#: src/libnmc-setting/nm-meta-setting-desc.c:8739 +#: src/core/devices/nm-device-ethernet.c:1640 +#: src/libnmc-setting/nm-meta-setting-desc.c:9037 msgid "Veth connection" msgstr "Подключение Veth" -#: src/core/devices/nm-device-ethernet.c:1699 +#: src/core/devices/nm-device-ethernet.c:1697 msgid "PPPoE connection" msgstr "Подключение PPPoE" -#: src/core/devices/nm-device-ethernet.c:1699 +#: src/core/devices/nm-device-ethernet.c:1697 msgid "Wired connection" msgstr "Проводное подключение" #: src/core/devices/nm-device-infiniband.c:160 -#: src/libnmc-setting/nm-meta-setting-desc.c:8712 +#: src/libnmc-setting/nm-meta-setting-desc.c:9008 msgid "InfiniBand connection" msgstr "Подключение InfiniBand" @@ -315,7 +315,7 @@ msgstr "Подключение IP-туннель" msgid "Loopback connection" msgstr "Подключение loopback" -#: src/core/devices/nm-device-macvlan.c:366 +#: src/core/devices/nm-device-macvlan.c:355 msgid "MACVLAN connection" msgstr "Подключение MACVLAN" @@ -323,18 +323,18 @@ msgstr "Подключение MACVLAN" msgid "TUN connection" msgstr "Подключение TUN" -#: src/core/devices/nm-device-vlan.c:380 -#: src/libnmc-setting/nm-meta-setting-desc.c:8740 +#: src/core/devices/nm-device-vlan.c:370 +#: src/libnmc-setting/nm-meta-setting-desc.c:9038 msgid "VLAN connection" msgstr "Подключение VLAN" #: src/core/devices/nm-device-vrf.c:185 -#: src/libnmc-setting/nm-meta-setting-desc.c:8742 +#: src/libnmc-setting/nm-meta-setting-desc.c:9040 msgid "VRF connection" msgstr "Подключение VRF" #: src/core/devices/nm-device-vxlan.c:385 -#: src/libnmc-setting/nm-meta-setting-desc.c:8743 +#: src/libnmc-setting/nm-meta-setting-desc.c:9041 msgid "VXLAN connection" msgstr "Подключение VXLAN" @@ -477,12 +477,10 @@ msgstr "Для режима Ad-Hoc требуется открытая ауте #: src/core/devices/wifi/nm-wifi-utils.c:565 #: src/core/devices/wifi/nm-wifi-utils.c:600 -#, c-format msgid "connection does not match access point" msgstr "подключение не соответствует точке доступа" #: src/core/devices/wifi/nm-wifi-utils.c:654 -#, c-format msgid "connection does not match mesh point" msgstr "подключение не соответствует точке mesh" @@ -594,8 +592,8 @@ msgid "Could not daemonize: %s [error %u]\n" msgstr "Невозможно преобразовать в демона: %s [ошибка %u]\n" #: src/core/nm-config.c:544 src/libnm-core-impl/nm-setting-ovs-bridge.c:187 -#: src/libnmc-setting/nm-meta-setting-desc.c:2163 -#: src/libnmc-setting/nm-meta-setting-desc.c:4309 +#: src/libnmc-setting/nm-meta-setting-desc.c:2176 +#: src/libnmc-setting/nm-meta-setting-desc.c:4366 #, c-format msgid "'%s' is not valid" msgstr "«%s» недействителен" @@ -663,40 +661,39 @@ msgstr "Параметры NetworkManager" msgid "Show NetworkManager options" msgstr "Показать параметры NetworkManager" -#: src/core/nm-manager.c:6931 src/libnmc-setting/nm-meta-setting-desc.c:8741 +#: src/core/nm-manager.c:6988 src/libnmc-setting/nm-meta-setting-desc.c:9039 msgid "VPN connection" msgstr "Подключение VPN" -#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5654 -#: src/libnm-client-impl/nm-device.c:1781 -#: src/libnm-core-impl/nm-connection.c:3244 src/nmtui/nm-editor-utils.c:196 +#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5653 +#: src/libnm-client-impl/nm-device.c:1782 +#: src/libnm-core-impl/nm-connection.c:3343 src/nmtui/nm-editor-utils.c:204 msgid "Bond" msgstr "Агрегированное (Bond)" -#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5725 -#: src/libnm-client-impl/nm-device.c:1783 -#: src/libnm-core-impl/nm-connection.c:3246 src/nmtui/nm-editor-utils.c:214 +#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5724 +#: src/libnm-client-impl/nm-device.c:1784 +#: src/libnm-core-impl/nm-connection.c:3345 src/nmtui/nm-editor-utils.c:222 msgid "Team" msgstr "Агрегированное (Team)" -#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:6062 -#: src/libnm-client-impl/nm-device.c:1785 -#: src/libnm-core-impl/nm-connection.c:3248 src/nmtui/nm-editor-utils.c:205 +#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:6061 +#: src/libnm-client-impl/nm-device.c:1786 +#: src/libnm-core-impl/nm-connection.c:3347 src/nmtui/nm-editor-utils.c:213 msgid "Bridge" msgstr "Мост" -#: src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9026 -#: src/libnm-core-impl/nm-team-utils.c:2391 -#, c-format +#: src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9028 +#: src/libnm-core-impl/nm-team-utils.c:2395 msgid "invalid json" msgstr "недействительный json" -#: src/libnm-client-impl/nm-client.c:3816 +#: src/libnm-client-impl/nm-client.c:3818 #, c-format msgid "request succeeded with %s but object is in an unsuitable state" msgstr "запрос был успешным (%s), но объект имеет неподходящий статус" -#: src/libnm-client-impl/nm-client.c:3908 +#: src/libnm-client-impl/nm-client.c:3910 #, c-format msgid "operation succeeded but object %s does not exist" msgstr "действие было успешным, но объекта %s не существует" @@ -747,12 +744,10 @@ 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 "Это подключение не было подключением Bluetooth." #: src/libnm-client-impl/nm-device-bt.c:141 -#, c-format msgid "The connection is of Bluetooth NAP type." msgstr "Подключение имеет тип Bluetooth NAP." @@ -933,138 +928,143 @@ msgstr "" msgid "The connection was not a wpan connection." msgstr "Это подключение не было подключением wpan." -#: src/libnm-client-impl/nm-device.c:1761 src/nmtui/nm-editor-utils.c:144 +#: src/libnm-client-impl/nm-device.c:1762 src/nmtui/nm-editor-utils.c:144 msgid "Ethernet" msgstr "Ethernet" -#: src/libnm-client-impl/nm-device.c:1763 src/nmtui/nm-editor-utils.c:160 +#: src/libnm-client-impl/nm-device.c:1764 src/nmtui/nm-editor-utils.c:168 #: src/nmtui/nmtui-radio.c:58 msgid "Wi-Fi" msgstr "Wi-Fi" -#: src/libnm-client-impl/nm-device.c:1765 +#: src/libnm-client-impl/nm-device.c:1766 msgid "Bluetooth" msgstr "Bluetooth" -#: src/libnm-client-impl/nm-device.c:1767 +#: src/libnm-client-impl/nm-device.c:1768 msgid "OLPC Mesh" msgstr "OLPC Mesh" -#: src/libnm-client-impl/nm-device.c:1769 +#: src/libnm-client-impl/nm-device.c:1770 msgid "Open vSwitch Interface" msgstr "Интерфейс Open vSwitch" -#: src/libnm-client-impl/nm-device.c:1771 +#: src/libnm-client-impl/nm-device.c:1772 msgid "Open vSwitch Port" msgstr "Порт Open vSwitch" -#: src/libnm-client-impl/nm-device.c:1773 +#: src/libnm-client-impl/nm-device.c:1774 msgid "Open vSwitch Bridge" msgstr "Мост Open vSwitch" -#: src/libnm-client-impl/nm-device.c:1775 +#: src/libnm-client-impl/nm-device.c:1776 msgid "WiMAX" msgstr "WiMAX" -#: src/libnm-client-impl/nm-device.c:1777 src/nmtui/nm-editor-utils.c:178 +#: src/libnm-client-impl/nm-device.c:1778 src/nmtui/nm-editor-utils.c:186 msgid "Mobile Broadband" msgstr "Мобильное широкополосное" -#: src/libnm-client-impl/nm-device.c:1779 -#: src/libnm-core-impl/nm-connection.c:3252 src/nmtui/nm-editor-utils.c:169 +#: src/libnm-client-impl/nm-device.c:1780 +#: src/libnm-core-impl/nm-connection.c:3351 src/nmtui/nm-editor-utils.c:177 msgid "InfiniBand" msgstr "InfiniBand" -#: src/libnm-client-impl/nm-device.c:1787 -#: src/libnm-core-impl/nm-connection.c:3250 src/nmtui/nm-editor-utils.c:223 +#: src/libnm-client-impl/nm-device.c:1788 +#: src/libnm-core-impl/nm-connection.c:3349 src/nmtui/nm-editor-utils.c:231 #: src/nmtui/nmt-page-vlan.c:57 msgid "VLAN" msgstr "VLAN" -#: src/libnm-client-impl/nm-device.c:1789 +#: src/libnm-client-impl/nm-device.c:1790 msgid "ADSL" msgstr "ADSL" -#: src/libnm-client-impl/nm-device.c:1791 +#: src/libnm-client-impl/nm-device.c:1792 msgid "MACVLAN" msgstr "MACVLAN" -#: src/libnm-client-impl/nm-device.c:1793 +#: src/libnm-client-impl/nm-device.c:1794 msgid "VXLAN" msgstr "VXLAN" -#: src/libnm-client-impl/nm-device.c:1795 +#: src/libnm-client-impl/nm-device.c:1796 msgid "IPTunnel" msgstr "IPTunnel" -#: src/libnm-client-impl/nm-device.c:1797 +#: src/libnm-client-impl/nm-device.c:1798 msgid "Tun" msgstr "Tun" -#: src/libnm-client-impl/nm-device.c:1799 -#: src/libnm-core-impl/nm-connection.c:3262 src/nmtui/nm-editor-utils.c:152 +#: src/libnm-client-impl/nm-device.c:1800 +#: src/libnm-core-impl/nm-connection.c:3361 src/nmtui/nm-editor-utils.c:152 msgid "Veth" msgstr "Veth" -#: src/libnm-client-impl/nm-device.c:1801 src/nmtui/nm-editor-utils.c:239 +#: src/libnm-client-impl/nm-device.c:1802 src/nmtui/nm-editor-utils.c:247 #: src/nmtui/nmt-page-macsec.c:99 msgid "MACsec" msgstr "MACsec" -#: src/libnm-client-impl/nm-device.c:1803 +#: src/libnm-client-impl/nm-device.c:1804 msgid "Dummy" msgstr "Фиктивное" -#: src/libnm-client-impl/nm-device.c:1805 +#: src/libnm-client-impl/nm-device.c:1806 msgid "PPP" msgstr "PPP" -#: src/libnm-client-impl/nm-device.c:1807 +#: src/libnm-client-impl/nm-device.c:1808 msgid "IEEE 802.15.4" msgstr "IEEE 802.15.4" -#: src/libnm-client-impl/nm-device.c:1809 +#: src/libnm-client-impl/nm-device.c:1810 msgid "6LoWPAN" msgstr "6LoWPAN" -#: src/libnm-client-impl/nm-device.c:1811 -#: src/libnm-core-impl/nm-connection.c:3258 src/nmtui/nm-editor-utils.c:271 +#: src/libnm-client-impl/nm-device.c:1812 +#: src/libnm-core-impl/nm-connection.c:3357 src/nmtui/nm-editor-utils.c:279 #: src/nmtui/nmt-page-wireguard.c:57 msgid "WireGuard" msgstr "WireGuard" -#: src/libnm-client-impl/nm-device.c:1813 +#: src/libnm-client-impl/nm-device.c:1814 msgid "Wi-Fi P2P" msgstr "Wi-Fi P2P" -#: src/libnm-client-impl/nm-device.c:1815 +#: src/libnm-client-impl/nm-device.c:1816 msgid "VRF" msgstr "VRF" -#: src/libnm-client-impl/nm-device.c:1817 +#: src/libnm-client-impl/nm-device.c:1818 +#: src/libnm-core-impl/nm-connection.c:3363 src/nmtui/nm-editor-utils.c:160 msgid "Loopback" msgstr "Loopback" -#: src/libnm-client-impl/nm-device.c:1819 +#: src/libnm-client-impl/nm-device.c:1820 msgid "HSR" msgstr "HSR" +#: src/libnm-client-impl/nm-device.c:1822 +msgid "IPVLAN" +msgstr "IPVLAN" + #. 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:1826 src/libnmc-base/nm-client-utils.c:352 -#: src/libnmc-base/nm-client-utils.c:502 src/nmcli/utils.c:1841 +#: src/libnm-client-impl/nm-device.c:1829 src/libnmc-base/nm-client-utils.c:352 +#: src/libnmc-base/nm-client-utils.c:502 src/nmcli/utils.c:1852 msgid "Unknown" msgstr "Неизвестно" -#: src/libnm-client-impl/nm-device.c:1851 +#: src/libnm-client-impl/nm-device.c:1854 msgid "Wired" msgstr "Проводное" -#: src/libnm-client-impl/nm-device.c:1883 +#: src/libnm-client-impl/nm-device.c:1886 msgid "PCI" msgstr "PCI" -#: src/libnm-client-impl/nm-device.c:1885 +#: src/libnm-client-impl/nm-device.c:1888 msgid "USB" msgstr "USB" @@ -1074,20 +1074,19 @@ msgstr "USB" #. * "%2$s (%1$s)" if there's no grammatical way to combine #. * the strings otherwise. #. -#: src/libnm-client-impl/nm-device.c:2184 -#: src/libnm-client-impl/nm-device.c:2203 +#: src/libnm-client-impl/nm-device.c:2187 +#: src/libnm-client-impl/nm-device.c:2206 #, c-format msgctxt "long device name" msgid "%s %s" msgstr "%s %s" -#: src/libnm-client-impl/nm-device.c:2863 +#: src/libnm-client-impl/nm-device.c:2866 #, c-format msgid "The connection was not valid: %s" msgstr "Это подключение не было действительным: %s" -#: src/libnm-client-impl/nm-device.c:2875 -#, c-format +#: src/libnm-client-impl/nm-device.c:2878 msgid "The interface names of the device and the connection didn't match" msgstr "Имена интерфейсов устройства и подключения не совпадают" @@ -1096,51 +1095,51 @@ msgid "registration failed" msgstr "сбой регистрации" #: src/libnm-client-impl/nm-vpn-plugin-old.c:807 -#: src/libnm-client-impl/nm-vpn-service-plugin.c:1055 +#: src/libnm-client-impl/nm-vpn-service-plugin.c:1075 msgid "No service name specified" msgstr "Не указано имя службы" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:287 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:288 #, c-format msgid "'%s' is not valid: properties should be specified as 'key=value'" msgstr "" "Недействительное '%s': параметры должны указываться в виде «ключ=значение»" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:301 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:302 #, c-format msgid "'%s' is not a valid key" msgstr "«%s» не является действительным ключом" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:306 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:307 #, c-format msgid "duplicate key '%s'" msgstr "дублирующий ключ '%s'" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:320 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:321 #, c-format msgid "number for '%s' is out of range" msgstr "число для '%s' выходит за пределы диапазона" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:325 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:326 #, c-format msgid "value for '%s' must be a number" msgstr "значение '%s' должно быть числом" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:338 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:339 #, c-format msgid "value for '%s' must be a boolean" msgstr "значение '%s' должно быть логическим" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:347 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:348 msgid "missing 'name' attribute" msgstr "отсутствует атрибут 'name'" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:356 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:357 #, c-format msgid "invalid 'name' \"%s\"" msgstr "недействительный атрибут 'name' \"%s\"" -#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:369 +#: src/libnm-core-aux-extern/nm-libnm-core-aux.c:370 #, c-format msgid "attribute '%s' is invalid for \"%s\"" msgstr "атрибут '%s' является недействительным для \"%s\"" @@ -1160,44 +1159,92 @@ msgstr "свойство не может содержать нулевые ба #: src/libnm-core-aux-intern/nm-libnm-core-utils.c:474 msgid "invalid DSCP value; allowed values are: 'CS0', 'CS4', 'CS6'" msgstr "" +"недействительное значение DSCP; допустимые значения: 'CS0', 'CS4', 'CS6'" + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:508 +msgid "NULL DHCP range; it should be provided as ,." +msgstr "" +"Нулевой диапазон DHCP; диапазон должен быть указан в форме <НАЧАЛЬНЫЙ_IP>,<ПОС" +"ЛЕДНИЙ_IP>." + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:520 +msgid "Non-NULL range and NULL addresses detected." +msgstr "Обнаружены нулевые адреса и не нулевой диапазон." + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:529 +msgid "Invalid DHCP range; it should be provided as ,." +msgstr "" +"Недействительный диапазон DHCP; диапазон должен быть указан в форме <НАЧАЛЬНЫЙ" +"_IP>,<ПОСЛЕДНИЙ_IP>." + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:538 +msgid "Start IP has invalid length." +msgstr "Недействительная длина начального IP" + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:549 +msgid "Start IP is invalid." +msgstr "Недействительный начальный IP" + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:557 +msgid "End IP is invalid." +msgstr "Недействительный последний IP" + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:565 +msgid "Start IP should be lower than the end IP." +msgstr "Значение начального IP должно быть меньше значения последнего IP." + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:594 +msgid "Requested range is not in any network configured on the interface." +msgstr "" +"Запрошенный диапазон не принадлежит ни одной из сетей, настроенных на интерфей" +"се." + +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:615 +#, c-format +msgid "" +"Invalid DHCP lease time value; it should be either default or a positive " +"number between %u and %u or %s." +msgstr "" +"Недействительное значение времени аренды DHCP. Значение должно быть либо " +"значением по умолчанию, либо положительным числом от %u до %u, или %s." -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:691 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1017 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:82 #: src/libnm-core-impl/nm-setting-user.c:93 msgid "missing key" msgstr "отсутствует ключ" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:699 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1025 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:90 #: src/libnm-core-impl/nm-setting-user.c:101 msgid "key is too long" msgstr "слишком длинный ключ" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:706 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1032 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:97 #: src/libnm-core-impl/nm-setting-user.c:108 msgid "key must be UTF8" msgstr "ключ должен быть в кодировке UTF8" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:715 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1041 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:106 #: src/libnm-core-impl/nm-setting-user.c:155 msgid "key contains invalid characters" msgstr "ключ содержит недействительные символы" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:743 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1069 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:195 #: src/libnm-core-impl/nm-setting-user.c:182 msgid "value is missing" msgstr "отсутствует значение" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:752 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1078 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:204 #: src/libnm-core-impl/nm-setting-user.c:191 msgid "value is too large" msgstr "слишком большое значение" -#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:760 +#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1086 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:212 #: src/libnm-core-impl/nm-setting-user.c:199 msgid "value is not valid UTF8" @@ -1227,36 +1274,36 @@ msgstr "имеет UUID, для которого требуется нормал msgid "has duplicate UUIDs" msgstr "имеет дублирующие UUID" -#: src/libnm-core-impl/nm-connection.c:1839 +#: src/libnm-core-impl/nm-connection.c:1936 msgid "setting not found" msgstr "параметр не найден" -#: src/libnm-core-impl/nm-connection.c:1893 -#: src/libnm-core-impl/nm-connection.c:1918 -#: src/libnm-core-impl/nm-connection.c:1943 -msgid "setting is required for non-slave connections" -msgstr "параметр обязателен для подключений, не являющихся ведомыми" +#: src/libnm-core-impl/nm-connection.c:1990 +#: src/libnm-core-impl/nm-connection.c:2015 +#: src/libnm-core-impl/nm-connection.c:2040 +msgid "setting is required for non-port connections" +msgstr "параметр обязателен для подключений «non-port»" -#: src/libnm-core-impl/nm-connection.c:1906 -#: src/libnm-core-impl/nm-connection.c:1931 -#: src/libnm-core-impl/nm-connection.c:1956 -msgid "setting not allowed in slave connection" -msgstr "этот параметр не допускается для ведомых подключений" +#: src/libnm-core-impl/nm-connection.c:2003 +#: src/libnm-core-impl/nm-connection.c:2028 +#: src/libnm-core-impl/nm-connection.c:2053 +msgid "setting not allowed in port connection" +msgstr "параметр не может использоваться в подключениях портов" -#: src/libnm-core-impl/nm-connection.c:2068 +#: src/libnm-core-impl/nm-connection.c:2166 msgid "Unexpected failure to normalize the connection" msgstr "Непредвиденный сбой при нормализации подключения" -#: src/libnm-core-impl/nm-connection.c:2129 +#: src/libnm-core-impl/nm-connection.c:2227 msgid "Unexpected failure to verify the connection" msgstr "Непредвиденный сбой при проверке подлинности подключения" -#: src/libnm-core-impl/nm-connection.c:2166 +#: src/libnm-core-impl/nm-connection.c:2264 #, c-format msgid "unexpected uuid %s instead of %s" msgstr "непредвиденный uuid %s вместо %s" -#: src/libnm-core-impl/nm-connection.c:3095 +#: src/libnm-core-impl/nm-connection.c:3193 #: src/libnm-core-impl/nm-setting-8021x.c:2641 #: src/libnm-core-impl/nm-setting-8021x.c:2678 #: src/libnm-core-impl/nm-setting-8021x.c:2696 @@ -1266,10 +1313,10 @@ msgstr "непредвиденный uuid %s вместо %s" #: src/libnm-core-impl/nm-setting-bluetooth.c:190 #: src/libnm-core-impl/nm-setting-bluetooth.c:207 #: src/libnm-core-impl/nm-setting-cdma.c:142 -#: src/libnm-core-impl/nm-setting-connection.c:1253 -#: src/libnm-core-impl/nm-setting-connection.c:1291 -#: src/libnm-core-impl/nm-setting-connection.c:1620 -#: src/libnm-core-impl/nm-setting-ip-config.c:5517 +#: src/libnm-core-impl/nm-setting-connection.c:1424 +#: src/libnm-core-impl/nm-setting-connection.c:1462 +#: src/libnm-core-impl/nm-setting-connection.c:1961 +#: src/libnm-core-impl/nm-setting-ip-config.c:5613 #: src/libnm-core-impl/nm-setting-ip-tunnel.c:405 #: src/libnm-core-impl/nm-setting-olpc-mesh.c:97 #: src/libnm-core-impl/nm-setting-ovs-patch.c:75 @@ -1282,16 +1329,15 @@ msgstr "непредвиденный uuid %s вместо %s" msgid "property is missing" msgstr "свойство отсутствует" -#: src/libnm-core-impl/nm-connection.c:3256 +#: src/libnm-core-impl/nm-connection.c:3355 msgid "IP Tunnel" msgstr "IP-туннель" -#: src/libnm-core-impl/nm-connection.c:3260 +#: src/libnm-core-impl/nm-connection.c:3359 msgid "TUN/TAP" msgstr "TUN/TAP" #: src/libnm-core-impl/nm-keyfile-utils.c:174 -#, c-format msgid "Value cannot be interpreted as a list of numbers." msgstr "Значение не может быть интерпретировано как список номеров." @@ -1300,68 +1346,76 @@ msgstr "Значение не может быть интерпретирован msgid "value is not an integer in range [%lld, %lld]" msgstr "значение не является целым числом в диапазоне [%lld, %lld]" -#: src/libnm-core-impl/nm-keyfile.c:333 +#: src/libnm-core-impl/nm-keyfile.c:334 msgid "ignoring missing number" msgstr "отсутствующее число игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:345 +#: src/libnm-core-impl/nm-keyfile.c:346 #, c-format msgid "ignoring invalid number '%s'" msgstr "недействительное число «%s» игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:374 +#: src/libnm-core-impl/nm-keyfile.c:375 #, c-format msgid "ignoring invalid %s address: %s" msgstr "недействительный адрес %s игнорируется: %s" -#: src/libnm-core-impl/nm-keyfile.c:420 +#: src/libnm-core-impl/nm-keyfile.c:421 #, c-format msgid "ignoring invalid gateway '%s' for %s route" msgstr "недействительный шлюз «%s» для маршрута %s игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:442 +#: src/libnm-core-impl/nm-keyfile.c:443 #, c-format msgid "ignoring invalid %s route: %s" msgstr "недействительный маршрут %s игнорируется: %s" -#: src/libnm-core-impl/nm-keyfile.c:620 +#: src/libnm-core-impl/nm-keyfile.c:621 #, c-format msgid "unexpected character '%c' for address %s: '%s' (position %td)" msgstr "непредвиденный символ «%c» в адресе %s: «%s» (позиция %td)" -#: src/libnm-core-impl/nm-keyfile.c:636 +#: src/libnm-core-impl/nm-keyfile.c:637 #, c-format msgid "unexpected character '%c' for %s: '%s' (position %td)" msgstr "непредвиденный символ «%c» в %s: «%s» (позиция %td)" -#: src/libnm-core-impl/nm-keyfile.c:652 +#: src/libnm-core-impl/nm-keyfile.c:653 #, c-format msgid "unexpected character '%c' in prefix length for %s: '%s' (position %td)" msgstr "непредвиденный символ «%c» в длине префикса для %s: «%s» (позиция %td)" -#: src/libnm-core-impl/nm-keyfile.c:669 +#: src/libnm-core-impl/nm-keyfile.c:670 #, c-format msgid "garbage at the end of value %s: '%s'" msgstr "мусор в конце значения %s: «%s»" -#: src/libnm-core-impl/nm-keyfile.c:679 +#: src/libnm-core-impl/nm-keyfile.c:680 #, c-format msgid "deprecated semicolon at the end of value %s: '%s'" msgstr "устаревшая точка с запятой в конце значения %s: «%s»" -#: src/libnm-core-impl/nm-keyfile.c:698 +#: src/libnm-core-impl/nm-keyfile.c:699 #, c-format msgid "invalid prefix length for %s '%s', defaulting to %d" msgstr "" "недействительная длина префикса %s «%s»; по умолчанию будет использоваться %d" -#: src/libnm-core-impl/nm-keyfile.c:710 +#: src/libnm-core-impl/nm-keyfile.c:711 #, c-format msgid "missing prefix length for %s '%s', defaulting to %d" msgstr "" "отсутствует длина префикса %s «%s»; по умолчанию будет использоваться %d" -#: src/libnm-core-impl/nm-keyfile.c:1053 +#: src/libnm-core-impl/nm-keyfile.c:959 +#, c-format +msgid "" +"ignoring gateway \"%s\" from \"address*\" keys because the \"gateway\" key " +"is set" +msgstr "" +"шлюз «%s» из ключей «address*» игнорируется, т.к. ключ «gateway» настроен" + +#: src/libnm-core-impl/nm-keyfile.c:1079 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:370 #: src/libnm-core-impl/nm-setting-ovs-other-config.c:208 #: src/libnm-core-impl/nm-setting-user.c:368 @@ -1369,171 +1423,181 @@ msgstr "" msgid "invalid value for \"%s\": %s" msgstr "недействительное значение «%s»: %s" -#: src/libnm-core-impl/nm-keyfile.c:1140 +#: src/libnm-core-impl/nm-keyfile.c:1166 #, c-format msgid "ignoring invalid DNS server IPv%c address '%s'" msgstr "игнорируется адрес IPv%c '%s' недействительного сервера DNS" -#: src/libnm-core-impl/nm-keyfile.c:1177 -#: src/libnmc-setting/nm-meta-setting-desc.c:1653 +#: src/libnm-core-impl/nm-keyfile.c:1203 +#: src/libnmc-setting/nm-meta-setting-desc.c:1666 #, c-format msgid "invalid option '%s', use one of [%s]" msgstr "недействительный параметр «%s»; используйте один из [%s]" -#: src/libnm-core-impl/nm-keyfile.c:1257 +#: src/libnm-core-impl/nm-keyfile.c:1283 msgid "ignoring invalid MAC address" msgstr "недействительный адрес MAC игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:1333 +#: src/libnm-core-impl/nm-keyfile.c:1359 #, c-format msgid "ignoring invalid bond option %s%s%s = %s%s%s: %s" msgstr "" "недействительный параметр агрегации bond %s%s%s = %s%s%s игнорируется: %s" -#: src/libnm-core-impl/nm-keyfile.c:1523 +#: src/libnm-core-impl/nm-keyfile.c:1549 msgid "ignoring invalid SSID" msgstr "недействительный SSID игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:1541 +#: src/libnm-core-impl/nm-keyfile.c:1567 msgid "ignoring invalid raw password" msgstr "недействительный необработанный пароль игнорируется" -#: src/libnm-core-impl/nm-keyfile.c:1686 +#: src/libnm-core-impl/nm-keyfile.c:1712 msgid "invalid key/cert value" msgstr "недействительное значение ключ/сертификат" -#: src/libnm-core-impl/nm-keyfile.c:1701 +#: src/libnm-core-impl/nm-keyfile.c:1727 #, c-format msgid "invalid key/cert value path \"%s\"" msgstr "недействительный путь к ключу-сертификату: «%s»" -#: src/libnm-core-impl/nm-keyfile.c:1726 src/libnm-core-impl/nm-keyfile.c:1823 +#: src/libnm-core-impl/nm-keyfile.c:1752 src/libnm-core-impl/nm-keyfile.c:1849 #, c-format msgid "certificate or key file '%s' does not exist" msgstr "файл сертификата или ключа «%s» не существует" -#: src/libnm-core-impl/nm-keyfile.c:1739 +#: src/libnm-core-impl/nm-keyfile.c:1765 #, c-format msgid "invalid PKCS#11 URI \"%s\"" msgstr "недействительный URI PKCS # 11 \"%s\"" -#: src/libnm-core-impl/nm-keyfile.c:1785 +#: src/libnm-core-impl/nm-keyfile.c:1811 msgid "invalid key/cert value data:;base64, is not base64" msgstr "" "недействительное значение ключа/сертификата data:;base64, не является схемой " "base64" -#: src/libnm-core-impl/nm-keyfile.c:1798 +#: src/libnm-core-impl/nm-keyfile.c:1824 msgid "invalid key/cert value data:;base64,file://" msgstr "недействительное значение ключа/сертификата data:;base64,file://" -#: src/libnm-core-impl/nm-keyfile.c:1839 +#: src/libnm-core-impl/nm-keyfile.c:1865 msgid "invalid key/cert value is not a valid blob" msgstr "" "недействительное значение ключа/сертификата: не является действительным " "большим двоичным объектом" -#: src/libnm-core-impl/nm-keyfile.c:1941 +#: src/libnm-core-impl/nm-keyfile.c:1967 #, c-format msgid "invalid parity value '%s'" msgstr "недействительное значение чётности: «%s»" -#: src/libnm-core-impl/nm-keyfile.c:1963 src/libnm-core-impl/nm-keyfile.c:3545 +#: src/libnm-core-impl/nm-keyfile.c:1989 src/libnm-core-impl/nm-keyfile.c:3566 #, c-format msgid "invalid setting: %s" msgstr "недействительный параметр: %s" -#: src/libnm-core-impl/nm-keyfile.c:1983 +#: src/libnm-core-impl/nm-keyfile.c:2009 #, c-format msgid "ignoring invalid team configuration: %s" msgstr "недействительная конфигурация team игнорируется: %s" -#: src/libnm-core-impl/nm-keyfile.c:2104 +#: src/libnm-core-impl/nm-keyfile.c:2130 #, c-format msgid "invalid qdisc: %s" msgstr "недействительный алгоритм планирования очередей: %s" -#: src/libnm-core-impl/nm-keyfile.c:2154 +#: src/libnm-core-impl/nm-keyfile.c:2180 #, c-format msgid "invalid tfilter: %s" msgstr "недействительный фильтр трафика: %s" -#: src/libnm-core-impl/nm-keyfile.c:3370 +#: src/libnm-core-impl/nm-keyfile.c:3391 #, c-format msgid "error loading setting value: %s" msgstr "ошибка загрузки значения параметра: %s" -#: src/libnm-core-impl/nm-keyfile.c:3401 src/libnm-core-impl/nm-keyfile.c:3413 -#: src/libnm-core-impl/nm-keyfile.c:3432 src/libnm-core-impl/nm-keyfile.c:3444 -#: src/libnm-core-impl/nm-keyfile.c:3456 src/libnm-core-impl/nm-keyfile.c:3518 -#: src/libnm-core-impl/nm-keyfile.c:3530 +#: src/libnm-core-impl/nm-keyfile.c:3422 src/libnm-core-impl/nm-keyfile.c:3434 +#: src/libnm-core-impl/nm-keyfile.c:3453 src/libnm-core-impl/nm-keyfile.c:3465 +#: src/libnm-core-impl/nm-keyfile.c:3477 src/libnm-core-impl/nm-keyfile.c:3539 +#: src/libnm-core-impl/nm-keyfile.c:3551 msgid "value cannot be interpreted as integer" msgstr "значение не может быть интерпретировано как целое" -#: src/libnm-core-impl/nm-keyfile.c:3486 +#: src/libnm-core-impl/nm-keyfile.c:3507 #, c-format msgid "ignoring invalid byte element '%u' (not between 0 and 255 inclusive)" msgstr "" "недействительный байтовый элемент «%u» игнорируется (должен находиться в " "диапазоне от 0 до 255 включительно)" -#: src/libnm-core-impl/nm-keyfile.c:3570 +#: src/libnm-core-impl/nm-keyfile.c:3601 +#, c-format +msgid "invalid value for '%s.dhcp-send-hostname'" +msgstr "недействительное значение для «%s.dhcp-send-hostname»" + +#: src/libnm-core-impl/nm-keyfile.c:3622 +#, c-format +msgid "invalid value for '%s.dhcp-send-hostname-deprecated'" +msgstr "недействительное значение для «%s.dhcp-send-hostname-deprecated»" + +#: src/libnm-core-impl/nm-keyfile.c:3647 #, c-format msgid "invalid setting name '%s'" msgstr "недействительное название параметра «%s»" -#: src/libnm-core-impl/nm-keyfile.c:3617 +#: src/libnm-core-impl/nm-keyfile.c:3696 #, c-format msgid "invalid key '%s.%s'" msgstr "недействительный ключ '%s.%s'" -#: src/libnm-core-impl/nm-keyfile.c:3633 +#: src/libnm-core-impl/nm-keyfile.c:3712 #, c-format msgid "key '%s.%s' is not boolean" msgstr "ключ «%s.%s» не является логическим значением" -#: src/libnm-core-impl/nm-keyfile.c:3650 +#: src/libnm-core-impl/nm-keyfile.c:3729 #, c-format msgid "key '%s.%s' is not a uint32" msgstr "ключ '%s.%s' не имеет тип uint32" -#: src/libnm-core-impl/nm-keyfile.c:3707 +#: src/libnm-core-impl/nm-keyfile.c:3786 #, c-format msgid "invalid peer public key in section '%s'" msgstr "недействительный открытый ключ пира в разделе «%s»" -#: src/libnm-core-impl/nm-keyfile.c:3722 +#: src/libnm-core-impl/nm-keyfile.c:3801 #, c-format msgid "key '%s.%s' is not a valid 256 bit key in base64 encoding" msgstr "" "ключ «%s.%s» не является действительным 256-битным ключом в кодировке base64" -#: src/libnm-core-impl/nm-keyfile.c:3745 +#: src/libnm-core-impl/nm-keyfile.c:3824 #, c-format msgid "key '%s.%s' is not a valid secret flag" msgstr "ключ «%s.%s» не является действительным флагом секрета" -#: src/libnm-core-impl/nm-keyfile.c:3768 +#: src/libnm-core-impl/nm-keyfile.c:3847 #, c-format msgid "key '%s.%s' is not a integer in range 0 to 2^32" msgstr "ключ «%s.%s» не является целым числом в диапазоне от 0 до 2^32" -#: src/libnm-core-impl/nm-keyfile.c:3784 +#: src/libnm-core-impl/nm-keyfile.c:3863 #, c-format msgid "key '%s.%s' is not a valid endpoint" msgstr "ключ «%s.%s» не является действительной конечной точкой" -#: src/libnm-core-impl/nm-keyfile.c:3810 +#: src/libnm-core-impl/nm-keyfile.c:3889 #, c-format msgid "key '%s.%s' has invalid allowed-ips" msgstr "у ключа «%s.%s» недействительные значения allowed-ips" -#: src/libnm-core-impl/nm-keyfile.c:3825 +#: src/libnm-core-impl/nm-keyfile.c:3904 #, c-format msgid "peer '%s' is invalid: %s" msgstr "недействительный пир «%s»: %s" -#: src/libnm-core-impl/nm-keyfile.c:4353 +#: src/libnm-core-impl/nm-keyfile.c:4454 #, c-format msgid "unsupported option \"%s.%s\" of variant type %s" msgstr "неподдерживаемый параметр \"%s.%s\" типа варианта %s" @@ -1542,7 +1606,6 @@ msgstr "неподдерживаемый параметр \"%s.%s\" типа в #: src/libnm-core-impl/nm-setting-hsr.c:131 #: src/libnm-core-impl/nm-setting-hsr.c:149 #: src/libnm-core-impl/nm-setting-veth.c:81 -#, c-format msgid "property is not specified" msgstr "свойство не указано" @@ -1555,6 +1618,7 @@ msgstr "Значение «%s» не соответствует «%s=%s»" #: src/libnm-core-impl/nm-setting-6lowpan.c:120 #: src/libnm-core-impl/nm-setting-ip-tunnel.c:378 +#: src/libnm-core-impl/nm-setting-ipvlan.c:134 #: src/libnm-core-impl/nm-setting-macsec.c:349 #: src/libnm-core-impl/nm-setting-macvlan.c:138 #: src/libnm-core-impl/nm-setting-vlan.c:641 @@ -1590,7 +1654,6 @@ msgid "certificate is invalid: %s" msgstr "недействительный сертификат: %s" #: src/libnm-core-impl/nm-setting-8021x.c:334 -#, c-format msgid "certificate detected as invalid scheme" msgstr "недействительная схема сертификата" @@ -1603,7 +1666,6 @@ msgid "invalid certificate format" msgstr "недействительный формат сертификата" #: src/libnm-core-impl/nm-setting-8021x.c:704 -#, c-format msgid "password is not supported when certificate is not on a PKCS#11 token" msgstr "" "пароль не поддерживается, если сертификат не хранится в токене PKCS # 11" @@ -1620,16 +1682,16 @@ msgstr "" #: src/libnm-core-impl/nm-setting-adsl.c:179 #: src/libnm-core-impl/nm-setting-cdma.c:147 #: src/libnm-core-impl/nm-setting-cdma.c:157 -#: src/libnm-core-impl/nm-setting-connection.c:1263 -#: src/libnm-core-impl/nm-setting-connection.c:1306 -#: src/libnm-core-impl/nm-setting-connection.c:1558 -#: src/libnm-core-impl/nm-setting-gsm.c:396 -#: src/libnm-core-impl/nm-setting-gsm.c:411 -#: src/libnm-core-impl/nm-setting-gsm.c:454 -#: src/libnm-core-impl/nm-setting-gsm.c:463 -#: src/libnm-core-impl/nm-setting-ip-config.c:5526 -#: src/libnm-core-impl/nm-setting-ip4-config.c:284 -#: src/libnm-core-impl/nm-setting-ip4-config.c:296 +#: src/libnm-core-impl/nm-setting-connection.c:1434 +#: src/libnm-core-impl/nm-setting-connection.c:1477 +#: src/libnm-core-impl/nm-setting-connection.c:1729 +#: src/libnm-core-impl/nm-setting-gsm.c:542 +#: src/libnm-core-impl/nm-setting-gsm.c:557 +#: src/libnm-core-impl/nm-setting-gsm.c:600 +#: src/libnm-core-impl/nm-setting-gsm.c:609 +#: src/libnm-core-impl/nm-setting-ip-config.c:5622 +#: src/libnm-core-impl/nm-setting-ip4-config.c:307 +#: src/libnm-core-impl/nm-setting-ip4-config.c:319 #: src/libnm-core-impl/nm-setting-pppoe.c:149 #: src/libnm-core-impl/nm-setting-pppoe.c:159 #: src/libnm-core-impl/nm-setting-vpn.c:553 @@ -1637,8 +1699,7 @@ msgstr "" #: src/libnm-core-impl/nm-setting-wimax.c:107 #: src/libnm-core-impl/nm-setting-wireless-security.c:968 #: src/libnm-core-impl/nm-setting-wireless-security.c:996 -#: src/libnm-core-impl/nm-setting.c:2624 -#, c-format +#: src/libnm-core-impl/nm-setting.c:2626 msgid "property is empty" msgstr "пустое свойство" @@ -1660,8 +1721,8 @@ msgstr "может быть включено только в подключен #: src/libnm-core-impl/nm-setting-generic.c:84 #: src/libnm-core-impl/nm-setting-infiniband.c:175 #: src/libnm-core-impl/nm-setting-infiniband.c:187 -#: src/libnm-core-impl/nm-setting-ip4-config.c:232 -#: src/libnm-core-impl/nm-setting-ip4-config.c:248 +#: src/libnm-core-impl/nm-setting-ip4-config.c:254 +#: src/libnm-core-impl/nm-setting-ip4-config.c:271 #: src/libnm-core-impl/nm-setting-ip6-config.c:343 #: src/libnm-core-impl/nm-setting-ip6-config.c:359 #: src/libnm-core-impl/nm-setting-olpc-mesh.c:135 @@ -1682,7 +1743,6 @@ msgstr "может быть включено только в подключен #: src/libnm-core-impl/nm-setting-wireless.c:1221 #: src/libnm-core-impl/nm-setting-wpan.c:164 #: src/libnm-core-impl/nm-utils.c:4559 -#, c-format msgid "property is invalid" msgstr "недействительное свойство" @@ -1728,21 +1788,21 @@ msgstr "Для подключения '%s' требуется параметр ' #: src/libnm-core-impl/nm-setting-ovs-interface.c:306 #: src/libnm-core-impl/nm-setting-ovs-port.c:411 #: src/libnm-core-impl/nm-setting-team-port.c:321 -#, c-format msgid "missing setting" msgstr "отсутствует параметр" #: src/libnm-core-impl/nm-setting-bond-port.c:109 #: src/libnm-core-impl/nm-setting-bridge-port.c:336 #: src/libnm-core-impl/nm-setting-ovs-interface.c:329 +#: src/libnm-core-impl/nm-setting-ovs-port.c:434 #: src/libnm-core-impl/nm-setting-team-port.c:331 #, c-format msgid "" -"A connection with a '%s' setting must have the slave-type set to '%s'. " +"A connection with a '%s' setting must have the port-type set to '%s'. " "Instead it is '%s'" msgstr "" -"Подключение с параметром '%s' должно иметь тип ведомости '%s'. Вместо этого " -"установлен '%s'" +"Для подключения с параметром «%s» тип порта должен быть настроен как «%s». " +"Вместо этого указан «%s»." #: src/libnm-core-impl/nm-setting-bond.c:524 #, c-format @@ -1755,7 +1815,6 @@ msgid "'%s' is not a valid %s address for '%s' option" msgstr "«%s» не является действительным адресом %s для параметра «%s»" #: src/libnm-core-impl/nm-setting-bond.c:565 -#, c-format msgid "missing option name" msgstr "отсутствует имя параметра" @@ -1888,111 +1947,166 @@ msgstr "параметр '%s' должен быть степенью числа msgid "bridge connection should have a ethernet setting as well" msgstr "для подключения типа мост требуются также и параметры ethernet" -#: src/libnm-core-impl/nm-setting-connection.c:1146 +#: src/libnm-core-impl/nm-setting-connection.c:1318 #, c-format msgid "setting required for connection of type '%s'" msgstr "этот параметр обязателен для подключения с типом «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1177 +#: src/libnm-core-impl/nm-setting-connection.c:1349 #, c-format -msgid "Unknown slave type '%s'" -msgstr "Неизвестный тип ведомого подключения: '%s'" +msgid "Unknown port type '%s'" +msgstr "Неизвестный тип порта: «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1192 +#: src/libnm-core-impl/nm-setting-connection.c:1364 #, c-format msgid "Slave connections need a valid '%s' property" msgstr "Ведомые подключения должны иметь действительное свойство «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1216 +#: src/libnm-core-impl/nm-setting-connection.c:1387 #, c-format msgid "Cannot set '%s' without '%s'" msgstr "Нельзя настроить «%s» без «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1275 +#: src/libnm-core-impl/nm-setting-connection.c:1446 #, c-format msgid "'%s' is not a valid UUID" msgstr "Недействительный UUID: «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1320 +#: src/libnm-core-impl/nm-setting-connection.c:1491 #, c-format msgid "connection type '%s' is not valid" msgstr "недействительный тип подключения «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1426 +#: src/libnm-core-impl/nm-setting-connection.c:1597 #, c-format -msgid "'%s' connections must be enslaved to '%s', not '%s'" -msgstr "подключения «%s» должны быть ведомыми для «%s», а не для «%s»" +msgid "'%s' connections must be attached as port to '%s', not '%s'" +msgstr "" +"Подключения «%s» должна быть прикреплены в виде порта к «%s», а не к '%s'" -#: src/libnm-core-impl/nm-setting-connection.c:1441 +#: src/libnm-core-impl/nm-setting-connection.c:1612 #, c-format msgid "metered value %d is not valid" msgstr "недействительное значение тарифного плана %d" -#: src/libnm-core-impl/nm-setting-connection.c:1455 -#: src/libnm-core-impl/nm-setting-connection.c:1469 -#: src/libnm-core-impl/nm-setting-connection.c:1483 -#: src/libnm-core-impl/nm-setting-connection.c:1544 +#: src/libnm-core-impl/nm-setting-connection.c:1626 +#: src/libnm-core-impl/nm-setting-connection.c:1640 +#: src/libnm-core-impl/nm-setting-connection.c:1654 +#: src/libnm-core-impl/nm-setting-connection.c:1715 #, c-format msgid "value %d is not valid" msgstr "значение %d не является действительным" -#: src/libnm-core-impl/nm-setting-connection.c:1499 +#: src/libnm-core-impl/nm-setting-connection.c:1670 msgid "\"disabled\" flag cannot be combined with other MPTCP flags" msgstr "флаг \"disabled\" нельзя сочетать с другими флагами MPTCP" -#: src/libnm-core-impl/nm-setting-connection.c:1513 +#: src/libnm-core-impl/nm-setting-connection.c:1684 msgid "cannot set both \"signal\" and \"fullmesh\" MPTCP flags" msgstr "" "для MPTCP нельзя одновременно указывать и флаг \"signal\" и флаг \"fullmesh\"" -#: src/libnm-core-impl/nm-setting-connection.c:1525 +#: src/libnm-core-impl/nm-setting-connection.c:1696 #, c-format msgid "value %u is not a valid combination of MPTCP flags" msgstr "значение %u не является действительным сочетанием флагов MPTCP" -#: src/libnm-core-impl/nm-setting-connection.c:1572 +#: src/libnm-core-impl/nm-setting-connection.c:1743 msgid "DHCP option cannot be longer than 255 characters" msgstr "параметр DHCP не может превышать 255 символов" -#: src/libnm-core-impl/nm-setting-connection.c:1583 +#: src/libnm-core-impl/nm-setting-connection.c:1754 msgid "MUD URL is not a valid URL" msgstr "MUD URL не является действительным URL" -#: src/libnm-core-impl/nm-setting-connection.c:1603 +#: src/libnm-core-impl/nm-setting-connection.c:1774 msgid "invalid permissions not in format \"user:$UNAME[:]\"" msgstr "недействительные полномочия, не в формате \"user:$UNAME[:]\"" -#: src/libnm-core-impl/nm-setting-connection.c:1632 +#: src/libnm-core-impl/nm-setting-connection.c:1790 +#: src/libnm-core-impl/nm-setting-connection.c:1807 +#, c-format +msgid "can only be set if %s.%s is set" +msgstr "может быть настроено только при настроенном %s.%s" + +#: src/libnm-core-impl/nm-setting-connection.c:1821 +#, c-format +msgid "is incompatible with '%s'" +msgstr "несовместимо с «%s»" + +#: src/libnm-core-impl/nm-setting-connection.c:1846 +#, c-format +msgid "contains IPv4 address '%s', %s.%s cannot be 'disabled'" +msgstr "содержит адрес IPv4 «%s», %s.%s не может иметь значение «отключён»" + +#: src/libnm-core-impl/nm-setting-connection.c:1860 +#, c-format +msgid "contains IPv4 address '%s', %s.%s cannot be 'true'" +msgstr "содержит адрес IPv4 «%s», %s.%s не может иметь значение «истина»" + +#: src/libnm-core-impl/nm-setting-connection.c:1874 +#, c-format +msgid "contains IPv4 address '%s', %s.%s must be set to 'false' explicitly" +msgstr "" +"содержит адрес IPv4 «%s», для %s.%s необходимо явно указать значение «ложно»" + +#: src/libnm-core-impl/nm-setting-connection.c:1899 +#, c-format +msgid "contains IPv6 address '%s', %s.%s cannot be '%s'" +msgstr "содержит адрес IPv6 «%s», %s.%s не может иметь значение «%s»" + +#: src/libnm-core-impl/nm-setting-connection.c:1914 +#, c-format +msgid "contains IPv6 address '%s', %s.%s cannot be 'true'" +msgstr "содержит адрес IPv6 «%s», %s.%s не может иметь значение «истина»" + +#: src/libnm-core-impl/nm-setting-connection.c:1928 +#, c-format +msgid "contains IPv6 address '%s', %s.%s must be set to 'false' explicitly" +msgstr "" +"содержит адрес IPv6 «%s», для %s.%s необходимо явно указать значение «ложно»" + +#: src/libnm-core-impl/nm-setting-connection.c:1944 +#, c-format +msgid "has an invalid IP address '%s'" +msgstr "содержит недействительный адрес IP «%s»" + +#: src/libnm-core-impl/nm-setting-connection.c:1973 #, c-format msgid "property type should be set to '%s'" msgstr "свойство должно иметь настроенный тип «%s»" -#: src/libnm-core-impl/nm-setting-connection.c:1650 -#, fuzzy, c-format +#: src/libnm-core-impl/nm-setting-connection.c:1991 +#, c-format msgid "port-type '%s' requires a '%s' setting in the connection" -msgstr "для ведомого типа «%s» необходимо определить параметр «%s»" +msgstr "" +"для типа порта '%s' необходимо в параметрах подключения настроить параметр '%s" +"'" -#: src/libnm-core-impl/nm-setting-connection.c:1661 +#: src/libnm-core-impl/nm-setting-connection.c:2002 #, c-format msgid "" -"Detect a slave connection with '%s' set and a port type '%s'. '%s' should be " +"Detect a port connection with '%s' set and a port type '%s'. '%s' should be " "set to '%s'" msgstr "" -"Обнаружение ведомого подключения с настроенным «%s» и типом порта «%s». «%s» " -"должно иметь значение «%s»." +"Обнаружить подключение порта с настроенным «%s» и типом порта «%s». " +"«%s» должно иметь значение «%s»." -#: src/libnm-core-impl/nm-setting-connection.c:1687 +#: src/libnm-core-impl/nm-setting-connection.c:2028 #, c-format -msgid "A slave connection with '%s' set to '%s' cannot have a '%s' setting" +msgid "A port connection with '%s' set to '%s' cannot have a '%s' setting" msgstr "" -"Ведомое подключение со значением '%s' для параметра '%s' не может иметь " -"параметр '%s'" +"Подключение порта со значением '%s' для параметра '%s' не может иметь параметр" +" '%s'" -#: src/libnm-core-impl/nm-setting-connection.c:1704 +#: src/libnm-core-impl/nm-setting-connection.c:2045 msgid "UUID needs normalization" msgstr "требуется нормализация UUID" -#: src/libnm-core-impl/nm-setting-connection.c:1719 +#: src/libnm-core-impl/nm-setting-connection.c:2062 +msgid "has duplicate addresses" +msgstr "имеются дублирующие адреса" + +#: src/libnm-core-impl/nm-setting-connection.c:2074 msgid "read-only is deprecated and not settable for the user" msgstr "" "доступ только для чтения является устаревшим и не может быть настроен для " @@ -2024,67 +2138,73 @@ msgstr "сумма не равна 100%" msgid "property invalid" msgstr "недействительное свойство" -#: src/libnm-core-impl/nm-setting-ethtool.c:328 +#: src/libnm-core-impl/nm-setting-ethtool.c:345 msgid "unsupported ethtool setting" msgstr "неподдерживаемый параметр ethtool" -#: src/libnm-core-impl/nm-setting-ethtool.c:337 +#: src/libnm-core-impl/nm-setting-ethtool.c:354 msgid "setting has invalid variant type" msgstr "параметр имеет недействительный тип варианта" -#: src/libnm-core-impl/nm-setting-ethtool.c:349 +#: src/libnm-core-impl/nm-setting-ethtool.c:366 msgid "coalesce option must be either 0 or 1" msgstr "параметр coalesce должен иметь значение либо 0 либо 1" -#: src/libnm-core-impl/nm-setting-ethtool.c:366 +#: src/libnm-core-impl/nm-setting-ethtool.c:385 msgid "pause-autoneg cannot be enabled when setting rx/tx options" msgstr "" "при настройке параметров rx/tx нельзя включать использование pause-autoneg" -#: src/libnm-core-impl/nm-setting-ethtool.c:391 +#: src/libnm-core-impl/nm-setting-ethtool.c:410 +#: src/libnmc-setting/nm-meta-setting-desc.c:4608 +#, c-format +msgid "'%s' is not valid FEC modes, valid modes are combinations of %s" +msgstr "" +"'%s' не являются действительными режимами FEC (коррекция ошибок " +"переадресации), действительные режимы представляют собой сочетания %s" + +#: src/libnm-core-impl/nm-setting-ethtool.c:436 #, c-format msgid "unknown ethtool option '%s'" msgstr "неизвестный параметр ethtool '%s'" #: src/libnm-core-impl/nm-setting-generic.c:109 -#, fuzzy, c-format +#, c-format msgid "the property is required when %s.%s is set" -msgstr "свойство не может быть настроено, если отключено «%s»" +msgstr "параметр необходим, если настроен %s.%s" -#: src/libnm-core-impl/nm-setting-gsm.c:337 -#, c-format +#: src/libnm-core-impl/nm-setting-gsm.c:483 msgid "property value is empty" msgstr "пустое значение свойства" -#: src/libnm-core-impl/nm-setting-gsm.c:346 -#, c-format +#: src/libnm-core-impl/nm-setting-gsm.c:492 msgid "property value is too long (>64)" msgstr "слишком длинное значение свойства (>64)" -#: src/libnm-core-impl/nm-setting-gsm.c:378 +#: src/libnm-core-impl/nm-setting-gsm.c:524 #, c-format msgid "'%s' contains invalid char(s) (use [A-Za-z._-])" msgstr "«%s» содержит недействительные символы. Используйте [A-Za-z._-]." -#: src/libnm-core-impl/nm-setting-gsm.c:425 +#: src/libnm-core-impl/nm-setting-gsm.c:571 #, c-format msgid "'%s' length is invalid (should be 5 or 6 digits)" msgstr "недействительная длина '%s' (нужно 5 или 6 цифр)" -#: src/libnm-core-impl/nm-setting-gsm.c:439 +#: src/libnm-core-impl/nm-setting-gsm.c:585 #, c-format msgid "'%s' is not a number" msgstr "«%s» не является числом" -#: src/libnm-core-impl/nm-setting-gsm.c:476 +#: src/libnm-core-impl/nm-setting-gsm.c:622 msgid "property is empty or wrong size" msgstr "свойство пустое или имеет неверный размер" -#: src/libnm-core-impl/nm-setting-gsm.c:489 +#: src/libnm-core-impl/nm-setting-gsm.c:635 msgid "property must contain only digits" msgstr "свойство должно содержать только цифры" -#: src/libnm-core-impl/nm-setting-gsm.c:503 +#: src/libnm-core-impl/nm-setting-gsm.c:649 msgid "can't be enabled when manual configuration is present" msgstr "нельзя активировать при наличии ручной конфигурации" @@ -2099,16 +2219,16 @@ msgstr "Недействительное имя интерфейса «%s»" msgid "Must specify a P_Key if specifying parent" msgstr "При указании родительского интерфейса необходимо указать P_Key" -#: src/libnm-core-impl/nm-setting-infiniband.c:224 +#: src/libnm-core-impl/nm-setting-infiniband.c:225 msgid "InfiniBand P_Key connection did not specify parent interface name" msgstr "" "Подключение InfiniBand P_Key не указывает имени родительского интерфейса" -#: src/libnm-core-impl/nm-setting-infiniband.c:232 +#: src/libnm-core-impl/nm-setting-infiniband.c:233 msgid "the values 0 and 0x8000 are not allowed" msgstr "значения 0 и 0x8000 не допускаются" -#: src/libnm-core-impl/nm-setting-infiniband.c:260 +#: src/libnm-core-impl/nm-setting-infiniband.c:261 #, c-format msgid "" "interface name of software infiniband device must be '%s' or unset (instead " @@ -2117,7 +2237,7 @@ msgstr "" "именем интерфейса программного устройства infiniband должно быть '%s', либо " "оно не должно быть настроено (текущее имя: '%s')" -#: src/libnm-core-impl/nm-setting-infiniband.c:268 +#: src/libnm-core-impl/nm-setting-infiniband.c:269 #, c-format msgid "" "interface name of software infiniband device with MAC address must be unset " @@ -2126,18 +2246,16 @@ msgstr "" "имя интерфейса устройства infiniband с адресом MAC не должно быть настроено " "(текущее имя: '%s')" -#: src/libnm-core-impl/nm-setting-infiniband.c:294 +#: src/libnm-core-impl/nm-setting-infiniband.c:295 #, c-format msgid "mtu can be at most %u but it is %u" msgstr "максимальное значение mtu может составлять %u, но указано значение %u" #: src/libnm-core-impl/nm-setting-ip-config.c:83 -#, c-format msgid "Missing IPv4 address" msgstr "Отсутствует адрес IPv4" #: src/libnm-core-impl/nm-setting-ip-config.c:83 -#, c-format msgid "Missing IPv6 address" msgstr "Отсутствует адрес IPv6" @@ -2167,23 +2285,21 @@ msgid "Invalid routing metric '%s'" msgstr "Недействительная метрика маршрутизации: «%s»" #: src/libnm-core-impl/nm-setting-ip-config.c:1339 -#: src/libnm-core-impl/nm-setting-sriov.c:410 +#: src/libnm-core-impl/nm-setting-sriov.c:412 msgid "unknown attribute" msgstr "неизвестный атрибут" #: src/libnm-core-impl/nm-setting-ip-config.c:1349 -#: src/libnm-core-impl/nm-setting-sriov.c:420 +#: src/libnm-core-impl/nm-setting-sriov.c:422 #, c-format msgid "invalid attribute type '%s'" msgstr "недействительный тип атрибута '%s'" #: src/libnm-core-impl/nm-setting-ip-config.c:1358 -#, c-format msgid "attribute is not valid for a IPv4 route" msgstr "атрибут недействителен для маршрута IPv4" #: src/libnm-core-impl/nm-setting-ip-config.c:1359 -#, c-format msgid "attribute is not valid for a IPv6 route" msgstr "атрибут недействителен для маршрута IPv6" @@ -2214,7 +2330,6 @@ msgid "route weight cannot be larger than 256" msgstr "вес маршрута не может превышать 256" #: src/libnm-core-impl/nm-setting-ip-config.c:1531 -#, c-format msgid "route scope is invalid for local route" msgstr "недействительная область маршрута для локального маршрута" @@ -2364,7 +2479,6 @@ msgid "invalid \"to\" part" msgstr "недействительная часть \"to\"" #: src/libnm-core-impl/nm-setting-ip-config.c:3708 -#, c-format msgid "cannot detect address family for rule" msgstr "не удалось определить семейство адресов для правила" @@ -2378,83 +2492,88 @@ msgstr "недействительное правило: %s" msgid "invalid address family" msgstr "недействительное семейство адресов" -#: src/libnm-core-impl/nm-setting-ip-config.c:5110 +#: src/libnm-core-impl/nm-setting-ip-config.c:5115 #, c-format msgid "rule #%u is invalid: %s" msgstr "правило #%u является недействительным: %s" -#: src/libnm-core-impl/nm-setting-ip-config.c:5547 +#: src/libnm-core-impl/nm-setting-ip-config.c:5639 #, c-format msgid "%u. DNS server address is invalid" msgstr "%u. Недействительный адрес сервера DNS" -#: src/libnm-core-impl/nm-setting-ip-config.c:5567 +#: src/libnm-core-impl/nm-setting-ip-config.c:5659 #, c-format msgid "%d. IP address is invalid" msgstr "%d. Недействительный адрес IP" -#: src/libnm-core-impl/nm-setting-ip-config.c:5582 +#: src/libnm-core-impl/nm-setting-ip-config.c:5674 #, c-format msgid "%d. IP address has 'label' property with invalid type" msgstr "%d. Адрес IP содержит свойство «label» с недействительным типом" -#: src/libnm-core-impl/nm-setting-ip-config.c:5594 +#: src/libnm-core-impl/nm-setting-ip-config.c:5686 #, c-format msgid "%d. IP address has invalid label '%s'" msgstr "%d. Адрес IP содержит недействительную метку '%s'" -#: src/libnm-core-impl/nm-setting-ip-config.c:5612 +#: src/libnm-core-impl/nm-setting-ip-config.c:5704 msgid "gateway cannot be set if there are no addresses configured" msgstr "шлюз не может быть настроен, если не настроены адреса" -#: src/libnm-core-impl/nm-setting-ip-config.c:5624 +#: src/libnm-core-impl/nm-setting-ip-config.c:5716 msgid "gateway is invalid" msgstr "недействительный шлюз" -#: src/libnm-core-impl/nm-setting-ip-config.c:5642 +#: src/libnm-core-impl/nm-setting-ip-config.c:5734 #, c-format msgid "%d. route is invalid" msgstr "%d. Недействительный маршрут" -#: src/libnm-core-impl/nm-setting-ip-config.c:5655 +#: src/libnm-core-impl/nm-setting-ip-config.c:5747 #, c-format msgid "invalid attribute: %s" msgstr "недействительный атрибут: %s" -#: src/libnm-core-impl/nm-setting-ip-config.c:5675 +#: src/libnm-core-impl/nm-setting-ip-config.c:5767 #, c-format msgid "%u. rule has wrong address-family" msgstr "%u. Неверное семейство адресов для правила" -#: src/libnm-core-impl/nm-setting-ip-config.c:5687 +#: src/libnm-core-impl/nm-setting-ip-config.c:5779 #, c-format msgid "%u. rule is invalid: %s" msgstr "%u. Недействительное правило: %s" -#: src/libnm-core-impl/nm-setting-ip-config.c:5703 +#: src/libnm-core-impl/nm-setting-ip-config.c:5795 #, c-format msgid "'%s' is not a valid IAID" msgstr "'%s' не является действительным идентификатором IAID" -#: src/libnm-core-impl/nm-setting-ip-config.c:5717 +#: src/libnm-core-impl/nm-setting-ip-config.c:5809 #, c-format msgid "the property cannot be set when '%s' is disabled" msgstr "свойство не может быть настроено, если отключено «%s»" -#: src/libnm-core-impl/nm-setting-ip-config.c:5743 +#: src/libnm-core-impl/nm-setting-ip-config.c:5835 msgid "the property is currently supported only for DHCPv4" msgstr "на данный момент это свойство поддерживается только для DHCPv4" -#: src/libnm-core-impl/nm-setting-ip-config.c:5760 +#: src/libnm-core-impl/nm-setting-ip-config.c:5852 #, c-format msgid "'%s' is not a valid IP or subnet" msgstr "'%s' не является действительным IP или подсетью" -#: src/libnm-core-impl/nm-setting-ip-config.c:5784 +#: src/libnm-core-impl/nm-setting-ip-config.c:5896 #, c-format msgid "a gateway is incompatible with '%s'" msgstr "шлюз несовместим с «%s»" +#: src/libnm-core-impl/nm-setting-ip-config.c:5910 +#, c-format +msgid "the value is inconsistent with '%s'" +msgstr "значение не согласуется с '%s'" + #: src/libnm-core-impl/nm-setting-ip-tunnel.c:364 #, c-format msgid "'%d' is not a valid tunnel mode" @@ -2496,15 +2615,32 @@ msgstr "можно настроить только для туннелей VTI" msgid "wired setting not allowed for mode %s" msgstr "для режима %s проводная настройка не допускается" -#: src/libnm-core-impl/nm-setting-ip4-config.c:171 +#: src/libnm-core-impl/nm-setting-ipvlan.c:148 +#: src/libnm-core-impl/nm-setting-macsec.c:365 +#: src/libnm-core-impl/nm-setting-macvlan.c:154 +#: src/libnm-core-impl/nm-setting-vlan.c:654 +#, c-format +msgid "property is not specified and neither is '%s:%s'" +msgstr "свойство не указано, а также не указано «%s:%s»" + +#: src/libnm-core-impl/nm-setting-ipvlan.c:166 +#, c-format +msgid "unsupported mode %u" +msgstr "неподдерживаемый режим %u" + +#: src/libnm-core-impl/nm-setting-ipvlan.c:176 +msgid "private and VEPA cannot be enabled at the same time" +msgstr "режимы private и VEPA нельзя включить одновременно" + +#: src/libnm-core-impl/nm-setting-ip4-config.c:193 #: src/libnm-core-impl/nm-setting-ip6-config.c:278 #, c-format msgid "method '%s' requires at least an address or a route" -msgstr "" +msgstr "для метода '%s' требуется хотя бы адрес или маршрут" -#: src/libnm-core-impl/nm-setting-ip4-config.c:186 -#: src/libnm-core-impl/nm-setting-ip4-config.c:200 -#: src/libnm-core-impl/nm-setting-ip4-config.c:216 +#: src/libnm-core-impl/nm-setting-ip4-config.c:208 +#: src/libnm-core-impl/nm-setting-ip4-config.c:222 +#: src/libnm-core-impl/nm-setting-ip4-config.c:238 #: src/libnm-core-impl/nm-setting-ip6-config.c:297 #: src/libnm-core-impl/nm-setting-ip6-config.c:311 #: src/libnm-core-impl/nm-setting-ip6-config.c:325 @@ -2512,37 +2648,37 @@ msgstr "" msgid "this property is not allowed for '%s=%s'" msgstr "для «%s=%s» это свойство не допускается" -#: src/libnm-core-impl/nm-setting-ip4-config.c:260 +#: src/libnm-core-impl/nm-setting-ip4-config.c:283 msgid "cannot enable ipv4.link-local with ipv4.method=disabled" msgstr "" "невозможно включить использование ipv4.link-local, если ipv4.method=disabled" -#: src/libnm-core-impl/nm-setting-ip4-config.c:272 +#: src/libnm-core-impl/nm-setting-ip4-config.c:295 msgid "cannot disable ipv4.link-local with ipv4.method=link-local" msgstr "" "невозможно выключить использование ipv4.link-local, если ipv4.method=link-" "local" -#: src/libnm-core-impl/nm-setting-ip4-config.c:308 +#: src/libnm-core-impl/nm-setting-ip4-config.c:331 #, c-format msgid "'%s' is not a valid FQDN" msgstr "«%s» не является действительным FQDN" -#: src/libnm-core-impl/nm-setting-ip4-config.c:321 +#: src/libnm-core-impl/nm-setting-ip4-config.c:344 msgid "property cannot be set when dhcp-hostname is also set" msgstr "" "свойство не может быть настроено, если также настроено свойство dhcp-hostname" -#: src/libnm-core-impl/nm-setting-ip4-config.c:336 +#: src/libnm-core-impl/nm-setting-ip4-config.c:359 msgid "FQDN flags requires a FQDN set" msgstr "для флагов FQDN требуется настроенный FQDN" -#: src/libnm-core-impl/nm-setting-ip4-config.c:355 +#: src/libnm-core-impl/nm-setting-ip4-config.c:378 #, c-format msgid "multiple addresses are not allowed for '%s=%s'" msgstr "для «%s=%s» не допускается несколько адресов" -#: src/libnm-core-impl/nm-setting-ip4-config.c:372 +#: src/libnm-core-impl/nm-setting-ip4-config.c:395 msgid "property should be TRUE when method is set to disabled" msgstr "" "если использование метода отключено, то значением свойства должно быть ИСТИНА" @@ -2565,13 +2701,25 @@ msgstr "должен быть действительным адресом IPv6 #: src/libnm-core-impl/nm-setting-ip6-config.c:435 msgid "DHCP DSCP is not supported for IPv6" +msgstr "DHCP DSCP не поддерживается для IPv6" + +#: src/libnm-core-impl/nm-setting-ip6-config.c:447 +msgid "Shared DHCP range is not supported for IPv6" +msgstr "" +"Диапазоны DHCP в методе разделяемых подключений не поддерживаются для IPv6" + +# This option allows you to specify a custom DHCP lease time for the shared connection method in seconds. +# https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/nm-settings-nmcli.html +#: src/libnm-core-impl/nm-setting-ip6-config.c:459 +msgid "Shared DHCP lease time is not supported for IPv6" msgstr "" +"Время аренды DHCP в методе разделяемых подключений не поддерживается для IPv6" -#: src/libnm-core-impl/nm-setting-ip6-config.c:449 +#: src/libnm-core-impl/nm-setting-ip6-config.c:473 msgid "token is not in canonical form" msgstr "токен представлен не в канонической форме" -#: src/libnm-core-impl/nm-setting-ip6-config.c:466 +#: src/libnm-core-impl/nm-setting-ip6-config.c:490 msgid "property should be TRUE when method is set to ignore or disabled" msgstr "" "если метод игнорируется или отключён, то значением свойства должно быть " @@ -2583,7 +2731,6 @@ msgid "ipv4 method \"%s\" is not supported for loopback" msgstr "метод ipv4 \"%s\" не поддерживается для loopback" #: src/libnm-core-impl/nm-setting-loopback.c:101 -#, c-format msgid "ipv4.link-local cannot be enabled for loopback" msgstr "использование ipv4.link-local нельзя включить для loopback" @@ -2593,7 +2740,6 @@ msgid "ipv6 method \"%s\" is not supported for loopback" msgstr "метод ipv6 \"%s\" не поддерживается для loopback" #: src/libnm-core-impl/nm-setting-loopback.c:133 -#, c-format msgid "a loopback profile cannot be a port" msgstr "профиль loopback не может быть портом" @@ -2614,13 +2760,6 @@ msgstr "ключ должен состоять из чётного числа с msgid "the key contains non-hexadecimal characters" msgstr "ключ содержит нешестнадцатеричные символы" -#: src/libnm-core-impl/nm-setting-macsec.c:365 -#: src/libnm-core-impl/nm-setting-macvlan.c:154 -#: src/libnm-core-impl/nm-setting-vlan.c:654 -#, c-format -msgid "property is not specified and neither is '%s:%s'" -msgstr "свойство не указано, а также не указано «%s:%s»" - #: src/libnm-core-impl/nm-setting-macsec.c:396 #, c-format msgid "EAP key management requires '%s' setting presence" @@ -2639,11 +2778,10 @@ msgid "non promiscuous operation is allowed only in passthru mode" msgstr "" "действия не в неразборчивом режиме допускаются только в сквозном режиме" -#: src/libnm-core-impl/nm-setting-match.c:644 -#: src/libnm-core-impl/nm-setting-match.c:660 -#: src/libnm-core-impl/nm-setting-match.c:676 -#: src/libnm-core-impl/nm-setting-match.c:692 -#, c-format +#: src/libnm-core-impl/nm-setting-match.c:645 +#: src/libnm-core-impl/nm-setting-match.c:661 +#: src/libnm-core-impl/nm-setting-match.c:677 +#: src/libnm-core-impl/nm-setting-match.c:693 msgid "is empty" msgstr "пустой" @@ -2660,17 +2798,16 @@ msgstr "недействительный канал «%d»" #: 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 "Подключение с параметром «%s» не должно быть подчинённым." +msgid "A connection with a '%s' setting must not have a controller." +msgstr "У подключения с параметром «%s» не должно быть контроллера." #: src/libnm-core-impl/nm-setting-ovs-bridge.c:174 #, c-format msgid "'%s' is not allowed in fail_mode" msgstr "«%s» не допускается в fail_mode" -#: src/libnm-core-impl/nm-setting-ovs-dpdk.c:124 -#: src/libnm-core-impl/nm-setting-ovs-dpdk.c:136 -#, c-format +#: src/libnm-core-impl/nm-setting-ovs-dpdk.c:145 +#: src/libnm-core-impl/nm-setting-ovs-dpdk.c:157 msgid "must be a power of two" msgstr "должен быть степенью числа два" @@ -2746,25 +2883,21 @@ msgid "" msgstr "" "Подключение с параметром «%s» должно иметь тип интерфейса «%s», а не «%s»" -# https://manpages.ubuntu.com/manpages/noble/man5/nm-settings.5.html -# ?? -# ЮДр. #: src/libnm-core-impl/nm-setting-ovs-interface.c:239 #, c-format msgid "A connection with ovs-interface.type '%s' setting a 'ovs-patch' setting" msgstr "Подключение с ovs-interface.type '%s' настраивает параметр 'ovs-patch'" #: src/libnm-core-impl/nm-setting-ovs-interface.c:267 -#, c-format msgid "Missing ovs interface setting" msgstr "Отсутствует параметр интерфейса ovs" #: src/libnm-core-impl/nm-setting-ovs-interface.c:273 -#, c-format msgid "Missing ovs interface type" msgstr "Отсутствует тип интерфейса ovs" #: src/libnm-core-impl/nm-setting-ovs-interface.c:315 +#: src/libnm-core-impl/nm-setting-ovs-port.c:420 #, c-format msgid "A connection with a '%s' setting must have a controller." msgstr "У подключения с параметром «%s» должен быть контроллер." @@ -2783,20 +2916,6 @@ msgstr "дублирующая VLAN %u" msgid "VLANs %u and %u are not sorted in ascending order" msgstr "VLAN %u и %u не отсортированы в порядке по возрастанию" -#: src/libnm-core-impl/nm-setting-ovs-port.c:420 -#, c-format -msgid "A connection with a '%s' setting must have a master." -msgstr "Подключение с параметром «%s» должно быть подчинённым." - -#: src/libnm-core-impl/nm-setting-ovs-port.c:434 -#, fuzzy, c-format -msgid "" -"A connection with a '%s' setting must have the port-type set to '%s'. " -"Instead it is '%s'" -msgstr "" -"Подключение с параметром '%s' должно иметь тип ведомости '%s'. Вместо этого " -"установлен '%s'" - #: src/libnm-core-impl/nm-setting-ovs-port.c:457 #, c-format msgid "'%s' is not allowed in vlan_mode" @@ -2829,60 +2948,55 @@ msgstr "" "чтобы настроить это свойство необходимо ненулевое значение свойства '%s'" #: src/libnm-core-impl/nm-setting-proxy.c:137 -#, c-format msgid "invalid proxy method" msgstr "недействительный прокси-метод" #: src/libnm-core-impl/nm-setting-proxy.c:147 #: src/libnm-core-impl/nm-setting-proxy.c:159 -#, c-format msgid "this property is not allowed for method none" msgstr "это свойство не допускается для метода none" #: src/libnm-core-impl/nm-setting-proxy.c:173 -#, c-format msgid "the script is too large" msgstr "слишком длинный сценарий" #: src/libnm-core-impl/nm-setting-proxy.c:184 -#, c-format msgid "the script is not valid utf8" msgstr "кодировка сценария не является действительной utf8" #: src/libnm-core-impl/nm-setting-proxy.c:195 -#, c-format msgid "the script lacks FindProxyForURL function" msgstr "в сценарии отсутствует функция FindProxyForURL" -#: src/libnm-core-impl/nm-setting-sriov.c:432 +#: src/libnm-core-impl/nm-setting-sriov.c:434 #: src/libnm-core-impl/nm-setting-wired.c:993 #: src/libnm-core-impl/nm-setting-wired.c:1010 #: src/libnm-core-impl/nm-setting-wired.c:1085 #: src/libnm-core-impl/nm-setting-wired.c:1144 #: src/libnm-core-impl/nm-setting-wireless.c:1257 #: src/libnm-core-impl/nm-setting-wireless.c:1277 -#: src/libnmc-setting/nm-meta-setting-desc.c:4258 +#: src/libnmc-setting/nm-meta-setting-desc.c:4315 #, c-format msgid "'%s' is not a valid MAC address" msgstr "Недействительный адрес MAC: «%s»" -#: src/libnm-core-impl/nm-setting-sriov.c:1103 +#: src/libnm-core-impl/nm-setting-sriov.c:1121 #, c-format msgid "VF with index %u, but the total number of VFs is %u" msgstr "" "Вирт. функция имеет индекс %u, но общее количество вирт. функций равно %u" -#: src/libnm-core-impl/nm-setting-sriov.c:1117 +#: src/libnm-core-impl/nm-setting-sriov.c:1135 #, c-format msgid "invalid VF %u: %s" msgstr "недействительная вирт. функция %u: %s" -#: src/libnm-core-impl/nm-setting-sriov.c:1131 +#: src/libnm-core-impl/nm-setting-sriov.c:1149 #, c-format msgid "duplicate VF index %u" msgstr "дублирующий индекс вирт. функции %u" -#: src/libnm-core-impl/nm-setting-sriov.c:1155 +#: src/libnm-core-impl/nm-setting-sriov.c:1173 #, c-format msgid "VFs %d and %d are not sorted by ascending index" msgstr "вирт. функции %d и %d не отсортированы по возрастанию индекса" @@ -2890,7 +3004,6 @@ msgstr "вирт. функции %d и %d не отсортированы по #: 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 "отсутствует вид" @@ -2923,7 +3036,6 @@ msgid "%s is out of range [0, %d]" msgstr "%s находится за пределами диапазона [0, %d]" #: src/libnm-core-impl/nm-setting-team.c:166 -#, c-format msgid "Missing target-host in nsna_ping link watcher" msgstr "В наблюдателе за каналами nsna_ping отсутствует target-host" @@ -3010,7 +3122,7 @@ msgid "setting contained a secret with an empty name" msgstr "параметр содержал секрет с пустым именем" #: src/libnm-core-impl/nm-setting-vpn.c:694 -#: src/libnm-core-impl/nm-setting.c:3577 +#: src/libnm-core-impl/nm-setting.c:3579 msgid "not a secret property" msgstr "не является свойством секрета" @@ -3020,7 +3132,6 @@ msgstr "неверный тип секрета" #: src/libnm-core-impl/nm-setting-vpn.c:789 #: src/libnm-core-impl/nm-setting-vpn.c:840 -#, c-format msgid "secret name cannot be empty" msgstr "имя секрета не может быть пустым" @@ -3189,7 +3300,6 @@ msgstr "" "'wpa-psk', 'sae', 'wpa-eap' или 'wpa-eap-suite-b-192'" #: 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" @@ -3218,8 +3328,7 @@ msgid "'%s' requires '%s' and '%s' property" msgstr "для «%s» требуются свойства «%s» и «%s»" #: src/libnm-core-impl/nm-setting-wireless.c:1295 -#: src/libnm-core-impl/nm-team-utils.c:2251 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2254 msgid "invalid value" msgstr "недействительное значение" @@ -3238,26 +3347,23 @@ msgstr "" "Изолирование точки доступа можно настроить только в режиме точки доступа" #: src/libnm-core-impl/nm-setting-wireless.c:1345 -#, fuzzy msgid "a specific channel width can be set only in AP mode" -msgstr "" -"Изолирование точки доступа можно настроить только в режиме точки доступа" +msgstr "ширину канала можно настроить только в режиме точки доступа" #: src/libnm-core-impl/nm-setting-wireless.c:1357 msgid "a specific channel width can be set only together with a fixed channel" msgstr "" +"ширину канала можно настроить только вместе с настройкой фиксированного канала" #: src/libnm-core-impl/nm-setting-wireless.c:1370 msgid "80MHz channels are only supported in the 5GHz band" -msgstr "" +msgstr "Каналы с частотой 80МГц поддерживаются только в диапазоне 5ГГЦ" #: src/libnm-core-impl/nm-setting-wireless.c:1389 -#, c-format msgid "conflicting value of mac-address-randomization and cloned-mac-address" msgstr "значения mac-address-randomization и cloned-mac-address конфликтуют" #: src/libnm-core-impl/nm-setting-wireless.c:1401 -#, c-format msgid "property is deprecated and not implemented" msgstr "свойство устарело и не реализовано" @@ -3275,123 +3381,114 @@ msgstr "страница должна находиться между %d и %d" msgid "channel must not be between %d and %d" msgstr "значение канала не должно быть между %d и %d" -#: src/libnm-core-impl/nm-setting.c:1772 src/libnm-core-impl/nm-setting.c:1812 -#: src/libnm-core-impl/nm-setting.c:2123 +#: src/libnm-core-impl/nm-setting.c:1774 src/libnm-core-impl/nm-setting.c:1814 +#: src/libnm-core-impl/nm-setting.c:2125 #, c-format msgid "can't set property of type '%s' from value of type '%s'" msgstr "" "свойство с типом «%s» не может быть настроено на базе значения с типом «%s»" -#: src/libnm-core-impl/nm-setting.c:1788 +#: src/libnm-core-impl/nm-setting.c:1790 #, c-format msgid "value of type '%s' is invalid or out of range for property '%s'" msgstr "" "значение с типом '%s' для свойства '%s' является недействительным или " "находится вне диапазона" -#: src/libnm-core-impl/nm-setting.c:1833 +#: src/libnm-core-impl/nm-setting.c:1835 #, c-format msgid "can not set property: %s" msgstr "невозможно настроить свойство: %s" -#: src/libnm-core-impl/nm-setting.c:2062 -#, c-format +#: src/libnm-core-impl/nm-setting.c:2064 msgid "duplicate property" msgstr "дублирующее свойство" -#: src/libnm-core-impl/nm-setting.c:2082 -#, c-format +#: src/libnm-core-impl/nm-setting.c:2084 msgid "unknown property" msgstr "неизвестное свойство" -#: src/libnm-core-impl/nm-setting.c:2156 src/libnm-core-impl/nm-setting.c:2238 +#: src/libnm-core-impl/nm-setting.c:2158 src/libnm-core-impl/nm-setting.c:2240 #, c-format msgid "failed to set property: %s" msgstr "не удалось настроить свойство: %s" -#: src/libnm-core-impl/nm-setting.c:2513 -#, fuzzy, c-format +#: src/libnm-core-impl/nm-setting.c:2515 +#, c-format msgid "invalid value %d, expected %d-%d" -msgstr "недействительное значение «%s» по местоположению %s:%zu" +msgstr "недействительное значение %d, ожидалось %d-%d" -#: src/libnm-core-impl/nm-setting.c:2537 -#, fuzzy +#: src/libnm-core-impl/nm-setting.c:2539 msgid "cannot be empty" -msgstr "имя секрета не может быть пустым" +msgstr "не может быть пустым" -#: src/libnm-core-impl/nm-setting.c:3474 +#: src/libnm-core-impl/nm-setting.c:3476 msgid "secret not found" msgstr "секрет не найден" -#: src/libnm-core-impl/nm-team-utils.c:1530 -#: src/libnm-core-impl/nm-team-utils.c:1547 +#: src/libnm-core-impl/nm-team-utils.c:1532 +#: src/libnm-core-impl/nm-team-utils.c:1549 #, c-format msgid "invalid D-Bus property \"%s\"" msgstr "недействительное свойство D-Bus «%s»" -#: src/libnm-core-impl/nm-team-utils.c:1559 +#: src/libnm-core-impl/nm-team-utils.c:1561 #, c-format msgid "duplicate D-Bus property \"%s\"" msgstr "дублирующее свойство D-Bus «%s»" -#: src/libnm-core-impl/nm-team-utils.c:1579 +#: src/libnm-core-impl/nm-team-utils.c:1581 #, c-format msgid "invalid D-Bus property \"%s\" for \"%s\"" msgstr "недействительное свойство D-Bus «%s» для «%s»" -#: src/libnm-core-impl/nm-team-utils.c:1651 +#: src/libnm-core-impl/nm-team-utils.c:1653 #, c-format msgid "unknown link-watcher name \"%s\"" msgstr "неизвестное имя наблюдателя за каналами «%s»" -#: src/libnm-core-impl/nm-team-utils.c:2238 -#, fuzzy, c-format +#: src/libnm-core-impl/nm-team-utils.c:2241 msgid "value out of range" msgstr "значение вне диапазона" -#: src/libnm-core-impl/nm-team-utils.c:2270 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2274 msgid "invalid runner-tx-hash" msgstr "недействительный runner-tx-hash" -#: src/libnm-core-impl/nm-team-utils.c:2298 +#: src/libnm-core-impl/nm-team-utils.c:2302 #, c-format msgid "%s is only allowed for runner %s" msgstr "%s допускается только для модуля runner %s" -#: src/libnm-core-impl/nm-team-utils.c:2308 +#: src/libnm-core-impl/nm-team-utils.c:2312 #, c-format msgid "%s is only allowed for runners %s" msgstr "%s допускается только для модулей runner %s" -#: src/libnm-core-impl/nm-team-utils.c:2329 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2333 msgid "cannot set parameters for lacp and activebackup runners together" msgstr "" "параметры для модулей runner lacp и activebackup нельзя настраивать " "одновременно" -#: src/libnm-core-impl/nm-team-utils.c:2343 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2347 msgid "missing link watcher" msgstr "отсутствует наблюдатель за каналами" -#: src/libnm-core-impl/nm-team-utils.c:2369 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2373 msgid "team config exceeds size limit" msgstr "файл конфигурации team превышает ограничение по размеру" -#: src/libnm-core-impl/nm-team-utils.c:2380 -#, c-format +#: src/libnm-core-impl/nm-team-utils.c:2384 msgid "team config is not valid UTF-8" msgstr "файл конфигурации team не является действительным UTF-8" -#: src/libnm-core-impl/nm-team-utils.c:2555 +#: src/libnm-core-impl/nm-team-utils.c:2559 #, c-format msgid "invalid D-Bus type \"%s\"" msgstr "недействительный тип D-Bus «%s»" -#: src/libnm-core-impl/nm-team-utils.c:2594 +#: src/libnm-core-impl/nm-team-utils.c:2598 #, c-format msgid "invalid link-watchers: %s" msgstr "недействительный наблюдатель за каналами: %s" @@ -3721,33 +3818,30 @@ msgstr "невозможно загрузить модуль «%s»: %s" msgid "failed to load nm_vpn_editor_plugin_factory() from %s (%s)" msgstr "не удалось загрузить nm_vpn_editor_plugin_factory() из %s (%s)" -#: src/libnm-core-impl/nm-vpn-editor-plugin.c:321 +#: src/libnm-core-impl/nm-vpn-editor-plugin.c:324 #, c-format msgid "unknown error initializing plugin %s" msgstr "неизвестная ошибка при инициализации модуля %s" -#: src/libnm-core-impl/nm-vpn-editor-plugin.c:341 +#: src/libnm-core-impl/nm-vpn-editor-plugin.c:344 #, c-format msgid "cannot load VPN plugin in '%s': missing plugin name" msgstr "невозможно загрузить модуль VPN в «%s»: отсутствует имя модуля" -#: src/libnm-core-impl/nm-vpn-editor-plugin.c:349 +#: src/libnm-core-impl/nm-vpn-editor-plugin.c:352 #, c-format msgid "cannot load VPN plugin in '%s': invalid service name" msgstr "невозможно загрузить модуль VPN в «%s»: недействительное имя службы" -#: src/libnm-core-impl/nm-vpn-editor-plugin.c:493 -#, c-format +#: src/libnm-core-impl/nm-vpn-editor-plugin.c:496 msgid "the plugin does not support import capability" msgstr "модуль не поддерживает возможность импорта" -#: src/libnm-core-impl/nm-vpn-editor-plugin.c:517 -#, c-format +#: src/libnm-core-impl/nm-vpn-editor-plugin.c:520 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 "отсутствует имя файла" @@ -3773,7 +3867,6 @@ msgid "there exists a conflicting plugin with the same name (%s)" msgstr "существует конфликтующий модуль с таким же именем (%s)" #: src/libnm-core-impl/nm-vpn-plugin-info.c:1050 -#, c-format msgid "missing \"plugin\" setting" msgstr "отсутствует параметр «plugin»" @@ -3801,7 +3894,6 @@ msgid "Failed to initialize the crypto engine." msgstr "Не удалось инициализировать криптографический механизм." #: src/libnm-crypto/nm-crypto-gnutls.c:91 src/libnm-crypto/nm-crypto-nss.c:118 -#, c-format msgid "Unsupported key cipher for decryption" msgstr "Неподдерживаемый шифр ключа для расшифровки" @@ -3821,18 +3913,15 @@ msgid "Failed to decrypt the private key: %s (%s)" msgstr "Не удалось расшифровать закрытый ключ: %s (%s)" #: src/libnm-crypto/nm-crypto-gnutls.c:147 src/libnm-crypto/nm-crypto-nss.c:221 -#, c-format msgid "Failed to decrypt the private key: unexpected padding length." msgstr "" "Не удалось расшифровать закрытый ключ: непредвиденная длина заполнения." #: src/libnm-crypto/nm-crypto-gnutls.c:159 src/libnm-crypto/nm-crypto-nss.c:233 -#, c-format msgid "Failed to decrypt the private key." msgstr "Не удалось расшифровать закрытый ключ." #: src/libnm-crypto/nm-crypto-gnutls.c:193 src/libnm-crypto/nm-crypto-nss.c:288 -#, c-format msgid "Unsupported key cipher for encryption" msgstr "Неподдерживаемый ключ шифрования" @@ -3887,22 +3976,18 @@ msgid "Failed to initialize the crypto engine: %d." msgstr "Не удалось инициализировать криптографический механизм: %d." #: src/libnm-crypto/nm-crypto-nss.c:139 -#, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Не удалось инициализировать слот ключа расшифровки." #: src/libnm-crypto/nm-crypto-nss.c:150 -#, c-format msgid "Failed to set symmetric key for decryption." msgstr "Не удалось задать симметричный ключ расшифровки." #: src/libnm-crypto/nm-crypto-nss.c:161 -#, c-format msgid "Failed to set IV for decryption." msgstr "Не удалось задать вектор инициализации для расшифровки." #: src/libnm-crypto/nm-crypto-nss.c:170 -#, c-format msgid "Failed to initialize the decryption context." msgstr "Не удалось инициализировать контекст расшифровки." @@ -3912,7 +3997,6 @@ msgid "Failed to decrypt the private key: %d." msgstr "Не удалось расшифровать закрытый ключ: %d." #: src/libnm-crypto/nm-crypto-nss.c:196 -#, c-format msgid "Failed to decrypt the private key: decrypted data too large." msgstr "" "Не удалось расшифровать закрытый ключ: слишком большой объем данных для " @@ -3924,22 +4008,18 @@ msgid "Failed to finalize decryption of the private key: %d." msgstr "Не удалось завершить расшифровку закрытого ключа: %d." #: src/libnm-crypto/nm-crypto-nss.c:300 -#, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Не удалось инициализировать слот ключа шифрования." #: src/libnm-crypto/nm-crypto-nss.c:309 -#, c-format msgid "Failed to set symmetric key for encryption." msgstr "Не удалось задать симметричный ключ для шифрования." #: src/libnm-crypto/nm-crypto-nss.c:318 -#, c-format msgid "Failed to set IV for encryption." msgstr "Не удалось задать вектор инициализации для шифрования." #: src/libnm-crypto/nm-crypto-nss.c:327 -#, c-format msgid "Failed to initialize the encryption context." msgstr "Не удалось инициализировать контекст шифрования." @@ -3949,7 +4029,6 @@ msgid "Failed to encrypt: %d." msgstr "Не удалось зашифровать: %d." #: src/libnm-crypto/nm-crypto-nss.c:361 -#, c-format msgid "Unexpected amount of data after encrypting." msgstr "Непредвиденный объём данных после шифрования." @@ -3959,12 +4038,10 @@ msgid "Couldn't decode certificate: %d" msgstr "Не удалось расшифровать сертификат: %d" #: src/libnm-crypto/nm-crypto-nss.c:443 -#, c-format msgid "Password must be UTF-8" msgstr "Пароль должен быть в кодировке UTF-8" #: src/libnm-crypto/nm-crypto-nss.c:474 -#, c-format msgid "Couldn't initialize slot" msgstr "Не удалось инициализировать слот" @@ -3991,12 +4068,10 @@ msgstr "Не удалось создать случайные данные" #: src/libnm-crypto/nm-crypto-null.c:57 src/libnm-crypto/nm-crypto-null.c:67 #: src/libnm-crypto/nm-crypto-null.c:77 src/libnm-crypto/nm-crypto-null.c:91 #: src/libnm-crypto/nm-crypto-null.c:101 -#, c-format msgid "Compiled without crypto support." msgstr "Скомпилировано без поддержки шифрования." #: src/libnm-crypto/nm-crypto.c:215 -#, c-format msgid "PEM key file had no start tag" msgstr "Файл ключа PEM не содержал начального тега" @@ -4006,7 +4081,6 @@ msgid "PEM key file had no end tag '%s'." msgstr "Файл ключа PEM не содержал завершающего тега «%s»." #: src/libnm-crypto/nm-crypto.c:252 -#, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Неправильный формат файла PEM: Proc-Type не был первым тегом." @@ -4016,19 +4090,16 @@ msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Неправильный формат файла PEM: неизвестный тег Proc-Type «%s»." #: src/libnm-crypto/nm-crypto.c:274 -#, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Неправильный формат файла PEM: DEK-Info не был вторым тегом." #: src/libnm-crypto/nm-crypto.c:286 -#, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "" "Неправильный формат файла PEM: в теге DEK-Info не найден вектор " "инициализации." #: src/libnm-crypto/nm-crypto.c:295 -#, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "" "Неправильный формат файла PEM: недействительный формат вектора инициализации " @@ -4040,7 +4111,6 @@ msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Неправильный формат файла PEM: неизвестный шифр закрытого ключа «%s»." #: src/libnm-crypto/nm-crypto.c:330 -#, c-format msgid "Could not decode private key." msgstr "Не удалось расшифровать закрытый ключ." @@ -4067,27 +4137,22 @@ msgid "Failed to find expected TSS end tag '%s'." msgstr "Не удалось найти ожидаемый завершающий тег TSS '%s'." #: src/libnm-crypto/nm-crypto.c:459 -#, c-format msgid "IV must be an even number of bytes in length." msgstr "Длина вектора инициализации должна иметь чётное число байтов." #: src/libnm-crypto/nm-crypto.c:476 -#, c-format msgid "IV contains non-hexadecimal digits." msgstr "Вектор инициализации содержит не шестнадцатеричные цифры." #: src/libnm-crypto/nm-crypto.c:552 -#, c-format msgid "IV must contain at least 8 characters" msgstr "Вектор инициализации должен содержать минимум 8 символов" #: src/libnm-crypto/nm-crypto.c:602 -#, c-format msgid "Unable to determine private key type." msgstr "Не удалось определить тип закрытого ключа." #: src/libnm-crypto/nm-crypto.c:615 -#, c-format msgid "Password provided, but key was not encrypted." msgstr "Пароль предоставлен, но ключ не был зашифрован." @@ -4102,22 +4167,18 @@ msgid "PEM certificate had no end tag '%s'." msgstr "Сертификат PEM не имеет завершающего тега «%s»." #: src/libnm-crypto/nm-crypto.c:694 -#, c-format msgid "Failed to decode certificate." msgstr "Не удалось расшифровать сертификат." #: src/libnm-crypto/nm-crypto.c:723 src/libnm-crypto/nm-crypto.c:774 -#, c-format msgid "Certificate file is empty" msgstr "Пустой файл сертификата" #: src/libnm-crypto/nm-crypto.c:756 -#, c-format msgid "Failed to recognize certificate" msgstr "Не удалось распознать сертификат" #: src/libnm-crypto/nm-crypto.c:861 -#, c-format msgid "not a valid private key" msgstr "недействительный закрытый ключ" @@ -4126,17 +4187,17 @@ msgstr "недействительный закрытый ключ" msgid "Method returned type '%s', but expected '%s'" msgstr "Метод вернул тип «%s», но ожидался «%s»" -#: src/libnm-glib-aux/nm-shared-utils.c:2439 +#: src/libnm-glib-aux/nm-shared-utils.c:2450 #, c-format msgid "object class '%s' has no property named '%s'" msgstr "класс объекта «%s» не содержит свойства с именем «%s»" -#: src/libnm-glib-aux/nm-shared-utils.c:2448 +#: src/libnm-glib-aux/nm-shared-utils.c:2459 #, c-format msgid "property '%s' of object class '%s' is not writable" msgstr "свойство «%s» класса объекта «%s» недоступно для записи" -#: src/libnm-glib-aux/nm-shared-utils.c:2457 +#: src/libnm-glib-aux/nm-shared-utils.c:2468 #, c-format msgid "" "construct property \"%s\" for object '%s' can't be set after construction" @@ -4144,20 +4205,20 @@ msgstr "" "свойство конструкции \"%s\" объекта '%s' не может быть установлено после " "создания конструкции" -#: src/libnm-glib-aux/nm-shared-utils.c:2468 +#: src/libnm-glib-aux/nm-shared-utils.c:2479 #, c-format msgid "'%s::%s' is not a valid property name; '%s' is not a GObject subtype" msgstr "" "'%s::%s' не является действительным именем свойства; '%s' не является " "подтипом GObject" -#: src/libnm-glib-aux/nm-shared-utils.c:2481 +#: src/libnm-glib-aux/nm-shared-utils.c:2492 #, c-format msgid "unable to set property '%s' of type '%s' from value of type '%s'" msgstr "" "невозможно настроить свойство '%s' с типом '%s' на базе значения с типом '%s'" -#: src/libnm-glib-aux/nm-shared-utils.c:2493 +#: src/libnm-glib-aux/nm-shared-utils.c:2504 #, c-format msgid "" "value \"%s\" of type '%s' is invalid or out of range for property '%s' of " @@ -4166,48 +4227,48 @@ msgstr "" "значение \"%s\" с типом '%s' для свойства '%s' с типом '%s' не является " "действительным, или выходит за пределы диапазона" -#: src/libnm-glib-aux/nm-shared-utils.c:5516 +#: src/libnm-glib-aux/nm-shared-utils.c:5581 msgid "interface name is missing" msgstr "отсутствует имя интерфейса" -#: src/libnm-glib-aux/nm-shared-utils.c:5524 +#: src/libnm-glib-aux/nm-shared-utils.c:5589 msgid "interface name is too short" msgstr "слишком короткое имя интерфейса" -#: src/libnm-glib-aux/nm-shared-utils.c:5532 +#: src/libnm-glib-aux/nm-shared-utils.c:5597 msgid "interface name is reserved" msgstr "имя интерфейса зарезервировано" -#: src/libnm-glib-aux/nm-shared-utils.c:5545 +#: src/libnm-glib-aux/nm-shared-utils.c:5610 msgid "interface name contains an invalid character" msgstr "имя интерфейса содержит недействительный символ" -#: src/libnm-glib-aux/nm-shared-utils.c:5553 +#: src/libnm-glib-aux/nm-shared-utils.c:5618 msgid "interface name is longer than 15 characters" msgstr "имя интерфейса длиннее 15 символов" -#: src/libnm-glib-aux/nm-shared-utils.c:5578 +#: src/libnm-glib-aux/nm-shared-utils.c:5643 #, c-format msgid "'%%' is not allowed in interface names" msgstr "'%%' не допускается в именах интерфейсов" -#: src/libnm-glib-aux/nm-shared-utils.c:5590 +#: src/libnm-glib-aux/nm-shared-utils.c:5655 #, c-format msgid "'%s' is not allowed as interface name" msgstr "'%s' не допускается в качестве имени интерфейса" -#: src/libnm-glib-aux/nm-shared-utils.c:5612 +#: src/libnm-glib-aux/nm-shared-utils.c:5677 msgid "" "interface name must be alphanumerical with no forward or backward slashes" msgstr "" "имя интерфейса должно состоять из букв и цифр без обратных или прямых косых " "черт" -#: src/libnm-glib-aux/nm-shared-utils.c:5629 +#: src/libnm-glib-aux/nm-shared-utils.c:5694 msgid "interface name must not be empty" msgstr "имя интерфейса не должно быть пустым" -#: src/libnm-glib-aux/nm-shared-utils.c:5637 +#: src/libnm-glib-aux/nm-shared-utils.c:5702 msgid "interface name must be UTF-8 encoded" msgstr "имя интерфейса должно быть в кодировке UTF-8" @@ -4249,18 +4310,18 @@ msgstr "«%s» является неоднозначным: %s" msgid "missing name, try one of [%s]" msgstr "отсутствует имя, попробуйте что-то из [%s]" -#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3771 -#: src/nmcli/connections.c:3829 +#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3782 +#: src/nmcli/connections.c:3848 #, c-format msgid "'%s' not among [%s]" msgstr "«%s» не входит в [%s]" #: 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:1817 -#: src/libnmc-setting/nm-meta-setting-desc.c:1848 -#: src/libnmc-setting/nm-meta-setting-desc.c:2857 -#: src/libnmc-setting/nm-meta-setting-desc.c:2915 src/nmcli/common.c:1611 +#: src/libnmc-setting/nm-meta-setting-desc.c:1830 +#: src/libnmc-setting/nm-meta-setting-desc.c:1861 +#: src/libnmc-setting/nm-meta-setting-desc.c:2870 +#: src/libnmc-setting/nm-meta-setting-desc.c:2928 src/nmcli/common.c:1611 #: src/nmcli/connections.c:79 src/nmcli/connections.c:89 #: src/nmcli/devices.c:485 src/nmcli/devices.c:592 src/nmcli/devices.c:598 #: src/nmcli/devices.c:604 src/nmcli/general.c:30 src/nmcli/general.c:85 @@ -4332,8 +4393,8 @@ msgstr "деактивация (внешняя)" #: src/libnmc-base/nm-client-utils.c:342 #: src/libnmc-setting/nm-meta-setting-desc.c:875 -#: src/libnmc-setting/nm-meta-setting-desc.c:2849 src/nmcli/connections.c:5576 -#: src/nmcli/connections.c:7554 src/nmcli/connections.c:7555 +#: src/libnmc-setting/nm-meta-setting-desc.c:2862 src/nmcli/connections.c:5751 +#: src/nmcli/connections.c:7759 src/nmcli/connections.c:7760 #: src/nmcli/devices.c:591 src/nmcli/devices.c:597 src/nmcli/devices.c:603 #: src/nmcli/devices.c:1427 src/nmcli/general.c:92 src/nmcli/utils.h:317 msgid "yes" @@ -4341,8 +4402,8 @@ msgstr "да" #: src/libnmc-base/nm-client-utils.c:343 #: src/libnmc-setting/nm-meta-setting-desc.c:875 -#: src/libnmc-setting/nm-meta-setting-desc.c:2852 src/nmcli/connections.c:5575 -#: src/nmcli/connections.c:7554 src/nmcli/connections.c:7555 +#: src/libnmc-setting/nm-meta-setting-desc.c:2865 src/nmcli/connections.c:5750 +#: src/nmcli/connections.c:7759 src/nmcli/connections.c:7760 #: src/nmcli/devices.c:591 src/nmcli/devices.c:597 src/nmcli/devices.c:603 #: src/nmcli/devices.c:1427 src/nmcli/general.c:93 src/nmcli/utils.h:317 msgid "no" @@ -4361,9 +4422,8 @@ msgid "No reason given" msgstr "Причина не указана" #. We should not really come here -#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3791 -#: src/nmcli/connections.c:3850 -#, c-format +#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3802 +#: src/nmcli/connections.c:3874 msgid "Unknown error" msgstr "Неизвестная ошибка" @@ -4636,54 +4696,69 @@ msgstr "Не удалось обнаружить пир Wi-Fi P2P" #: src/libnmc-base/nm-client-utils.c:469 msgid "The device handler dispatcher returned an error" -msgstr "" +msgstr "Диспетчер обработчика устройств вернул ошибку" #: src/libnmc-base/nm-client-utils.c:471 msgid "" "The device is unmanaged because networking is disabled or the system is " "suspended" msgstr "" +"Устройство не контролируется, т.к. использование сети отключено, либо система " +"в " +"приостановленном состоянии" #: src/libnmc-base/nm-client-utils.c:474 msgid "The device is unmanaged because NetworkManager is quitting" -msgstr "" +msgstr "Устройство не контролируется, т.к. NetworkManager завершает работу." #: src/libnmc-base/nm-client-utils.c:476 msgid "The device is unmanaged because the link is not initialized by udev" msgstr "" +"Устройство не контролируется, т.к. канал не был инициализирован со стороны ude" +"v" #: src/libnmc-base/nm-client-utils.c:478 msgid "" "The device is unmanaged by explicit user decision (e.g. 'nmcli device set " -"$DEV managed no'" +"$DEV managed no')" msgstr "" +"Устройство не контролируется согласно явному решению пользователя (например 'n" +"mcli device set $DEV managed no')" #: src/libnmc-base/nm-client-utils.c:482 msgid "" "The device is unmanaged by user decision via settings plugin (\"unmanaged-" "devices\" for keyfile or \"NM_CONTROLLED=no\" for ifcfg-rh)" msgstr "" +"Устройство не контролируется согласно значениям, указанным пользователем в " +"модуле параметров (\"unmanaged-devices\" для keyfile, или \"NM_CONTROLLED=no\"" +" для ifcfg-rh)" #: src/libnmc-base/nm-client-utils.c:485 msgid "" "The device is unmanaged by user decision in NetworkManager.conf ('unmanaged' " "in a [device*] section" msgstr "" +"Устройство не контролируется согласно значениям, указанным пользователем в Net" +"workManager.conf ('unmanaged' в разделе [device*])" #: src/libnmc-base/nm-client-utils.c:489 msgid "The device is unmanaged because the device type is unmanaged by default" msgstr "" +"Устройство не контролируется, т.к. этот тип устройств по умолчанию не контроли" +"руется." #: src/libnmc-base/nm-client-utils.c:491 -#, fuzzy msgid "The device is unmanaged via udev rule" -msgstr "Устройство пропало" +msgstr "Устройство не контролируется согласно правилу udev" #: src/libnmc-base/nm-client-utils.c:493 msgid "" "The device is unmanaged because it is an external device and is unconfigured " "(down or without addresses)" msgstr "" +"Устройство не контролируется, т.к. является внешним устройством и для него " +"отсутствует конфигурация (не запущено, или нет адресов)" #: src/libnmc-base/nm-client-utils.c:503 msgid "Unknown reason" @@ -4790,7 +4865,7 @@ msgstr "Предопределённый общий ключ для %s" #: src/libnmc-base/nm-secret-agent-simple.c:274 #: src/libnmc-base/nm-secret-agent-simple.c:361 -#: src/libnmc-setting/nm-meta-setting-desc.c:5146 +#: src/libnmc-setting/nm-meta-setting-desc.c:5244 #: src/nmtui/nmt-8021x-fields.c:183 src/nmtui/nmt-8021x-fields.c:516 #: src/nmtui/nmt-8021x-fields.c:622 src/nmtui/nmt-page-dsl.c:51 #: src/nmtui/nmt-page-wifi.c:345 @@ -4853,12 +4928,14 @@ msgid "Authentication required by wireless network" msgstr "Для доступа к беспроводной сети требуется аутентификация" #: src/libnmc-base/nm-secret-agent-simple.c:911 -#, fuzzy, c-format +#, c-format msgid "" "Push of the WPS button on the router or a password is required to access the " "wireless network '%s'." msgstr "" -"Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования." +"Для доступа к беспроводной сети «%s» требуется нажать на кнопку WPS на маршрут" +"изаторе, " +"либо указать пароль." #: src/libnmc-base/nm-secret-agent-simple.c:916 #, c-format @@ -4914,7 +4991,7 @@ msgid "MACsec PSK authentication" msgstr "Аутентификация MACsec PSK" #: src/libnmc-base/nm-secret-agent-simple.c:968 -#: src/libnmc-setting/nm-meta-setting-desc.c:6901 +#: src/libnmc-setting/nm-meta-setting-desc.c:7163 msgid "MKA CAK" msgstr "MKA CAK" @@ -4982,7 +5059,6 @@ msgid "Gateway DNS resolution ('host:IP')" msgstr "Разрешение DNS шлюза («хост:IP»)" #: src/libnmc-base/nm-vpn-helpers.c:308 -#, c-format msgid "no gateway configured" msgstr "шлюз не настроен" @@ -4997,7 +5073,6 @@ msgid "exited on signal %d" msgstr "завершено по сигналу %d" #: src/libnmc-base/nm-vpn-helpers.c:430 -#, c-format msgid "insufficent secrets returned" msgstr "возвращено недостаточно секретов" @@ -5024,8 +5099,8 @@ msgstr "недействительный адрес IP: %s" #: src/libnmc-setting/nm-meta-setting-desc.c:294 msgid "" -"The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [," -"ip[/prefix] ...]'" +"The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... " +"[,ip[/prefix] ...]'" msgstr "" "Действительный синтаксис: 'ip[/prefix] [next-hop] [metric] " "[attribute=val]... [,ip[/prefix] ...]'" @@ -5074,127 +5149,127 @@ msgstr "невозможно прочитать конфигурацию team и msgid "team config file '%s' contains non-valid utf-8" msgstr "файл конфигурации team «%s» содержит недействительную кодировку utf-8" -#: src/libnmc-setting/nm-meta-setting-desc.c:1050 +#: src/libnmc-setting/nm-meta-setting-desc.c:1058 msgid "auto" msgstr "автоматически" -#: src/libnmc-setting/nm-meta-setting-desc.c:1179 +#: src/libnmc-setting/nm-meta-setting-desc.c:1187 #, c-format msgid "%s (%s)" msgstr "%s (%s)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1435 -#: src/libnmc-setting/nm-meta-setting-desc.c:1443 -#: src/libnmc-setting/nm-meta-setting-desc.c:4488 +#: src/libnmc-setting/nm-meta-setting-desc.c:1448 +#: src/libnmc-setting/nm-meta-setting-desc.c:1456 +#: src/libnmc-setting/nm-meta-setting-desc.c:4562 msgid "'%s' is out of range [%" msgstr "«%s» за пределами диапазона [%" -#: src/libnmc-setting/nm-meta-setting-desc.c:1451 +#: src/libnmc-setting/nm-meta-setting-desc.c:1464 #, c-format msgid "'%s' is not a valid number" msgstr "«%s» не является действительным числом" -#: src/libnmc-setting/nm-meta-setting-desc.c:1507 +#: src/libnmc-setting/nm-meta-setting-desc.c:1520 #, c-format msgid "'%s' is out of range [0, %u]" msgstr "«%s» за пределами диапазона [0, %u]" -#: src/libnmc-setting/nm-meta-setting-desc.c:1558 +#: src/libnmc-setting/nm-meta-setting-desc.c:1571 #, c-format msgid "'%s' is not a valid Ethernet MAC" msgstr "«%s» не является действительным MAC-адресом Ethernet" -#: src/libnmc-setting/nm-meta-setting-desc.c:1647 +#: src/libnmc-setting/nm-meta-setting-desc.c:1660 #, c-format msgid "invalid option '%s', use a combination of [%s]" msgstr "недействительный параметр «%s»; используйте комбинацию [%s]" -#: src/libnmc-setting/nm-meta-setting-desc.c:1784 +#: src/libnmc-setting/nm-meta-setting-desc.c:1797 #, c-format msgid "%d (key)" msgstr "%d (ключ)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1786 +#: src/libnmc-setting/nm-meta-setting-desc.c:1799 #, c-format msgid "%d (passphrase)" msgstr "%d (парольная фраза)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1789 +#: src/libnmc-setting/nm-meta-setting-desc.c:1802 #, c-format msgid "%d (unknown)" msgstr "%d (неизвестно)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1802 +#: src/libnmc-setting/nm-meta-setting-desc.c:1815 msgid "0 (NONE)" msgstr "0 (НЕТ)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1808 +#: src/libnmc-setting/nm-meta-setting-desc.c:1821 msgid "REORDER_HEADERS, " msgstr "REORDER_HEADERS, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1810 +#: src/libnmc-setting/nm-meta-setting-desc.c:1823 msgid "GVRP, " msgstr "GVRP, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1812 +#: src/libnmc-setting/nm-meta-setting-desc.c:1825 msgid "LOOSE_BINDING, " msgstr "LOOSE_BINDING, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1814 +#: src/libnmc-setting/nm-meta-setting-desc.c:1827 msgid "MVRP, " msgstr "MVRP, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1835 +#: src/libnmc-setting/nm-meta-setting-desc.c:1848 msgid "0 (none)" msgstr "0 (нет)" -#: src/libnmc-setting/nm-meta-setting-desc.c:1841 +#: src/libnmc-setting/nm-meta-setting-desc.c:1854 msgid "agent-owned, " msgstr "принадлежит агенту, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1843 +#: src/libnmc-setting/nm-meta-setting-desc.c:1856 msgid "not saved, " msgstr "не сохранено, " -#: src/libnmc-setting/nm-meta-setting-desc.c:1845 +#: src/libnmc-setting/nm-meta-setting-desc.c:1858 msgid "not required, " msgstr "не требуется, " -#: src/libnmc-setting/nm-meta-setting-desc.c:2050 +#: src/libnmc-setting/nm-meta-setting-desc.c:2063 #, c-format msgid "'%s' is not valid; use