about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.gitlab-ci.yml114
-rw-r--r--.gitlab-ci/config.yml7
-rw-r--r--.gitlab-ci/distros-info.yml20
-rw-r--r--NEWS40
-rw-r--r--README.md8
-rw-r--r--config.h.meson5
-rwxr-xr-xcontrib/alpine/REQUIRED_PACKAGES1
-rwxr-xr-xcontrib/debian/REQUIRED_PACKAGES1
-rwxr-xr-xcontrib/fedora/REQUIRED_PACKAGES1
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec6
-rwxr-xr-xcontrib/fedora/rpm/build_clean.sh2
-rwxr-xr-xcontrib/fedora/utils/makerepo.sh8
-rwxr-xr-xcontrib/scripts/nm-ci-run.sh7
-rw-r--r--data/NetworkManager-config-initrd.service.in27
-rw-r--r--data/NetworkManager-initrd.service.in32
-rw-r--r--data/NetworkManager-wait-online-initrd.service.in26
-rw-r--r--data/meson.build3
-rw-r--r--data/nm-priv-helper.service.in4
-rw-r--r--docs/libnm/libnm-docs.xml1
-rwxr-xr-xexamples/python/gi/gmaincontext.py2
-rwxr-xr-xexamples/python/gi/secret-agent.py92
-rw-r--r--introspection/org.freedesktop.NetworkManager.Device.xml4
-rw-r--r--man/NetworkManager.conf.xml19
-rw-r--r--man/nm-cloud-setup.xml6
-rw-r--r--man/nm-initrd-generator.xml1
-rw-r--r--meson.build25
-rw-r--r--meson_options.txt1
-rw-r--r--po/POTFILES.in3
-rw-r--r--po/POTFILES.skip15
-rw-r--r--po/ka.po5686
-rw-r--r--po/meson.build5
-rw-r--r--po/sl.po4687
-rw-r--r--src/contrib/nm-vpn-editor-plugin-call.h2
-rw-r--r--src/core/NetworkManagerUtils.c13
-rw-r--r--src/core/devices/nm-device-bond.c16
-rw-r--r--src/core/devices/nm-device-bridge.c5
-rw-r--r--src/core/devices/nm-device-hsr.c4
-rw-r--r--src/core/devices/nm-device-tun.c8
-rw-r--r--src/core/devices/nm-device-vrf.c2
-rw-r--r--src/core/devices/nm-device.c177
-rw-r--r--src/core/devices/nm-device.h12
-rw-r--r--src/core/devices/nm-lldp-listener.c2
-rw-r--r--src/core/devices/ovs/nm-device-ovs-bridge.c28
-rw-r--r--src/core/devices/ovs/nm-device-ovs-interface.c58
-rw-r--r--src/core/devices/ovs/nm-device-ovs-port.c28
-rw-r--r--src/core/devices/ovs/nm-ovs-factory.c27
-rw-r--r--src/core/devices/ovs/nm-ovsdb.c80
-rw-r--r--src/core/dhcp/nm-dhcp-options.c2
-rw-r--r--src/core/dhcp/nm-dhcp-systemd.c2
-rw-r--r--src/core/dhcp/nm-dhcp-utils.c2
-rw-r--r--src/core/dhcp/tests/test-dhcp-utils.c70
-rw-r--r--src/core/dns/nm-dns-dnsconfd.c24
-rw-r--r--src/core/ndisc/nm-lndp-ndisc.c20
-rw-r--r--src/core/ndisc/nm-ndisc.c4
-rw-r--r--src/core/nm-bond-manager.c10
-rw-r--r--src/core/nm-core-utils.c10
-rw-r--r--src/core/nm-l3-config-data.c3
-rw-r--r--src/core/nm-l3cfg.c9
-rw-r--r--src/core/nm-manager.c19
-rw-r--r--src/core/nm-netns.c2
-rw-r--r--src/core/nm-policy.c272
-rw-r--r--src/core/platform/nm-fake-platform.c2
-rw-r--r--src/core/platform/tests/test-common.c4
-rw-r--r--src/core/platform/tests/test-link.c75
-rw-r--r--src/core/platform/tests/test-route.c33
-rw-r--r--src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c2
-rw-r--r--src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c2
-rw-r--r--src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c14
-rw-r--r--src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c2
-rw-r--r--src/core/supplicant/nm-supplicant-interface.c2
-rw-r--r--src/libnm-client-impl/libnm.ver28
-rw-r--r--src/libnm-client-impl/meson.build1
-rw-r--r--src/libnm-client-impl/nm-client.c29
-rw-r--r--src/libnm-client-impl/nm-device.c4
-rw-r--r--src/libnm-client-public/NetworkManager.h1
-rw-r--r--src/libnm-client-public/nm-autoptr.h1
-rw-r--r--src/libnm-client-test/nm-test-utils-impl.c2
-rw-r--r--src/libnm-core-aux-intern/nm-libnm-core-utils.c30
-rw-r--r--src/libnm-core-aux-intern/nm-libnm-core-utils.h4
-rw-r--r--src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in24
-rw-r--r--src/libnm-core-impl/meson.build1
-rw-r--r--src/libnm-core-impl/nm-connection.c2
-rw-r--r--src/libnm-core-impl/nm-keyfile.c2
-rw-r--r--src/libnm-core-impl/nm-meta-setting-base-impl.c9
-rw-r--r--src/libnm-core-impl/nm-setting-bond.c2
-rw-r--r--src/libnm-core-impl/nm-setting-connection.c2
-rw-r--r--src/libnm-core-impl/nm-setting-infiniband.c1
-rw-r--r--src/libnm-core-impl/nm-setting-ip-config.c53
-rw-r--r--src/libnm-core-impl/nm-setting-ipvlan.c13
-rw-r--r--src/libnm-core-impl/nm-setting-match.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-dpdk.c46
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-external-ids.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-other-config.c4
-rw-r--r--src/libnm-core-impl/nm-setting-prefix-delegation.c118
-rw-r--r--src/libnm-core-impl/nm-setting-private.h3
-rw-r--r--src/libnm-core-impl/nm-setting-sriov.c47
-rw-r--r--src/libnm-core-impl/nm-setting-tun.c4
-rw-r--r--src/libnm-core-impl/nm-setting-user.c2
-rw-r--r--src/libnm-core-impl/nm-setting-wired.c2
-rw-r--r--src/libnm-core-impl/nm-setting-wireless.c2
-rw-r--r--src/libnm-core-impl/nm-utils.c18
-rw-r--r--src/libnm-core-impl/tests/test-general.c61
-rw-r--r--src/libnm-core-intern/nm-core-internal.h1
-rw-r--r--src/libnm-core-intern/nm-meta-setting-base-impl.h1
-rw-r--r--src/libnm-core-public/meson.build1
-rw-r--r--src/libnm-core-public/nm-core-types.h1
-rw-r--r--src/libnm-core-public/nm-dbus-interface.h10
-rw-r--r--src/libnm-core-public/nm-setting-ip-config.h24
-rw-r--r--src/libnm-core-public/nm-setting-ovs-dpdk.h28
-rw-r--r--src/libnm-core-public/nm-setting-prefix-delegation.h41
-rw-r--r--src/libnm-core-public/nm-setting-sriov.h19
-rw-r--r--src/libnm-core-public/nm-version-macros.h.in1
-rw-r--r--src/libnm-core-public/nm-version.h14
-rw-r--r--src/libnm-glib-aux/nm-dbus-aux.c2
-rw-r--r--src/libnm-glib-aux/nm-dedup-multi.c2
-rw-r--r--src/libnm-glib-aux/nm-dedup-multi.h2
-rw-r--r--src/libnm-glib-aux/nm-hash-utils.c21
-rw-r--r--src/libnm-glib-aux/nm-hash-utils.h13
-rw-r--r--src/libnm-glib-aux/nm-inet-utils.c36
-rw-r--r--src/libnm-glib-aux/nm-inet-utils.h2
-rw-r--r--src/libnm-glib-aux/nm-macros-internal.h17
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.c22
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h3
-rw-r--r--src/libnm-glib-aux/nm-test-utils.h2
-rw-r--r--src/libnm-glib-aux/tests/test-shared-general.c48
-rw-r--r--src/libnm-log-core/nm-logging.c2
-rw-r--r--src/libnm-platform/devlink/nm-devlink.c3
-rw-r--r--src/libnm-platform/meson.build2
-rw-r--r--src/libnm-platform/nm-linux-platform.c146
-rw-r--r--src/libnm-platform/nm-linux-platform.h2
-rw-r--r--src/libnm-platform/nm-platform-utils.c1765
-rw-r--r--src/libnm-platform/nm-platform-utils.h57
-rw-r--r--src/libnm-platform/nm-platform.c65
-rw-r--r--src/libnm-platform/nm-platform.h34
-rw-r--r--src/libnm-platform/nmp-ethtool-ioctl.c1603
-rw-r--r--src/libnm-platform/nmp-ethtool-ioctl.h55
-rw-r--r--src/libnm-platform/nmp-ethtool.c559
-rw-r--r--src/libnm-platform/nmp-ethtool.h35
-rw-r--r--src/libnm-platform/nmp-object.c7
-rw-r--r--src/libnm-std-aux/nm-std-aux.h2
-rw-r--r--src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-lease.c2
-rw-r--r--src/libnmc-setting/nm-meta-setting-base-impl.c9
-rw-r--r--src/libnmc-setting/nm-meta-setting-base-impl.h1
-rw-r--r--src/libnmc-setting/nm-meta-setting-desc.c46
-rw-r--r--src/libnmc-setting/nm-meta-setting-desc.h20
-rw-r--r--src/libnmc-setting/settings-docs.h.in11
-rw-r--r--src/nm-cloud-setup/nmcs-provider-oci.c14
-rw-r--r--src/nm-dispatcher/nm-dispatcher.c2
-rw-r--r--src/nm-initrd-generator/meson.build1
-rw-r--r--src/nm-initrd-generator/nm-initrd-generator.h2
-rw-r--r--src/nm-initrd-generator/nmi-cmdline-reader.c22
-rw-r--r--src/nm-initrd-generator/nmi-nbft-reader.c415
-rw-r--r--src/nmcli/agent.c2
-rw-r--r--src/nmcli/common.c2
-rw-r--r--src/nmcli/common.h10
-rw-r--r--src/nmcli/connections.c570
-rw-r--r--src/nmcli/connections.h12
-rw-r--r--src/nmcli/devices.c2
-rw-r--r--src/nmcli/gen-metadata-nm-settings-nmcli.xml.in24
-rw-r--r--src/nmcli/general.c2
-rw-r--r--src/nmcli/nmcli-completion5
-rw-r--r--src/nmcli/settings.c23
-rw-r--r--src/nmtui/meson.build1
-rw-r--r--src/nmtui/nm-editor-utils.c8
-rw-r--r--src/nmtui/nmt-connect-connection-list.c1
-rw-r--r--src/nmtui/nmt-editor.c45
-rw-r--r--src/nmtui/nmt-page-loopback.c68
-rw-r--r--src/nmtui/nmt-page-loopback.h33
-rwxr-xr-xsrc/tests/check-potfile-list.py137
-rw-r--r--src/tests/client/test-client.check-on-disk/test_003.expected538
-rw-r--r--src/tests/client/test-client.check-on-disk/test_004.expected718
-rwxr-xr-xsrc/tests/client/test-client.py107
-rwxr-xr-xtools/generate-docs-nm-settings-docs-gir.py28
-rwxr-xr-xtools/nm-in-container1
-rwxr-xr-xtools/nm-in-vm2
-rwxr-xr-xtools/test-networkmanager-service.py1
-rw-r--r--vapi/NM-1.0.metadata1
178 files changed, 11964 insertions, 8006 deletions
diff --git a/.gitignore b/.gitignore
index eff0e18c..bf962c8a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,6 +84,9 @@ test-*.trs
 /data/org.freedesktop.NetworkManager.policy.in
 /data/nm-sudo.service
 /data/nm-priv-helper.service
+/data/NetworkManager-config-initrd.service
+/data/NetworkManager-initrd.service
+/data/NetworkManager-wait-online-initrd.service
 
 /docs/api/version.xml
 /docs/api/settings-spec.html
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c3c36ed8..a90f3e8b 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-77ec3d923fd6'
-  CENTOS_TAG:  'tag-7a677f4838e1'
-  DEBIAN_TAG:  'tag-ecad19904683'
-  FEDORA_TAG:  'tag-7a677f4838e1'
-  UBUNTU_TAG:  'tag-ecad19904683'
+  ALPINE_TAG:  'tag-da1ae96102c6'
+  CENTOS_TAG:  'tag-c8df7d2b249f'
+  DEBIAN_TAG:  'tag-e68f538711ec'
+  FEDORA_TAG:  'tag-c8df7d2b249f'
+  UBUNTU_TAG:  'tag-e68f538711ec'
 
   ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh'
   CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh'
@@ -102,13 +102,13 @@ variables:
 # Build a container for each distribution + version. The ci-templates
 # will re-use the containers if the tag doesn't change.
 
-tier1:fedora:41@prep:
+tier1:fedora:42@prep:
   extends:
     - .fdo.container-build@fedora
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: '42'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
   rules:
@@ -198,13 +198,13 @@ tier2:alpine:edge@prep:
       when: manual
       allow_failure: true
 
-tier3:fedora:40@prep:
+tier3:fedora:41@prep:
   extends:
     - .fdo.container-build@fedora
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '40'
+    FDO_DISTRIBUTION_VERSION: '41'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
     FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
   rules:
@@ -212,13 +212,13 @@ tier3:fedora:40@prep:
       when: manual
       allow_failure: true
 
-tier3:ubuntu:24.10@prep:
+tier3:ubuntu:25.04@prep:
   extends:
     - .fdo.container-build@ubuntu
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '24.10'
+    FDO_DISTRIBUTION_VERSION: '25.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
     FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
   rules:
@@ -226,13 +226,13 @@ tier3:ubuntu:24.10@prep:
       when: manual
       allow_failure: true
 
-tier3:ubuntu:24.04@prep:
+tier3:ubuntu:24.10@prep:
   extends:
     - .fdo.container-build@ubuntu
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '24.04'
+    FDO_DISTRIBUTION_VERSION: '24.10'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
     FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
   rules:
@@ -240,13 +240,13 @@ tier3:ubuntu:24.04@prep:
       when: manual
       allow_failure: true
 
-tier3:ubuntu:22.04@prep:
+tier3:ubuntu:24.04@prep:
   extends:
     - .fdo.container-build@ubuntu
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '22.04'
+    FDO_DISTRIBUTION_VERSION: '24.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
     FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
   rules:
@@ -254,13 +254,13 @@ tier3:ubuntu:22.04@prep:
       when: manual
       allow_failure: true
 
-tier3:ubuntu:20.04@prep:
+tier3:ubuntu:22.04@prep:
   extends:
     - .fdo.container-build@ubuntu
   stage: prep
   variables:
     GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '20.04'
+    FDO_DISTRIBUTION_VERSION: '22.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
     FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
   rules:
@@ -324,20 +324,6 @@ tier3:alpine:3.19@prep:
       when: manual
       allow_failure: true
 
-tier3:alpine:3.18@prep:
-  extends:
-    - .fdo.container-build@alpine
-  stage: prep
-  variables:
-    GIT_STRATEGY: none
-    FDO_DISTRIBUTION_VERSION: '3.18'
-    FDO_DISTRIBUTION_TAG: $ALPINE_TAG
-    FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC
-  rules:
-    - if: $CI_PIPELINE_SOURCE != 'schedule'
-      when: manual
-      allow_failure: true
-
 #################################################################
 #                                                               #
 # tierN stage                                                   #
@@ -354,7 +340,7 @@ tier3:alpine:3.18@prep:
   dependencies: []
 
 
-t_fedora:41:
+t_fedora:42:
   extends:
     - .build@template
     - .fdo.distribution-image@fedora
@@ -370,10 +356,10 @@ t_fedora:41:
         - tarball
         - subtree
   variables:
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: '42'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
   needs:
-    - "tier1:fedora:41@prep"
+    - "tier1:fedora:42@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
@@ -461,73 +447,73 @@ t_alpine:edge:
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_fedora:40:
+t_fedora:41:
   extends:
     - .build@template
     - .fdo.distribution-image@fedora
     - .nm_artifacts_debug
   stage: tier3
   variables:
-    FDO_DISTRIBUTION_VERSION: '40'
+    FDO_DISTRIBUTION_VERSION: '41'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
   needs:
-    - "tier3:fedora:40@prep"
+    - "tier3:fedora:41@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_ubuntu:24.10:
+t_ubuntu:25.04:
   extends:
     - .build@template
     - .fdo.distribution-image@ubuntu
     - .nm_artifacts_debug
   stage: tier3
   variables:
-    FDO_DISTRIBUTION_VERSION: '24.10'
+    FDO_DISTRIBUTION_VERSION: '25.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
   needs:
-    - "tier3:ubuntu:24.10@prep"
+    - "tier3:ubuntu:25.04@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_ubuntu:24.04:
+t_ubuntu:24.10:
   extends:
     - .build@template
     - .fdo.distribution-image@ubuntu
     - .nm_artifacts_debug
   stage: tier3
   variables:
-    FDO_DISTRIBUTION_VERSION: '24.04'
+    FDO_DISTRIBUTION_VERSION: '24.10'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
   needs:
-    - "tier3:ubuntu:24.04@prep"
+    - "tier3:ubuntu:24.10@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_ubuntu:22.04:
+t_ubuntu:24.04:
   extends:
     - .build@template
     - .fdo.distribution-image@ubuntu
     - .nm_artifacts_debug
   stage: tier3
   variables:
-    FDO_DISTRIBUTION_VERSION: '22.04'
+    FDO_DISTRIBUTION_VERSION: '24.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
   needs:
-    - "tier3:ubuntu:22.04@prep"
+    - "tier3:ubuntu:24.04@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_ubuntu:20.04:
+t_ubuntu:22.04:
   extends:
     - .build@template
     - .fdo.distribution-image@ubuntu
     - .nm_artifacts_debug
   stage: tier3
   variables:
-    FDO_DISTRIBUTION_VERSION: '20.04'
+    FDO_DISTRIBUTION_VERSION: '22.04'
     FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
   needs:
-    - "tier3:ubuntu:20.04@prep"
+    - "tier3:ubuntu:22.04@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
@@ -587,20 +573,6 @@ t_alpine:3.19:
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
 
-t_alpine:3.18:
-  extends:
-    - .build@template
-    - .fdo.distribution-image@alpine
-    - .nm_artifacts_debug
-  stage: tier3
-  variables:
-    FDO_DISTRIBUTION_VERSION: '3.18'
-    FDO_DISTRIBUTION_TAG: $ALPINE_TAG
-  needs:
-    - "tier3:alpine:3.18@prep"
-  rules:
-    - if: $CI_PIPELINE_SOURCE != 'schedule'
-
 #################################################################
 #                                                               #
 # specific jobs                                                 #
@@ -611,10 +583,10 @@ check-patch:
   extends:
     - .fdo.distribution-image@fedora
   variables:
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: '42'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
   needs:
-    - "tier1:fedora:41@prep"
+    - "tier1:fedora:42@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE != 'schedule'
   stage: tier1
@@ -626,10 +598,10 @@ check-tree:
   extends:
     - .fdo.distribution-image@fedora
   variables:
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: '42'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
   needs:
-    - "tier1:fedora:41@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
@@ -659,9 +631,9 @@ pages:
       when: never
     - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main'
   dependencies:
-    - "t_fedora:41: [meson+gcc+docs+valgrind]"
+    - "t_fedora:42: [meson+gcc+docs+valgrind]"
   needs:
-    - "t_fedora:41: [meson+gcc+docs+valgrind]"
+    - "t_fedora:42: [meson+gcc+docs+valgrind]"
 
 triage:issues:
   stage: triage
@@ -678,11 +650,11 @@ coverity:
   extends:
     - .fdo.distribution-image@fedora
   variables:
-    FDO_DISTRIBUTION_VERSION: '41'
+    FDO_DISTRIBUTION_VERSION: '42'
     FDO_DISTRIBUTION_TAG: $FEDORA_TAG
   stage: coverity
   needs:
-    - "tier1:fedora:41@prep"
+    - "tier1:fedora:42@prep"
   rules:
     - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "weekly"
   script:
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index 39607308..526339e2 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -23,7 +23,7 @@ distributions:
   - name: fedora
     tier: 1
     versions:
-      - '41'
+      - '42'
 
   # TIER 2: distribution versions that will or might use the current NM version.
   # Run when doing a release.
@@ -54,14 +54,14 @@ distributions:
   - name: fedora
     tier: 3
     versions:
-      - '40'
+      - '41'
   - name: ubuntu
     tier: 3
     versions:
+      - '25.04'
       - '24.10'
       - '24.04'
       - '22.04'
-      - '20.04'
   - name: debian
     tier: 3
     versions:
@@ -72,4 +72,3 @@ distributions:
       - '3.21'
       - '3.20'
       - '3.19'
-      - '3.18'
\ No newline at end of file
diff --git a/.gitlab-ci/distros-info.yml b/.gitlab-ci/distros-info.yml
index d96ec125..90d23993 100644
--- a/.gitlab-ci/distros-info.yml
+++ b/.gitlab-ci/distros-info.yml
@@ -8,13 +8,13 @@ fedora:
 - version: rawhide
   support: yes
   nm: main
+- version: 42
+  support: 2026-05-13
+  nm: 1.52
+  tier1-default: yes
 - version: 41
   support: 2025-11-19
   nm: 1.50
-  tier1-default: yes
-- version: 40
-  support: 2025-05-13
-  nm: 1.46
 
 # CentOS Stream
 centos:
@@ -77,6 +77,10 @@ ubuntu:
 - version: devel
   support: yes
   nm: main
+- version: 25.04
+  name: plucky
+  support: 2026-01-15
+  nm: 1.52
 - version: 24.10
   name: oracular
   support: 2025-07-10
@@ -91,11 +95,6 @@ ubuntu:
   support: 2027-06-01
   extended-support: 2032-04-21
   nm: 1.36
-- version: 20.04
-  name: focal
-  support: 2025-05-29
-  extended-support: 2030-04-23
-  nm: 1.22
 
 # Debian:
 #   cadence: every 2 years
@@ -140,6 +139,3 @@ alpine:
 - version: 3.19
   support: 2025-11-01
   nm: 1.44
-- version: 3.18
-  support: 2025-05-09
-  nm: 1.42
diff --git a/NEWS b/NEWS
index b47b76b8..5b0a9813 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,29 @@
 =============================================
-NetworkManager-1.52.1
+NetworkManager-1.54
 Overview of changes since NetworkManager-1.52
 =============================================
-* Fail early if we cannot get current FEC
-  (Forward Error Correction) value.
-* Allow reapplying ovs-bridge and ovs-port properties.
+
+* Add support for configuring per-device IPv4 forwarding via the
+  "ipv4.forwarding" connection property.
+* Add a new "prefix-delegation" setting containing a "subnet-id"
+  property that specifies the subnet to choose on the downstream
+  interface when using IPv6 prefix delegation.
+* Support OCI baremetal in nm-cloud-setup
 * When activating a WireGuard connection to an IPv6 endpoint, now
   NetworkManager creates firewall rules to ensure that the incoming
   packets are not dropped by kernel reverse path filtering.
+* Add support for configuring the loopback interface in nmtui.
+* Most of the properties of ovs-bridge and ovs-port connections can
+  now be reapplied at runtime without bringing the connection down.
+* Add a new "sriov.preserve-on-down" property that controls whether
+  NetworkManager preserves the SR-IOV parameters set on the device
+  when the connection is deactivated, or whether it resets them to
+  their default value.
+* Introduce a new "ovs-dpdk.lsc-interrupt" property to configure the
+  Link State Change (LSC) detection mode for OVS DPDK interfaces.
+* The initrd-generator now can parse the NVMe Boot Firmware Table
+  (NBFT) to configure networking during early boot.
+* Add systemd services to provide networking in the initrd.
 
 =============================================
 NetworkManager-1.52
@@ -202,7 +218,7 @@ Overview of changes since NetworkManager-1.42
   lead to unexpected behaviors in case of multiconnect profiles.
 * Set VLAN filtering options on bridge via netlink instead of sysfs.
 * nm-cloud-setup now supports IMDSv2 on Amazon EC2.
-* nmtui now allows to enable or disable Wi-Fi and WWAN radios.
+* nmtui now supports enabling/disabling Wi-Fi and WWAN radios.
 * Honor ignore-carrier=no for bond/bridge/team devices.
 * Add version mismatch warning when running nmcli commands.
 
@@ -367,7 +383,7 @@ Overview of changes since NetworkManager-1.38
 * NetworkManager reads the kernel command line "/proc/cmdline" for several
   purposes, including "nm.debug" for enabling debugging and the
   "match.kernel-command-line" setting in the profile. NetworkManager now
-  first looks now for "/run/NetworkManager/proc-cmdline", which allows to
+  first looks now for "/run/NetworkManager/proc-cmdline", which allows one to
   overwrite the command line.
 * Improve the reapply of non-bridge properties.
 * Honor adding a Bluetooth NAP connection with all available methods.
@@ -440,7 +456,7 @@ Overview of changes since NetworkManager-1.36
 * Workaround libcurl blocking NetworkManager while resolving DNS names.
 * nmcli: indicate missing Wi-Fi hardware when showing rfkill setting.
 * nmcli: add connection migrate command to move a profile to a specified
-  settings plugin. This allows to convert profiles in the deprecated ifcfg-rh
+  settings plugin. This allows one to convert profiles in the deprecated ifcfg-rh
   format to keyfile.
 * Set "src" attribute for routes from DHCPv4 to the leased address. This
   helps with source address selection.
@@ -572,7 +588,7 @@ and 1.32.12 are also present in NetworkManager-1.34:
 * core: fix adding stale local routes when address changes.
 * initrd: tag generated profiles with origin in user data.
 * core: introduce "allowed-connections" option to disallow
-  profiles on a device. This allows to filter out profiles
+  profiles on a device. This allows one to filter out profiles
   that originate from initrd.
 * core: introduce "keep-configuration" device option to forcefully
   activate a profile on start.
@@ -633,7 +649,7 @@ Overview of changes since NetworkManager-1.30
   'nm-daemon-helper' binary is spawned to perform the lookup using
   the 'dns' NSS module.
 * dhcp: honor "ID_NET_DHCP_BROADCAST" udev attribute to set the broadcast flag.
-  This allows to configure devices in udev for which DHCPOFFER messages are to be
+  This allows one to configure devices in udev for which DHCPOFFER messages are to be
   broadcast.
 * firewall: add nftables firewall backend for configuring IPv4 NAT with shared
   mode. Now two backends are supported, "iptables" and "nftables". The default
@@ -893,16 +909,16 @@ This is a new stable release of NetworkManager.  Notable changes include:
   in allowed-ips.
 * Rework implementation of settings plugins and how profiles are presisted
   to disk. This is a large internal refactoring of the settings plugins that
-  allows to migrate a connection profile between plugins.
+  allows one to migrate a connection profile between plugins.
 * In-memory profiles are now only handled by keyfile plugin and will also be
-  persisted to /run directory. This allows to restart NetworkManager without
+  persisted to /run directory. This allows one to restart NetworkManager without
   loosing these profiles and it provides a file-system based API for creating
   in-memory profiles.
 * Keyfile plugin now supports a read-only directory of profiles under directory
   "/usr/lib/NetworkManager/system-connections". Such profiles still can be modified
   and deleted via D-Bus, which results in writing profiles to /etc or /run that
   shadow the read-only files.
-* Add new D-Bus method AddConnection2() that allows to block autoconnect of
+* Add new D-Bus method AddConnection2() that allows one to block autoconnect of
   the profile at the moment when creating the profile. Also add support for
   this API to libnm.
 * Add flag "no-reapply" to Update2() D-Bus method. Normally, when a connection
diff --git a/README.md b/README.md
index f536295a..0a56d783 100644
--- a/README.md
+++ b/README.md
@@ -112,6 +112,14 @@ contrib/fedora/rpm/NetworkManager.conf for how to enable debug logging
 in NetworkManager.
 
 
+Requirements
+------------
+
+NetworkManager requires:
+
+- Linux kernel >= 5.6 for some ethtool options (pause, eee, ring)
+
+
 Documentation
 -------------
 
diff --git a/config.h.meson b/config.h.meson
index 9ae88b26..d41304db 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -280,3 +280,8 @@
 /* Define to 1 if you have history support from -lreadline. */
 #mesondefine HAVE_READLINE_HISTORY
 
+/* Define if NBFT support is enabled */
+#mesondefine WITH_NBFT
+
+/* Define to 1 if dlvsym() is available */
+#mesondefine HAVE_DLVSYM
diff --git a/contrib/alpine/REQUIRED_PACKAGES b/contrib/alpine/REQUIRED_PACKAGES
index 358214fd..6f0e86fd 100755
--- a/contrib/alpine/REQUIRED_PACKAGES
+++ b/contrib/alpine/REQUIRED_PACKAGES
@@ -24,6 +24,7 @@ apk add \
     'jansson-dev' \
     'libgudev-dev' \
     'libndp-dev' \
+    'libnvme-dev' \
     'libnl3-dev' \
     'libpsl-dev' \
     'libsoup-dev' \
diff --git a/contrib/debian/REQUIRED_PACKAGES b/contrib/debian/REQUIRED_PACKAGES
index fa73b21a..d91e54d2 100755
--- a/contrib/debian/REQUIRED_PACKAGES
+++ b/contrib/debian/REQUIRED_PACKAGES
@@ -56,6 +56,7 @@ install \
     libndp-dev \
     libnewt-dev \
     libnss3-dev \
+    libnvme-dev \
     libpolkit-gobject-1-dev \
     libpsl-dev \
     libreadline-dev \
diff --git a/contrib/fedora/REQUIRED_PACKAGES b/contrib/fedora/REQUIRED_PACKAGES
index 1bb7ec6b..38a2cbbf 100755
--- a/contrib/fedora/REQUIRED_PACKAGES
+++ b/contrib/fedora/REQUIRED_PACKAGES
@@ -66,6 +66,7 @@ install \
     jq \
     libcurl-devel \
     libndp-devel \
+    libnvme-devel \
     libselinux-devel \
     libtool \
     libuuid-devel \
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index 22a1a49c..788e9ead 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -307,6 +307,7 @@ BuildRequires: libubsan
 BuildRequires: firewalld-filesystem
 BuildRequires: iproute
 BuildRequires: iproute-tc
+BuildRequires: libnvme-devel >= 1.5
 
 Provides: %{name}-dispatcher%{?_isa} = %{epoch}:%{version}-%{release}
 
@@ -761,6 +762,11 @@ rm -f %{buildroot}%{_libdir}/*.la
 rm -f %{buildroot}%{_libdir}/pppd/%{ppp_version}/*.la
 rm -f %{buildroot}%{nmplugindir}/*.la
 
+# Don't use the *-initrd.service files yet, wait dracut to support them
+rm -f %{buildroot}%{_unitdir}/NetworkManager-config-initrd.service
+rm -f %{buildroot}%{_unitdir}/NetworkManager-initrd.service
+rm -f %{buildroot}%{_unitdir}/NetworkManager-wait-online-initrd.service
+
 # Ensure the documentation timestamps are constant to avoid multilib conflicts
 find %{buildroot}%{_datadir}/gtk-doc -exec touch --reference meson.build '{}' \+
 
diff --git a/contrib/fedora/rpm/build_clean.sh b/contrib/fedora/rpm/build_clean.sh
index 2dbca0e7..68599bda 100755
--- a/contrib/fedora/rpm/build_clean.sh
+++ b/contrib/fedora/rpm/build_clean.sh
@@ -143,7 +143,7 @@ while [[ $# -gt 0 ]]; do
             ;;
         --no-auto-with-test)
             # by default, the script adds "-w test" (unless the command line contains
-            # "-w test" or "-W test"). This flags allows to suppress that automatism.
+            # "-w test" or "-W test"). This flag suppresses that automatism.
             # It's really only useful to test the spec file's internal default for the
             # "test" option. Otherwise, you can always just explicitly select "-w test"
             # or "-W test".
diff --git a/contrib/fedora/utils/makerepo.sh b/contrib/fedora/utils/makerepo.sh
index e81c478b..25c42db5 100755
--- a/contrib/fedora/utils/makerepo.sh
+++ b/contrib/fedora/utils/makerepo.sh
@@ -265,9 +265,11 @@ detect_dirname() {
             # At some point FEDPKG changed the behavior of "prep" command
             # now it generates the directory with "-build" suffix and the
             # real directory inside. We just move it out.
-            rm -rf $D
-            mv $D-build/$D .
-            rm -rf $D-build
+            if [ -d "$D-build" ]; then
+                rm -rf "$D"
+                mv "$D-build/$D" .
+                rm -rf "$D-build"
+            fi
             [[ -d "$D" ]] && DIRS=("${DIRS[@]}" "$D")
         done
     done
diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh
index 3864620f..4881d110 100755
--- a/contrib/scripts/nm-ci-run.sh
+++ b/contrib/scripts/nm-ci-run.sh
@@ -54,10 +54,15 @@ _WITH_WERROR=1
 _WITH_LIBTEAM="true"
 _WITH_DOCS="true"
 _WITH_SYSTEMD_LOGIND="true"
+_WITH_NBFT="true"
 if [ $IS_ALPINE = 1 ]; then
     _WITH_SYSTEMD_LOGIND="false"
 fi
 
+if ! pkgconf 'libnvme >= 1.5'; then
+    _WITH_NBFT="false"
+fi
+
 if [ -z "${NMTST_SEED_RAND+x}" ]; then
     NMTST_SEED_RAND="$SRANDOM"
     if [ -z "$NMTST_SEED_RAND" ]; then
@@ -181,6 +186,8 @@ meson setup build \
     -D ifcfg_rh=false \
     -D ifupdown=true \
     \
+    -D nbft=$_WITH_NBFT \
+    \
     #end
 
 export NM_TEST_CLIENT_CHECK_L10N=1
diff --git a/data/NetworkManager-config-initrd.service.in b/data/NetworkManager-config-initrd.service.in
new file mode 100644
index 00000000..4baf0f64
--- /dev/null
+++ b/data/NetworkManager-config-initrd.service.in
@@ -0,0 +1,27 @@
+[Unit]
+Description=NetworkManager Configuration (initrd)
+DefaultDependencies=no
+Wants=systemd-journald.socket
+After=systemd-journald.socket
+Before=systemd-udevd.service systemd-udev-trigger.service
+ConditionPathExists=/etc/initrd-release
+
+[Service]
+Type=oneshot
+ExecStartPre=/bin/sh -c "rm -f /run/NetworkManager/system-connections/*"
+ExecStart=/bin/sh -c "@libexecdir@/nm-initrd-generator -- $(cat /proc/cmdline)"
+ExecStartPost=/bin/sh -c ' \
+    for i in /{usr/lib,run,etc}/NetworkManager/system-connections/*; do \
+        [ -f "$i" ] || continue; \
+        mkdir -p /run/NetworkManager/initrd; \
+        : > /run/NetworkManager/initrd/neednet; \
+        break; \
+    done; \
+    if [ -s /run/NetworkManager/initrd/hostname ]; then \
+        cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname; \
+    fi \
+'
+RemainAfterExit=yes
+
+[Install]
+WantedBy=initrd.target
diff --git a/data/NetworkManager-initrd.service.in b/data/NetworkManager-initrd.service.in
new file mode 100644
index 00000000..aef73a57
--- /dev/null
+++ b/data/NetworkManager-initrd.service.in
@@ -0,0 +1,32 @@
+[Unit]
+Description=NetworkManager (initrd)
+DefaultDependencies=no
+Wants=systemd-udev-trigger.service network.target
+After=systemd-udev-trigger.service network-pre.target dbus.service NetworkManager-config-initrd.service
+Before=network.target
+BindsTo=dbus.service
+ConditionPathExists=/etc/initrd-release
+ConditionPathExists=/run/NetworkManager/initrd/neednet
+ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/*
+ConditionPathExistsGlob=|/run/NetworkManager/system-connections/*
+ConditionPathExistsGlob=|/etc/NetworkManager/system-connections/*
+
+[Service]
+Type=dbus
+BusName=org.freedesktop.NetworkManager
+ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
+ExecStart=@sbindir@/NetworkManager
+# NM doesn't want systemd to kill its children for it
+KillMode=process
+Environment=NM_CONFIG_ENABLE_TAG=initrd
+Restart=on-failure
+ProtectSystem=true
+ProtectHome=read-only
+
+[Install]
+WantedBy=initrd.target
+# We want to enable NetworkManager-wait-online-initrd.service whenever this
+# service is enabled. NetworkManager-wait-online-initrd.service has
+# WantedBy=network-online.target, so enabling it only has an effect if
+# network-online.target itself is enabled or pulled in by some other unit.
+Also=NetworkManager-config-initrd.service NetworkManager-wait-online-initrd.service
diff --git a/data/NetworkManager-wait-online-initrd.service.in b/data/NetworkManager-wait-online-initrd.service.in
new file mode 100644
index 00000000..da4a2522
--- /dev/null
+++ b/data/NetworkManager-wait-online-initrd.service.in
@@ -0,0 +1,26 @@
+[Unit]
+Description=NetworkManager Wait Online (initrd)
+DefaultDependencies=no
+Requires=NetworkManager-initrd.service
+After=NetworkManager-initrd.service
+Before=network-online.target
+ConditionPathExists=/etc/initrd-release
+ConditionPathExists=/run/NetworkManager/initrd/neednet
+
+[Service]
+# `nm-online -s` waits until the point when NetworkManager logs
+# "startup complete". That is when startup actions are settled and
+# devices and profiles reached a conclusive activated or deactivated
+# state. It depends on which profiles are configured to autoconnect and
+# also depends on profile settings like ipv4.may-fail/ipv6.may-fail,
+# which affect when a profile is considered fully activated.
+# Check NetworkManager logs to find out why wait-online takes a certain
+# time.
+
+Type=oneshot
+ExecStart=@bindir@/nm-online -s -q
+RemainAfterExit=yes
+Environment=NM_ONLINE_TIMEOUT=3600
+
+[Install]
+WantedBy=initrd.target network-online.target
diff --git a/data/meson.build b/data/meson.build
index facdab8d..b77bf434 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -13,6 +13,9 @@ if install_systemdunitdir
     'NetworkManager.service',
     'nm-priv-helper.service',
     'NetworkManager-wait-online.service',
+    'NetworkManager-config-initrd.service',
+    'NetworkManager-initrd.service',
+    'NetworkManager-wait-online-initrd.service',
   ]
 
   foreach service: services
diff --git a/data/nm-priv-helper.service.in b/data/nm-priv-helper.service.in
index 7b083bbb..d4ff25d9 100644
--- a/data/nm-priv-helper.service.in
+++ b/data/nm-priv-helper.service.in
@@ -2,8 +2,8 @@
 Description=NetworkManager Privileged Helper
 
 #
-# nm-priv-helper exists for privilege separation. It allows to run
-# NetworkManager without certain capabilities, and ask nm-priv-helper
+# nm-priv-helper exists for privilege separation. It allows NetworkManager
+# to run without certain capabilities, and ask nm-priv-helper
 # for special operations where more privileges are required.
 #
 
diff --git a/docs/libnm/libnm-docs.xml b/docs/libnm/libnm-docs.xml
index 4ed07939..39f62417 100644
--- a/docs/libnm/libnm-docs.xml
+++ b/docs/libnm/libnm-docs.xml
@@ -341,6 +341,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
     <xi:include href="xml/nm-setting-ovs-port.xml"/>
     <xi:include href="xml/nm-setting-ppp.xml"/>
     <xi:include href="xml/nm-setting-pppoe.xml"/>
+    <xi:include href="xml/nm-setting-prefix-delegation.xml"/>
     <xi:include href="xml/nm-setting-proxy.xml"/>
     <xi:include href="xml/nm-setting-serial.xml"/>
     <xi:include href="xml/nm-setting-sriov.xml"/>
diff --git a/examples/python/gi/gmaincontext.py b/examples/python/gi/gmaincontext.py
index fcbcd61b..da8c89c5 100755
--- a/examples/python/gi/gmaincontext.py
+++ b/examples/python/gi/gmaincontext.py
@@ -188,7 +188,7 @@ def create_nmc(dbus_connection):
     # which has an overhead.
     #
     # Also, split the GObject creation and the init_async() call in two.
-    # That allows to pass construct-only parameters, in particular like
+    # That allows one to pass construct-only parameters, in particular like
     # the instance_flags.
 
     # Create a separate context for the NMClient. The NMClient is strongly
diff --git a/examples/python/gi/secret-agent.py b/examples/python/gi/secret-agent.py
new file mode 100755
index 00000000..ed3272ab
--- /dev/null
+++ b/examples/python/gi/secret-agent.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+import gi
+
+gi.require_version("NM", "1.0")
+from gi.repository import GLib, NM, Gio
+
+# This example shows how to implement a very simple secret agent for
+# NetworkManager. The secret agent registers to the NM daemon and can
+# provide missing secrets like Wi-Fi or VPN passwords. Set environment
+# variable "LIBNM_CLIENT_DEBUG=trace" to enable libnm verbose logging.
+
+
+class SecretAgent(NM.SecretAgentOld):
+    def __init__(self):
+        super().__init__(identifier="MySecretAgent")
+        super().init()
+
+    def do_get_secrets(
+        self,
+        connection,
+        connection_path,
+        setting_name,
+        hints,
+        flags,
+        callback,
+        callback_data,
+    ):
+        print(
+            "get_secrets for '{}', interface '{}', setting '{}'".format(
+                connection.get_id(), connection.get_interface_name(), setting_name
+            )
+        )
+
+        # Implement here the logic to retrieve the secrets.
+        # As an example, we return a hardcoded Wi-Fi PSK.
+        if (
+            connection.get_connection_type() == "802-11-wireless"
+            and setting_name == "802-11-wireless-security"
+        ):
+            s_wifi = connection.get_setting_wireless()
+            ssid = NM.utils_ssid_to_utf8(s_wifi.get_ssid().get_data())
+
+            if ssid == "home":
+                secrets = GLib.Variant(
+                    "a{sa{sv}}",
+                    {
+                        "802-11-wireless-security": {
+                            "psk": GLib.Variant("s", "abcd1234")
+                        }
+                    },
+                )
+                print("Sending secrets {}".format(secrets))
+                callback(self, connection, secrets, None)
+                return
+
+        # We don't have the secret, NM will ask to another agent or fail
+        callback(
+            self,
+            connection,
+            None,
+            GLib.GError.new_literal(
+                NM.SecretAgentError.quark(),
+                "No secrets found",
+                NM.SecretAgentError.NOSECRETS,
+            ),
+        )
+
+    def do_cancel_get_secrets(self, connection_path, connection_name):
+        pass
+
+    def do_save_secrets(self, connection, connection_path, callback, callback_data):
+        # Implement this if you want to store "agent-owned" secrets
+        callback(self, connection, None)
+
+    def do_delete_secrets(self, connection, connection_path, callback, callback_data):
+        # Implement this if you want to store "agent-owned" secrets
+        callback(self, connection, None)
+
+
+def main():
+    agent = SecretAgent()
+    loop = GLib.MainLoop()
+    try:
+        loop.run()
+    except KeyboardInterrupt:
+        print("Exiting Secret Agent...")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/introspection/org.freedesktop.NetworkManager.Device.xml b/introspection/org.freedesktop.NetworkManager.Device.xml
index 36f7f5d0..085d2a1f 100644
--- a/introspection/org.freedesktop.NetworkManager.Device.xml
+++ b/introspection/org.freedesktop.NetworkManager.Device.xml
@@ -321,7 +321,7 @@
     <!--
         Reapply:
         @connection: The optional connection settings that will be reapplied on the device. If empty, the currently active settings-connection will be used. The connection cannot arbitrarily differ from the current applied-connection otherwise the call will fail. Only certain changes are supported, like adding or removing IP addresses.
-        @version_id: If non-zero, the current version id of the applied-connection must match. The current version id can be retrieved via GetAppliedConnection. This optional argument allows to catch concurrent modifications between the GetAppliedConnection call and Reapply.
+        @version_id: If non-zero, the current version id of the applied-connection must match. The current version id can be retrieved via GetAppliedConnection. This optional argument allows one to catch concurrent modifications between the GetAppliedConnection call and Reapply.
         @flags: Flags which would modify the behavior of the Reapply call. Invalid flags are rejected.
 
         Attempts to update the configuration of a device without deactivating it.
@@ -337,7 +337,7 @@
         settings-connection, or call Reapply. The Reapply call allows you to
         directly update the applied-connection and reconfigure the device. Reapply
         can also be useful if the currently applied-connection is equal to the
-        connection that is about to be reapplied. This allows to reconfigure the
+        connection that is about to be reapplied. This allows one to reconfigure the
         device and revert external changes like removing or adding an IP address
         (which NetworkManager doesn't revert automatically because it is assumed
         that the user made these changes intentionally outside of NetworkManager).
diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml
index eb8f18e7..2b427559 100644
--- a/man/NetworkManager.conf.xml
+++ b/man/NetworkManager.conf.xml
@@ -271,8 +271,7 @@ no-auto-default=*
             Set the management mode of the hostname. This parameter will
             affect only the transient hostname. If a valid static hostname is set,
             NetworkManager will skip the update of the hostname despite the value of
-            this option. An hostname empty or equal to 'localhost', 'localhost6',
-            'localhost.localdomain' or 'localhost6.localdomain' is considered invalid.
+            this option. A hostname empty or equal to '(none)' is considered invalid.
           </para>
           <para><literal>default</literal>: NetworkManager will update the
           hostname with the one provided via DHCP or reverse DNS lookup of the
@@ -943,6 +942,10 @@ ipv6.ip6-privacy=0
           <listitem><para>If configured explicitly to 0, the MTU is not reconfigured during device activation unless it is required due to IPv6 constraints. If left unspecified, a DHCP/IPv6 SLAAC provided value is used or a default of 1500.</para></listitem>
         </varlistentry>
         <varlistentry>
+          <term><varname>ipv4.forwarding</varname></term>
+          <listitem><para>Whether to configure IPv4 sysctl interface-specific forwarding. When enabled, the interface will act as a router to forward the IPv4 packet from one interface to another. If left unspecified, "auto" is used, so NetworkManager sets the IPv4 forwarding if any shared connection is active, or it will use the kernel default value otherwise. The "ipv4.forwarding" property is ignored when "ipv4.method" is set to "shared", because forwarding is always enabled in this case. The accepted values are: 0: disabled, 1: enabled, 2: auto, 3: ignored (leave the forwarding unchanged).</para></listitem>
+        </varlistentry>
+        <varlistentry>
           <term><varname>ipv4.routed-dns</varname></term>
         </varlistentry>
         <varlistentry>
@@ -1091,6 +1094,12 @@ ipv6.ip6-privacy=0
           <listitem><para>If left unspecified, drivers are autoprobed when the SR-IOV VF gets created.</para></listitem>
         </varlistentry>
         <varlistentry>
+          <term><varname>sriov.preserve-on-down</varname></term>
+          <listitem><para>Set to 0 or 1 to select whether the SR-IOV parameters are
+          preserved when the connection is deactivated. If left unspecified, default
+          to 0 (parameters are not preserved). </para></listitem>
+        </varlistentry>
+        <varlistentry>
           <term><varname>vpn.timeout</varname></term>
           <listitem><para>If left unspecified, default value of 60 seconds is used.</para></listitem>
         </varlistentry>
@@ -1375,7 +1384,7 @@ managed=1
               scanning. This defaults to <literal>yes</literal> in which case
               a random, locally-administered MAC address will be used.
               The setting <literal>wifi.scan-generate-mac-address-mask</literal>
-              allows to influence the generated MAC address to use certain vendor
+              can be used to influence the generated MAC address to use certain vendor
               OUIs.
               If disabled, the MAC address during scanning is left unchanged to
               whatever is configured.
@@ -1399,7 +1408,7 @@ managed=1
           <listitem>
             <para>
               Like the per-connection settings <literal>ethernet.generate-mac-address-mask</literal>
-              and <literal>wifi.generate-mac-address-mask</literal>, this allows to configure the
+              and <literal>wifi.generate-mac-address-mask</literal>, this can be used to configure the
               generated MAC addresses during scanning. See <citerefentry><refentrytitle>nm-settings-nmcli</refentrytitle><manvolnum>5</manvolnum></citerefentry>
               for details.
             </para>
@@ -1581,7 +1590,7 @@ managed=1
   <refsect1>
     <title><literal>global-dns-domain</literal> sections</title>
     <para>Sections with a name starting with the "global-dns-domain-"
-    prefix allow to define global DNS configuration for specific
+    prefix allow one to define global DNS configuration for specific
     domains.  The part of section name after "global-dns-domain-"
     specifies the domain name a section applies to (for example, a
     section could be named "global-dns-domain-foobar.com").  More
diff --git a/man/nm-cloud-setup.xml b/man/nm-cloud-setup.xml
index b24de6b9..af98b592 100644
--- a/man/nm-cloud-setup.xml
+++ b/man/nm-cloud-setup.xml
@@ -115,9 +115,9 @@
       <title>nm-cloud-setup.service systemd unit</title>
       <para>Usually <command>/usr/libexec/nm-cloud-setup</command> is not run directly,
       but only by <command>systemctl restart nm-cloud-setup.service</command>. This
-      ensures that the tool only runs once at any time. It also allows to integrate
-      with the nm-cloud-setup systemd timer,
-      and to enable/disable the service via systemd.</para>
+      ensures that the tool only runs once at any time.
+      The unit is also used by the nm-cloud-setup systemd timer and allows
+      enabling/disabling the service via systemd.</para>
 
       <para>As you need to set environment variable to configure nm-cloud-setup binary,
       you can do so via systemd override files. Try <command>systemctl edit nm-cloud-setup.service</command>.</para>
diff --git a/man/nm-initrd-generator.xml b/man/nm-initrd-generator.xml
index 2d3d8755..312edff2 100644
--- a/man/nm-initrd-generator.xml
+++ b/man/nm-initrd-generator.xml
@@ -154,6 +154,7 @@
             <member><option>net.ifnames</option></member>
             <member><option>rd.peerdns</option></member>
             <member><option>rd.iscsi.ibft</option></member>
+            <member><option>rd.nvmf.nonbft</option></member>
             <member><option>rd.bootif</option></member>
             <member><option>rd.neednet</option></member>
             <member><option>rd.ethtool</option></member>
diff --git a/meson.build b/meson.build
index 847f72b5..2eac4ed7 100644
--- a/meson.build
+++ b/meson.build
@@ -5,7 +5,7 @@ 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.52.1',
+  version: '1.54.0',
   license: 'GPL2+',
   default_options: [
     'buildtype=debugoptimized',
@@ -137,6 +137,9 @@ config_h.set10('HAVE_DECL_REALLOCARRAY', cc.has_function('reallocarray', prefix:
 config_h.set10('HAVE_DECL_EXPLICIT_BZERO', cc.has_function('explicit_bzero', prefix: '#include <string.h>'))
 config_h.set10('HAVE_DECL_MEMFD_CREATE', cc.has_function('memfd_create', prefix: '#include <sys/mman.h>'))
 
+config_h.set10('HAVE_DLVSYM', cc.has_function('dlvsym', prefix: '''#define _GNU_SOURCE
+                                                                   #include <dlfcn.h>'''))
+
 # types
 config_h.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
 config_h.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
@@ -173,13 +176,13 @@ endif
 
 enable_lto = get_option('b_lto')
 if enable_lto
-  if  cc.get_id() == 'clang'
-    clang_version = cc.version()
-    if clang_version <= '18.0.0'
-      error('Clang version should be greater then 18.0.0 got : ' + clang_version)
+  cc_version = cc.version()
+  if cc.get_id() == 'clang'
+    if cc_version <= '18.0.0'
+      error('Clang version should be greater than 18.0.0, got : ' + cc_version)
     endif
-  else
-    # Meson already adds '-flto'
+  elif cc_version < '12.0'
+    # GCC < 12 breaks libnm symbol versioning with LTO, use workarounds
     lto_flag = '-flto-partition=none'
     assert(cc.has_argument(lto_flag), '-flto-partition=none not supported. Disable link-time optimization with -Db_lto=false.')
     common_flags += lto_flag
@@ -929,6 +932,14 @@ if python.found()
   config_h.set_quoted('TEST_NM_PYTHON', python_path)
 endif
 
+# libnvme (NBFT support)
+enable_nbft = get_option('nbft')
+if enable_nbft
+  libnvme_dep = dependency('libnvme', version: '>= 1.5', required: false)
+  assert(libnvme_dep.found(), 'NBFT support was requested, but the libnvme library is not available. Use -Dnbft=false to build without it.')
+endif
+config_h.set10('WITH_NBFT', enable_nbft)
+
 data_conf = configuration_data()
 data_conf.set('DISTRO_NETWORK_SERVICE',                  (enable_ifcfg_rh ? 'network.service' : ''))
 data_conf.set('NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT',    config_default_logging_audit)
diff --git a/meson_options.txt b/meson_options.txt
index fe696aaf..18d8bfc4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -45,6 +45,7 @@ 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('nbft', type: 'boolean', value: true, description: 'Enable NBFT support in the initrd generator')
 
 # configuration plugins
 option('config_plugins_default', type: 'string', value: '', description: 'Default configuration option for main.plugins setting, used as fallback if the configuration option is unset')
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b41fad83..feeaf9eb 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -95,6 +95,7 @@ src/libnm-core-impl/nm-setting-hsr.c
 src/libnm-core-impl/nm-setting-infiniband.c
 src/libnm-core-impl/nm-setting-ip-config.c
 src/libnm-core-impl/nm-setting-ip-tunnel.c
+src/libnm-core-impl/nm-setting-ipvlan.c
 src/libnm-core-impl/nm-setting-ip4-config.c
 src/libnm-core-impl/nm-setting-ip6-config.c
 src/libnm-core-impl/nm-setting-loopback.c
@@ -148,6 +149,7 @@ src/libnmc-base/nm-secret-agent-simple.c
 src/libnmc-base/nm-vpn-helpers.c
 src/libnmc-setting/nm-meta-setting-access.c
 src/libnmc-setting/nm-meta-setting-desc.c
+src/libnmc-setting/nm-meta-setting-desc.h
 src/libnmc-setting/settings-docs.h.in
 src/libnmt-newt/nmt-newt-utils.c
 src/nm-online/nm-online.c
@@ -179,6 +181,7 @@ src/nmtui/nmt-page-infiniband.c
 src/nmtui/nmt-page-ip-tunnel.c
 src/nmtui/nmt-page-ip4.c
 src/nmtui/nmt-page-ip6.c
+src/nmtui/nmt-page-loopback.c
 src/nmtui/nmt-page-macsec.c
 src/nmtui/nmt-page-ppp.c
 src/nmtui/nmt-page-team-port.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 1daa617b..9bb6729b 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,20 +1,11 @@
 contrib/fedora/rpm/
 data/NetworkManager-dispatcher.service.in
 data/NetworkManager-wait-online.service.in
+data/NetworkManager-wait-online-initrd.service.in
+data/NetworkManager-initrd.service.in
 data/NetworkManager.service.in
 data/nm-priv-helper.service.in
-data/org.freedesktop.NetworkManager.policy.in
-examples/python/NetworkManager.py
-examples/python/systray/eggtrayicon.c
 src/contrib/nm-vpn-editor-plugin-call.h
 src/contrib/nm-vpn-plugin-utils.c
+src/libnm-systemd-shared/src/basic/parse-util.c
 src/nm-cloud-setup/nm-cloud-setup.service.in
-vpn-daemons/openvpn
-vpn-daemons/pptp
-vpn-daemons/vpnc
-
-# https://bugs.launchpad.net/intltool/+bug/1117944
-sub/data/org.freedesktop.NetworkManager.policy.in
-
-# from meson build directory:
-build/data/org.freedesktop.NetworkManager.policy.in
diff --git a/po/ka.po b/po/ka.po
index 577fa66c..6aea4002 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -3,15 +3,14 @@
 # Malkhaz Barkalaya მალზახ ბარკალაია <malxaz@gmail.com>
 # Lubomir Rintel <lkundrak@v3.sk>, 2016. #zanata
 # Thomas Haller <thaller@redhat.com>, 2017. #zanata
-# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2023
-
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2023-2025.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager\n"
-"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/NetworkManager/"
-"NetworkManager/issues\n"
-"POT-Creation-Date: 2023-07-06 22:00+0200\n"
-"PO-Revision-Date: 2023-07-07 09:17+0200\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-02-18 04:18+0100\n"
+"PO-Revision-Date: 2025-02-18 05:25+0100\n"
 "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
 "Language-Team: Georgian <http://mail.gnome.org/mailman/listinfo/gnome-ge-"
 "list>\n"
@@ -20,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.3.2\n"
+"X-Generator: Poedit 3.5\n"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:13
 msgid "Enable or disable system networking"
@@ -176,14 +175,14 @@ msgstr "სისტემური პოლიტიკა მიერთე
 #. * as "Wired Connection" or "VPN Connection". The %d is a number
 #. * that is combined with the first argument to create a unique
 #. * connection id.
-#: src/core/NetworkManagerUtils.c:120
+#: src/core/NetworkManagerUtils.c:121
 #, c-format
 msgctxt "connection id fallback"
 msgid "%s %u"
 msgstr "%s %u"
 
 #: src/core/devices/adsl/nm-device-adsl.c:118
-#: src/libnmc-setting/nm-meta-setting-desc.c:8463
+#: src/libnmc-setting/nm-meta-setting-desc.c:8900
 msgid "ADSL connection"
 msgstr "ADSL შეერთება"
 
@@ -225,12 +224,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 კავშირი"
 
@@ -238,7 +237,7 @@ msgstr "CDMA კავშირი"
 msgid "Unknown/unhandled Bluetooth connection type"
 msgstr "უცნობი/დაუმუშავებელი ბლუთუზის შეერთების ტიპი"
 
-#: 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 "კავშირი არ ემთხვევა მოწყობილობას"
 
@@ -250,7 +249,7 @@ msgstr "6LOWPAN კავშირი"
 msgid "Bond connection"
 msgstr "ქსელის ინტერფეისების გადაბმული შეერთება"
 
-#: src/core/devices/nm-device-bridge.c:164
+#: src/core/devices/nm-device-bridge.c:165
 msgid "Bridge connection"
 msgstr "ქსელის ინტერფეისის ხიდოვანი შეერთება"
 
@@ -264,20 +263,20 @@ msgid "Wired connection %d"
 msgstr "მავთულოვანი შეერთება %d"
 
 #: src/core/devices/nm-device-ethernet.c:1641
-#: src/libnmc-setting/nm-meta-setting-desc.c:8504
+#: src/libnmc-setting/nm-meta-setting-desc.c:8943
 msgid "Veth connection"
 msgstr "Veth შეერთება"
 
-#: src/core/devices/nm-device-ethernet.c:1699
+#: src/core/devices/nm-device-ethernet.c:1698
 msgid "PPPoE connection"
 msgstr "PPPoE შეერთება"
 
-#: src/core/devices/nm-device-ethernet.c:1699
+#: src/core/devices/nm-device-ethernet.c:1698
 msgid "Wired connection"
 msgstr "მავთულოვანი შეერთება"
 
 #: src/core/devices/nm-device-infiniband.c:160
-#: src/libnmc-setting/nm-meta-setting-desc.c:8477
+#: src/libnmc-setting/nm-meta-setting-desc.c:8915
 msgid "InfiniBand connection"
 msgstr "InfiniBand შეერთევა"
 
@@ -289,7 +288,7 @@ msgstr "IP გვირაბის შეერთება"
 msgid "Loopback connection"
 msgstr "მარყუჟი შეერთება"
 
-#: src/core/devices/nm-device-macvlan.c:366
+#: src/core/devices/nm-device-macvlan.c:365
 msgid "MACVLAN connection"
 msgstr "MACVLAN შეერთბა"
 
@@ -298,17 +297,17 @@ msgid "TUN connection"
 msgstr "TUN შეერთბა"
 
 #: src/core/devices/nm-device-vlan.c:380
-#: src/libnmc-setting/nm-meta-setting-desc.c:8505
+#: src/libnmc-setting/nm-meta-setting-desc.c:8944
 msgid "VLAN connection"
 msgstr "VLAN შეერთება"
 
 #: src/core/devices/nm-device-vrf.c:185
-#: src/libnmc-setting/nm-meta-setting-desc.c:8507
+#: src/libnmc-setting/nm-meta-setting-desc.c:8946
 msgid "VRF connection"
 msgstr "VRF შეერთბა"
 
 #: src/core/devices/nm-device-vxlan.c:385
-#: src/libnmc-setting/nm-meta-setting-desc.c:8508
+#: src/libnmc-setting/nm-meta-setting-desc.c:8947
 msgid "VXLAN connection"
 msgstr "VXLAN შეერთება"
 
@@ -320,7 +319,7 @@ msgstr "WPAN შეერთება"
 msgid "Team connection"
 msgstr "ქსელის ინტერფეისების ჯგუფოვანი შეერთება"
 
-#: src/core/devices/wifi/nm-device-olpc-mesh.c:112 src/nmcli/devices.c:1400
+#: src/core/devices/wifi/nm-device-olpc-mesh.c:112 src/nmcli/devices.c:1415
 msgid "Mesh"
 msgstr "ბადე"
 
@@ -443,10 +442,12 @@ 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 "შეერთება ბადის წერტილს არ ემთხვევა"
 
@@ -468,11 +469,11 @@ msgstr ""
 msgid "Failed to determine AP security information"
 msgstr "AP უსაფრთხოების ინფორმაციის დადგენის შეცდომა"
 
-#: src/core/dhcp/nm-dhcp-dhclient-utils.c:319
+#: src/core/dhcp/nm-dhcp-dhclient-utils.c:323
 msgid "# Created by NetworkManager\n"
 msgstr "# შექმნილია NetworkManager- ის მიერ\n"
 
-#: src/core/dhcp/nm-dhcp-dhclient-utils.c:332
+#: src/core/dhcp/nm-dhcp-dhclient-utils.c:336
 #, c-format
 msgid ""
 "# Merged from %s\n"
@@ -491,12 +492,12 @@ msgstr "%s-ში ჩაწერის შეცდომა: %s\n"
 msgid "Cannot create '%s': %s"
 msgstr "%s-ის შექმნის შეცდომა: %s"
 
-#: src/core/main-utils.c:193
+#: src/core/main-utils.c:195
 #, c-format
-msgid "%s is already running (pid %ld)\n"
-msgstr "%s უკვე გაშვებულია (pid %ld)\n"
+msgid "%s is already running (pid %lld)\n"
+msgstr "%s უკვე გაშვებულია (pid %lld)\n"
 
-#: src/core/main-utils.c:261 src/core/main.c:368
+#: src/core/main-utils.c:263 src/core/main.c:368
 #, c-format
 msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s.  სწორი პარამეტრების სიის მისაღებად გამოიყენეთ --help.\n"
@@ -550,8 +551,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:2200
-#: src/libnmc-setting/nm-meta-setting-desc.c:4346
+#: src/libnmc-setting/nm-meta-setting-desc.c:2164
+#: src/libnmc-setting/nm-meta-setting-desc.c:4310
 #, c-format
 msgid "'%s' is not valid"
 msgstr "'%s' არასწორია"
@@ -617,42 +618,43 @@ msgstr "NetworkManager-ის გამართვა"
 msgid "Show NetworkManager options"
 msgstr "NetworkManager პარამეტრების ჩვენება"
 
-#: src/core/nm-manager.c:6903 src/libnmc-setting/nm-meta-setting-desc.c:8506
+#: src/core/nm-manager.c:6990 src/libnmc-setting/nm-meta-setting-desc.c:8945
 msgid "VPN connection"
 msgstr "VPN-შეერთება"
 
-#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5650
-#: src/libnm-client-impl/nm-device.c:1780
-#: 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:196
 msgid "Bond"
 msgstr "ბმა"
 
-#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5721
-#: src/libnm-client-impl/nm-device.c:1782
-#: 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:214
 msgid "Team"
 msgstr "ჯგუფი"
 
-#: src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:6058
-#: src/libnm-client-impl/nm-device.c:1784
-#: 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:205
 msgid "Bridge"
 msgstr "ხდი"
 
-#: src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9021
-#: src/libnm-core-impl/nm-team-utils.c:2391
+#: src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9028
+#: src/libnm-core-impl/nm-team-utils.c:2395
+#, c-format
 msgid "invalid json"
 msgstr "არასწორი json-ი"
 
-#: src/libnm-client-impl/nm-client.c:3815
+#: src/libnm-client-impl/nm-client.c:3817
 #, c-format
 msgid "request succeeded with %s but object is in an unsuitable state"
 msgstr ""
 
-#: src/libnm-client-impl/nm-client.c:3907
+#: src/libnm-client-impl/nm-client.c:3909
 #, c-format
 msgid "operation succeeded but object %s does not exist"
-msgstr ""
+msgstr "ოპერაცია წარმატებულად დასრულდა, მაგრამ ობიექტი %s არ არსებობს"
 
 #: src/libnm-client-impl/nm-conn-utils.c:40
 #, c-format
@@ -698,10 +700,12 @@ 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 "მიერთება ბლუთუზის NAP ტიპისაა."
 
@@ -774,9 +778,9 @@ msgstr "მოწყობილობის არასწორი MAC მი
 #: src/libnm-client-impl/nm-device-infiniband.c:110
 #: src/libnm-client-impl/nm-device-wifi.c:490
 msgid "The MACs of the device and the connection didn't match."
-msgstr ""
+msgstr "მოწყობილობის და კავშირის MAC-ები არ ემთხვევა."
 
-#: src/libnm-client-impl/nm-device-ip-tunnel.c:266
+#: src/libnm-client-impl/nm-device-ip-tunnel.c:285
 msgid "The connection was not an IP tunnel connection."
 msgstr "შეერთება IP გვირაბის შეერთება არაა."
 
@@ -826,7 +830,7 @@ msgstr "შეერთება tun შეერთება არაა."
 
 #: src/libnm-client-impl/nm-device-tun.c:215
 msgid "The mode of the device and the connection didn't match"
-msgstr ""
+msgstr "მოწყობილობისა და კავშირის რეჟიმები არ ემთხვევა"
 
 #: src/libnm-client-impl/nm-device-vlan.c:121
 msgid "The connection was not a VLAN connection."
@@ -877,133 +881,143 @@ msgstr ""
 msgid "The connection was not a wpan connection."
 msgstr "შეერთება wpan შეერთება არაა."
 
-#: src/libnm-client-impl/nm-device.c:1760 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:1762 src/nmtui/nm-editor-utils.c:160
+#: src/libnm-client-impl/nm-device.c:1764 src/nmtui/nm-editor-utils.c:160
 #: src/nmtui/nmtui-radio.c:58
 msgid "Wi-Fi"
 msgstr "Wi-Fi"
 
-#: src/libnm-client-impl/nm-device.c:1764
+#: src/libnm-client-impl/nm-device.c:1766
 msgid "Bluetooth"
 msgstr "Bluetooth"
 
-#: src/libnm-client-impl/nm-device.c:1766
+#: src/libnm-client-impl/nm-device.c:1768
 msgid "OLPC Mesh"
 msgstr "OPLC ბადე"
 
-#: src/libnm-client-impl/nm-device.c:1768
+#: src/libnm-client-impl/nm-device.c:1770
 msgid "Open vSwitch Interface"
 msgstr "OpenvSwitch-ის ინტერფეისი"
 
-#: src/libnm-client-impl/nm-device.c:1770
+#: src/libnm-client-impl/nm-device.c:1772
 msgid "Open vSwitch Port"
 msgstr "OpenvSwitch-ის პორტი"
 
-#: src/libnm-client-impl/nm-device.c:1772
+#: src/libnm-client-impl/nm-device.c:1774
 msgid "Open vSwitch Bridge"
 msgstr "Open vSwitch ხიდი"
 
-#: src/libnm-client-impl/nm-device.c:1774
+#: src/libnm-client-impl/nm-device.c:1776
 msgid "WiMAX"
 msgstr "WiMAX"
 
-#: src/libnm-client-impl/nm-device.c:1776 src/nmtui/nm-editor-utils.c:178
+#: src/libnm-client-impl/nm-device.c:1778 src/nmtui/nm-editor-utils.c:178
 msgid "Mobile Broadband"
 msgstr "მობილური ფართოზოლოვანი ინტერნეტი"
 
-#: src/libnm-client-impl/nm-device.c:1778
-#: 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:169
 msgid "InfiniBand"
 msgstr "InfiniBand"
 
-#: src/libnm-client-impl/nm-device.c:1786
-#: 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:223
 #: src/nmtui/nmt-page-vlan.c:57
 msgid "VLAN"
 msgstr "VLAN"
 
-#: src/libnm-client-impl/nm-device.c:1788
+#: src/libnm-client-impl/nm-device.c:1790
 msgid "ADSL"
 msgstr "ADSL"
 
-#: src/libnm-client-impl/nm-device.c:1790
+#: src/libnm-client-impl/nm-device.c:1792
 msgid "MACVLAN"
 msgstr "MACVLAN"
 
-#: src/libnm-client-impl/nm-device.c:1792
+#: src/libnm-client-impl/nm-device.c:1794
 msgid "VXLAN"
 msgstr "VXLAN"
 
-#: src/libnm-client-impl/nm-device.c:1794
+#: src/libnm-client-impl/nm-device.c:1796
 msgid "IPTunnel"
 msgstr "IPTunnel"
 
-#: src/libnm-client-impl/nm-device.c:1796
+#: src/libnm-client-impl/nm-device.c:1798
 msgid "Tun"
 msgstr "Tun"
 
-#: src/libnm-client-impl/nm-device.c:1798 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:1800 src/nmtui/nm-editor-utils.c:239
+#: src/libnm-client-impl/nm-device.c:1802 src/nmtui/nm-editor-utils.c:239
 #: src/nmtui/nmt-page-macsec.c:99
 msgid "MACsec"
 msgstr "MACsec"
 
-#: src/libnm-client-impl/nm-device.c:1802
+#: src/libnm-client-impl/nm-device.c:1804
 msgid "Dummy"
 msgstr "Dummy"
 
-#: src/libnm-client-impl/nm-device.c:1804
+#: src/libnm-client-impl/nm-device.c:1806
 msgid "PPP"
 msgstr "PPP"
 
-#: src/libnm-client-impl/nm-device.c:1806
+#: 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:1808
+#: src/libnm-client-impl/nm-device.c:1810
 msgid "6LoWPAN"
 msgstr "6LoWPAN"
 
-#: src/libnm-client-impl/nm-device.c:1810
-#: 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:271
 #: src/nmtui/nmt-page-wireguard.c:57
 msgid "WireGuard"
 msgstr "WireGuard"
 
-#: src/libnm-client-impl/nm-device.c:1812
+#: src/libnm-client-impl/nm-device.c:1814
 msgid "Wi-Fi P2P"
 msgstr "Wi-Fi P2P"
 
-#: src/libnm-client-impl/nm-device.c:1814
+#: src/libnm-client-impl/nm-device.c:1816
 msgid "VRF"
 msgstr "VRF"
 
-#: src/libnm-client-impl/nm-device.c:1816
+#: src/libnm-client-impl/nm-device.c:1818
 msgid "Loopback"
 msgstr "მარყუჟი ინტერფეისი"
 
+#: src/libnm-client-impl/nm-device.c:1820
+msgid "HSR"
+msgstr "HSR"
+
+#: src/libnm-client-impl/nm-device.c:1822
+#| msgid "VLAN"
+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:1823 src/libnmc-base/nm-client-utils.c:352
-#: src/libnmc-base/nm-client-utils.c:473
+#: 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:1848
+#: src/libnm-client-impl/nm-device.c:1854
 msgid "Wired"
 msgstr "მავთულით"
 
-#: src/libnm-client-impl/nm-device.c:1880
+#: src/libnm-client-impl/nm-device.c:1886
 msgid "PCI"
 msgstr "PCI"
 
-#: src/libnm-client-impl/nm-device.c:1882
+#: src/libnm-client-impl/nm-device.c:1888
 msgid "USB"
 msgstr "USB"
 
@@ -1013,19 +1027,20 @@ msgstr "USB"
 #. * "%2$s (%1$s)" if there's no grammatical way to combine
 #. * the strings otherwise.
 #.
-#: src/libnm-client-impl/nm-device.c:2181
-#: src/libnm-client-impl/nm-device.c:2200
+#: 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:2860
+#: 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:2872
+#: src/libnm-client-impl/nm-device.c:2878
+#, c-format
 msgid "The interface names of the device and the connection didn't match"
 msgstr ""
 
@@ -1034,7 +1049,7 @@ 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 "სერვისის სახელი მითითებული არაა"
 
@@ -1094,43 +1109,86 @@ msgstr "თვისების სიგრძე 255 ბაიტზე მ
 msgid "property cannot contain any nul bytes"
 msgstr "თვისება არ შეიძლება, ნულოვან ბაიტებს შეიცავდეს"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:674
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:474
+msgid "invalid DSCP value; allowed values are: 'CS0', 'CS4', 'CS6'"
+msgstr ""
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:508
+msgid "NULL DHCP range; it should be provided as <START_IP>,<END_IP>."
+msgstr ""
+
+#: 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 <START_IP>,<END_IP>."
+msgstr ""
+
+#: 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 საბოლოოზე პატარა უნდა იყოს."
+
+#: 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 ""
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1019
 #: 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:682
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1027
 #: 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:689
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1034
 #: 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:698
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1043
 #: 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:726
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1071
 #: 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:735
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1080
 #: 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:743
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1088
 #: 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"
@@ -1160,70 +1218,71 @@ msgstr "აქვს UUID, რომელსაც ნორმალიზა
 msgid "has duplicate UUIDs"
 msgstr "გააჩნია დუბლირებული UUID-ები"
 
-#: src/libnm-core-impl/nm-connection.c:1846
+#: src/libnm-core-impl/nm-connection.c:1936
 msgid "setting not found"
 msgstr "პარამეტრი ნაპოვნი არაა"
 
-#: src/libnm-core-impl/nm-connection.c:1900
-#: src/libnm-core-impl/nm-connection.c:1925
-#: src/libnm-core-impl/nm-connection.c:1950
-msgid "setting is required for non-slave connections"
+#: 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 ""
 
-#: src/libnm-core-impl/nm-connection.c:1913
-#: src/libnm-core-impl/nm-connection.c:1938
-#: src/libnm-core-impl/nm-connection.c:1963
-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:2076
+#: src/libnm-core-impl/nm-connection.c:2166
 msgid "Unexpected failure to normalize the connection"
-msgstr ""
+msgstr "მოულოდნელი ჩავარდნა კავშირის ნორმალიზაციისას"
 
-#: src/libnm-core-impl/nm-connection.c:2137
+#: src/libnm-core-impl/nm-connection.c:2227
 msgid "Unexpected failure to verify the connection"
 msgstr ""
 
-#: src/libnm-core-impl/nm-connection.c:2174
+#: 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:3103
-#: src/libnm-core-impl/nm-setting-8021x.c:2623
-#: src/libnm-core-impl/nm-setting-8021x.c:2660
+#: 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:2816
-#: src/libnm-core-impl/nm-setting-adsl.c:173
-#: src/libnm-core-impl/nm-setting-bluetooth.c:128
-#: src/libnm-core-impl/nm-setting-bluetooth.c:192
-#: src/libnm-core-impl/nm-setting-bluetooth.c:209
-#: src/libnm-core-impl/nm-setting-cdma.c:144
-#: src/libnm-core-impl/nm-setting-connection.c:1151
-#: src/libnm-core-impl/nm-setting-connection.c:1189
-#: src/libnm-core-impl/nm-setting-connection.c:1518
-#: src/libnm-core-impl/nm-setting-ip-config.c:5500
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:407
-#: src/libnm-core-impl/nm-setting-olpc-mesh.c:99
+#: src/libnm-core-impl/nm-setting-8021x.c:2696
+#: src/libnm-core-impl/nm-setting-8021x.c:2834
+#: src/libnm-core-impl/nm-setting-adsl.c:171
+#: src/libnm-core-impl/nm-setting-bluetooth.c:126
+#: 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: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:5596
+#: 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
-#: src/libnm-core-impl/nm-setting-pppoe.c:146
-#: src/libnm-core-impl/nm-setting-vpn.c:548
+#: src/libnm-core-impl/nm-setting-pppoe.c:144
+#: src/libnm-core-impl/nm-setting-vpn.c:545
 #: src/libnm-core-impl/nm-setting-wifi-p2p.c:119
-#: src/libnm-core-impl/nm-setting-wimax.c:108
-#: src/libnm-core-impl/nm-setting-wireless-security.c:916
-#: src/libnm-core-impl/nm-setting-wireless.c:845
+#: src/libnm-core-impl/nm-setting-wimax.c:106
+#: src/libnm-core-impl/nm-setting-wireless-security.c:912
+#: src/libnm-core-impl/nm-setting-wireless.c:1100
 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 "მნიშვნელობის რიცხვების სიად აღქმა შეუძლებელია."
 
@@ -1232,66 +1291,73 @@ 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
+
+#: 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
@@ -1299,188 +1365,201 @@ 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 ""
 
-#: src/libnm-core-impl/nm-keyfile.c:1177
-#: src/libnmc-setting/nm-meta-setting-desc.c:1663
+#: src/libnm-core-impl/nm-keyfile.c:1203
+#: src/libnmc-setting/nm-meta-setting-desc.c:1654
 #, c-format
 msgid "invalid option '%s', use one of [%s]"
 msgstr "არასწორი პარამეტრი '%s'. გამოიყენეთ ერთ-ერთი სიიდან [%s]"
 
-#: src/libnm-core-impl/nm-keyfile.c:1252
+#: src/libnm-core-impl/nm-keyfile.c:1283
 msgid "ignoring invalid MAC address"
 msgstr "არასწორი MAC მისამართის გამოტოვება"
 
-#: src/libnm-core-impl/nm-keyfile.c:1328
+#: src/libnm-core-impl/nm-keyfile.c:1359
 #, c-format
 msgid "ignoring invalid bond option %s%s%s = %s%s%s: %s"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:1518
+#: src/libnm-core-impl/nm-keyfile.c:1549
 msgid "ignoring invalid SSID"
 msgstr "არასწორი SSID-ის გამოტოვება"
 
-#: src/libnm-core-impl/nm-keyfile.c:1536
+#: src/libnm-core-impl/nm-keyfile.c:1567
 msgid "ignoring invalid raw password"
 msgstr "არასწორი დაუმუშავებელი პაროლის გამოტოვება"
 
-#: src/libnm-core-impl/nm-keyfile.c:1681
+#: src/libnm-core-impl/nm-keyfile.c:1712
 msgid "invalid key/cert value"
 msgstr "არასწორი გასაღები/სერტიფიკატის მნიშვნელობა"
 
-#: src/libnm-core-impl/nm-keyfile.c:1696
+#: 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:1721 src/libnm-core-impl/nm-keyfile.c:1818
+#: 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:1734
+#: src/libnm-core-impl/nm-keyfile.c:1765
 #, c-format
 msgid "invalid PKCS#11 URI \"%s\""
 msgstr "არასწორი PKCS#11 URI \"%s\""
 
-#: src/libnm-core-impl/nm-keyfile.c:1780
+#: src/libnm-core-impl/nm-keyfile.c:1811
 msgid "invalid key/cert value data:;base64, is not base64"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:1793
+#: src/libnm-core-impl/nm-keyfile.c:1824
 msgid "invalid key/cert value data:;base64,file://"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:1834
+#: 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:1936
+#: src/libnm-core-impl/nm-keyfile.c:1967
 #, c-format
 msgid "invalid parity value '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:1958 src/libnm-core-impl/nm-keyfile.c:3540
+#: 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:1978
+#: 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:2099
+#: src/libnm-core-impl/nm-keyfile.c:2130
 #, c-format
 msgid "invalid qdisc: %s"
 msgstr "არასწორი qdisc: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:2149
+#: src/libnm-core-impl/nm-keyfile.c:2180
 #, c-format
 msgid "invalid tfilter: %s"
 msgstr "არასწორი tfilter-ი: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:3365
+#: 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:3396 src/libnm-core-impl/nm-keyfile.c:3408
-#: src/libnm-core-impl/nm-keyfile.c:3427 src/libnm-core-impl/nm-keyfile.c:3439
-#: src/libnm-core-impl/nm-keyfile.c:3451 src/libnm-core-impl/nm-keyfile.c:3513
-#: src/libnm-core-impl/nm-keyfile.c:3525
+#: 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:3481
+#: src/libnm-core-impl/nm-keyfile.c:3507
 #, c-format
 msgid "ignoring invalid byte element '%u' (not between 0 and 255 inclusive)"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3565
+#: 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 ""
+
+#: src/libnm-core-impl/nm-keyfile.c:3647
 #, c-format
 msgid "invalid setting name '%s'"
 msgstr "პარამეტრის არასწორი სახელი: '%s'"
 
-#: src/libnm-core-impl/nm-keyfile.c:3612
+#: 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:3628
+#: 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:3645
+#: 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:3702
+#: src/libnm-core-impl/nm-keyfile.c:3786
 #, c-format
 msgid "invalid peer public key in section '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3717
+#: 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 ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3740
+#: src/libnm-core-impl/nm-keyfile.c:3824
 #, c-format
 msgid "key '%s.%s' is not a valid secret flag"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3763
+#: 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 ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3779
+#: src/libnm-core-impl/nm-keyfile.c:3863
 #, c-format
 msgid "key '%s.%s' is not a valid endpoint"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3805
+#: src/libnm-core-impl/nm-keyfile.c:3889
 #, c-format
 msgid "key '%s.%s' has invalid allowed-ips"
 msgstr ""
 
-#: src/libnm-core-impl/nm-keyfile.c:3820
+#: 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:4348
+#: src/libnm-core-impl/nm-keyfile.c:4454
 #, c-format
 msgid "unsupported option \"%s.%s\" of variant type %s"
-msgstr ""
+msgstr "მხარდაუჭერელი პარამეტრი \"%s.%s\" ვარიანტის ტიპით %s"
 
-#: src/libnm-core-impl/nm-setting-6lowpan.c:80
+#: src/libnm-core-impl/nm-setting-6lowpan.c:81
+#: 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 "თვისება მითითებული არაა"
 
-#: src/libnm-core-impl/nm-setting-6lowpan.c:103
-#: src/libnm-core-impl/nm-setting-macsec.c:317
-#: src/libnm-core-impl/nm-setting-vlan.c:627
+#: src/libnm-core-impl/nm-setting-6lowpan.c:104
+#: src/libnm-core-impl/nm-setting-macsec.c:333
+#: src/libnm-core-impl/nm-setting-vlan.c:625
 #, c-format
 msgid "'%s' value doesn't match '%s=%s'"
-msgstr ""
+msgstr "'%s'-ის მნიშვნელობა არ ემთხვევა '%s=%s'"
 
-#: src/libnm-core-impl/nm-setting-6lowpan.c:119
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:380
-#: src/libnm-core-impl/nm-setting-macsec.c:333
-#: src/libnm-core-impl/nm-setting-macvlan.c:140
-#: src/libnm-core-impl/nm-setting-vlan.c:643
-#: src/libnm-core-impl/nm-setting-vxlan.c:379
+#: 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-macsec.c:349
+#: src/libnm-core-impl/nm-setting-macvlan.c:138
+#: src/libnm-core-impl/nm-setting-vlan.c:641
+#: src/libnm-core-impl/nm-setting-vxlan.c:377
 #, c-format
 msgid "'%s' is neither an UUID nor an interface name"
-msgstr ""
+msgstr "'%s' არც UUID-ია, არც ინტერფეისის სახელი"
 
 #: src/libnm-core-impl/nm-setting-8021x.c:237
 msgid "binary data missing"
@@ -1509,6 +1588,7 @@ 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 "სერტიფიკატის არასწორი სქემა"
 
@@ -1521,242 +1601,249 @@ 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 ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2628
-#: src/libnm-core-impl/nm-setting-8021x.c:2668
-#: src/libnm-core-impl/nm-setting-8021x.c:2687
-#: src/libnm-core-impl/nm-setting-8021x.c:2857
-#: src/libnm-core-impl/nm-setting-8021x.c:2877
-#: src/libnm-core-impl/nm-setting-8021x.c:2897
-#: src/libnm-core-impl/nm-setting-8021x.c:2963
-#: src/libnm-core-impl/nm-setting-8021x.c:2983
-#: src/libnm-core-impl/nm-setting-8021x.c:3037
-#: src/libnm-core-impl/nm-setting-adsl.c:181
-#: src/libnm-core-impl/nm-setting-cdma.c:149
-#: src/libnm-core-impl/nm-setting-cdma.c:159
-#: src/libnm-core-impl/nm-setting-connection.c:1161
-#: src/libnm-core-impl/nm-setting-connection.c:1204
-#: src/libnm-core-impl/nm-setting-connection.c:1456
-#: src/libnm-core-impl/nm-setting-gsm.c:399
-#: src/libnm-core-impl/nm-setting-gsm.c:414
-#: src/libnm-core-impl/nm-setting-gsm.c:457
-#: src/libnm-core-impl/nm-setting-gsm.c:466
-#: src/libnm-core-impl/nm-setting-ip-config.c:5509
-#: src/libnm-core-impl/nm-setting-ip4-config.c:286
-#: src/libnm-core-impl/nm-setting-ip4-config.c:298
-#: src/libnm-core-impl/nm-setting-pppoe.c:151
-#: src/libnm-core-impl/nm-setting-pppoe.c:161
-#: src/libnm-core-impl/nm-setting-vpn.c:556
-#: src/libnm-core-impl/nm-setting-vpn.c:566
-#: src/libnm-core-impl/nm-setting-wimax.c:109
-#: src/libnm-core-impl/nm-setting-wireless-security.c:972
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1000
-#: src/libnm-core-impl/nm-setting.c:2465
+#: src/libnm-core-impl/nm-setting-8021x.c:2646
+#: src/libnm-core-impl/nm-setting-8021x.c:2686
+#: src/libnm-core-impl/nm-setting-8021x.c:2705
+#: src/libnm-core-impl/nm-setting-8021x.c:2875
+#: src/libnm-core-impl/nm-setting-8021x.c:2895
+#: src/libnm-core-impl/nm-setting-8021x.c:2915
+#: src/libnm-core-impl/nm-setting-8021x.c:2981
+#: src/libnm-core-impl/nm-setting-8021x.c:3001
+#: src/libnm-core-impl/nm-setting-8021x.c:3055
+#: 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: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:5605
+#: 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
+#: src/libnm-core-impl/nm-setting-vpn.c:563
+#: 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:2626
+#, c-format
 msgid "property is empty"
 msgstr "თვისება ცარიელია"
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2701
+#: src/libnm-core-impl/nm-setting-8021x.c:2719
 #, c-format
 msgid "has to match '%s' property for PKCS#12"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2724
+#: src/libnm-core-impl/nm-setting-8021x.c:2742
 msgid "exactly one property must be set"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2804
+#: src/libnm-core-impl/nm-setting-8021x.c:2822
 msgid "can be enabled only on Ethernet connections"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2825
-#: src/libnm-core-impl/nm-setting-bluetooth.c:110
-#: src/libnm-core-impl/nm-setting-infiniband.c:177
-#: src/libnm-core-impl/nm-setting-infiniband.c:189
-#: src/libnm-core-impl/nm-setting-ip4-config.c:234
-#: src/libnm-core-impl/nm-setting-ip4-config.c:250
-#: src/libnm-core-impl/nm-setting-ip6-config.c:303
-#: src/libnm-core-impl/nm-setting-ip6-config.c:319
-#: src/libnm-core-impl/nm-setting-olpc-mesh.c:137
+#: src/libnm-core-impl/nm-setting-8021x.c:2843
+#: src/libnm-core-impl/nm-setting-bluetooth.c:108
+#: 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: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
 #: src/libnm-core-impl/nm-setting-wifi-p2p.c:131
-#: src/libnm-core-impl/nm-setting-wimax.c:121
-#: src/libnm-core-impl/nm-setting-wired.c:837
-#: src/libnm-core-impl/nm-setting-wired.c:850
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1012
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1024
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1036
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1049
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1062
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1093
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1160
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1209
-#: src/libnm-core-impl/nm-setting-wireless.c:941
-#: src/libnm-core-impl/nm-setting-wireless.c:953
-#: src/libnm-core-impl/nm-setting-wireless.c:966
-#: src/libnm-core-impl/nm-setting-wpan.c:163
-#: src/libnm-core-impl/nm-utils.c:4151
+#: src/libnm-core-impl/nm-setting-wimax.c:119
+#: src/libnm-core-impl/nm-setting-wired.c:1028
+#: src/libnm-core-impl/nm-setting-wired.c:1041
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1008
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1020
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1032
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1045
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1058
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1089
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1156
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1205
+#: src/libnm-core-impl/nm-setting-wireless.c:1196
+#: src/libnm-core-impl/nm-setting-wireless.c:1208
+#: 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 "არასწორი თვისება"
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2851
-#: src/libnm-core-impl/nm-setting-8021x.c:2871
-#: src/libnm-core-impl/nm-setting-8021x.c:2891
-#: src/libnm-core-impl/nm-setting-8021x.c:2957
-#: src/libnm-core-impl/nm-setting-8021x.c:2977
-#: src/libnm-core-impl/nm-setting-adsl.c:193
-#: src/libnm-core-impl/nm-setting-adsl.c:206
-#: src/libnm-core-impl/nm-setting-bluetooth.c:145
-#: src/libnm-core-impl/nm-setting-wireless-security.c:928
+#: src/libnm-core-impl/nm-setting-8021x.c:2869
+#: src/libnm-core-impl/nm-setting-8021x.c:2889
+#: src/libnm-core-impl/nm-setting-8021x.c:2909
+#: src/libnm-core-impl/nm-setting-8021x.c:2975
+#: src/libnm-core-impl/nm-setting-8021x.c:2995
+#: src/libnm-core-impl/nm-setting-adsl.c:191
+#: src/libnm-core-impl/nm-setting-adsl.c:204
+#: src/libnm-core-impl/nm-setting-bluetooth.c:143
+#: src/libnm-core-impl/nm-setting-wireless-security.c:924
 #, c-format
 msgid "'%s' is not a valid value for the property"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2910
+#: src/libnm-core-impl/nm-setting-8021x.c:2928
 #, c-format
 msgid "invalid auth flags: '%d' contains unknown flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-8021x.c:2935
+#: src/libnm-core-impl/nm-setting-8021x.c:2953
 msgid ""
 "invalid auth flags: both enable and disable are set for the same TLS version"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bluetooth.c:169
+#: src/libnm-core-impl/nm-setting-bluetooth.c:167
 #, c-format
 msgid "'%s' connection requires '%s' or '%s' setting"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bluetooth.c:221
+#: src/libnm-core-impl/nm-setting-bluetooth.c:219
 #, c-format
 msgid "'%s' connection requires '%s' setting"
 msgstr ""
 
 #: src/libnm-core-impl/nm-setting-bond-port.c:99
-#: src/libnm-core-impl/nm-setting-bridge-port.c:328
+#: src/libnm-core-impl/nm-setting-bridge-port.c:326
+#: src/libnm-core-impl/nm-setting-generic.c:100
 #: src/libnm-core-impl/nm-setting-ovs-bridge.c:151
 #: 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:323
+#: 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:338
+#: 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:333
+#: 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 ""
+msgstr "შეერთებას პარამეტრით '%s' ტიპის პორტის ტიპი უნდა იყოს '%s' და არა '%s'"
 
-#: src/libnm-core-impl/nm-setting-bond.c:526
+#: src/libnm-core-impl/nm-setting-bond.c:524
 #, c-format
 msgid "'%s' option is empty"
 msgstr "%s პარამეტრი ცარიელია"
 
-#: src/libnm-core-impl/nm-setting-bond.c:539
+#: src/libnm-core-impl/nm-setting-bond.c:537
 #, c-format
 msgid "'%s' is not a valid %s address for '%s' option"
 msgstr "'%s' არასწორი %s ტიპის მისამართია '%s' პარამეტრისთვის"
 
-#: src/libnm-core-impl/nm-setting-bond.c:567
+#: src/libnm-core-impl/nm-setting-bond.c:565
+#, c-format
 msgid "missing option name"
 msgstr "აკლია პარამეტრის სახელი"
 
-#: src/libnm-core-impl/nm-setting-bond.c:572
+#: src/libnm-core-impl/nm-setting-bond.c:570
 #, c-format
 msgid "invalid option '%s'"
 msgstr "აკლია პარამეტრი \"%s\""
 
-#: src/libnm-core-impl/nm-setting-bond.c:611
+#: src/libnm-core-impl/nm-setting-bond.c:609
 #, c-format
 msgid "invalid value '%s' for option '%s'"
 msgstr "არასწორი მნიშვნელობა \"%s\" პარამეტრისთვის %s"
 
-#: src/libnm-core-impl/nm-setting-bond.c:925
+#: src/libnm-core-impl/nm-setting-bond.c:923
 #, c-format
 msgid "mandatory option '%s' is missing"
 msgstr "პარამეტრი %s მითითებული არაა"
 
-#: src/libnm-core-impl/nm-setting-bond.c:935
+#: src/libnm-core-impl/nm-setting-bond.c:933
 #, c-format
 msgid "'%s' is not a valid value for '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:948
-#: src/libnm-core-impl/nm-setting-bond.c:959
+#: src/libnm-core-impl/nm-setting-bond.c:946
+#: src/libnm-core-impl/nm-setting-bond.c:957
 #, c-format
 msgid "'%s=%s' is incompatible with '%s > 0'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:976
+#: src/libnm-core-impl/nm-setting-bond.c:974
 #, c-format
 msgid "'%s' is not valid for the '%s' option: %s"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:988
+#: src/libnm-core-impl/nm-setting-bond.c:986
 #, c-format
 msgid "'%s' option is only valid for '%s=%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1001
+#: src/libnm-core-impl/nm-setting-bond.c:999
 #, c-format
 msgid "'%s=%s' is not a valid configuration for '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1016
-#: src/libnm-core-impl/nm-setting-bond.c:1027
-#: src/libnm-core-impl/nm-setting-bond.c:1040
+#: src/libnm-core-impl/nm-setting-bond.c:1014
+#: src/libnm-core-impl/nm-setting-bond.c:1025
+#: src/libnm-core-impl/nm-setting-bond.c:1038
 #, c-format
 msgid "'%s' option requires '%s' option to be enabled"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1057
+#: src/libnm-core-impl/nm-setting-bond.c:1055
 #, c-format
 msgid "'%s' option needs to be a value multiple of '%s' value"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1075
+#: src/libnm-core-impl/nm-setting-bond.c:1073
 #, c-format
 msgid "'%s' option requires '%s' or '%s'option to be set"
 msgstr "'%s' პარამეტრს '%s' ან '%s' პარამეტრების დაყენება სჭირდება"
 
-#: src/libnm-core-impl/nm-setting-bond.c:1087
-#: src/libnm-core-impl/nm-setting-bond.c:1097
+#: src/libnm-core-impl/nm-setting-bond.c:1085
+#: src/libnm-core-impl/nm-setting-bond.c:1095
 #, c-format
 msgid "'%s' option requires '%s' option to be set"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1110
-#: src/libnm-core-impl/nm-setting-bond.c:1122
+#: src/libnm-core-impl/nm-setting-bond.c:1108
+#: src/libnm-core-impl/nm-setting-bond.c:1120
 #, c-format
 msgid "'%s' option is only valid with mode '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1135
+#: src/libnm-core-impl/nm-setting-bond.c:1133
 #, c-format
 msgid "'%s' and '%s' cannot have different values"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1148
+#: src/libnm-core-impl/nm-setting-bond.c:1146
 #, c-format
 msgid "%s requires bond mode \"%s\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1161
+#: src/libnm-core-impl/nm-setting-bond.c:1159
 #, c-format
 msgid "%s requires xmit_hash_policy \"vlan+srcmac\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-bond.c:1184
+#: src/libnm-core-impl/nm-setting-bond.c:1182
 #, c-format
 msgid "'%s' option should be string"
 msgstr "%s სტრიქონს უნდა წარმოადგენდეს"
 
-#: src/libnm-core-impl/nm-setting-bond.c:1197
+#: src/libnm-core-impl/nm-setting-bond.c:1195
 #, c-format
 msgid "'%s' option is not valid with mode '%s'"
 msgstr ""
@@ -1795,646 +1882,743 @@ msgstr "'%s' პარამეტრი ორის ხარისხს უ
 msgid "bridge connection should have a ethernet setting as well"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1044
+#: src/libnm-core-impl/nm-setting-connection.c:1318
 #, c-format
 msgid "setting required for connection of type '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1075
+#: 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:1090
+#: src/libnm-core-impl/nm-setting-connection.c:1364
 #, c-format
 msgid "Slave connections need a valid '%s' property"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1114
+#: 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:1173
+#: src/libnm-core-impl/nm-setting-connection.c:1446
 #, c-format
 msgid "'%s' is not a valid UUID"
 msgstr "'%s' სწორი UUID არაა"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1218
+#: 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:1324
+#: src/libnm-core-impl/nm-setting-connection.c:1597
 #, c-format
-msgid "'%s' connections must be enslaved to '%s', not '%s'"
+msgid "'%s' connections must be attached as port to '%s', not '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1339
+#: 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:1353
-#: src/libnm-core-impl/nm-setting-connection.c:1367
-#: src/libnm-core-impl/nm-setting-connection.c:1381
-#: src/libnm-core-impl/nm-setting-connection.c:1442
+#: 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:1397
+#: src/libnm-core-impl/nm-setting-connection.c:1670
 msgid "\"disabled\" flag cannot be combined with other MPTCP flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1411
+#: src/libnm-core-impl/nm-setting-connection.c:1684
 msgid "cannot set both \"signal\" and \"fullmesh\" MPTCP flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1423
+#: src/libnm-core-impl/nm-setting-connection.c:1696
 #, c-format
 msgid "value %u is not a valid combination of MPTCP flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1470
+#: src/libnm-core-impl/nm-setting-connection.c:1743
 msgid "DHCP option cannot be longer than 255 characters"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1481
+#: 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:1501
+#: src/libnm-core-impl/nm-setting-connection.c:1774
 msgid "invalid permissions not in format \"user:$UNAME[:]\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1530
+#: 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 ""
+
+#: 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 ""
+
+#: src/libnm-core-impl/nm-setting-connection.c:1860
+#, c-format
+msgid "contains IPv4 address '%s', %s.%s cannot be 'true'"
+msgstr ""
+
+#: 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 ""
+
+#: src/libnm-core-impl/nm-setting-connection.c:1899
+#, c-format
+msgid "contains IPv6 address '%s', %s.%s cannot be '%s'"
+msgstr ""
+
+#: src/libnm-core-impl/nm-setting-connection.c:1914
+#, c-format
+msgid "contains IPv6 address '%s', %s.%s cannot be 'true'"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1548
+#: src/libnm-core-impl/nm-setting-connection.c:1991
 #, c-format
-msgid "slave-type '%s' requires a '%s' setting in the connection"
+msgid "port-type '%s' requires a '%s' setting in the connection"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-connection.c:1559
+#: 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'"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1585
+#: 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' ვერ "
+"ექნება"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1602
+#: src/libnm-core-impl/nm-setting-connection.c:2045
 msgid "UUID needs normalization"
 msgstr "UUID, რომელსაც ნორმალიზაცია სჭირდება"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1617
+#: 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 ""
 
-#: src/libnm-core-impl/nm-setting-dcb.c:499
+#: src/libnm-core-impl/nm-setting-dcb.c:496
 msgid "flags invalid"
 msgstr "არასწორი ალმები"
 
-#: src/libnm-core-impl/nm-setting-dcb.c:508
+#: src/libnm-core-impl/nm-setting-dcb.c:505
 msgid "flags invalid - disabled"
 msgstr "არასწორი ალმები - გამორთულია"
 
-#: src/libnm-core-impl/nm-setting-dcb.c:534
-#: src/libnm-core-impl/nm-setting-dcb.c:580
+#: src/libnm-core-impl/nm-setting-dcb.c:531
+#: src/libnm-core-impl/nm-setting-dcb.c:577
 msgid "property invalid (not enabled)"
 msgstr "თვისება არასწორია (ჩართული არაა)"
 
-#: src/libnm-core-impl/nm-setting-dcb.c:543
+#: src/libnm-core-impl/nm-setting-dcb.c:540
 msgid "element invalid"
 msgstr "არასწორი ელემენტი"
 
-#: src/libnm-core-impl/nm-setting-dcb.c:558
+#: src/libnm-core-impl/nm-setting-dcb.c:555
 msgid "sum not 100%"
 msgstr "ჯამში 100% არაა"
 
-#: src/libnm-core-impl/nm-setting-dcb.c:589
-#: src/libnm-core-impl/nm-setting-dcb.c:617
+#: src/libnm-core-impl/nm-setting-dcb.c:586
+#: src/libnm-core-impl/nm-setting-dcb.c:614
 msgid "property invalid"
 msgstr "არასწორი თვისება"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:297
+#: src/libnm-core-impl/nm-setting-ethtool.c:345
 msgid "unsupported ethtool setting"
 msgstr "მხარდაუჭერელი ethtool-ის პარამეტრი"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:306
+#: src/libnm-core-impl/nm-setting-ethtool.c:354
 msgid "setting has invalid variant type"
 msgstr "პარამეტრის ვარიანტის ტიპი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:318
+#: src/libnm-core-impl/nm-setting-ethtool.c:366
 msgid "coalesce option must be either 0 or 1"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:335
+#: src/libnm-core-impl/nm-setting-ethtool.c:385
 msgid "pause-autoneg cannot be enabled when setting rx/tx options"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:360
+#: src/libnm-core-impl/nm-setting-ethtool.c:410
+#: src/libnmc-setting/nm-meta-setting-desc.c:4552
+#, 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-gsm.c:340
+#: src/libnm-core-impl/nm-setting-generic.c:109
+#, c-format
+msgid "the property is required when %s.%s is set"
+msgstr ""
+
+#: src/libnm-core-impl/nm-setting-gsm.c:483
+#, c-format
 msgid "property value is empty"
 msgstr "თვისების მნიშვნელობა ცარიელია"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:349
+#: src/libnm-core-impl/nm-setting-gsm.c:492
+#, c-format
 msgid "property value is too long (>64)"
 msgstr "თვისების მნიშვნელობა ძალიან გრძელია (>64)"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:381
+#: src/libnm-core-impl/nm-setting-gsm.c:524
 #, c-format
 msgid "'%s' contains invalid char(s) (use [A-Za-z._-])"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-gsm.c:428
+#: src/libnm-core-impl/nm-setting-gsm.c:571
 #, c-format
 msgid "'%s' length is invalid (should be 5 or 6 digits)"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-gsm.c:442
+#: 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:479
+#: 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:492
+#: src/libnm-core-impl/nm-setting-gsm.c:635
 msgid "property must contain only digits"
 msgstr "თვისება მხოლოდ ციფრებს უნდა შეიცავდეს"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:506
+#: src/libnm-core-impl/nm-setting-gsm.c:649
 msgid "can't be enabled when manual configuration is present"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:215
+#: src/libnm-core-impl/nm-setting-hsr.c:139
+#: src/libnm-core-impl/nm-setting-hsr.c:157
+#: src/libnm-core-impl/nm-setting-veth.c:90
+#, c-format
+msgid "'%s' is not a valid interface name"
+msgstr "%s ინტერფეისის არასწორი სახელია"
+
+#: src/libnm-core-impl/nm-setting-infiniband.c:213
 msgid "Must specify a P_Key if specifying parent"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:226
+#: src/libnm-core-impl/nm-setting-infiniband.c:224
 msgid "InfiniBand P_Key connection did not specify parent interface name"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:234
+#: src/libnm-core-impl/nm-setting-infiniband.c:232
 msgid "the values 0 and 0x8000 are not allowed"
-msgstr ""
+msgstr "მნიშვნელობები 0 და 0x8000 დაშვებული არაა"
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:262
+#: src/libnm-core-impl/nm-setting-infiniband.c:260
 #, c-format
 msgid ""
 "interface name of software infiniband device must be '%s' or unset (instead "
 "it is '%s')"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:270
+#: src/libnm-core-impl/nm-setting-infiniband.c:268
 #, c-format
 msgid ""
 "interface name of software infiniband device with MAC address must be unset "
 "(instead it is '%s')"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-infiniband.c:296
+#: src/libnm-core-impl/nm-setting-infiniband.c:294
 #, c-format
 msgid "mtu can be at most %u but it is %u"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:81
+#: 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:81
+#: src/libnm-core-impl/nm-setting-ip-config.c:83
+#, c-format
 msgid "Missing IPv6 address"
 msgstr "აკლია IPv6 მისამართი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:88
+#: src/libnm-core-impl/nm-setting-ip-config.c:90
 #, c-format
 msgid "Invalid IPv4 address '%s'"
 msgstr "არასწორი IPv4 მისამართი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:89
+#: src/libnm-core-impl/nm-setting-ip-config.c:91
 #, c-format
 msgid "Invalid IPv6 address '%s'"
 msgstr "არასწორი IPv6 მისამართი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:106
+#: src/libnm-core-impl/nm-setting-ip-config.c:108
 #, c-format
 msgid "Invalid IPv4 address prefix '%u'"
 msgstr "არასწორი IPv4 მისამართის პრეფიქსი: %u"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:107
+#: src/libnm-core-impl/nm-setting-ip-config.c:109
 #, c-format
 msgid "Invalid IPv6 address prefix '%u'"
 msgstr "არასწორი IPv6 მისამართის პრეფიქსი: %u"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:124
+#: src/libnm-core-impl/nm-setting-ip-config.c:126
 #, c-format
 msgid "Invalid routing metric '%s'"
 msgstr "არასწორი რაუტინგის მეტრიკა '%s'"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1337
-#: src/libnm-core-impl/nm-setting-sriov.c:400
+#: src/libnm-core-impl/nm-setting-ip-config.c:1339
+#: src/libnm-core-impl/nm-setting-sriov.c:410
 msgid "unknown attribute"
 msgstr "(უცნობი ატრიბუტი)"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1347
-#: src/libnm-core-impl/nm-setting-sriov.c:410
+#: src/libnm-core-impl/nm-setting-ip-config.c:1349
+#: src/libnm-core-impl/nm-setting-sriov.c:420
 #, c-format
 msgid "invalid attribute type '%s'"
 msgstr "ატრიბუტის არასწორი ტიპი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1356
+#: 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:1357
+#: src/libnm-core-impl/nm-setting-ip-config.c:1359
+#, c-format
 msgid "attribute is not valid for a IPv6 route"
 msgstr "ატრიბუტი IPv6 რაუტისთვის არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1368
-#: src/libnm-core-impl/nm-setting-ip-config.c:1400
+#: src/libnm-core-impl/nm-setting-ip-config.c:1370
+#: src/libnm-core-impl/nm-setting-ip-config.c:1402
 #, c-format
 msgid "'%s' is not a valid IPv4 address"
 msgstr "%s არ წარმოადგენს სწორ IPv4 მისამართს"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1369
-#: src/libnm-core-impl/nm-setting-ip-config.c:1401
+#: src/libnm-core-impl/nm-setting-ip-config.c:1371
+#: src/libnm-core-impl/nm-setting-ip-config.c:1403
 #, c-format
 msgid "'%s' is not a valid IPv6 address"
 msgstr "%s არ წარმოადგენს სწორ IPv6 მისამართს"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1391
+#: src/libnm-core-impl/nm-setting-ip-config.c:1393
 #, c-format
 msgid "invalid prefix %s"
 msgstr "არასწორი პრეფიქსი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1423
+#: src/libnm-core-impl/nm-setting-ip-config.c:1425
 #, c-format
 msgid "%s is not a valid route type"
 msgstr "რაუტის არასწორი ტიპი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1442
+#: src/libnm-core-impl/nm-setting-ip-config.c:1444
 msgid "route weight cannot be larger than 256"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1529
+#: src/libnm-core-impl/nm-setting-ip-config.c:1531
+#, c-format
 msgid "route scope is invalid for local route"
 msgstr "რაუტის ჩარჩო არასწორია ლოკალური რაუტისთვის"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1541
+#: src/libnm-core-impl/nm-setting-ip-config.c:1543
 #, c-format
 msgid "a %s route cannot have a next-hop"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:1553
+#: src/libnm-core-impl/nm-setting-ip-config.c:1555
 #, c-format
 msgid "a %s route cannot have a ECMP multi-hop \"weight\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2741
+#: src/libnm-core-impl/nm-setting-ip-config.c:2743
 msgid "missing priority"
 msgstr "აკლია პრიორიტეტი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2754
+#: src/libnm-core-impl/nm-setting-ip-config.c:2756
 msgid "missing table"
 msgstr "აკლია ცხრილი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2764
+#: src/libnm-core-impl/nm-setting-ip-config.c:2766
 msgid "invalid action type"
 msgstr "ქმედების არასწორი ტიპი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2773
+#: src/libnm-core-impl/nm-setting-ip-config.c:2775
 msgid "has from/src but the prefix-length is zero"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2781
+#: src/libnm-core-impl/nm-setting-ip-config.c:2783
 msgid "missing from/src for a non zero prefix-length"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2788
+#: src/libnm-core-impl/nm-setting-ip-config.c:2790
 msgid "invalid from/src"
 msgstr "არასწორი წყარო/საწყისი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2795
+#: src/libnm-core-impl/nm-setting-ip-config.c:2797
 msgid "invalid prefix length for from/src"
 msgstr "წყარო/საწყისის პრეფიქსის არასწორი სიგრძე"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2804
+#: src/libnm-core-impl/nm-setting-ip-config.c:2806
 msgid "has to/dst but the prefix-length is zero"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2812
+#: src/libnm-core-impl/nm-setting-ip-config.c:2814
 msgid "missing to/dst for a non zero prefix-length"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2819
+#: src/libnm-core-impl/nm-setting-ip-config.c:2821
 msgid "invalid to/dst"
 msgstr "არასწორი სამიზნე/დანიშნულება"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2826
+#: src/libnm-core-impl/nm-setting-ip-config.c:2828
 msgid "invalid prefix length for to/dst"
 msgstr "სამიზნე/დანიშნულების პრეფიქსის არასწორი სიგრძე"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2836
+#: src/libnm-core-impl/nm-setting-ip-config.c:2838
 msgid "invalid iifname"
 msgstr "არასწორი iifname"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2846
+#: src/libnm-core-impl/nm-setting-ip-config.c:2848
 msgid "invalid oifname"
 msgstr "არასწორი oifname"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2854
+#: src/libnm-core-impl/nm-setting-ip-config.c:2856
 msgid "invalid source port range"
 msgstr "საწყისი პორტების არასწორი დიაპაზონი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2862
+#: src/libnm-core-impl/nm-setting-ip-config.c:2864
 msgid "invalid destination port range"
 msgstr "სამიზნე პორტების არასწორი დიაპაზონი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2872
+#: src/libnm-core-impl/nm-setting-ip-config.c:2874
 msgid "suppress_prefixlength out of range"
-msgstr ""
+msgstr "suppress_prefixlength დიაპაზონის გარეთაა"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:2880
+#: src/libnm-core-impl/nm-setting-ip-config.c:2882
 msgid "suppress_prefixlength is only allowed with the to-table action"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3023
+#: src/libnm-core-impl/nm-setting-ip-config.c:3025
 #, c-format
 msgid "invalid key \"%s\""
 msgstr "არასწორი გასაღები \"%s\""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3035
+#: src/libnm-core-impl/nm-setting-ip-config.c:3037
 #, c-format
 msgid "duplicate key %s"
 msgstr "დუბლირებულ გასაღები %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3051
+#: src/libnm-core-impl/nm-setting-ip-config.c:3053
 #, c-format
 msgid "invalid variant type '%s' for \"%s\""
 msgstr "ვარიანტის (%s) არასწორი ტიპი %s-სთვის"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3062
+#: src/libnm-core-impl/nm-setting-ip-config.c:3064
 msgid "missing \"family\""
 msgstr "აკლია \"ოჯახი\""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3070
+#: src/libnm-core-impl/nm-setting-ip-config.c:3072
 msgid "invalid \"family\""
 msgstr "არასწორი \"ოჯახი\""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3127
+#: src/libnm-core-impl/nm-setting-ip-config.c:3129
 msgid "\"uid-range-start\" is greater than \"uid-range-end\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3321
+#: src/libnm-core-impl/nm-setting-ip-config.c:3323
 msgid "Unsupported to-string-flags argument"
-msgstr ""
+msgstr "მხარდაუჭერელი to-string-flags არგუმენტი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3329
+#: src/libnm-core-impl/nm-setting-ip-config.c:3331
 msgid "Unsupported extra-argument"
 msgstr "მხარდაუჭერელი დამატებითი არგუმენტი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3631
+#: src/libnm-core-impl/nm-setting-ip-config.c:3633
 #, c-format
 msgid "unsupported key \"%s\""
 msgstr "მხარდაუჭერელი გასაღები '%s'"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3638
+#: src/libnm-core-impl/nm-setting-ip-config.c:3640
 #, c-format
 msgid "duplicate key \"%s\""
 msgstr "დუბლირებულ გასაღები %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3645
+#: src/libnm-core-impl/nm-setting-ip-config.c:3647
 #, c-format
 msgid "invalid value for \"%s\""
 msgstr "%s-ის არასწორი მნიშვნელობა"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3657
+#: src/libnm-core-impl/nm-setting-ip-config.c:3659
 msgid "empty text does not describe a rule"
 msgstr "ცარიელი ტექსტი წესს არ აღწერს"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3665
+#: src/libnm-core-impl/nm-setting-ip-config.c:3667
 #, c-format
 msgid "missing argument for \"%s\""
 msgstr "აკლია \"%s\"-ის არგუმენტი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3679
+#: src/libnm-core-impl/nm-setting-ip-config.c:3681
 msgid "invalid \"from\" part"
 msgstr "\"from\" ნაწილი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3695
+#: src/libnm-core-impl/nm-setting-ip-config.c:3697
 msgid "invalid \"to\" part"
 msgstr "\"სამიზნის\" არასწორი ნაწილი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3706
+#: src/libnm-core-impl/nm-setting-ip-config.c:3708
+#, c-format
 msgid "cannot detect address family for rule"
 msgstr "წესისთვის მისამართების ოჯახის დადგენა შეუძლებელია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3773
-#: src/libnm-core-impl/nm-setting-ip-config.c:3863
+#: src/libnm-core-impl/nm-setting-ip-config.c:3775
+#: src/libnm-core-impl/nm-setting-ip-config.c:3865
 #, c-format
 msgid "rule is invalid: %s"
 msgstr "არასწორი წესი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:3844
+#: src/libnm-core-impl/nm-setting-ip-config.c:3846
 msgid "invalid address family"
 msgstr "მისამართის არასწორი ოჯახი"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5125
+#: src/libnm-core-impl/nm-setting-ip-config.c:5114
 #, c-format
 msgid "rule #%u is invalid: %s"
 msgstr "წესი #%u არასწორია: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5530
+#: src/libnm-core-impl/nm-setting-ip-config.c:5622
 #, c-format
 msgid "%u. DNS server address is invalid"
 msgstr "%u. DNS სერვერის მისამართი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5550
+#: src/libnm-core-impl/nm-setting-ip-config.c:5642
 #, c-format
 msgid "%d. IP address is invalid"
 msgstr "%d. IP მისამართი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5565
+#: src/libnm-core-impl/nm-setting-ip-config.c:5657
 #, c-format
 msgid "%d. IP address has 'label' property with invalid type"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5577
+#: src/libnm-core-impl/nm-setting-ip-config.c:5669
 #, c-format
 msgid "%d. IP address has invalid label '%s'"
-msgstr ""
+msgstr "%d. IP მისამართს აქვს არასწორი ჭდე '%s'"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5595
+#: src/libnm-core-impl/nm-setting-ip-config.c:5687
 msgid "gateway cannot be set if there are no addresses configured"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5607
+#: src/libnm-core-impl/nm-setting-ip-config.c:5699
 msgid "gateway is invalid"
 msgstr "ნაგულისხმები რაუტერი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5625
+#: src/libnm-core-impl/nm-setting-ip-config.c:5717
 #, c-format
 msgid "%d. route is invalid"
 msgstr "%d. რაუტი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5638
+#: src/libnm-core-impl/nm-setting-ip-config.c:5730
 #, c-format
 msgid "invalid attribute: %s"
 msgstr "არასწორი ატრიბუტი: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5658
+#: src/libnm-core-impl/nm-setting-ip-config.c:5750
 #, c-format
 msgid "%u. rule has wrong address-family"
 msgstr "%u. წესის მისამართების-ოჯახი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5670
+#: src/libnm-core-impl/nm-setting-ip-config.c:5762
 #, c-format
 msgid "%u. rule is invalid: %s"
 msgstr "%u. წესი არასწორია: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5686
+#: src/libnm-core-impl/nm-setting-ip-config.c:5778
 #, c-format
 msgid "'%s' is not a valid IAID"
 msgstr "'%s' არასწორი IAID-ია"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5700
+#: src/libnm-core-impl/nm-setting-ip-config.c:5792
 #, c-format
 msgid "the property cannot be set when '%s' is disabled"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5726
+#: src/libnm-core-impl/nm-setting-ip-config.c:5818
 msgid "the property is currently supported only for DHCPv4"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5743
+#: src/libnm-core-impl/nm-setting-ip-config.c:5835
 #, c-format
 msgid "'%s' is not a valid IP or subnet"
 msgstr "'%s' არ წარმოადგენს სწორ არც IP-ს, არც ქვექსელს"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5759
+#: src/libnm-core-impl/nm-setting-ip-config.c:5879
 #, c-format
 msgid "a gateway is incompatible with '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:366
+#: src/libnm-core-impl/nm-setting-ip-config.c:5893
+#, c-format
+msgid "the value is inconsistent with '%s'"
+msgstr ""
+
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:364
 #, c-format
 msgid "'%d' is not a valid tunnel mode"
 msgstr "'%d' გვირაბის სწორი რეჟიმი არაა"
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:393
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:419
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:391
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:417
 #, c-format
 msgid "'%s' is not a valid IPv%c address"
 msgstr "'%s' სწორი IPv%c მისამართი არაა"
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:440
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:438
 msgid "tunnel keys can only be specified for GRE and VTI tunnels"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:453
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:471
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:451
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:469
 #, c-format
 msgid "'%s' is not a valid tunnel key"
 msgstr "'%s' გვირაბის სწორი პარამეტრი არაა"
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:485
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:483
 msgid "a fixed TTL is allowed only when path MTU discovery is enabled"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:504
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:502
 #, c-format
 msgid "some flags are invalid for the select mode: %s"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:517
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:515
 msgid "can be set only on VTI tunnels"
-msgstr ""
+msgstr "დაყენება, მხოლოდ, VTI გვირაბებზეა შესაძლებელი"
 
-#: src/libnm-core-impl/nm-setting-ip-tunnel.c:529
+#: src/libnm-core-impl/nm-setting-ip-tunnel.c:527
 #, c-format
 msgid "wired setting not allowed for mode %s"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:172
-#: src/libnm-core-impl/nm-setting-ip6-config.c:237
+#: src/libnm-core-impl/nm-setting-ip4-config.c:193
+#: src/libnm-core-impl/nm-setting-ip6-config.c:278
 #, c-format
-msgid "this property cannot be empty for '%s=%s'"
+msgid "method '%s' requires at least an address or a route"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:188
-#: src/libnm-core-impl/nm-setting-ip4-config.c:202
-#: src/libnm-core-impl/nm-setting-ip4-config.c:218
-#: src/libnm-core-impl/nm-setting-ip6-config.c:257
-#: src/libnm-core-impl/nm-setting-ip6-config.c:271
-#: src/libnm-core-impl/nm-setting-ip6-config.c:285
+#: 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
 #, c-format
 msgid "this property is not allowed for '%s=%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:262
+#: src/libnm-core-impl/nm-setting-ip4-config.c:283
 msgid "cannot enable ipv4.link-local with ipv4.method=disabled"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:274
+#: src/libnm-core-impl/nm-setting-ip4-config.c:295
 msgid "cannot disable ipv4.link-local with ipv4.method=link-local"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:310
+#: 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:323
+#: src/libnm-core-impl/nm-setting-ip4-config.c:344
 msgid "property cannot be set when dhcp-hostname is also set"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:338
+#: 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:357
+#: src/libnm-core-impl/nm-setting-ip4-config.c:378
 #, c-format
 msgid "multiple addresses are not allowed for '%s=%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:374
+#: src/libnm-core-impl/nm-setting-ip4-config.c:395
 msgid "property should be TRUE when method is set to disabled"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:337
+#: src/libnm-core-impl/nm-setting-ip6-config.c:377
 msgid "value is not a valid token"
 msgstr "მნიშვნელობა სწორ კოდს არ წარმოადგენს"
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:351
+#: src/libnm-core-impl/nm-setting-ip6-config.c:391
 msgid "only makes sense with EUI64 address generation mode"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:365
+#: src/libnm-core-impl/nm-setting-ip6-config.c:405
 msgid "invalid DUID"
 msgstr "არასწორი DUID"
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:382
+#: src/libnm-core-impl/nm-setting-ip6-config.c:422
 msgid "must be a valid IPv6 address with prefix"
 msgstr "უნდა იყოს სწორი IPv6 მისამართი, პრეფიქსით"
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:397
+#: src/libnm-core-impl/nm-setting-ip6-config.c:435
+msgid "DHCP DSCP is not supported for IPv6"
+msgstr ""
+
+#: src/libnm-core-impl/nm-setting-ip6-config.c:447
+msgid "Shared DHCP range is not supported for IPv6"
+msgstr ""
+
+#: src/libnm-core-impl/nm-setting-ip6-config.c:459
+msgid "Shared DHCP lease time is not supported for IPv6"
+msgstr ""
+
+#: 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:414
+#: src/libnm-core-impl/nm-setting-ip6-config.c:490
 msgid "property should be TRUE when method is set to ignore or disabled"
 msgstr ""
 
@@ -2444,8 +2628,9 @@ msgid "ipv4 method \"%s\" is not supported for loopback"
 msgstr ""
 
 #: src/libnm-core-impl/nm-setting-loopback.c:101
+#, c-format
 msgid "ipv4.link-local cannot be enabled for loopback"
-msgstr ""
+msgstr "ipv4.link-local მარყუჟი ინტერფეისისთვის ჩართული ვერ იქნება"
 
 #: src/libnm-core-impl/nm-setting-loopback.c:117
 #, c-format
@@ -2453,72 +2638,74 @@ msgid "ipv6 method \"%s\" is not supported for loopback"
 msgstr ""
 
 #: src/libnm-core-impl/nm-setting-loopback.c:133
+#, c-format
 msgid "a loopback profile cannot be a port"
-msgstr ""
+msgstr "მარყუჟის ტიპის პროფილი პორტი ვერ იქნება"
 
-#: src/libnm-core-impl/nm-setting-macsec.c:251
+#: src/libnm-core-impl/nm-setting-macsec.c:267
 msgid "the key is empty"
 msgstr "გასაღები ცარიელია"
 
-#: src/libnm-core-impl/nm-setting-macsec.c:261
+#: src/libnm-core-impl/nm-setting-macsec.c:277
 #, c-format
 msgid "the key must be %d characters"
-msgstr ""
+msgstr "გასაღები %d სიმბოლო უნდა იყოს"
 
-#: src/libnm-core-impl/nm-setting-macsec.c:271
+#: src/libnm-core-impl/nm-setting-macsec.c:287
 msgid "the key must have an even number of characters between 2 and 64"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-macsec.c:280
+#: src/libnm-core-impl/nm-setting-macsec.c:296
 msgid "the key contains non-hexadecimal characters"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-macsec.c:349
-#: src/libnm-core-impl/nm-setting-macvlan.c:156
-#: src/libnm-core-impl/nm-setting-vlan.c:656
+#: 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 ""
 
-#: src/libnm-core-impl/nm-setting-macsec.c:380
+#: src/libnm-core-impl/nm-setting-macsec.c:396
 #, c-format
 msgid "EAP key management requires '%s' setting presence"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-macsec.c:389
+#: src/libnm-core-impl/nm-setting-macsec.c:405
 msgid "must be either psk (0) or eap (1)"
-msgstr ""
+msgstr "უნდა იყოს ან psk (0), ან eap (1)"
 
-#: src/libnm-core-impl/nm-setting-macsec.c:400
+#: src/libnm-core-impl/nm-setting-macsec.c:416
 msgid "only valid for psk mode"
 msgstr "მხოლოდ სწორია psk რეჟიმისთვს"
 
-#: src/libnm-core-impl/nm-setting-macvlan.c:171
+#: src/libnm-core-impl/nm-setting-macvlan.c:169
 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
-#: src/libnm-core-impl/nm-setting-match.c:708
+#, c-format
 msgid "is empty"
 msgstr "ცარიელია"
 
-#: src/libnm-core-impl/nm-setting-olpc-mesh.c:112
-#: src/libnm-core-impl/nm-setting-wireless.c:858
+#: src/libnm-core-impl/nm-setting-olpc-mesh.c:110
+#: src/libnm-core-impl/nm-setting-wireless.c:1113
 msgid "SSID length is out of range <1-32> bytes"
 msgstr "SSID-ის სიგრძე დაშვებულ (<1-32> ბაიტი) დიაპაზონს გარეთაა"
 
-#: src/libnm-core-impl/nm-setting-olpc-mesh.c:124
-#: src/libnm-core-impl/nm-setting-wireless.c:911
+#: src/libnm-core-impl/nm-setting-olpc-mesh.c:122
+#: src/libnm-core-impl/nm-setting-wireless.c:1166
 #, c-format
 msgid "'%d' is not a valid channel"
 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 ""
+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
@@ -2527,6 +2714,7 @@ 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
 msgid "must be a power of two"
 msgstr "ორის ხარისხს უნდა წარმოადგენდეს"
 
@@ -2598,18 +2786,20 @@ msgid "A connection with ovs-interface.type '%s' setting a 'ovs-patch' setting"
 msgstr ""
 
 #: 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 master."
-msgstr ""
+msgid "A connection with a '%s' setting must have a controller."
+msgstr "შეერთებას პარამეტრით '%s' არ შეიძლება, კონტროლერი ჰქონდეს."
 
 #: src/libnm-core-impl/nm-setting-ovs-port.c:347
 msgid "VLANs must be between 0 and 4095"
@@ -2645,65 +2835,70 @@ msgstr "%s დაუშვებელია lacp-ში"
 msgid "'%s' is not allowed in bond_mode"
 msgstr "%s bond_mode-ში დაუშვებელია"
 
-#: src/libnm-core-impl/nm-setting-ppp.c:353
+#: src/libnm-core-impl/nm-setting-ppp.c:350
 #, c-format
 msgid "'%d' is out of valid range <128-16384>"
 msgstr "'%d' დასაშვებ დიაპაზონს <128-16384> გარეთაა"
 
-#: src/libnm-core-impl/nm-setting-ppp.c:366
+#: src/libnm-core-impl/nm-setting-ppp.c:363
 #, c-format
 msgid "setting this property requires non-zero '%s' property"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-proxy.c:138
+#: src/libnm-core-impl/nm-setting-proxy.c:137
+#, c-format
 msgid "invalid proxy method"
 msgstr "არასწორ პროქსის მეთოდი"
 
-#: src/libnm-core-impl/nm-setting-proxy.c:148
-#: src/libnm-core-impl/nm-setting-proxy.c:160
+#: 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:174
+#: 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:185
+#: src/libnm-core-impl/nm-setting-proxy.c:184
+#, c-format
 msgid "the script is not valid utf8"
 msgstr "სკრიპტი სწორ UTF-8-ს არ წარმოადგენს"
 
-#: src/libnm-core-impl/nm-setting-proxy.c:196
+#: src/libnm-core-impl/nm-setting-proxy.c:195
+#, c-format
 msgid "the script lacks FindProxyForURL function"
-msgstr ""
+msgstr "სკრიპტს აკლია ფუნქცია FindProxyForURL"
 
-#: src/libnm-core-impl/nm-setting-sriov.c:422
-#: src/libnm-core-impl/nm-setting-wired.c:804
-#: src/libnm-core-impl/nm-setting-wired.c:820
-#: src/libnm-core-impl/nm-setting-wired.c:894
-#: src/libnm-core-impl/nm-setting-wired.c:953
-#: src/libnm-core-impl/nm-setting-wireless.c:1001
-#: src/libnm-core-impl/nm-setting-wireless.c:1020
-#: src/libnmc-setting/nm-meta-setting-desc.c:4295
+#: src/libnm-core-impl/nm-setting-sriov.c:432
+#: 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:4259
 #, c-format
 msgid "'%s' is not a valid MAC address"
 msgstr "'%s' სწორ MAC მისამართს არ წარმოადგენს"
 
-#: src/libnm-core-impl/nm-setting-sriov.c:1045
+#: src/libnm-core-impl/nm-setting-sriov.c:1103
 #, c-format
 msgid "VF with index %u, but the total number of VFs is %u"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-sriov.c:1059
+#: src/libnm-core-impl/nm-setting-sriov.c:1117
 #, c-format
 msgid "invalid VF %u: %s"
 msgstr "არასწორი VF %u: %s"
 
-#: src/libnm-core-impl/nm-setting-sriov.c:1073
+#: src/libnm-core-impl/nm-setting-sriov.c:1131
 #, c-format
 msgid "duplicate VF index %u"
 msgstr "დუბლირებული VF ინდექსი %u"
 
-#: src/libnm-core-impl/nm-setting-sriov.c:1097
+#: src/libnm-core-impl/nm-setting-sriov.c:1155
 #, c-format
 msgid "VFs %d and %d are not sorted by ascending index"
 msgstr ""
@@ -2711,6 +2906,7 @@ msgstr ""
 #: src/libnm-core-impl/nm-setting-tc-config.c:54
 #: src/libnm-core-impl/nm-setting-tc-config.c:420
 #: src/libnm-core-impl/nm-setting-tc-config.c:697
+#, c-format
 msgid "kind is missing"
 msgstr "ტიპი მითითებული არაა"
 
@@ -2728,54 +2924,55 @@ msgstr "მშობლის დამმუშავებელი მით
 
 #: src/libnm-core-impl/nm-setting-tc-config.c:1284
 msgid "there are duplicate TC qdiscs"
-msgstr ""
+msgstr "არსებობს გამეორებული TC qdisc-ები"
 
 #: src/libnm-core-impl/nm-setting-tc-config.c:1303
 msgid "there are duplicate TC filters"
-msgstr ""
+msgstr "არსებობს გამეორებული TC filter-ები"
 
 #: src/libnm-core-impl/nm-setting-team.c:119
-#: src/libnm-core-impl/nm-setting-team.c:193
-#: src/libnm-core-impl/nm-setting-team.c:325
+#: src/libnm-core-impl/nm-setting-team.c:189
+#: src/libnm-core-impl/nm-setting-team.c:321
 #, c-format
 msgid "%s is out of range [0, %d]"
 msgstr "%s დიაპაზონს გარეთაა [0, %d]"
 
-#: src/libnm-core-impl/nm-setting-team.c:170
+#: src/libnm-core-impl/nm-setting-team.c:166
+#, c-format
 msgid "Missing target-host in nsna_ping link watcher"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-team.c:178
-#: src/libnm-core-impl/nm-setting-team.c:301
+#: src/libnm-core-impl/nm-setting-team.c:174
+#: src/libnm-core-impl/nm-setting-team.c:297
 #, c-format
 msgid "target-host '%s' contains invalid characters"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-team.c:292
+#: src/libnm-core-impl/nm-setting-team.c:288
 #, c-format
 msgid "Missing %s in arp_ping link watcher"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-team.c:310
+#: src/libnm-core-impl/nm-setting-team.c:306
 #, c-format
 msgid "source-host '%s' contains invalid characters"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-team.c:335
+#: src/libnm-core-impl/nm-setting-team.c:331
 msgid "vlanid is out of range [-1, 4094]"
 msgstr "vlanid-ის მნიშვნელობა დიაპაზონს [-1,4094] გარეთაა"
 
-#: src/libnm-core-impl/nm-setting-tun.c:165
+#: src/libnm-core-impl/nm-setting-tun.c:162
 #, c-format
 msgid "'%u': invalid mode"
 msgstr "'%u': არასწორი რეჟიმი"
 
-#: src/libnm-core-impl/nm-setting-tun.c:176
+#: src/libnm-core-impl/nm-setting-tun.c:173
 #, c-format
 msgid "'%s': invalid user ID"
 msgstr "\"%s\": მომხმარებლის არასწორი ID"
 
-#: src/libnm-core-impl/nm-setting-tun.c:188
+#: src/libnm-core-impl/nm-setting-tun.c:185
 #, c-format
 msgid "'%s': invalid group ID"
 msgstr "\"%s\": არასწორი ჯგუფის ID"
@@ -2797,52 +2994,48 @@ msgstr ""
 msgid "maximum number of user data entries reached (%u instead of %u)"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-veth.c:90
-#, c-format
-msgid "'%s' is not a valid interface name"
-msgstr "%s ინტერფეისის არასწორი სახელია"
-
-#: src/libnm-core-impl/nm-setting-vlan.c:668
+#: src/libnm-core-impl/nm-setting-vlan.c:666
 #, c-format
 msgid "the vlan id must be in range 0-4094 but is %u"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-vlan.c:678
+#: src/libnm-core-impl/nm-setting-vlan.c:676
 msgid "flags are invalid"
 msgstr "არასწორი ალმები"
 
-#: src/libnm-core-impl/nm-setting-vlan.c:687
+#: src/libnm-core-impl/nm-setting-vlan.c:685
 #, c-format
 msgid "invalid VLAN protocol %s: must be '802.1Q' or '802.1ad'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-vlan.c:700
+#: src/libnm-core-impl/nm-setting-vlan.c:698
 msgid "vlan setting should have a ethernet setting as well"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-vpn.c:576
+#: src/libnm-core-impl/nm-setting-vpn.c:573
 msgid "cannot set connection.multi-connect for VPN setting"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-vpn.c:615
+#: src/libnm-core-impl/nm-setting-vpn.c:647
 msgid "setting contained a secret with an empty name"
 msgstr "პარამეტრი ცარიელი სახელის მქონე საიდუმლოს შეიცავდა"
 
-#: src/libnm-core-impl/nm-setting-vpn.c:654
-#: src/libnm-core-impl/nm-setting.c:3400
+#: src/libnm-core-impl/nm-setting-vpn.c:694
+#: src/libnm-core-impl/nm-setting.c:3579
 msgid "not a secret property"
 msgstr "არ წარმოადგენს საიდუმლო თვისებას"
 
-#: src/libnm-core-impl/nm-setting-vpn.c:662
+#: src/libnm-core-impl/nm-setting-vpn.c:702
 msgid "secret is not of correct type"
 msgstr "საიდუმლოს ტიპი სწორი არაა"
 
-#: src/libnm-core-impl/nm-setting-vpn.c:744
-#: src/libnm-core-impl/nm-setting-vpn.c:794
+#: 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 "საიდუმლოს სახელი ცარიელი ვერ იქნება"
 
-#: src/libnm-core-impl/nm-setting-vpn.c:760
+#: src/libnm-core-impl/nm-setting-vpn.c:805
 msgid "secret flags property not found"
 msgstr "საიდუმლოს ალმების თვისება ვერ ვიპოვე"
 
@@ -2850,537 +3043,661 @@ msgstr "საიდუმლოს ალმების თვისება
 msgid "table cannot be zero"
 msgstr "ცხრილი ნულოვანი ვერ იქნება"
 
-#: src/libnm-core-impl/nm-setting-vxlan.c:356
-#: src/libnm-core-impl/nm-setting-vxlan.c:367
+#: src/libnm-core-impl/nm-setting-vxlan.c:354
+#: src/libnm-core-impl/nm-setting-vxlan.c:365
 #, c-format
 msgid "'%s' is not a valid IP%s address"
 msgstr "%s არასწორი IP%s მისამართია"
 
-#: src/libnm-core-impl/nm-setting-vxlan.c:390
+#: src/libnm-core-impl/nm-setting-vxlan.c:388
 #, c-format
 msgid "%d is greater than local port max %d"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:784
+#: src/libnm-core-impl/nm-setting-wired.c:973
 #, c-format
 msgid "'%s' is not a valid Ethernet port value"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:794
+#: src/libnm-core-impl/nm-setting-wired.c:983
 #, c-format
 msgid "'%s' is not a valid duplex value"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:867
+#: src/libnm-core-impl/nm-setting-wired.c:1058
 #, c-format
 msgid "invalid key '%s'"
 msgstr "არასწორი გასაღები \"%s\""
 
-#: src/libnm-core-impl/nm-setting-wired.c:879
+#: src/libnm-core-impl/nm-setting-wired.c:1070
 #, c-format
 msgid "invalid value for key '%s'"
 msgstr "გასაღების (%s) არასწორი მნიშვნელობა"
 
-#: src/libnm-core-impl/nm-setting-wired.c:928
+#: src/libnm-core-impl/nm-setting-wired.c:1119
 msgid "Wake-on-LAN mode 'default' and 'ignore' are exclusive flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:941
+#: src/libnm-core-impl/nm-setting-wired.c:1132
 msgid "Wake-on-LAN password can only be used with magic packet mode"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:972
+#: src/libnm-core-impl/nm-setting-wired.c:1163
 msgid "both speed and duplex should have a valid value or both should be unset"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wired.c:973
+#: src/libnm-core-impl/nm-setting-wired.c:1164
 msgid "both speed and duplex are required for static link configuration"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:748
+#: src/libnm-core-impl/nm-setting-wireguard.c:747
 msgid "missing public-key for peer"
 msgstr "პარტნიორის საჯარო-გასაღები მითითებული არაა"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:754
+#: src/libnm-core-impl/nm-setting-wireguard.c:753
 msgid "invalid public-key for peer"
 msgstr "პარტნიორის საჯარო-გასაღები არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:764
+#: src/libnm-core-impl/nm-setting-wireguard.c:763
 msgid "invalid preshared-key for peer"
 msgstr "პარტნიორის წინასწარ-გაზიარებული-გასაღები არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:783
+#: src/libnm-core-impl/nm-setting-wireguard.c:782
 msgid "invalid endpoint for peer"
 msgstr "პარტნიორის ბოლოწერტილი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:795
+#: src/libnm-core-impl/nm-setting-wireguard.c:794
 #, c-format
 msgid "invalid IP address \"%s\" for allowed-ip of peer"
 msgstr "პარტნიორის არასწორი დაშვებული IP მისამართი: %s"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:806
+#: src/libnm-core-impl/nm-setting-wireguard.c:805
 msgid "invalid preshared-key-flags for peer"
 msgstr "პარტნიორის წინასწარ-გაზიარებული-გასაღების-ალმები არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1588
+#: src/libnm-core-impl/nm-setting-wireguard.c:1587
 #, c-format
 msgid "peer #%u has no public-key"
-msgstr ""
+msgstr "პარტნიორს #%u საჯარო გასაღები არ აქვს"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1601
+#: src/libnm-core-impl/nm-setting-wireguard.c:1600
 #, c-format
 msgid "peer #%u has invalid public-key"
-msgstr ""
+msgstr "პარტნიორის #%u საჯარო გასაღები არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1617
+#: src/libnm-core-impl/nm-setting-wireguard.c:1616
 #, c-format
 msgid "peer #%u has invalid endpoint"
-msgstr ""
+msgstr "პარტნიორის #%u ბოლოწერტილი არასწორია"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1649
+#: src/libnm-core-impl/nm-setting-wireguard.c:1648
 #, c-format
 msgid "peer #%u has invalid allowed-ips setting"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1663
+#: src/libnm-core-impl/nm-setting-wireguard.c:1662
 #, c-format
 msgid "peer #%u is invalid: %s"
 msgstr "პარტნიორის #%u არასწორია: %s"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1735
-#: src/libnm-core-impl/nm-setting-wireguard.c:1754
+#: src/libnm-core-impl/nm-setting-wireguard.c:1734
+#: src/libnm-core-impl/nm-setting-wireguard.c:1753
 #, c-format
 msgid "method \"%s\" is not supported for WireGuard"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1778
+#: src/libnm-core-impl/nm-setting-wireguard.c:1777
 msgid "key must be 32 bytes base64 encoded"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1909
+#: src/libnm-core-impl/nm-setting-wireguard.c:1908
 msgid "invalid peer secrets"
 msgstr "პარტნიორის არასწორი საიდუმლო ფრაზები"
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1935
+#: src/libnm-core-impl/nm-setting-wireguard.c:1934
 #, c-format
 msgid "peer #%u lacks public-key"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireguard.c:1952
+#: src/libnm-core-impl/nm-setting-wireguard.c:1951
 #, c-format
 msgid "non-existing peer '%s'"
-msgstr ""
+msgstr "არარსებული პარტნიორი '%s'"
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:942
+#: src/libnm-core-impl/nm-setting-wireless-security.c:938
 #, c-format
 msgid "'%s' is not a valid value for '%s' mode connections"
 msgstr "%s არ წარმოადგენს სწორ მნიშვნელობას '%s' რეჟიმის შეერთებებისთვის"
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:958
+#: src/libnm-core-impl/nm-setting-wireless-security.c:954
 #, c-format
 msgid "'%s' security requires '%s=%s'"
-msgstr ""
+msgstr "'%s' უსაფრთხოება მოითხოვს '%s=%s'"
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:987
+#: src/libnm-core-impl/nm-setting-wireless-security.c:983
 #, c-format
 msgid "'%s' security requires '%s' setting presence"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1076
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1072
 #, c-format
 msgid "'%s' can only be used with '%s=%s' (WEP)"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1113
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1109
 #, c-format
 msgid ""
 "'%s' can only be used with 'owe', 'wpa-psk', 'sae', 'wpa-eap' or 'wpa-eap-"
 "suite-b-192' key management"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless-security.c:1131
+#: src/libnm-core-impl/nm-setting-wireless-security.c:1127
+#, c-format
 msgid ""
 "pmf can only be 'default' or 'required' when using 'owe', 'sae' or 'wpa-eap-"
 "suite-b-192' key management"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:870
+#: src/libnm-core-impl/nm-setting-wireless.c:1125
 #, c-format
 msgid "'%s' is not a valid Wi-Fi mode"
-msgstr ""
+msgstr "'%s' swori Wi-Fi-ის რეჟიმი არაა"
 
-#: src/libnm-core-impl/nm-setting-wireless.c:883
+#: src/libnm-core-impl/nm-setting-wireless.c:1138
 #, c-format
 msgid "'%s' is not a valid band"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:896
+#: src/libnm-core-impl/nm-setting-wireless.c:1151
 #, c-format
 msgid "'%s' requires setting '%s' property"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:926
+#: src/libnm-core-impl/nm-setting-wireless.c:1181
 #, c-format
 msgid "'%s' requires '%s' and '%s' property"
 msgstr "'%s'-ს '%s' და '%s' თვისებები სჭირდება"
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1038
-#: src/libnm-core-impl/nm-team-utils.c:2251
+#: src/libnm-core-impl/nm-setting-wireless.c:1295
+#: src/libnm-core-impl/nm-team-utils.c:2254
+#, c-format
 msgid "invalid value"
 msgstr "არასწორი მნიშვნელობა"
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1051
+#: src/libnm-core-impl/nm-setting-wireless.c:1308
 msgid "Wake-on-WLAN mode 'default' and 'ignore' are exclusive flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1062
+#: src/libnm-core-impl/nm-setting-wireless.c:1319
 msgid "Wake-on-WLAN trying to set unknown flag"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1075
+#: src/libnm-core-impl/nm-setting-wireless.c:1332
 msgid "AP isolation can be set only in AP mode"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1099
+#: src/libnm-core-impl/nm-setting-wireless.c:1345
+msgid "a specific channel width can be set only in AP mode"
+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 ""
+
+#: src/libnm-core-impl/nm-setting-wireless.c:1389
+#, c-format
 msgid "conflicting value of mac-address-randomization and cloned-mac-address"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wireless.c:1111
+#: src/libnm-core-impl/nm-setting-wireless.c:1401
+#, c-format
 msgid "property is deprecated and not implemented"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wpan.c:173
+#: src/libnm-core-impl/nm-setting-wpan.c:174
 msgid "page must be defined along with a channel"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wpan.c:182
+#: src/libnm-core-impl/nm-setting-wpan.c:183
 #, c-format
 msgid "page must be between %d and %d"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting-wpan.c:193
+#: src/libnm-core-impl/nm-setting-wpan.c:194
 #, c-format
 msgid "channel must not be between %d and %d"
 msgstr ""
 
-#: src/libnm-core-impl/nm-setting.c:1713 src/libnm-core-impl/nm-setting.c:1753
-#: src/libnm-core-impl/nm-setting.c:2064
+#: 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 ""
 
-#: src/libnm-core-impl/nm-setting.c:1729
+#: 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 ""
 
-#: src/libnm-core-impl/nm-setting.c:1774
+#: 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:2003
+#: src/libnm-core-impl/nm-setting.c:2064
+#, c-format
 msgid "duplicate property"
 msgstr "დუბლირებული თვისება"
 
-#: src/libnm-core-impl/nm-setting.c:2023
+#: src/libnm-core-impl/nm-setting.c:2084
+#, c-format
 msgid "unknown property"
 msgstr "უცნობი თვისება"
 
-#: src/libnm-core-impl/nm-setting.c:2097 src/libnm-core-impl/nm-setting.c:2179
+#: 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:3297
+#: src/libnm-core-impl/nm-setting.c:2515
+#, c-format
+msgid "invalid value %d, expected %d-%d"
+msgstr "არასწორი მნიშვნელობა %d. მოველოდი - %d-%d"
+
+#: src/libnm-core-impl/nm-setting.c:2539
+msgid "cannot be empty"
+msgstr "ცარიელი ვერ იქნება"
+
+#: 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 ""
+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 ""
+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 ""
 
-#: src/libnm-core-impl/nm-team-utils.c:2238
-msgid "value out or range"
+#: src/libnm-core-impl/nm-team-utils.c:2241
+#, c-format
+msgid "value out of range"
 msgstr "მნიშვნელობა დიაპაზონს გარეთაა"
 
-#: src/libnm-core-impl/nm-team-utils.c:2270
+#: src/libnm-core-impl/nm-team-utils.c:2274
+#, c-format
 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 დაშვებულია მხოლოდ დამხმარე პროცესისთვის %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 მხოლოდ დაშვებულია დამხმარე პროცესისთვის %s"
 
-#: src/libnm-core-impl/nm-team-utils.c:2329
+#: src/libnm-core-impl/nm-team-utils.c:2333
+#, c-format
 msgid "cannot set parameters for lacp and activebackup runners together"
 msgstr ""
 
-#: src/libnm-core-impl/nm-team-utils.c:2343
+#: src/libnm-core-impl/nm-team-utils.c:2347
+#, c-format
 msgid "missing link watcher"
 msgstr "შეერთებას მაყურებელი აკლია"
 
-#: src/libnm-core-impl/nm-team-utils.c:2369
+#: src/libnm-core-impl/nm-team-utils.c:2373
+#, c-format
 msgid "team config exceeds size limit"
 msgstr ""
 
-#: src/libnm-core-impl/nm-team-utils.c:2380
+#: src/libnm-core-impl/nm-team-utils.c:2384
+#, c-format
 msgid "team config is not valid UTF-8"
 msgstr "ჯგუფის კონფიგურაცია სწორ 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"
 
-#: src/libnm-core-impl/nm-utils.c:2254
+#: src/libnm-core-impl/nm-utils.c:1367
+msgid "Expected value of type \"au\""
+msgstr "მოველოდი მნიშვნელობას ტიპით 'au'"
+
+#: src/libnm-core-impl/nm-utils.c:1510 src/libnm-core-impl/nm-utils.c:1675
+msgid "Expected value of type \"aau\""
+msgstr "მოველოდი მნიშვნელობას ტიპით 'aau'"
+
+#: src/libnm-core-impl/nm-utils.c:1521
+msgid "Expected \"address-labels\" of type \"as\""
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:1543
+#, c-format
+msgid "Incomplete IPv4 address (idx=%u)"
+msgstr "დაუსრულებელი IPv4 მისამართი (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:1556 src/libnm-core-impl/nm-utils.c:1712
+#: src/libnm-core-impl/nm-utils.c:2021 src/libnm-core-impl/nm-utils.c:2218
+#: src/libnm-core-impl/nm-utils.c:2374 src/libnm-core-impl/nm-utils.c:2559
+#, c-format
+msgid "%s (idx=%u)"
+msgstr "%s (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:1693
+#, c-format
+msgid "Incomplete IPv4 route (idx=%u)"
+msgstr "დაუსრულებელი IPv4 რაუტი (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:1821
+msgid "Expected value of type \"aay\""
+msgstr "მოველოდი მნიშვნელობას ტიპით 'aay'"
+
+#: src/libnm-core-impl/nm-utils.c:1846
+#, c-format
+msgid "Invalid IPv6 DNS address length (idx=%u)"
+msgstr "არასწორი IPv6 DNS მისამართის სიგრძე (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:1973
+msgid "Expected value of type \"a(ayuay)\""
+msgstr "მოველოდი მნიშვნელობას ტიპით 'a(ayuay)'"
+
+#: src/libnm-core-impl/nm-utils.c:1995
+#, c-format
+msgid "Expected value of type \"(ayuay)\" (idx=%u)"
+msgstr "მოველოდი მნიშვნელობას ტიპით \"(ayuay)\" (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:2008
+#, c-format
+msgid "IPv6 address with invalid length (idx=%u)"
+msgstr "IPv6 მისამართი არასწორი სიგრძით (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:2038
+#, c-format
+msgid "IPv6 gateway with invalid length (idx=%u)"
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2150
+msgid "Expected value of type \"a(ayuayu)\""
+msgstr "მოველოდი მნიშვნელობას ტიპით \"a(ayuayu)\""
+
+#: src/libnm-core-impl/nm-utils.c:2174
+#, c-format
+msgid "Expected value of type \"(ayuayu)\" (idx=%u)"
+msgstr "მოველოდი მნიშვნელობას ტიპით \"(ayuayu)\" (idx=%u)"
+
+#: src/libnm-core-impl/nm-utils.c:2187
+#, c-format
+msgid "IPv6 dest address with invalid length (idx=%u)"
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2200
+#, c-format
+msgid "IPv6 next-hop address with invalid length (idx=%u)"
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2343 src/libnm-core-impl/nm-utils.c:2522
+msgid "Expected value of type \"aa{sv}\""
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2361
+#, c-format
+msgid "IP address requires fields \"address\" and \"prefix\" (idx=%u)"
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2540
+#, c-format
+msgid "Route requires fields \"dest\" and \"prefix\" (idx=%u)"
+msgstr ""
+
+#: src/libnm-core-impl/nm-utils.c:2662
 #, c-format
 msgid "'%s' is not a valid handle."
 msgstr "%s სწორ სახელურს არ წარმოადგენს."
 
-#: src/libnm-core-impl/nm-utils.c:2402
+#: src/libnm-core-impl/nm-utils.c:2810
 #, c-format
 msgid "'%s' unexpected: parent already specified."
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:2420
+#: src/libnm-core-impl/nm-utils.c:2828
 #, c-format
 msgid "invalid handle: '%s'"
 msgstr "არასწორი სახელური: %s"
 
-#: src/libnm-core-impl/nm-utils.c:2442
+#: src/libnm-core-impl/nm-utils.c:2850
 msgid "parent not specified."
 msgstr "ნიმუში მითითებული არაა."
 
-#: src/libnm-core-impl/nm-utils.c:2506
+#: src/libnm-core-impl/nm-utils.c:2914
 #, c-format
 msgid "unsupported qdisc option: '%s'."
 msgstr "მხარდაუჭერელი qdisc-ის პარამეტრი: '%s'."
 
-#: src/libnm-core-impl/nm-utils.c:2636
+#: src/libnm-core-impl/nm-utils.c:3044
 msgid "action name missing."
 msgstr "ქმედების სახელი მითითებული არაა."
 
-#: src/libnm-core-impl/nm-utils.c:2661
+#: src/libnm-core-impl/nm-utils.c:3069
 #, c-format
 msgid "unsupported action option: '%s'."
 msgstr "მხარდაუჭერელი action-ის პარამეტრი: '%s'."
 
-#: src/libnm-core-impl/nm-utils.c:2798
+#: src/libnm-core-impl/nm-utils.c:3206
 msgid "invalid action: "
 msgstr "არასწორი ქმედება: "
 
-#: src/libnm-core-impl/nm-utils.c:2802
+#: src/libnm-core-impl/nm-utils.c:3210
 #, c-format
 msgid "unsupported tfilter option: '%s'."
 msgstr "მხარადუჭერელი tfilter-ის პარამეტრი: '%s'."
 
-#: src/libnm-core-impl/nm-utils.c:3102
+#: src/libnm-core-impl/nm-utils.c:3510
 #, c-format
 msgid "failed stat file %s: %s"
 msgstr "ფაილის (%s) აღმოჩენის შეცდომა: %s"
 
-#: src/libnm-core-impl/nm-utils.c:3113
+#: src/libnm-core-impl/nm-utils.c:3521
 #, c-format
 msgid "not a file (%s)"
 msgstr "ფაილი არაა (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:3124
+#: src/libnm-core-impl/nm-utils.c:3532
 #, c-format
 msgid "invalid file owner %d for %s"
 msgstr "არასწორი ფაილის მფლობელი %d %s-სთვის"
 
-#: src/libnm-core-impl/nm-utils.c:3136
+#: src/libnm-core-impl/nm-utils.c:3544
 #, c-format
 msgid "file permissions for %s"
 msgstr "წვდომები ფაილისთვის %s"
 
-#: src/libnm-core-impl/nm-utils.c:3146
+#: src/libnm-core-impl/nm-utils.c:3554
 #, c-format
 msgid "reject %s"
 msgstr "%s-ის უარყოფა"
 
-#: src/libnm-core-impl/nm-utils.c:3166
+#: src/libnm-core-impl/nm-utils.c:3574
 #, c-format
 msgid "path is not absolute (%s)"
 msgstr "ბილიკ აბსოლუტური არაა (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:3181
+#: src/libnm-core-impl/nm-utils.c:3589
 #, c-format
 msgid "Plugin file does not exist (%s)"
 msgstr "დამატების ფაილი არ არსებობს (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:3190
+#: src/libnm-core-impl/nm-utils.c:3598
 #, c-format
 msgid "Plugin is not a valid file (%s)"
 msgstr "დამატება სწორი ფაილი არაა (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:3201
+#: src/libnm-core-impl/nm-utils.c:3609
 #, c-format
 msgid "libtool archives are not supported (%s)"
 msgstr "libtool-ის არქივები მხარდაჭერილი არაა (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:3278
+#: src/libnm-core-impl/nm-utils.c:3686
 #, c-format
 msgid "Could not find \"%s\" binary"
 msgstr "გამშვები ფაილი \"%s\" ვერ ვიპოვე"
 
-#: src/libnm-core-impl/nm-utils.c:4102
+#: src/libnm-core-impl/nm-utils.c:4510
 msgid "unknown secret flags"
 msgstr "უცნობი საიდუმლო ალმები"
 
-#: src/libnm-core-impl/nm-utils.c:4112
+#: src/libnm-core-impl/nm-utils.c:4520
 msgid "conflicting secret flags"
 msgstr "ურთიერთგამომრიცხავი საიდუმლოს ალმები"
 
-#: src/libnm-core-impl/nm-utils.c:4123
+#: src/libnm-core-impl/nm-utils.c:4531
 msgid "secret flags must not be \"not-required\""
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:4131
+#: src/libnm-core-impl/nm-utils.c:4539
 msgid "unsupported secret flags"
 msgstr "მხარდაუჭერელი საიდუმლოს ალმები"
 
-#: src/libnm-core-impl/nm-utils.c:4161
+#: src/libnm-core-impl/nm-utils.c:4569
 msgid "can't be simultaneously disabled and enabled"
 msgstr "შეუძლებელია, ერთდროულად ჩართულიც იყოს და გამორთულიც"
 
-#: src/libnm-core-impl/nm-utils.c:4169
+#: src/libnm-core-impl/nm-utils.c:4577
 msgid "WPS is required"
 msgstr "WPS აუცილებელია"
 
-#: src/libnm-core-impl/nm-utils.c:4237
+#: src/libnm-core-impl/nm-utils.c:4645
 #, c-format
 msgid "not a valid ethernet MAC address for mask at position %lld"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:4256
+#: src/libnm-core-impl/nm-utils.c:4664
 #, c-format
 msgid "not a valid ethernet MAC address #%u at position %lld"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:4891
+#: src/libnm-core-impl/nm-utils.c:5321
 msgid "not valid utf-8"
 msgstr "სწორ UTF-8-ს არ წარმოადგენს"
 
-#: src/libnm-core-impl/nm-utils.c:4912 src/libnm-core-impl/nm-utils.c:4965
+#: src/libnm-core-impl/nm-utils.c:5342 src/libnm-core-impl/nm-utils.c:5395
 msgid "is not a JSON object"
 msgstr "არ წარმოდგენს JSON ობიექტს"
 
-#: src/libnm-core-impl/nm-utils.c:4941
+#: src/libnm-core-impl/nm-utils.c:5371
 msgid "value is NULL"
 msgstr "მნიშვნელობა ნულოვანია"
 
-#: src/libnm-core-impl/nm-utils.c:4941
+#: src/libnm-core-impl/nm-utils.c:5371
 msgid "value is empty"
 msgstr "მნიშვნელობა ცარიელია"
 
-#: src/libnm-core-impl/nm-utils.c:4953
+#: src/libnm-core-impl/nm-utils.c:5383
 #, c-format
 msgid "invalid JSON at position %d (%s)"
 msgstr "არასწორი JSON-ი მდებარეობაზე %d (%s)"
 
-#: src/libnm-core-impl/nm-utils.c:5078 src/libnm-core-impl/nm-utils.c:5098
+#: src/libnm-core-impl/nm-utils.c:5508 src/libnm-core-impl/nm-utils.c:5528
 msgid "unterminated escape sequence"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5124
+#: src/libnm-core-impl/nm-utils.c:5554
 #, c-format
 msgid "unknown attribute '%s'"
 msgstr "უცნობი ატრიბუტი: '%s'"
 
-#: src/libnm-core-impl/nm-utils.c:5142
+#: src/libnm-core-impl/nm-utils.c:5572
 #, c-format
 msgid "missing key-value separator '%c' after '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5162
+#: src/libnm-core-impl/nm-utils.c:5592
 #, c-format
 msgid "invalid uint32 value '%s' for attribute '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5176
+#: src/libnm-core-impl/nm-utils.c:5606
 #, c-format
 msgid "invalid int32 value '%s' for attribute '%s'"
 msgstr "არასწორი int32 მნიშვნელობა %s ატრიბუტისთვის %s"
 
-#: src/libnm-core-impl/nm-utils.c:5189
+#: src/libnm-core-impl/nm-utils.c:5619
 #, c-format
 msgid "invalid uint64 value '%s' for attribute '%s'"
 msgstr "არასწორი int64 მნიშვნელობა %s ატრიბუტისთვის %s"
 
-#: src/libnm-core-impl/nm-utils.c:5202
+#: src/libnm-core-impl/nm-utils.c:5632
 #, c-format
 msgid "invalid uint8 value '%s' for attribute '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5216
+#: src/libnm-core-impl/nm-utils.c:5646
 #, c-format
 msgid "invalid boolean value '%s' for attribute '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5230
+#: src/libnm-core-impl/nm-utils.c:5660
 #, c-format
 msgid "unsupported attribute '%s' of type '%s'"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5531
+#: src/libnm-core-impl/nm-utils.c:5961
 #, c-format
 msgid "Bridge VLANs %d and %d are not sorted by ascending vid"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5555
+#: src/libnm-core-impl/nm-utils.c:5985
 #, c-format
 msgid "duplicate bridge VLAN vid %u"
-msgstr ""
+msgstr "გამეორებული ხიდის VLAN vid %u"
 
-#: src/libnm-core-impl/nm-utils.c:5567
+#: src/libnm-core-impl/nm-utils.c:5997
 msgid "only one VLAN can be the PVID"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5710
+#: src/libnm-core-impl/nm-utils.c:6140
 #, c-format
 msgid "unknown flags 0x%x"
 msgstr "უცნობი ალმები 0x%x"
 
-#: src/libnm-core-impl/nm-utils.c:5722
+#: src/libnm-core-impl/nm-utils.c:6152
 msgid ""
 "'fqdn-no-update' and 'fqdn-serv-update' flags cannot be set at the same time"
 msgstr ""
+"ალმებს 'fqdn-no-update' და 'fqdn-serv-update' ერთდროულად ვერ გამოიყენებთ"
 
-#: src/libnm-core-impl/nm-utils.c:5733
+#: src/libnm-core-impl/nm-utils.c:6163
 msgid "'fqdn-clear-flags' flag is incompatible with other FQDN flags"
 msgstr ""
 
-#: src/libnm-core-impl/nm-utils.c:5741
+#: src/libnm-core-impl/nm-utils.c:6171
 msgid "DHCPv6 does not support the E (encoded) FQDN flag"
 msgstr ""
 
@@ -3394,30 +3711,33 @@ msgstr "დამატების \"%s\" ჩატვირთვა შეუ
 msgid "failed to load nm_vpn_editor_plugin_factory() from %s (%s)"
 msgstr ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:493
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:496
+#, c-format
 msgid "the plugin does not support import capability"
 msgstr ""
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:517
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:520
+#, c-format
 msgid "the plugin does not support export capability"
 msgstr ""
 
 #: src/libnm-core-impl/nm-vpn-plugin-info.c:109
+#, c-format
 msgid "missing filename"
 msgstr "აკლია ფაილის სახელი"
 
@@ -3442,6 +3762,7 @@ msgid "there exists a conflicting plugin with the same name (%s)"
 msgstr ""
 
 #: src/libnm-core-impl/nm-vpn-plugin-info.c:1050
+#, c-format
 msgid "missing \"plugin\" setting"
 msgstr "აკლია დამატებების პარამეტრი"
 
@@ -3467,6 +3788,7 @@ 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 ""
 
@@ -3483,19 +3805,22 @@ msgstr ""
 #: src/libnm-crypto/nm-crypto-gnutls.c:134
 #, c-format
 msgid "Failed to decrypt the private key: %s (%s)"
-msgstr ""
+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 ""
+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 ""
+msgstr "მხარდაუჭერელი გასაღების შიფრი დასაშიფრად"
 
 #: src/libnm-crypto/nm-crypto-gnutls.c:210
 #, c-format
@@ -3505,17 +3830,17 @@ msgstr ""
 #: src/libnm-crypto/nm-crypto-gnutls.c:238
 #, c-format
 msgid "Failed to encrypt the data: %s (%s)"
-msgstr ""
+msgstr "მონაცემების დაშიფვრა ჩავარდა: %s (%s)"
 
 #: src/libnm-crypto/nm-crypto-gnutls.c:263
 #, c-format
 msgid "Error initializing certificate data: %s"
-msgstr ""
+msgstr "სერტიფიკატის მონაცემების ინიციალიზაციის შეცდომა: %s"
 
 #: src/libnm-crypto/nm-crypto-gnutls.c:286
 #, c-format
 msgid "Couldn't decode certificate: %s"
-msgstr ""
+msgstr "ვერ გავშიფრე სერტიფიკატი: %s"
 
 #: src/libnm-crypto/nm-crypto-gnutls.c:311
 #, c-format
@@ -3548,18 +3873,22 @@ msgid "Failed to initialize the crypto engine: %d."
 msgstr ""
 
 #: 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 ""
 
@@ -3569,6 +3898,7 @@ msgid "Failed to decrypt the private key: %d."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto-nss.c:196
+#, c-format
 msgid "Failed to decrypt the private key: decrypted data too large."
 msgstr ""
 
@@ -3578,18 +3908,22 @@ msgid "Failed to finalize decryption of the private key: %d."
 msgstr ""
 
 #: 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 ""
+msgstr "დაშიფვრისთვის IV-ის დაყენება შეუძლებელია."
 
 #: src/libnm-crypto/nm-crypto-nss.c:327
+#, c-format
 msgid "Failed to initialize the encryption context."
 msgstr ""
 
@@ -3599,6 +3933,7 @@ 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 ""
 
@@ -3608,10 +3943,12 @@ 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 "სლოტის ინიციალიზაციის შეცდომა"
 
@@ -3632,16 +3969,18 @@ msgstr ""
 
 #: src/libnm-crypto/nm-crypto-nss.c:555
 msgid "Could not generate random data."
-msgstr ""
+msgstr "შემთხვევითი მონაცემების გენერაცია შეუძლებელია."
 
 #: src/libnm-crypto/nm-crypto-null.c:21 src/libnm-crypto/nm-crypto-null.c:39
 #: 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 გასაღების ფაილს დაწყების ჭდე არ გააჩნია"
 
@@ -3651,6 +3990,7 @@ 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 ""
 
@@ -3660,14 +4000,17 @@ msgid "Malformed PEM file: unknown Proc-Type tag '%s'."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:274
+#, c-format
 msgid "Malformed PEM file: DEK-Info was not the second tag."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:286
+#, c-format
 msgid "Malformed PEM file: no IV found in DEK-Info tag."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:295
+#, c-format
 msgid "Malformed PEM file: invalid format of IV in DEK-Info tag."
 msgstr ""
 
@@ -3677,6 +4020,7 @@ msgid "Malformed PEM file: unknown private key cipher '%s'."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:330
+#, c-format
 msgid "Could not decode private key."
 msgstr "პირადი გასაღების გაშიფვრა შეუძებელია."
 
@@ -3703,24 +4047,29 @@ msgid "Failed to find expected TSS end tag '%s'."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:459
+#, c-format
 msgid "IV must be an even number of bytes in length."
-msgstr ""
+msgstr "IV სიგრძეში ბაიტების ლუწ რიცხვს უნდა შეიცავდეს."
 
 #: src/libnm-crypto/nm-crypto.c:476
+#, c-format
 msgid "IV contains non-hexadecimal digits."
-msgstr ""
+msgstr "IV არათექვსმეტობით ციფრებს შეიცავს."
 
 #: src/libnm-crypto/nm-crypto.c:552
+#, c-format
 msgid "IV must contain at least 8 characters"
-msgstr ""
+msgstr "IV, სულ ცოტა, 8 სიმბოლოს უნდა შეიცავდეს"
 
 #: src/libnm-crypto/nm-crypto.c:602
+#, c-format
 msgid "Unable to determine private key type."
-msgstr ""
+msgstr "პირადი გასაღების ტიპის დადგენა შეუძლებელია."
 
 #: src/libnm-crypto/nm-crypto.c:615
+#, c-format
 msgid "Password provided, but key was not encrypted."
-msgstr ""
+msgstr "პაროლი მოწოდებულია, მაგრამ გასაღები დაშიფრული არაა."
 
 #: src/libnm-crypto/nm-crypto.c:671
 #, c-format
@@ -3733,56 +4082,60 @@ msgid "PEM certificate had no end tag '%s'."
 msgstr ""
 
 #: src/libnm-crypto/nm-crypto.c:694
+#, c-format
 msgid "Failed to decode certificate."
-msgstr ""
+msgstr "სერტიფიკატის გაშიფვრა ჩავარდა."
 
 #: src/libnm-crypto/nm-crypto.c:723 src/libnm-crypto/nm-crypto.c:774
+#, c-format
 msgid "Certificate file is empty"
-msgstr ""
+msgstr "სერთიფიკატის ფაილი ცარიელია"
 
 #: src/libnm-crypto/nm-crypto.c:756
+#, c-format
 msgid "Failed to recognize certificate"
-msgstr ""
+msgstr "სერტიფიკატი ვერ ვიცანი"
 
 #: src/libnm-crypto/nm-crypto.c:861
+#, c-format
 msgid "not a valid private key"
-msgstr ""
+msgstr "არ წარმოადგენს სწორ პირად გასაღებს"
 
 #: src/libnm-glib-aux/nm-dbus-aux.c:682
 #, c-format
 msgid "Method returned type '%s', but expected '%s'"
 msgstr ""
 
-#: src/libnm-glib-aux/nm-shared-utils.c:2262
+#: 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:2271
+#: 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:2280
+#: src/libnm-glib-aux/nm-shared-utils.c:2468
 #, c-format
 msgid ""
 "construct property \"%s\" for object '%s' can't be set after construction"
 msgstr ""
 "აგებული თვისების \"%s\" დაყენება ობიექტის (\"%s\") აგების შემდეგ შეუძლებელია"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:2291
+#: 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:2304
+#: 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:2316
+#: 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 "
@@ -3791,55 +4144,55 @@ msgstr ""
 "მნიშვნელობა '%s' ტიპისთვის '%s' არასწორია ან დიაპაზონს გარეთაა თვისებისთვის "
 "'%s' ტიპისთვის '%s'"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5330
+#: src/libnm-glib-aux/nm-shared-utils.c:5581
 msgid "interface name is missing"
 msgstr "ინტერფეისის სახელი აკლია"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5338
+#: src/libnm-glib-aux/nm-shared-utils.c:5589
 msgid "interface name is too short"
 msgstr "ინტერფეისის სახელი ძალიან მოკლეა"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5346
+#: src/libnm-glib-aux/nm-shared-utils.c:5597
 msgid "interface name is reserved"
 msgstr "ინტერფეისის სახელი დარეზერვებულია"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5359
+#: 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:5367
+#: 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:5392
+#: 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:5404
+#: 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:5426
+#: 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:5443
+#: 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:5451
+#: src/libnm-glib-aux/nm-shared-utils.c:5702
 msgid "interface name must be UTF-8 encoded"
 msgstr ""
 
-#: src/libnm-log-core/nm-logging.c:252
+#: src/libnm-log-core/nm-logging.c:251
 #, c-format
 msgid "Unknown log level '%s'"
 msgstr "ჟურნალის არასწორი დონე: %s."
 
-#: src/libnm-log-core/nm-logging.c:360
+#: src/libnm-log-core/nm-logging.c:359
 #, c-format
 msgid "Unknown log domain '%s'"
 msgstr "უცნობი ჟურნალის დომენი '%s'"
@@ -3865,28 +4218,29 @@ msgstr ""
 #: src/libnmc-base/nm-client-utils.c:230
 #, c-format
 msgid "'%s' is ambiguous: %s"
-msgstr ""
+msgstr "'%s' ბუნდოვანია: %s"
 
 #: src/libnmc-base/nm-client-utils.c:243
 #, c-format
 msgid "missing name, try one of [%s]"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3744
-#: src/nmcli/connections.c:3802
+#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3781
+#: src/nmcli/connections.c:3847
 #, c-format
 msgid "'%s' not among [%s]"
 msgstr ""
 
 #: src/libnmc-base/nm-client-utils.c:291 src/libnmc-base/nm-client-utils.c:305
 #: src/libnmc-base/nm-client-utils.c:341 src/libnmc-base/nm-client-utils.c:346
-#: src/libnmc-setting/nm-meta-setting-desc.c:1854
-#: src/libnmc-setting/nm-meta-setting-desc.c:1885
-#: src/libnmc-setting/nm-meta-setting-desc.c:2894
-#: src/libnmc-setting/nm-meta-setting-desc.c:2952 src/nmcli/common.c:1609
+#: src/libnmc-setting/nm-meta-setting-desc.c:1818
+#: src/libnmc-setting/nm-meta-setting-desc.c:1849
+#: src/libnmc-setting/nm-meta-setting-desc.c:2858
+#: src/libnmc-setting/nm-meta-setting-desc.c:2916 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/general.c:30 src/nmcli/general.c:85 src/nmcli/general.c:91
+#: src/nmcli/devices.c:604 src/nmcli/general.c:30 src/nmcli/general.c:85
+#: src/nmcli/general.c:91
 msgid "unknown"
 msgstr "უცნობი"
 
@@ -3946,27 +4300,27 @@ msgstr "შეერთება (გარე)"
 
 #: src/libnmc-base/nm-client-utils.c:317
 msgid "connected (externally)"
-msgstr ""
+msgstr "დაკავშირებული (გარედან)"
 
 #: src/libnmc-base/nm-client-utils.c:318 src/libnmc-base/nm-client-utils.c:319
 msgid "deactivating (externally)"
 msgstr ""
 
 #: src/libnmc-base/nm-client-utils.c:342
-#: src/libnmc-setting/nm-meta-setting-desc.c:881
-#: src/libnmc-setting/nm-meta-setting-desc.c:2886 src/nmcli/connections.c:5543
-#: src/nmcli/connections.c:7521 src/nmcli/connections.c:7522
-#: src/nmcli/devices.c:591 src/nmcli/devices.c:597 src/nmcli/devices.c:1411
-#: src/nmcli/general.c:92 src/nmcli/utils.h:313
+#: src/libnmc-setting/nm-meta-setting-desc.c:876
+#: src/libnmc-setting/nm-meta-setting-desc.c:2850 src/nmcli/connections.c:5595
+#: src/nmcli/connections.c:7582 src/nmcli/connections.c:7583
+#: 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"
 msgstr "დიახ"
 
 #: src/libnmc-base/nm-client-utils.c:343
-#: src/libnmc-setting/nm-meta-setting-desc.c:881
-#: src/libnmc-setting/nm-meta-setting-desc.c:2889 src/nmcli/connections.c:5542
-#: src/nmcli/connections.c:7521 src/nmcli/connections.c:7522
-#: src/nmcli/devices.c:591 src/nmcli/devices.c:597 src/nmcli/devices.c:1411
-#: src/nmcli/general.c:93 src/nmcli/utils.h:313
+#: src/libnmc-setting/nm-meta-setting-desc.c:876
+#: src/libnmc-setting/nm-meta-setting-desc.c:2853 src/nmcli/connections.c:5594
+#: src/nmcli/connections.c:7582 src/nmcli/connections.c:7583
+#: 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"
 msgstr "არა"
 
@@ -3983,8 +4337,9 @@ msgid "No reason given"
 msgstr "მიზეზების გარეშე"
 
 #. We should not really come here
-#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3764
-#: src/nmcli/connections.c:3823
+#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3801
+#: src/nmcli/connections.c:3868
+#, c-format
 msgid "Unknown error"
 msgstr "უცნობი შეცდომა"
 
@@ -4055,11 +4410,11 @@ msgstr "DHCP-ის კლიენტის ავარია"
 
 #: src/libnmc-base/nm-client-utils.c:382
 msgid "Shared connection service failed to start"
-msgstr ""
+msgstr "გაზიარებული მიერთების სერვისის გაშვება ჩავარდა"
 
 #: src/libnmc-base/nm-client-utils.c:384
 msgid "Shared connection service failed"
-msgstr ""
+msgstr "გაზიარებული მიერთების სერვისი ჩავარდა"
 
 #: src/libnmc-base/nm-client-utils.c:386
 msgid "AutoIP service failed to start"
@@ -4083,7 +4438,7 @@ msgstr "ზუმერის გარეშე"
 
 #: src/libnmc-base/nm-client-utils.c:392
 msgid "No carrier could be established"
-msgstr ""
+msgstr "გადამზიდის აწყობა შეუძლებელია"
 
 #: src/libnmc-base/nm-client-utils.c:394
 msgid "The dialing request timed out"
@@ -4099,7 +4454,7 @@ msgstr "მოდემის ინიციალიზაციის შე
 
 #: src/libnmc-base/nm-client-utils.c:400
 msgid "Failed to select the specified APN"
-msgstr ""
+msgstr "მითითებული APN-ის არჩევის შეცდომა"
 
 #: src/libnmc-base/nm-client-utils.c:402
 msgid "Not searching for networks"
@@ -4115,7 +4470,7 @@ msgstr "ქსელში რეგისტრაციის მოლოდ
 
 #: src/libnmc-base/nm-client-utils.c:408
 msgid "Failed to register with the requested network"
-msgstr ""
+msgstr "მოთხოვნილ ქსელში რეგისტრაცია ჩავარდა"
 
 #: src/libnmc-base/nm-client-utils.c:409
 msgid "PIN check failed"
@@ -4143,7 +4498,7 @@ msgstr ""
 
 #: src/libnmc-base/nm-client-utils.c:418
 msgid "Carrier/link changed"
-msgstr ""
+msgstr "ოპერატორი/არხი შეიცვალა"
 
 #: src/libnmc-base/nm-client-utils.c:420
 msgid "The device's existing connection was assumed"
@@ -4253,91 +4608,141 @@ msgstr "SR-IOV-ის პარამეტრების მორგები
 msgid "The Wi-Fi P2P peer could not be found"
 msgstr "WiFi P2P პარტნიორი ვერ ვიპოვე"
 
+#: src/libnmc-base/nm-client-utils.c:469
+msgid "The device handler dispatcher returned an error"
+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 ""
+
+#: src/libnmc-base/nm-client-utils.c:476
+msgid "The device is unmanaged because the link is not initialized by udev"
+msgstr ""
+
+#: 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')"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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
+msgid "The device is unmanaged via udev rule"
+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"
 msgstr "უცნობი მიზეზი"
 
-#: src/libnmc-base/nm-client-utils.c:476
+#: src/libnmc-base/nm-client-utils.c:505
 msgid "The connection was disconnected"
 msgstr "ქსელური შეერთება გათიშულია"
 
-#: src/libnmc-base/nm-client-utils.c:478
+#: src/libnmc-base/nm-client-utils.c:507
 msgid "Disconnected by user"
 msgstr "გათიშულია მომხმარებლის მიერ"
 
-#: src/libnmc-base/nm-client-utils.c:480
+#: src/libnmc-base/nm-client-utils.c:509
 msgid "The base network connection was interrupted"
 msgstr "ძირითადი ქსელური შეერთება გაწყვეტილია"
 
-#: src/libnmc-base/nm-client-utils.c:482
+#: src/libnmc-base/nm-client-utils.c:511
 msgid "The VPN service stopped unexpectedly"
 msgstr "VPN სერვისი მოულოდნელად გაჩერდა"
 
-#: src/libnmc-base/nm-client-utils.c:484
+#: src/libnmc-base/nm-client-utils.c:513
 msgid "The VPN service returned invalid configuration"
 msgstr "VPN სერვისმა არასწორი კონფიგურაცია დააბრუნა"
 
-#: src/libnmc-base/nm-client-utils.c:486
+#: src/libnmc-base/nm-client-utils.c:515
 msgid "The connection attempt timed out"
 msgstr "შეერთების მცდელობას ვადა გაუვიდა"
 
-#: src/libnmc-base/nm-client-utils.c:488
+#: src/libnmc-base/nm-client-utils.c:517
 msgid "The VPN service did not start in time"
 msgstr "VPN სერვისი დროულად არ გაეშვა"
 
-#: src/libnmc-base/nm-client-utils.c:490
+#: src/libnmc-base/nm-client-utils.c:519
 msgid "The VPN service failed to start"
 msgstr "VPN სერვისის გაშვების შეცდომა"
 
-#: src/libnmc-base/nm-client-utils.c:491
+#: src/libnmc-base/nm-client-utils.c:520
 msgid "No valid secrets"
 msgstr "სწორი საიდუმლოების გარეშე"
 
-#: src/libnmc-base/nm-client-utils.c:492
+#: src/libnmc-base/nm-client-utils.c:521
 msgid "Invalid secrets"
 msgstr "არასწორი საიდუმლოები"
 
-#: src/libnmc-base/nm-client-utils.c:494
+#: src/libnmc-base/nm-client-utils.c:523
 msgid "The connection was removed"
 msgstr "შეერთება წაშლილია"
 
-#: src/libnmc-base/nm-client-utils.c:496
+#: src/libnmc-base/nm-client-utils.c:525
 msgid "Master connection failed"
 msgstr "ძირითადი კავშირი გათიშულია"
 
-#: src/libnmc-base/nm-client-utils.c:498
+#: src/libnmc-base/nm-client-utils.c:527
 msgid "Could not create a software link"
 msgstr "პროგრამული მიერთების შექმნა შეუძლებელია"
 
-#: src/libnmc-base/nm-client-utils.c:500
+#: src/libnmc-base/nm-client-utils.c:529
 msgid "The device disappeared"
 msgstr "მოწყობილობა გაქრა"
 
-#: src/libnmc-base/nm-client-utils.c:823
+#: src/libnmc-base/nm-client-utils.c:855
 msgid "missing colon for \"<setting>.<property>:<secret>\" format"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:840
+#: src/libnmc-base/nm-client-utils.c:872
 msgid "missing dot for \"<setting>.<property>:<secret>\" format"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:846
+#: src/libnmc-base/nm-client-utils.c:878
 msgid "missing setting for \"<setting>.<property>:<secret>\" format"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:857
+#: src/libnmc-base/nm-client-utils.c:889
 msgid "missing property for \"<setting>.<property>:<secret>\" format"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:867
+#: src/libnmc-base/nm-client-utils.c:899
 msgid "invalid setting name"
 msgstr "პარამეტრის არასწორი სახელი"
 
-#: src/libnmc-base/nm-client-utils.c:881
+#: src/libnmc-base/nm-client-utils.c:913
 msgid "property name is not UTF-8"
 msgstr ""
 
-#: src/libnmc-base/nm-client-utils.c:898 src/libnmc-base/nm-client-utils.c:904
+#: src/libnmc-base/nm-client-utils.c:930 src/libnmc-base/nm-client-utils.c:936
 msgid "secret is not UTF-8"
 msgstr "პაროლი UTF-8 არაა"
 
@@ -4351,76 +4756,85 @@ msgstr ""
 msgid "Could not retrieve session id: %s"
 msgstr "სესიის ID-ის მიღების შეცდომა: %s"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:222
+#: src/libnmc-base/nm-secret-agent-simple.c:225
 #, c-format
 msgid "Preshared-key for %s"
 msgstr "წინასწარ გაზიარებული გასაღები %s-სთვის"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:270
-#: src/libnmc-base/nm-secret-agent-simple.c:357
-#: src/libnmc-setting/nm-meta-setting-desc.c:5138
-#: src/nmtui/nmt-8021x-fields.c:182 src/nmtui/nmt-8021x-fields.c:353
-#: src/nmtui/nmt-8021x-fields.c:457 src/nmtui/nmt-page-dsl.c:51
+#: 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:5188
+#: 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
 msgid "Username"
 msgstr "მომხმარებლის სახელი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:275
-#: src/libnmc-base/nm-secret-agent-simple.c:312
-#: src/libnmc-base/nm-secret-agent-simple.c:335
-#: src/libnmc-base/nm-secret-agent-simple.c:367
-#: src/libnmc-base/nm-secret-agent-simple.c:917
-#: src/libnmc-base/nm-secret-agent-simple.c:952
-#: src/libnmc-base/nm-secret-agent-simple.c:979
+#: src/libnmc-base/nm-secret-agent-simple.c:279
+#: src/libnmc-base/nm-secret-agent-simple.c:316
+#: src/libnmc-base/nm-secret-agent-simple.c:339
+#: src/libnmc-base/nm-secret-agent-simple.c:371
+#: src/libnmc-base/nm-secret-agent-simple.c:954
+#: src/libnmc-base/nm-secret-agent-simple.c:989
+#: src/libnmc-base/nm-secret-agent-simple.c:1016
 #: src/libnmc-base/nm-vpn-helpers.c:144 src/libnmc-base/nm-vpn-helpers.c:148
 #: src/libnmc-base/nm-vpn-helpers.c:154 src/libnmc-base/nm-vpn-helpers.c:159
-#: src/nmcli/devices.c:4722 src/nmtui/nmt-8021x-fields.c:195
-#: src/nmtui/nmt-8021x-fields.c:373 src/nmtui/nmt-8021x-fields.c:477
+#: src/nmcli/devices.c:4727 src/nmtui/nmt-8021x-fields.c:196
+#: src/nmtui/nmt-8021x-fields.c:536 src/nmtui/nmt-8021x-fields.c:642
 #: src/nmtui/nmt-page-dsl.c:64 src/nmtui/nmt-page-wifi.c:287
 #: src/nmtui/nmt-page-wifi.c:319 src/nmtui/nmt-page-wifi.c:358
 msgid "Password"
 msgstr "პაროლი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:284
-#: src/nmtui/nmt-8021x-fields.c:204
+#: src/libnmc-base/nm-secret-agent-simple.c:288
+#: src/nmtui/nmt-8021x-fields.c:365
 msgid "Identity"
 msgstr "იდენტიფიკაცია"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:289
+#: src/libnmc-base/nm-secret-agent-simple.c:293
 msgid "Private key password"
 msgstr "პირადი გასაღების პაროლი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:325 src/nmtui/nmt-page-wifi.c:298
+#: src/libnmc-base/nm-secret-agent-simple.c:329 src/nmtui/nmt-page-wifi.c:298
 msgid "Key"
 msgstr "გასაღები"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:362 src/nmtui/nmt-page-dsl.c:67
+#: src/libnmc-base/nm-secret-agent-simple.c:366 src/nmtui/nmt-page-dsl.c:67
 msgid "Service"
 msgstr "სერვისი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:473
+#: src/libnmc-base/nm-secret-agent-simple.c:500
 msgid "WireGuard private-key"
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:512
+#: src/libnmc-base/nm-secret-agent-simple.c:539
 #, c-format
 msgid "Secrets are required to connect WireGuard VPN '%s'"
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:620
-#: src/libnmc-base/nm-secret-agent-simple.c:913
-#: src/libnmc-base/nm-secret-agent-simple.c:948
-#: src/libnmc-base/nm-secret-agent-simple.c:975
-#: src/libnmc-base/nm-secret-agent-simple.c:994
+#: src/libnmc-base/nm-secret-agent-simple.c:651
+#: src/libnmc-base/nm-secret-agent-simple.c:950
+#: src/libnmc-base/nm-secret-agent-simple.c:985
+#: src/libnmc-base/nm-secret-agent-simple.c:1012
+#: src/libnmc-base/nm-secret-agent-simple.c:1031
 #, c-format
 msgid "A password is required to connect to '%s'."
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:878
+#: src/libnmc-base/nm-secret-agent-simple.c:909
 msgid "Authentication required by wireless network"
 msgstr "უსადენო ქსელი ავთენტიკაციას მოითხოვს"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:880
+#: src/libnmc-base/nm-secret-agent-simple.c:911
+#, c-format
+msgid ""
+"Push of the WPS button on the router or a password is required to access the "
+"wireless network '%s'."
+msgstr ""
+"უსადენო ქსელთან (%s) წვდომისთვის საჭიროა WPS ღილაკის დაჭერა რაუტერზე, ან "
+"პაროლი."
+
+#: src/libnmc-base/nm-secret-agent-simple.c:916
 #, c-format
 msgid ""
 "Passwords or encryption keys are required to access the wireless network "
@@ -4428,65 +4842,65 @@ msgid ""
 msgstr ""
 "უსადენო ქსელთან (%s) წვდომისთვის საჭიროა პაროლები ან დაშიფვრის გასაღებები."
 
-#: src/libnmc-base/nm-secret-agent-simple.c:886
+#: src/libnmc-base/nm-secret-agent-simple.c:923
 msgid "Wired 802.1X authentication"
 msgstr "802.1X ავთენტიკაცია მავთულზე"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:887
+#: src/libnmc-base/nm-secret-agent-simple.c:924
 #, c-format
 msgid "Secrets are required to access the wired network '%s'"
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:893
+#: src/libnmc-base/nm-secret-agent-simple.c:930
 msgid "DSL authentication"
 msgstr "DSL ავთენტიკაცია"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:894
+#: src/libnmc-base/nm-secret-agent-simple.c:931
 #, c-format
 msgid "Secrets are required for the DSL connection '%s'"
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:903
+#: src/libnmc-base/nm-secret-agent-simple.c:940
 msgid "PIN code required"
 msgstr "საჭიროა PIN კოდი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:904
+#: src/libnmc-base/nm-secret-agent-simple.c:941
 msgid "PIN code is needed for the mobile broadband device"
 msgstr "მობილური კავშირის მოწყობილობას სჭირდება PIN კოდი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:907
+#: src/libnmc-base/nm-secret-agent-simple.c:944
 msgid "PIN"
 msgstr "PIN კოდი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:912
-#: src/libnmc-base/nm-secret-agent-simple.c:947
-#: src/libnmc-base/nm-secret-agent-simple.c:974
+#: src/libnmc-base/nm-secret-agent-simple.c:949
+#: src/libnmc-base/nm-secret-agent-simple.c:984
+#: src/libnmc-base/nm-secret-agent-simple.c:1011
 msgid "Mobile broadband network password"
 msgstr "მობილური ფართოზოლოვანი ინტერნეტის ქსელის პაროლი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:925
+#: src/libnmc-base/nm-secret-agent-simple.c:962
 #, c-format
 msgid "Secrets are required to access the MACsec network '%s'"
 msgstr ""
 
-#: src/libnmc-base/nm-secret-agent-simple.c:929
+#: src/libnmc-base/nm-secret-agent-simple.c:966
 msgid "MACsec PSK authentication"
 msgstr "MACsec PSK ავთენტიკაცია"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:931
-#: src/libnmc-setting/nm-meta-setting-desc.c:6744
+#: src/libnmc-base/nm-secret-agent-simple.c:968
+#: src/libnmc-setting/nm-meta-setting-desc.c:7104
 msgid "MKA CAK"
 msgstr "MKA CAK"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:936
+#: src/libnmc-base/nm-secret-agent-simple.c:973
 msgid "MACsec EAP authentication"
 msgstr "MACsec EAP ავთენტიკაცია"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:941
+#: src/libnmc-base/nm-secret-agent-simple.c:978
 msgid "WireGuard VPN secret"
 msgstr "WireGuard VPN პაროლი"
 
-#: src/libnmc-base/nm-secret-agent-simple.c:984
+#: src/libnmc-base/nm-secret-agent-simple.c:1021
 msgid "VPN password required"
 msgstr "VPN-ის პაროლი აუცილებელია"
 
@@ -4540,6 +4954,7 @@ msgid "Gateway DNS resolution ('host:IP')"
 msgstr "ნაგულისხმები რაუტერის DNS-ის ამოხსნა ('ჰოსტი:IP')"
 
 #: src/libnmc-base/nm-vpn-helpers.c:308
+#, c-format
 msgid "no gateway configured"
 msgstr "ნაგულისხმები რაუტერი მორგებული არაა"
 
@@ -4554,6 +4969,7 @@ msgid "exited on signal %d"
 msgstr "დასრულდა სიგნალით %d"
 
 #: src/libnmc-base/nm-vpn-helpers.c:430
+#, c-format
 msgid "insufficent secrets returned"
 msgstr "დაბრუნებული საიდუმლოები საკმარისი არაა"
 
@@ -4567,199 +4983,199 @@ msgstr "ველი '%s' მარტო უნდა იყოს"
 msgid "invalid field '%s%s%s%s%s'; %s%s%s"
 msgstr "არასწორი ველი '%s%s%s%s%s'; %s%s%s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:264
-#: src/libnmc-setting/nm-meta-setting-desc.c:332
+#: src/libnmc-setting/nm-meta-setting-desc.c:259
+#: src/libnmc-setting/nm-meta-setting-desc.c:327
 #, c-format
 msgid "invalid prefix '%s'; <0-%d> allowed"
 msgstr "არასწორი პრეფიქსი \"%s\"; <0-%d> დაშვებულია"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:275
+#: src/libnmc-setting/nm-meta-setting-desc.c:270
 #, c-format
 msgid "invalid IP address: %s"
 msgstr "არასწორი IP მისამართი: %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:300
+#: src/libnmc-setting/nm-meta-setting-desc.c:295
 msgid ""
 "The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [,"
 "ip[/prefix] ...]'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:346
+#: src/libnmc-setting/nm-meta-setting-desc.c:341
 #, c-format
 msgid "the next hop ('%s') must be first"
 msgstr "შემდეგი ქსელური სეგმენტი (\"%s\") პირველი უნდა იყოს"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:356
+#: src/libnmc-setting/nm-meta-setting-desc.c:351
 #, c-format
 msgid "the metric ('%s') must be before attributes"
 msgstr "მეტრიკა (\"%s\") ატრიბუტებამდე უნდა იყოს"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:409
+#: src/libnmc-setting/nm-meta-setting-desc.c:404
 #, c-format
 msgid "invalid route: %s. %s"
 msgstr "არასწორი რაუტი: %s. %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:478
+#: src/libnmc-setting/nm-meta-setting-desc.c:473
 #, c-format
 msgid "cannot read pac-script from file '%s'"
 msgstr "ფაილიდან \"%s\" pac-სკრიპტი ვერ წავიკითხე"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:486
+#: src/libnmc-setting/nm-meta-setting-desc.c:481
 #, c-format
 msgid "file '%s' contains non-valid utf-8"
 msgstr "ფაილი \"%s\" არასწორ utf-8-ს შეიცავს"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:499
+#: src/libnmc-setting/nm-meta-setting-desc.c:494
 #, c-format
 msgid "'%s' does not contain a valid PAC Script"
 msgstr "'%s' სწორ PAC სკრიპტს არ შეიცავს"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:502
+#: src/libnmc-setting/nm-meta-setting-desc.c:497
 msgid "Not a valid PAC Script"
 msgstr "არ წარმოადგენს სწორ PAC სკრიპტს"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:554
+#: src/libnmc-setting/nm-meta-setting-desc.c:549
 #, c-format
 msgid "cannot read team config from file '%s'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:562
+#: src/libnmc-setting/nm-meta-setting-desc.c:557
 #, c-format
 msgid "team config file '%s' contains non-valid utf-8"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1056
+#: src/libnmc-setting/nm-meta-setting-desc.c:1051
 msgid "auto"
 msgstr "ავტომატური"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1221
+#: src/libnmc-setting/nm-meta-setting-desc.c:1180
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1413
-#: src/libnmc-setting/nm-meta-setting-desc.c:1421
-#: src/libnmc-setting/nm-meta-setting-desc.c:4478
+#: src/libnmc-setting/nm-meta-setting-desc.c:1436
+#: src/libnmc-setting/nm-meta-setting-desc.c:1444
+#: src/libnmc-setting/nm-meta-setting-desc.c:4506
 msgid "'%s' is out of range [%"
-msgstr ""
+msgstr "'%s' დიაპაზონს გარეთაა [%"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1429
+#: src/libnmc-setting/nm-meta-setting-desc.c:1452
 #, c-format
 msgid "'%s' is not a valid number"
-msgstr ""
+msgstr "'%s' სწორი რიცხვი არაა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1485
+#: src/libnmc-setting/nm-meta-setting-desc.c:1508
 #, c-format
 msgid "'%s' is out of range [0, %u]"
-msgstr ""
+msgstr "'%s' დიაპაზონს გარეთაა [0, %u]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1532
+#: src/libnmc-setting/nm-meta-setting-desc.c:1559
 #, c-format
 msgid "'%s' is not a valid Ethernet MAC"
-msgstr ""
+msgstr "'%s' სწორი Ethernet MAC არაა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1657
+#: src/libnmc-setting/nm-meta-setting-desc.c:1648
 #, c-format
 msgid "invalid option '%s', use a combination of [%s]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1821
+#: src/libnmc-setting/nm-meta-setting-desc.c:1785
 #, c-format
 msgid "%d (key)"
 msgstr "%d (გასაღები)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1823
+#: src/libnmc-setting/nm-meta-setting-desc.c:1787
 #, c-format
 msgid "%d (passphrase)"
 msgstr "%d (კოდური ფრაზა)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1826
+#: src/libnmc-setting/nm-meta-setting-desc.c:1790
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (უცნობი)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1839
+#: src/libnmc-setting/nm-meta-setting-desc.c:1803
 msgid "0 (NONE)"
 msgstr "0 (არცერთი)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1845
+#: src/libnmc-setting/nm-meta-setting-desc.c:1809
 msgid "REORDER_HEADERS, "
 msgstr "REORDER_HEADERS, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1847
+#: src/libnmc-setting/nm-meta-setting-desc.c:1811
 msgid "GVRP, "
 msgstr "GVRP, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1849
+#: src/libnmc-setting/nm-meta-setting-desc.c:1813
 msgid "LOOSE_BINDING, "
 msgstr "LOOSE_BINDING, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1851
+#: src/libnmc-setting/nm-meta-setting-desc.c:1815
 msgid "MVRP, "
 msgstr "MVRP, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1872
+#: src/libnmc-setting/nm-meta-setting-desc.c:1836
 msgid "0 (none)"
 msgstr "0 (არცერთი)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1878
+#: src/libnmc-setting/nm-meta-setting-desc.c:1842
 msgid "agent-owned, "
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1880
+#: src/libnmc-setting/nm-meta-setting-desc.c:1844
 msgid "not saved, "
 msgstr "შენახული არაა, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1882
+#: src/libnmc-setting/nm-meta-setting-desc.c:1846
 msgid "not required, "
 msgstr "მოთხოვნილი არაა, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2087
+#: src/libnmc-setting/nm-meta-setting-desc.c:2051
 #, c-format
 msgid "'%s' is not valid; use <option>=<value>"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2097
+#: src/libnmc-setting/nm-meta-setting-desc.c:2061
 #, c-format
 msgid "cannot set empty \"%s\" option"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2158
+#: src/libnmc-setting/nm-meta-setting-desc.c:2122
 #, c-format
 msgid "'%u' flags are not valid; use combination of %s"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2178
+#: src/libnmc-setting/nm-meta-setting-desc.c:2142
 #, c-format
 msgid "'%s' is not a valid number (or out of range)"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2278
+#: src/libnmc-setting/nm-meta-setting-desc.c:2242
 #, c-format
 msgid "invalid IPv4 or subnet \"%s\""
 msgstr "არასწორი IPv4 მისამართი ან ქვექსელი: %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2309
+#: src/libnmc-setting/nm-meta-setting-desc.c:2273
 msgid "not a valid hex-string"
 msgstr "არ წარმოადგენს სწორ სტრიქონს თექვსმეტობითში"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2327
+#: src/libnmc-setting/nm-meta-setting-desc.c:2291
 #, c-format
 msgid "'%s' is not a valid hex character"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2415
+#: src/libnmc-setting/nm-meta-setting-desc.c:2379
 msgid ""
 "too many arguments. Please only specify a private key file and optionally a "
 "password"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2532
+#: src/libnmc-setting/nm-meta-setting-desc.c:2496
 #, c-format
 msgid "failed to set bond option \"%s\""
 msgstr "ბმის პარამეტრის დაყენების შეცდომა: \"%s\""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2580
+#: src/libnmc-setting/nm-meta-setting-desc.c:2544
 #, c-format
 msgid ""
 "Enter a list of bonding options formatted as:\n"
@@ -4777,118 +5193,118 @@ msgid ""
 "Example: mode=2,miimon=120\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2687
+#: src/libnmc-setting/nm-meta-setting-desc.c:2651
 msgid "Can not change the connection type"
 msgstr "ქსელური შეერთების ტიპის შეცვლა შეუძლებელია"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2768
+#: src/libnmc-setting/nm-meta-setting-desc.c:2732
 #, c-format
 msgid "invalid permission \"%s\""
 msgstr "არასწორი წვდომა: %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2868
+#: src/libnmc-setting/nm-meta-setting-desc.c:2832
 #, c-format
 msgid "the value '%s' is not a valid UUID"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2939
+#: src/libnmc-setting/nm-meta-setting-desc.c:2903
 msgid "0 (disabled)"
 msgstr "0 (გათიშულია)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2945
+#: src/libnmc-setting/nm-meta-setting-desc.c:2909
 msgid "enabled, "
 msgstr "ჩართულია, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2947
+#: src/libnmc-setting/nm-meta-setting-desc.c:2911
 msgid "advertise, "
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2949
+#: src/libnmc-setting/nm-meta-setting-desc.c:2913
 msgid "willing, "
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3038
+#: src/libnmc-setting/nm-meta-setting-desc.c:3002
 #, c-format
 msgid "'%s' is not a valid DCB flag"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3066
+#: src/libnmc-setting/nm-meta-setting-desc.c:3030
 msgid "must contain 8 comma-separated numbers"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3081
+#: src/libnmc-setting/nm-meta-setting-desc.c:3045
 #, c-format
 msgid "'%s' not a number between 0 and %u (inclusive) or %u"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3088
+#: src/libnmc-setting/nm-meta-setting-desc.c:3052
 #, c-format
 msgid "'%s' not a number between 0 and %u (inclusive)"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3114
+#: src/libnmc-setting/nm-meta-setting-desc.c:3078
 #, c-format
 msgid "changes will have no effect until '%s' includes 1 (enabled)"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3146
+#: src/libnmc-setting/nm-meta-setting-desc.c:3110
 #, c-format
 msgid "bandwidth percentages must total 100%%"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3246
-#: src/libnmc-setting/nm-meta-setting-desc.c:3255
+#: src/libnmc-setting/nm-meta-setting-desc.c:3210
+#: src/libnmc-setting/nm-meta-setting-desc.c:3219
 msgid "SIM operator ID must be a 5 or 6 number MCCMNC code"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3278
+#: src/libnmc-setting/nm-meta-setting-desc.c:3242
 #, c-format
 msgid "'%s' is not a valid IBoIP P_Key"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3302
+#: src/libnmc-setting/nm-meta-setting-desc.c:3266
 msgid "default"
 msgstr "ნაგულისხმები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3573
+#: src/libnmc-setting/nm-meta-setting-desc.c:3537
 #, c-format
 msgid "invalid gateway address '%s'"
-msgstr ""
+msgstr "არასწორი ნაგულისხმევი რაუტერის მისამართი '%s'"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3725
+#: src/libnmc-setting/nm-meta-setting-desc.c:3689
 #, c-format
 msgid "'%s' is not a valid channel; use <1-13>"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3819
+#: src/libnmc-setting/nm-meta-setting-desc.c:3783
 msgid "The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3845
-#: src/libnmc-setting/nm-meta-setting-desc.c:3958
+#: src/libnmc-setting/nm-meta-setting-desc.c:3809
+#: src/libnmc-setting/nm-meta-setting-desc.c:3922
 msgid ""
 "The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3872
+#: src/libnmc-setting/nm-meta-setting-desc.c:3836
 msgid "The valid syntax is: '<value>' or '<start>-<end>"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3902
+#: src/libnmc-setting/nm-meta-setting-desc.c:3866
 msgid "The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4104
+#: src/libnmc-setting/nm-meta-setting-desc.c:4068
 #, c-format
 msgid "invalid priority map '%s'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4197
+#: src/libnmc-setting/nm-meta-setting-desc.c:4161
 #, c-format
 msgid "'%s' is not valid; 2 or 3 strings should be provided"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4236
+#: src/libnmc-setting/nm-meta-setting-desc.c:4200
 #, c-format
 msgid ""
 "Enter a list of S/390 options formatted as:\n"
@@ -4896,87 +5312,87 @@ msgid ""
 "Valid options are: %s\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4270
+#: src/libnmc-setting/nm-meta-setting-desc.c:4234
 #, c-format
 msgid "'%s' is not a valid channel"
-msgstr ""
+msgstr "'%s' სწორი არხი არაა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4278
+#: src/libnmc-setting/nm-meta-setting-desc.c:4242
 #, c-format
 msgid "'%ld' is not a valid channel"
-msgstr ""
+msgstr "'%ld' სწორი არხი არაა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4359
+#: src/libnmc-setting/nm-meta-setting-desc.c:4323
 #, c-format
 msgid ""
 "'%s' not compatible with %s '%s', please change the key or set the right %s "
 "first."
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4375
+#: src/libnmc-setting/nm-meta-setting-desc.c:4339
 #, c-format
 msgid "WEP key is guessed to be of %s"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4382
+#: src/libnmc-setting/nm-meta-setting-desc.c:4346
 #, c-format
 msgid "WEP key index set to '%d'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4421
+#: src/libnmc-setting/nm-meta-setting-desc.c:4422
 #, c-format
 msgid "'%s' is not compatible with '%s' type, please change or delete the key."
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4456 src/nmcli/utils.h:319
+#: src/libnmc-setting/nm-meta-setting-desc.c:4459 src/nmcli/utils.h:323
 msgid "on"
 msgstr "ჩართული"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4456 src/nmcli/utils.h:319
+#: src/libnmc-setting/nm-meta-setting-desc.c:4459 src/nmcli/utils.h:323
 msgid "off"
 msgstr "გამორთული"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4497
+#: src/libnmc-setting/nm-meta-setting-desc.c:4524
 #, c-format
 msgid "'%s' is not valid; use 'on', 'off', or 'ignore'"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4566
+#: src/libnmc-setting/nm-meta-setting-desc.c:4621
 msgid "Bonding primary interface"
 msgstr ""
 
 #. this is a virtual property, only needed during "ask" mode.
-#: src/libnmc-setting/nm-meta-setting-desc.c:4574
+#: src/libnmc-setting/nm-meta-setting-desc.c:4629
 msgid "Bonding monitoring mode"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4583
+#: src/libnmc-setting/nm-meta-setting-desc.c:4638
 msgid "Bonding miimon"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4592
+#: src/libnmc-setting/nm-meta-setting-desc.c:4647
 msgid "Bonding downdelay"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4601
+#: src/libnmc-setting/nm-meta-setting-desc.c:4656
 msgid "Bonding updelay"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4610
+#: src/libnmc-setting/nm-meta-setting-desc.c:4665
 msgid "Bonding arp-interval"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4619
+#: src/libnmc-setting/nm-meta-setting-desc.c:4674
 msgid "Bonding arp-ip-target"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4628
+#: src/libnmc-setting/nm-meta-setting-desc.c:4683
 msgid "LACP rate (slow/fast)"
 msgstr "LACP-ის სიხშირე (ნელი/სწრაფი)"
 
 #. macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
 #. * that the actual type is (guint32(*)(type *)).
-#: src/libnmc-setting/nm-meta-setting-desc.c:4802
+#: src/libnmc-setting/nm-meta-setting-desc.c:4874
 msgid ""
 "nmcli can accepts both direct JSON configuration data and a file name "
 "containing the configuration. In the latter case the file is read and the "
@@ -4987,7 +5403,7 @@ msgid ""
 "          set team.config /etc/my-team.conf\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4810
+#: src/libnmc-setting/nm-meta-setting-desc.c:4882
 msgid ""
 "Enter a list of link watchers formatted as dictionaries where the keys are "
 "teamd properties. Dictionary pairs are in the form: key=value and pairs are "
@@ -5013,47 +5429,11 @@ msgid ""
 "name=ethtool delay-up=3\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4859
+#: src/libnmc-setting/nm-meta-setting-desc.c:4931
 msgid "IEEE 802.15.4 (WPAN) parent device or connection UUID"
 msgstr "IEEE 802.15.4 (WPAN) მშობელი მოწყობილობის ან შეერთების UUID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4895
-msgid ""
-"Enter file path to CA certificate (optionally prefixed with file://).\n"
-"  [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/cacert.crt\n"
-msgstr ""
-
-#: src/libnmc-setting/nm-meta-setting-desc.c:4937
-msgid ""
-"Enter file path to client certificate (optionally prefixed with file://).\n"
-"  [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/jara.crt\n"
-msgstr ""
-
-#: src/libnmc-setting/nm-meta-setting-desc.c:4994
-msgid ""
-"Enter file path to CA certificate for inner authentication (optionally "
-"prefixed\n"
-"with file://).\n"
-"  [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/ca-zweite-phase.crt\n"
-msgstr ""
-
-#: src/libnmc-setting/nm-meta-setting-desc.c:5037
-msgid ""
-"Enter file path to client certificate for inner authentication (optionally "
-"prefixed\n"
-"with file://).\n"
-"  [file://]<file path>\n"
-"Note that nmcli does not support specifying certificates as raw blob data.\n"
-"Example: /home/cimrman/jara-zweite-phase.crt\n"
-msgstr ""
-
-#: src/libnmc-setting/nm-meta-setting-desc.c:5064
+#: src/libnmc-setting/nm-meta-setting-desc.c:5121
 msgid ""
 "Enter bytes as a list of hexadecimal values.\n"
 "Two formats are accepted:\n"
@@ -5066,100 +5446,91 @@ msgid ""
 "          ab 4 55 0xa6 ea 3a 74 C2\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5081
-#: src/libnmc-setting/nm-meta-setting-desc.c:5099
-msgid ""
-"Enter path to a private key and the key password (if not set yet):\n"
-"  [file://]<file path> [<password>]\n"
-"Note that nmcli does not support specifying private key as raw blob data.\n"
-"Example: /home/cimrman/jara-priv-key Dardanely\n"
-msgstr ""
-
-#: src/libnmc-setting/nm-meta-setting-desc.c:5144
-#: src/libnmc-setting/nm-meta-setting-desc.c:5446
-#: src/libnmc-setting/nm-meta-setting-desc.c:5933
-#: src/libnmc-setting/nm-meta-setting-desc.c:7099
+#: src/libnmc-setting/nm-meta-setting-desc.c:5194
+#: src/libnmc-setting/nm-meta-setting-desc.c:5497
+#: src/libnmc-setting/nm-meta-setting-desc.c:6078
+#: src/libnmc-setting/nm-meta-setting-desc.c:7468
 msgid "Password [none]"
 msgstr "პაროლი: [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5190
+#: src/libnmc-setting/nm-meta-setting-desc.c:5240
 msgid "Bluetooth device address"
 msgstr "ბლუთუზის მოწყობილობის მისამართი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5238
+#: src/libnmc-setting/nm-meta-setting-desc.c:5289
 #: src/nmtui/nmt-page-bond-port.c:51
 msgid "Queue ID"
 msgstr "რიგის ID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5244
+#: src/libnmc-setting/nm-meta-setting-desc.c:5295
 msgid "Port Priority"
 msgstr "პორტის პრიორიტეტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5256
-#: src/libnmc-setting/nm-meta-setting-desc.c:6013
-#: src/libnmc-setting/nm-meta-setting-desc.c:7825
-#: src/libnmc-setting/nm-meta-setting-desc.c:7863
-#: src/libnmc-setting/nm-meta-setting-desc.c:8040
-#: src/libnmc-setting/nm-meta-setting-desc.c:8273
+#: src/libnmc-setting/nm-meta-setting-desc.c:5307
+#: src/libnmc-setting/nm-meta-setting-desc.c:6216
+#: src/libnmc-setting/nm-meta-setting-desc.c:8210
+#: src/libnmc-setting/nm-meta-setting-desc.c:8248
+#: src/libnmc-setting/nm-meta-setting-desc.c:8445
+#: src/libnmc-setting/nm-meta-setting-desc.c:8710
 msgid "MAC [none]"
 msgstr "MAC [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5262
+#: src/libnmc-setting/nm-meta-setting-desc.c:5313
 msgid "Enable STP"
 msgstr "STP-ის ჩართვა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5268
+#: src/libnmc-setting/nm-meta-setting-desc.c:5319
 msgid "STP priority"
 msgstr "STP პრიორიტეტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5274
+#: src/libnmc-setting/nm-meta-setting-desc.c:5325
 #: src/nmtui/nmt-page-bridge.c:120
 msgid "Forward delay"
 msgstr "გადაგზავნის დაყოვნება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5280
+#: src/libnmc-setting/nm-meta-setting-desc.c:5331
 #: src/nmtui/nmt-page-bridge.c:134
 msgid "Hello time"
 msgstr "მისალმების დრო"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5286
+#: src/libnmc-setting/nm-meta-setting-desc.c:5337
 #: src/nmtui/nmt-page-bridge.c:148
 msgid "Max age"
 msgstr "მაქს. ასაკი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5292
+#: src/libnmc-setting/nm-meta-setting-desc.c:5343
 msgid "MAC address ageing time"
 msgstr "MAC მისამართი დაბერების დრო"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5302
+#: src/libnmc-setting/nm-meta-setting-desc.c:5353
 #: src/nmtui/nmt-page-bridge.c:156
 msgid "Group forward mask"
 msgstr "ჯგუფური გადაგზავნის ნიღაბი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5344
+#: src/libnmc-setting/nm-meta-setting-desc.c:5395
 #: src/nmtui/nmt-page-bridge.c:79
 msgid "Enable IGMP snooping"
 msgstr "IGMP სნუპინგის ჩართვა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5402
+#: src/libnmc-setting/nm-meta-setting-desc.c:5453
 msgid "Bridge port priority"
 msgstr "ხიდის პორტის პრიორიტეტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5408
+#: src/libnmc-setting/nm-meta-setting-desc.c:5459
 msgid "Bridge port STP path cost"
 msgstr "ხიდის პორტის STP ბილიკის ღირებულება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5414
+#: src/libnmc-setting/nm-meta-setting-desc.c:5465
 msgid "Hairpin"
 msgstr "თმისსარჭის რეჟიმი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5440
-#: src/libnmc-setting/nm-meta-setting-desc.c:5927
-#: src/libnmc-setting/nm-meta-setting-desc.c:7672
+#: src/libnmc-setting/nm-meta-setting-desc.c:5491
+#: src/libnmc-setting/nm-meta-setting-desc.c:6072
+#: src/libnmc-setting/nm-meta-setting-desc.c:8055
 msgid "Username [none]"
 msgstr "მომხმარებელი [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5542
+#: src/libnmc-setting/nm-meta-setting-desc.c:5596
 msgid ""
 "Enter a list of user permissions. This is a list of user names formatted "
 "as:\n"
@@ -5169,7 +5540,11 @@ msgid ""
 "Example: alice bob charlie\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5595
+#: src/libnmc-setting/nm-meta-setting-desc.c:5625
+msgid "Controller"
+msgstr "კონტროლერი"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:5684
 msgid ""
 "Enter secondary connections that should be activated when this connection "
 "is\n"
@@ -5182,7 +5557,7 @@ msgid ""
 "Example: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5618
+#: src/libnmc-setting/nm-meta-setting-desc.c:5741
 msgid ""
 "Enter a value which indicates whether the connection is subject to a data\n"
 "quota, usage costs or other limitations. Accepted options are:\n"
@@ -5191,40 +5566,53 @@ msgid ""
 "'unknown' to let NetworkManager choose a value using some heuristics\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5943
+#: src/libnmc-setting/nm-meta-setting-desc.c:6088
 msgid "APN"
 msgstr "APN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6022
-#: src/libnmc-setting/nm-meta-setting-desc.c:6651
-#: src/libnmc-setting/nm-meta-setting-desc.c:7894
-#: src/libnmc-setting/nm-meta-setting-desc.c:8080
+#: src/libnmc-setting/nm-meta-setting-desc.c:6170
+msgid "hsr port1"
+msgstr "hsr port1"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:6177
+msgid "hsr port2"
+msgstr "hsr port2"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:6183
+msgid "hsr multicast spec"
+msgstr ""
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:6225
+#: src/libnmc-setting/nm-meta-setting-desc.c:7011
+#: src/libnmc-setting/nm-meta-setting-desc.c:8295
+#: src/libnmc-setting/nm-meta-setting-desc.c:8507
 #: src/nmtui/nmt-page-ethernet.c:124 src/nmtui/nmt-page-infiniband.c:81
-#: src/nmtui/nmt-page-ip-tunnel.c:178 src/nmtui/nmt-page-vlan.c:100
-#: src/nmtui/nmt-page-wifi.c:395 src/nmtui/nmt-page-wireguard.c:85
+#: src/nmtui/nmt-page-ip-tunnel.c:178 src/nmtui/nmt-page-veth.c:80
+#: src/nmtui/nmt-page-vlan.c:100 src/nmtui/nmt-page-wifi.c:395
+#: src/nmtui/nmt-page-wireguard.c:85
 msgid "MTU"
 msgstr "MTU"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6041
+#: src/libnmc-setting/nm-meta-setting-desc.c:6244
 msgid "P_KEY [none]"
 msgstr "P_KEY [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6050
+#: src/libnmc-setting/nm-meta-setting-desc.c:6262
 msgid "Parent interface [none]"
 msgstr "მშობელი ინტერფეისი [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6077
+#: src/libnmc-setting/nm-meta-setting-desc.c:6291
 msgid ""
 "Enter a list of IPv4 addresses of DNS servers.\n"
 "\n"
 "Example: 8.8.8.8, 8.8.4.4\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6124
+#: src/libnmc-setting/nm-meta-setting-desc.c:6341
 msgid "IPv4 address (IP[/plen]) [none]"
 msgstr "IPv4 მისამართი (IP[/pსიგრძ]) [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6126
+#: src/libnmc-setting/nm-meta-setting-desc.c:6343
 msgid ""
 "Enter a list of IPv4 addresses formatted as:\n"
 "  ip[/prefix], ip[/prefix],...\n"
@@ -5233,11 +5621,11 @@ msgid ""
 "Example: 192.168.1.5/24, 10.0.0.11/24\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6145
+#: src/libnmc-setting/nm-meta-setting-desc.c:6362
 msgid "IPv4 gateway [none]"
 msgstr "IPv4 რაუტერი [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6153
+#: src/libnmc-setting/nm-meta-setting-desc.c:6371
 msgid ""
 "Enter a list of IPv4 routes formatted as:\n"
 "  ip[/prefix] [next-hop] [metric],...\n"
@@ -5250,14 +5638,14 @@ msgid ""
 "          10.1.2.0/24\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6193
+#: src/libnmc-setting/nm-meta-setting-desc.c:6411
 msgid ""
 "Enter a list of IPv4 routing rules formatted as:\n"
 "  priority [prio] [from [src]] [to [dst]], ,...\n"
 "\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6329
+#: src/libnmc-setting/nm-meta-setting-desc.c:6599
 msgid ""
 "Enter a list of IPv6 addresses of DNS servers.  If the IPv6 configuration "
 "method is 'auto' these DNS servers are appended to those (if any) returned "
@@ -5269,11 +5657,11 @@ msgid ""
 "Example: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6382
+#: src/libnmc-setting/nm-meta-setting-desc.c:6655
 msgid "IPv6 address (IP[/plen]) [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6384
+#: src/libnmc-setting/nm-meta-setting-desc.c:6657
 msgid ""
 "Enter a list of IPv6 addresses formatted as:\n"
 "  ip[/prefix], ip[/prefix],...\n"
@@ -5282,11 +5670,11 @@ msgid ""
 "Example: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6403
+#: src/libnmc-setting/nm-meta-setting-desc.c:6676
 msgid "IPv6 gateway [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6411
+#: src/libnmc-setting/nm-meta-setting-desc.c:6685
 msgid ""
 "Enter a list of IPv6 routes formatted as:\n"
 "  ip[/prefix] [next-hop] [metric],...\n"
@@ -5300,399 +5688,412 @@ msgid ""
 "          abbe::/64 55\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6451
+#: src/libnmc-setting/nm-meta-setting-desc.c:6725
 msgid ""
 "Enter a list of IPv6 routing rules formatted as:\n"
 "  priority [prio] [from [src]] [to [dst]], ,...\n"
 "\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6588
-#: src/libnmc-setting/nm-meta-setting-desc.c:7725
+#: src/libnmc-setting/nm-meta-setting-desc.c:6917
+#: src/libnmc-setting/nm-meta-setting-desc.c:8110
 msgid "Parent device [none]"
-msgstr ""
+msgstr "მშობელი მოწყობილობა [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6594
+#: src/libnmc-setting/nm-meta-setting-desc.c:6923
 msgid "Local endpoint [none]"
-msgstr ""
+msgstr "ლოკალური ბოლოწერტილი [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6601
-#: src/libnmc-setting/nm-meta-setting-desc.c:7744
+#: src/libnmc-setting/nm-meta-setting-desc.c:6930
+#: src/libnmc-setting/nm-meta-setting-desc.c:8129
 msgid "Remote"
 msgstr "დაშორებული"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6717
+#: src/libnmc-setting/nm-meta-setting-desc.c:6981
+msgid "IPVLAN parent device or connection UUID"
+msgstr "IPVLAN-ის მშობელი მოწყობილობა, ან შეერთების UUID"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:7077
 msgid "MACsec parent device or connection UUID"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6738
+#: src/libnmc-setting/nm-meta-setting-desc.c:7098
 msgid "Enable encryption"
 msgstr "დაშიფვრის ჩართვა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6754
+#: src/libnmc-setting/nm-meta-setting-desc.c:7114
 msgid "MKA_CKN"
 msgstr "MKA_CKN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6760
+#: src/libnmc-setting/nm-meta-setting-desc.c:7120
 #: src/nmtui/nmt-page-macsec.c:170
 msgid "SCI port"
 msgstr "SCI პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6786
+#: src/libnmc-setting/nm-meta-setting-desc.c:7149
 msgid "MACVLAN parent device or connection UUID"
 msgstr "MACVLAN მშობელი მოწყობილობის ან შეერთების UUID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6807
+#: src/libnmc-setting/nm-meta-setting-desc.c:7170
 msgid "Tap"
 msgstr "Tap"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6874
-#: src/libnmc-setting/nm-meta-setting-desc.c:8002 src/nmtui/nmt-page-wifi.c:216
+#: src/libnmc-setting/nm-meta-setting-desc.c:7241
+#: src/libnmc-setting/nm-meta-setting-desc.c:8405 src/nmtui/nmt-page-wifi.c:216
 msgid "SSID"
 msgstr "SSID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6883
+#: src/libnmc-setting/nm-meta-setting-desc.c:7251
 msgid "OLPC Mesh channel"
 msgstr "OLPC ბადის არხი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6892
+#: src/libnmc-setting/nm-meta-setting-desc.c:7261
 msgid "DHCP anycast MAC address [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7080
+#: src/libnmc-setting/nm-meta-setting-desc.c:7449
 msgid "PPPoE parent device"
 msgstr "PPPoE მშობელი მოწყობილობა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7086
+#: src/libnmc-setting/nm-meta-setting-desc.c:7455
 msgid "Service [none]"
 msgstr "სერვისი [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7093
+#: src/libnmc-setting/nm-meta-setting-desc.c:7462
 msgid "PPPoE username"
 msgstr "PPPoE-ის მომხმარებლის სახელი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7129
+#: src/libnmc-setting/nm-meta-setting-desc.c:7498
 msgid "Browser only"
 msgstr "მხოლოდ ბრაუზერი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7135
+#: src/libnmc-setting/nm-meta-setting-desc.c:7504
 msgid "PAC URL"
 msgstr "PAC URL"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7141
+#: src/libnmc-setting/nm-meta-setting-desc.c:7510
 msgid "PAC script"
 msgstr "PAC სკრიპტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7265
-#: src/libnmc-setting/nm-meta-setting-desc.c:7453
+#: src/libnmc-setting/nm-meta-setting-desc.c:7643
+#: src/libnmc-setting/nm-meta-setting-desc.c:7832
 msgid "Team JSON configuration [none]"
 msgstr "ჯგუფური შეერთების JSON კონფიგურაცია [არცერთი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7556
+#: src/libnmc-setting/nm-meta-setting-desc.c:7935
 msgid "User ID [none]"
 msgstr "მომხმარებლის ID [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7562
+#: src/libnmc-setting/nm-meta-setting-desc.c:7941
 msgid "Group ID [none]"
 msgstr "ჯგუფის ID [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7568
+#: src/libnmc-setting/nm-meta-setting-desc.c:7947
 msgid "Enable PI"
 msgstr "Pi-ის წაშლა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7574
+#: src/libnmc-setting/nm-meta-setting-desc.c:7953
 msgid "Enable VNET header"
 msgstr "VNET თავსართის ჩართვა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7580
+#: src/libnmc-setting/nm-meta-setting-desc.c:7959
 msgid "Enable multi queue"
 msgstr "მრავალრიგიანობის ჩართვა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7593
+#: src/libnmc-setting/nm-meta-setting-desc.c:7972
 msgid "veth peer"
 msgstr "veth პარტნიორი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7606
+#: src/libnmc-setting/nm-meta-setting-desc.c:7985
 msgid "VLAN parent device or connection UUID"
 msgstr "VLAN-ის მშობელი მოწყობილობის ან შეერთების UUID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7613
+#: src/libnmc-setting/nm-meta-setting-desc.c:7992
 msgid "VLAN ID (<0-4094>)"
 msgstr "VLAN ID (<0-4094>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7619
+#: src/libnmc-setting/nm-meta-setting-desc.c:7998
 msgid "VLAN flags (<0-7>) [none]"
 msgstr "VLAN ალმები (<0-7>) [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7634
+#: src/libnmc-setting/nm-meta-setting-desc.c:8014
 msgid "Ingress priority maps [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7644
+#: src/libnmc-setting/nm-meta-setting-desc.c:8025
 msgid "Egress priority maps [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7712
+#: src/libnmc-setting/nm-meta-setting-desc.c:8097
 msgid "Table"
 msgstr "ცხრილი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7732
+#: src/libnmc-setting/nm-meta-setting-desc.c:8117
 msgid "VXLAN ID"
 msgstr "VXLAN ID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7738
+#: src/libnmc-setting/nm-meta-setting-desc.c:8123
 msgid "Local address [none]"
 msgstr "ლოკალური მისამართი [არაფერი]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7750
+#: src/libnmc-setting/nm-meta-setting-desc.c:8135
 msgid "Minimum source port"
 msgstr "მინიმალური საწყისი პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7756
+#: src/libnmc-setting/nm-meta-setting-desc.c:8141
 msgid "Maximum source port"
 msgstr "მაქსიმალური საწყისი პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7762
+#: src/libnmc-setting/nm-meta-setting-desc.c:8147
 msgid "Destination port"
 msgstr "დანიშნულების პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7802
+#: src/libnmc-setting/nm-meta-setting-desc.c:8187 src/nmtui/nmt-page-veth.c:54
 #: src/nmtui/nmt-wireguard-peer-editor.c:78
 msgid "Peer"
 msgstr "პარტნიორი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7832
+#: src/libnmc-setting/nm-meta-setting-desc.c:8217
 msgid "WiMAX NSP name"
 msgstr "WiMAX NSP სახელი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7869
-#: src/libnmc-setting/nm-meta-setting-desc.c:8045
+#: src/libnmc-setting/nm-meta-setting-desc.c:8254
+#: src/libnmc-setting/nm-meta-setting-desc.c:8450
 msgid "Cloned MAC [none]"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7902
+#: src/libnmc-setting/nm-meta-setting-desc.c:8303
 msgid ""
 "Enter a list of subchannels (comma or space separated).\n"
 "\n"
 "Example: 0.0.0e20 0.0.0e21 0.0.0e22\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8222
+#: src/libnmc-setting/nm-meta-setting-desc.c:8659
 msgid ""
 "Enter the type of WEP keys. The accepted values are: 0 or unknown, 1 or key, "
 "and 2 or passphrase.\n"
 msgstr ""
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8281
+#: src/libnmc-setting/nm-meta-setting-desc.c:8718
 msgid "Short address (<0x0000-0xffff>)"
 msgstr "მოკლე მისამართი (<0x0000-0xffff>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8297
+#: src/libnmc-setting/nm-meta-setting-desc.c:8734
 msgid "PAN Identifier (<0x0000-0xffff>)"
 msgstr "PAN იდენტიფიკატორი (<0x0000-0xffff>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8312
+#: src/libnmc-setting/nm-meta-setting-desc.c:8749
 msgid "Page (<default|0-31>)"
 msgstr "გვერდი (<ნაგულისხმები|0-31>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8326
+#: src/libnmc-setting/nm-meta-setting-desc.c:8763
 msgid "Channel (<default|0-26>)"
 msgstr "არხი (<ნაგულისხმები|0-26>)"
 
 #. ***************************************************************************
-#: src/libnmc-setting/nm-meta-setting-desc.c:8461
+#: src/libnmc-setting/nm-meta-setting-desc.c:8898
 msgid "6LOWPAN settings"
 msgstr "6LOWPAN მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8462
+#: src/libnmc-setting/nm-meta-setting-desc.c:8899
 msgid "802-1x settings"
 msgstr "802-1x-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8464
+#: src/libnmc-setting/nm-meta-setting-desc.c:8901
 msgid "bluetooth connection"
 msgstr "bluetooth შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8465
+#: src/libnmc-setting/nm-meta-setting-desc.c:8902
 msgid "Bond device"
 msgstr "ინტერფეისის ბმის მოწყობილბა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8466
+#: src/libnmc-setting/nm-meta-setting-desc.c:8903
 msgid "Bond port"
 msgstr "ინტერფეისის ბმის პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8467
+#: src/libnmc-setting/nm-meta-setting-desc.c:8904
 msgid "Bridge device"
 msgstr "ხიდის მოწყობილობა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8468
+#: src/libnmc-setting/nm-meta-setting-desc.c:8905
 msgid "Bridge port"
 msgstr "ხიდის პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8469
+#: src/libnmc-setting/nm-meta-setting-desc.c:8906
 msgid "CDMA mobile broadband connection"
 msgstr "CDMA მობილური ფართოზოლოვანი შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8470
+#: src/libnmc-setting/nm-meta-setting-desc.c:8907
 msgid "General settings"
 msgstr "ზოგადი პარამეტრები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8471
+#: src/libnmc-setting/nm-meta-setting-desc.c:8908
 msgid "DCB settings"
 msgstr "DCB-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8472
+#: src/libnmc-setting/nm-meta-setting-desc.c:8909
 msgid "Dummy settings"
 msgstr "უაზრო პარამეტრები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8473
+#: src/libnmc-setting/nm-meta-setting-desc.c:8910
 msgid "Ethtool settings"
 msgstr "Ethtool-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8474
+#: src/libnmc-setting/nm-meta-setting-desc.c:8911
 msgid "Generic settings"
 msgstr "საერთო პარამეტრები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8475
+#: src/libnmc-setting/nm-meta-setting-desc.c:8912
 msgid "GSM mobile broadband connection"
 msgstr "GSM მობილური ფართოზოლოვანი შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8476
+#: src/libnmc-setting/nm-meta-setting-desc.c:8913
 msgid "Hostname settings"
 msgstr "ჰოსტის სახელის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8478
+#: src/libnmc-setting/nm-meta-setting-desc.c:8914
+msgid "HSR settings"
+msgstr "HSR-ის მორგება"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:8916
 msgid "IPv4 protocol"
 msgstr "IPv4 პროტოკოლი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8479
+#: src/libnmc-setting/nm-meta-setting-desc.c:8917
 msgid "IPv6 protocol"
 msgstr "IPv6 პროტოკოლი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8480
+#: src/libnmc-setting/nm-meta-setting-desc.c:8918
 msgid "IP-tunnel settings"
 msgstr "IP გვირაბის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8481
+#: src/libnmc-setting/nm-meta-setting-desc.c:8919
+#| msgid "WPAN settings"
+msgid "IPVLAN settings"
+msgstr "IPVLAN-ის მორგება"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:8920
 msgid "Link settings"
 msgstr "ბმულის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8482
+#: src/libnmc-setting/nm-meta-setting-desc.c:8921
 msgid "Loopback settings"
 msgstr "მარყუჟის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8483
+#: src/libnmc-setting/nm-meta-setting-desc.c:8922
 msgid "MACsec connection"
 msgstr "MACsec შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8484
+#: src/libnmc-setting/nm-meta-setting-desc.c:8923
 msgid "macvlan connection"
 msgstr "macvlan შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8485
+#: src/libnmc-setting/nm-meta-setting-desc.c:8924
 msgid "Match"
 msgstr "დამთხვევა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8486
+#: src/libnmc-setting/nm-meta-setting-desc.c:8925
 msgid "OLPC Mesh connection"
 msgstr "OPLC ბადესთან შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8487
+#: src/libnmc-setting/nm-meta-setting-desc.c:8926
 msgid "Open vSwitch bridge settings"
 msgstr "OpenvSwitch-ის ხიდის პარამეტრები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8488
+#: src/libnmc-setting/nm-meta-setting-desc.c:8927
 msgid "Open vSwitch DPDK interface settings"
 msgstr "Open vSwitch DPDK ინტერფეისის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8489
+#: src/libnmc-setting/nm-meta-setting-desc.c:8928
 msgid "OVS Other Config"
 msgstr "OVS სხვა პარამეტრები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8490
+#: src/libnmc-setting/nm-meta-setting-desc.c:8929
 msgid "OVS External IDs"
 msgstr "OVS-ის გარე ID-ები"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8491
+#: src/libnmc-setting/nm-meta-setting-desc.c:8930
 msgid "Open vSwitch interface settings"
 msgstr "OpenvSwitch-ის ინტერფეისის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8492
+#: src/libnmc-setting/nm-meta-setting-desc.c:8931
 msgid "Open vSwitch patch interface settings"
 msgstr "OpenvSwitch-ის პაჩის ინტერფეისის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8493
+#: src/libnmc-setting/nm-meta-setting-desc.c:8932
 msgid "Open vSwitch port settings"
 msgstr "OpenvSwitch-ის პორტის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8494
+#: src/libnmc-setting/nm-meta-setting-desc.c:8933
 msgid "PPP settings"
 msgstr "PPP-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8495
+#: src/libnmc-setting/nm-meta-setting-desc.c:8934
 msgid "PPPoE"
 msgstr "PPPoE"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8496
+#: src/libnmc-setting/nm-meta-setting-desc.c:8935
 msgid "Proxy"
 msgstr "პროქსი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8497
+#: src/libnmc-setting/nm-meta-setting-desc.c:8936
 msgid "Serial settings"
 msgstr "სერიული პორტის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8498
+#: src/libnmc-setting/nm-meta-setting-desc.c:8937
 msgid "SR-IOV settings"
 msgstr "SR-IOV-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8499
+#: src/libnmc-setting/nm-meta-setting-desc.c:8938
 msgid "Traffic controls"
 msgstr "ტრაფიკის კონტროლი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8500
+#: src/libnmc-setting/nm-meta-setting-desc.c:8939
 msgid "Team device"
 msgstr "ჯგუფური მოწყობილობა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8501
+#: src/libnmc-setting/nm-meta-setting-desc.c:8940
 msgid "Team port"
 msgstr "ჯგუფური პორტი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8502
+#: src/libnmc-setting/nm-meta-setting-desc.c:8941
 msgid "Tun device"
 msgstr "Tun მოწყობილობა"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8503
+#: src/libnmc-setting/nm-meta-setting-desc.c:8942
 msgid "User settings"
 msgstr "მომხმარებლის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8509
+#: src/libnmc-setting/nm-meta-setting-desc.c:8948
 msgid "Wi-Fi P2P connection"
 msgstr "WiFi P2P შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8510
+#: src/libnmc-setting/nm-meta-setting-desc.c:8949
 msgid "WiMAX connection"
 msgstr "WiMAX შეერთება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8511
+#: src/libnmc-setting/nm-meta-setting-desc.c:8950
 msgid "Wired Ethernet"
 msgstr "მავთულიანი Ethernet"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8512
+#: src/libnmc-setting/nm-meta-setting-desc.c:8951
 msgid "WireGuard VPN settings"
 msgstr "WireGuard VPN-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8513
+#: src/libnmc-setting/nm-meta-setting-desc.c:8952
 msgid "Wi-Fi connection"
 msgstr "Wi-Fi კავშირი"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8514
+#: src/libnmc-setting/nm-meta-setting-desc.c:8953
 msgid "Wi-Fi security settings"
 msgstr "Wi-Fi-ის უსაფრთხოების მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8515
+#: src/libnmc-setting/nm-meta-setting-desc.c:8954
 msgid "WPAN settings"
 msgstr "WPAN-ის მორგება"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8938
+#: src/libnmc-setting/nm-meta-setting-desc.c:9391
 msgid "name"
 msgstr "სახელი"
 
@@ -5725,6 +6126,18 @@ msgstr ""
 
 #: src/libnmc-setting/settings-docs.h.in:5
 msgid ""
+"Whether or not ports of this connection should be automatically brought up "
+"when NetworkManager activates this connection. This only has a real effect "
+"for controller connections. The properties \"autoconnect\", \"autoconnect-"
+"priority\" and \"autoconnect-retries\" are unrelated to this setting. The "
+"permitted values are: 0: leave port connections untouched, 1: activate all "
+"the port connections with this connection, -1: default. If -1 (default) is "
+"set, global connection.autoconnect-ports is read to determine the real "
+"value. If it is default as well, this fallbacks to 0."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:6
+msgid ""
 "The autoconnect priority in range -999 to 999. If the connection is set to "
 "autoconnect, connections with higher priority will be preferred. The higher "
 "number means higher priority. Defaults to 0. Note that this property only "
@@ -5733,7 +6146,7 @@ msgid ""
 "chosen."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:6
+#: src/libnmc-setting/settings-docs.h.in:7
 msgid ""
 "The number of times a connection should be tried when autoactivating before "
 "giving up. Zero means forever, -1 means the global default (4 times if not "
@@ -5742,19 +6155,25 @@ msgid ""
 "autoconnect again."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:7
+#: src/libnmc-setting/settings-docs.h.in:8
 msgid ""
-"Whether or not slaves of this connection should be automatically brought up "
+"Whether or not ports of this connection should be automatically brought up "
 "when NetworkManager activates this connection. This only has a real effect "
-"for master connections. The properties \"autoconnect\", \"autoconnect-"
+"for controller connections. The properties \"autoconnect\", \"autoconnect-"
 "priority\" and \"autoconnect-retries\" are unrelated to this setting. The "
-"permitted values are: 0: leave slave connections untouched, 1: activate all "
-"the slave connections with this connection, -1: default. If -1 (default) is "
+"permitted values are: 0: leave port connections untouched, 1: activate all "
+"the port connections with this connection, -1: default. If -1 (default) is "
 "set, global connection.autoconnect-slaves is read to determine the real "
-"value. If it is default as well, this fallbacks to 0."
+"value. If it is default as well, this fallbacks to 0. Deprecated 1.46. Use "
+"\"autoconnect-ports\" instead, this is just an alias."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:8
+#: src/libnmc-setting/settings-docs.h.in:9
+msgid ""
+"Interface name of the controller device or UUID of the controller connection."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:10
 msgid ""
 "Whether DNSOverTls (dns-over-tls) is enabled for the connection. DNSOverTls "
 "is a technology which uses TLS to encrypt dns traffic. The permitted values "
@@ -5766,19 +6185,27 @@ msgid ""
 "plugin is dns-systemd-resolved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:9
+#: src/libnmc-setting/settings-docs.h.in:11
+msgid ""
+"Whether the connection will be brought down before the system is powered "
+"off.  The default value is \"default\" (-1). When the default value is "
+"specified, then the global value from NetworkManager configuration is looked "
+"up, if not set, it is considered as \"no\" (0)."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:12
 msgid ""
 "If greater than zero, delay success of IP addressing until either the "
 "timeout is reached, or an IP gateway replies to a ping."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:10
+#: src/libnmc-setting/settings-docs.h.in:13
 msgid ""
 "A human readable unique identifier for the connection, like \"Work Wi-Fi\" "
 "or \"T-Mobile 3G\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:11
+#: src/libnmc-setting/settings-docs.h.in:14
 msgid ""
 "The name of the network interface this connection is bound to. If not set, "
 "then the connection can be attached to any interface of the appropriate type "
@@ -5791,11 +6218,39 @@ msgid ""
 "interface."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:12
+#: src/libnmc-setting/settings-docs.h.in:15
+msgid ""
+"The property specifies a list of target IP addresses for pinging. When "
+"multiple targets are set, NetworkManager will start multiple ping processes "
+"in parallel. This property can only be set if connection.ip-ping-timeout is "
+"set. The ip-ping-timeout is used to delay the success of IP addressing until "
+"either the specified timeout (in seconds) is reached, or an target IP "
+"address replies to a ping. Configuring \"ip-ping-addresses\" may delay "
+"reaching the systemd's network-online.target due to waiting for the ping "
+"operations to complete or timeout."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:16
+msgid ""
+"The property determines whether it is sufficient for any ping check to "
+"succeed among \"ip-ping-addresses\", or if all ping checks must succeed for "
+"\"ip-ping-addresses\"."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:17
+msgid ""
+"If greater than zero, delay success of IP addressing until either the "
+"specified timeout (in seconds) is reached, or a target IP address replies to "
+"a ping. The property specifies the timeout for the \"ip-ping-addresses\". "
+"This property is incompatible with \"gateway-ping-timeout\", you cannot set "
+"these two properties at the same time."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:18
 msgid "Whether LLDP is enabled for the connection."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:13
+#: src/libnmc-setting/settings-docs.h.in:19
 msgid ""
 "Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the "
 "connection. LLMNR is a protocol based on the Domain Name System (DNS) packet "
@@ -5809,30 +6264,33 @@ msgid ""
 "effect. One such plugin is dns-systemd-resolved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:14
-msgid "Interface name of the master device or UUID of the master connection."
+#: src/libnmc-setting/settings-docs.h.in:20
+msgid ""
+"Interface name of the controller device or UUID of the controller "
+"connection. Deprecated 1.46. Use \"controller\" instead, this is just an "
+"alias."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:15
+#: src/libnmc-setting/settings-docs.h.in:21
 msgid ""
 "Whether mDNS is enabled for the connection. The permitted values are: "
 "\"yes\" (2) register hostname and resolving for the connection, \"no\" (0) "
 "disable mDNS for the interface, \"resolve\" (1) do not register hostname but "
 "allow resolving of mDNS host names and \"default\" (-1) to allow lookup of a "
 "global default in NetworkManager.conf. If unspecified, \"default\" "
-"ultimately depends on the DNS plugin (which for systemd-resolved currently "
-"means \"no\"). This feature requires a plugin which supports mDNS. "
-"Otherwise, the setting has no effect. One such plugin is dns-systemd-"
-"resolved."
+"ultimately depends on the DNS plugin. This feature requires a plugin which "
+"supports mDNS. Otherwise, the setting has no effect. Currently the only "
+"supported DNS plugin is systemd-resolved. For systemd-resolved, the default "
+"is configurable via MulticastDNS= setting in resolved.conf."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:16
+#: src/libnmc-setting/settings-docs.h.in:22
 msgid ""
 "Whether the connection is metered. When updating this property on a "
 "currently activated connection, the change takes effect immediately."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:17
+#: src/libnmc-setting/settings-docs.h.in:23
 msgid ""
 "Whether to configure MPTCP endpoints and the address flags. If MPTCP is "
 "enabled in NetworkManager, it will configure the addresses of the interface "
@@ -5867,7 +6325,7 @@ msgid ""
 "the strict reverse path filtering (1) to the loose setting (2)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:18
+#: src/libnmc-setting/settings-docs.h.in:24
 msgid ""
 "If configured, set to a Manufacturer Usage Description (MUD) URL that points "
 "to manufacturer-recommended network policies for IoT devices. It is "
@@ -5878,13 +6336,13 @@ msgid ""
 "unspecified, the ultimate default is \"none\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:19
+#: src/libnmc-setting/settings-docs.h.in:25
 msgid ""
 "Specifies whether the profile can be active multiple times at a particular "
 "moment. The value is of type NMConnectionMultiConnect."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:20
+#: src/libnmc-setting/settings-docs.h.in:26
 msgid ""
 "An array of strings defining what access a given user has to this "
 "connection.  If this is NULL or empty, all users are allowed to access this "
@@ -5899,23 +6357,30 @@ msgid ""
 "[id], and [reserved] must be valid UTF-8."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:21
+#: src/libnmc-setting/settings-docs.h.in:27
+msgid ""
+"Setting name of the device type of this port's controller connection (eg, "
+"\"bond\"), or NULL if this connection is not a port."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:28
 msgid "This property is deprecated and has no meaning."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:22
+#: src/libnmc-setting/settings-docs.h.in:29
 msgid ""
 "List of connection UUIDs that should be activated when the base connection "
 "itself is activated. Currently, only VPN connections are supported."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:23
+#: src/libnmc-setting/settings-docs.h.in:30
 msgid ""
-"Setting name of the device type of this slave's master connection (eg, "
-"\"bond\"), or NULL if this connection is not a slave."
+"Setting name of the device type of this port's controller connection (eg, "
+"\"bond\"), or NULL if this connection is not a port. Deprecated 1.46. Use "
+"\"port-type\" instead, this is just an alias."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:24
+#: src/libnmc-setting/settings-docs.h.in:31
 msgid ""
 "This represents the identity of the connection used for various purposes. It "
 "allows to configure multiple profiles to share the identity. Also, the "
@@ -5936,10 +6401,12 @@ msgid ""
 "See NetworkManager(8) manual about the secret-key and the host identity. The "
 "'$' character is treated special to perform dynamic substitutions at "
 "activation time. Currently, supported are \"${CONNECTION}\", \"${DEVICE}\", "
-"\"${MAC}\", \"${BOOT}\", \"${RANDOM}\".  These effectively create unique IDs "
-"per-connection, per-device, per-boot, or every time. The \"${CONNECTION}\" "
-"uses the profile's connection.uuid, the \"${DEVICE}\" uses the interface "
-"name of the device and \"${MAC}\" the permanent MAC address of the device. "
+"\"${MAC}\", \"${NETWORK_SSID}\", \"${BOOT}\", \"${RANDOM}\".  These "
+"effectively create unique IDs per-connection, per-device, per-SSID, per-"
+"boot, or every time.  The \"${CONNECTION}\" uses the profile's connection."
+"uuid, the \"${DEVICE}\" uses the interface name of the device and \"${MAC}\" "
+"the permanent MAC address of the device. \"${NETWORK_SSID}\" uses the SSID "
+"for Wi-Fi networks and falls back to \"${CONNECTION}\" on other networks. "
 "Any unrecognized patterns following '$' are treated verbatim, however are "
 "reserved for future use. You are thus advised to avoid '$' or escape it as "
 "\"$$\".  For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to "
@@ -5950,7 +6417,7 @@ msgid ""
 "connection profile."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:25
+#: src/libnmc-setting/settings-docs.h.in:32
 msgid ""
 "The time, in seconds since the Unix Epoch, that the connection was last "
 "_successfully_ fully activated. NetworkManager updates the connection "
@@ -5959,7 +6426,7 @@ msgid ""
 "reading (changes to this property will not be preserved)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:26
+#: src/libnmc-setting/settings-docs.h.in:33
 msgid ""
 "Base type of the connection. For hardware-dependent connections, should "
 "contain the setting name of the hardware-type specific setting (ie, \"802-3-"
@@ -5968,7 +6435,7 @@ msgid ""
 "setting name of that setting type (ie, \"vpn\" or \"bridge\", etc)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:27
+#: src/libnmc-setting/settings-docs.h.in:34
 msgid ""
 "The connection.uuid is the real identifier of a profile. It cannot change "
 "and it must be unique. It is therefore often best to refer to a profile by "
@@ -5977,7 +6444,7 @@ msgid ""
 "\"generate\" and \"\" are allowed to generate a new random UUID."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:28
+#: src/libnmc-setting/settings-docs.h.in:35
 msgid ""
 "Time in milliseconds to wait for connection to be considered activated. The "
 "wait will start after the pre-up dispatcher event. The value 0 means no wait "
@@ -5985,7 +6452,7 @@ msgid ""
 "wait time."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:29
+#: src/libnmc-setting/settings-docs.h.in:36
 msgid ""
 "Timeout in milliseconds to wait for device at startup. During boot, devices "
 "may take a while to be detected by the driver. This property will cause to "
@@ -5996,7 +6463,7 @@ msgid ""
 "meaning as no wait time."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:30
+#: src/libnmc-setting/settings-docs.h.in:37
 msgid ""
 "The trust level of a the connection.  Free form case-insensitive string (for "
 "example \"Home\", \"Work\", \"Public\").  NULL or unspecified zone means the "
@@ -6005,59 +6472,54 @@ msgid ""
 "takes effect immediately."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:31
+#: src/libnmc-setting/settings-docs.h.in:38
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
 "which this 6LowPAN interface should be created."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:32
+#: src/libnmc-setting/settings-docs.h.in:39
 msgid ""
 "List of strings to be matched against the altSubjectName of the certificate "
 "presented by the authentication server. If the list is empty, no "
 "verification of the server certificate's altSubjectName is performed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:33
+#: src/libnmc-setting/settings-docs.h.in:40
 msgid ""
 "Anonymous identity string for EAP authentication methods.  Used as the "
 "unencrypted identity with EAP types that support different tunneled identity "
 "like EAP-TTLS."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:34
+#: src/libnmc-setting/settings-docs.h.in:41
 msgid ""
 "A timeout for the authentication. Zero means the global default; if the "
 "global default is not set, the authentication timeout is 25 seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:35
+#: src/libnmc-setting/settings-docs.h.in:42
 msgid ""
-"Contains the CA certificate if used by the EAP method specified in the "
-"\"eap\" property. Certificate data is specified using a \"scheme\"; three "
-"are currently supported: blob, path and pkcs#11 URL. When using the blob "
-"scheme this property should be set to the certificate's DER encoded data. "
-"When using the path scheme, this property should be set to the full UTF-8 "
-"encoded path of the certificate, prefixed with the string \"file://\" and "
-"ending with a terminating NUL byte. This property can be unset even if the "
-"EAP method supports CA certificates, but this allows man-in-the-middle "
-"attacks and is NOT recommended. Note that enabling NMSetting8021x:system-ca-"
-"certs will override this setting to use the built-in path, if the built-in "
-"path is not a directory."
+"Contains the path to the CA certificate if used by the EAP method specified "
+"in the 802-1x.eap property. This property can be unset even if the EAP "
+"method supports CA certificates, but this allows man-in-the-middle attacks "
+"and is NOT recommended. Note that enabling 802-1x.system-ca-certs will "
+"override this setting to use the built-in path, if the built-in path is not "
+"a directory."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:36
+#: src/libnmc-setting/settings-docs.h.in:43
 msgid ""
 "The password used to access the CA certificate stored in \"ca-cert\" "
 "property. Only makes sense if the certificate is stored on a PKCS#11 token "
 "that requires a login."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:37
+#: src/libnmc-setting/settings-docs.h.in:44
 msgid "Flags indicating how to handle the \"ca-cert-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:38
+#: src/libnmc-setting/settings-docs.h.in:45
 msgid ""
 "UTF-8 encoded path to a directory containing PEM or DER formatted "
 "certificates to be added to the verification chain in addition to the "
@@ -6066,29 +6528,24 @@ msgid ""
 "this setting is ignored."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:39
+#: src/libnmc-setting/settings-docs.h.in:46
 msgid ""
-"Contains the client certificate if used by the EAP method specified in the "
-"\"eap\" property. Certificate data is specified using a \"scheme\"; two are "
-"currently supported: blob and path. When using the blob scheme (which is "
-"backwards compatible with NM 0.7.x) this property should be set to the "
-"certificate's DER encoded data. When using the path scheme, this property "
-"should be set to the full UTF-8 encoded path of the certificate, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte."
+"Contains the path to the client certificate if used by the EAP method "
+"specified in the 802-1x.eap property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:40
+#: src/libnmc-setting/settings-docs.h.in:47
 msgid ""
 "The password used to access the client certificate stored in \"client-cert\" "
 "property. Only makes sense if the certificate is stored on a PKCS#11 token "
 "that requires a login."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:41
+#: src/libnmc-setting/settings-docs.h.in:48
 msgid "Flags indicating how to handle the \"client-cert-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:42
+#: src/libnmc-setting/settings-docs.h.in:49
 msgid ""
 "Constraint for server domain name. If set, this list of FQDNs is used as a "
 "match requirement for dNSName element(s) of the certificate presented by the "
@@ -6098,7 +6555,7 @@ msgid ""
 "as a \";\" delimited list."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:43
+#: src/libnmc-setting/settings-docs.h.in:50
 msgid ""
 "Constraint for server domain name. If set, this FQDN is used as a suffix "
 "match requirement for dNSName element(s) of the certificate presented by the "
@@ -6108,7 +6565,7 @@ msgid ""
 "multiple valid FQDNs can be passed as a \";\" delimited list."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:44
+#: src/libnmc-setting/settings-docs.h.in:51
 msgid ""
 "The allowed EAP method to be used when authenticating to the network with "
 "802.1x.  Valid methods are: \"leap\", \"md5\", \"tls\", \"peap\", \"ttls\", "
@@ -6117,13 +6574,21 @@ msgid ""
 "the allowed combinations."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:45
+#: src/libnmc-setting/settings-docs.h.in:52
 msgid ""
 "Identity string for EAP authentication methods.  Often the user's user or "
 "login name."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:46
+#: src/libnmc-setting/settings-docs.h.in:53
+msgid ""
+"Define openssl_ciphers for wpa_supplicant. Openssl sometimes moves ciphers "
+"among SECLEVELs, thus compiled-in default value in wpa_supplicant (as "
+"modified by some linux distributions) sometimes prevents to connect to old "
+"servers that do not support new protocols."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:54
 msgid ""
 "Whether the 802.1X authentication is optional. If TRUE, the activation will "
 "continue even after a timeout or an authentication failure. Setting the "
@@ -6131,26 +6596,26 @@ msgid ""
 "to FALSE, the activation can continue only after a successful authentication."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:47
+#: src/libnmc-setting/settings-docs.h.in:55
 msgid "UTF-8 encoded file path containing PAC for EAP-FAST."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:48
+#: src/libnmc-setting/settings-docs.h.in:56
 msgid ""
 "UTF-8 encoded password used for EAP authentication methods. If both the "
 "\"password\" property and the \"password-raw\" property are specified, "
 "\"password\" is preferred."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:49
-#: src/libnmc-setting/settings-docs.h.in:81
-#: src/libnmc-setting/settings-docs.h.in:123
-#: src/libnmc-setting/settings-docs.h.in:150
-#: src/libnmc-setting/settings-docs.h.in:295
+#: src/libnmc-setting/settings-docs.h.in:57
+#: src/libnmc-setting/settings-docs.h.in:89
+#: src/libnmc-setting/settings-docs.h.in:131
+#: src/libnmc-setting/settings-docs.h.in:168
+#: src/libnmc-setting/settings-docs.h.in:337
 msgid "Flags indicating how to handle the \"password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:50
+#: src/libnmc-setting/settings-docs.h.in:58
 msgid ""
 "Password used for EAP authentication methods, given as a byte array to allow "
 "passwords in other encodings than UTF-8 to be used. If both the \"password\" "
@@ -6158,11 +6623,11 @@ msgid ""
 "preferred."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:51
+#: src/libnmc-setting/settings-docs.h.in:59
 msgid "Flags indicating how to handle the \"password-raw\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:52
+#: src/libnmc-setting/settings-docs.h.in:60
 msgid ""
 "Specifies authentication flags to use in \"phase 1\" outer authentication "
 "using NMSetting8021xAuthFlags options. The individual TLS versions can be "
@@ -6172,17 +6637,17 @@ msgid ""
 "settings. See the wpa_supplicant documentation for more details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:53
+#: src/libnmc-setting/settings-docs.h.in:61
 msgid ""
 "Enables or disables in-line provisioning of EAP-FAST credentials when FAST "
 "is specified as the EAP method in the \"eap\" property. Recognized values "
-"are \"0\" (disabled), \"1\" (allow unauthenticated provisioning), "
-"\"2\" (allow authenticated provisioning), and \"3\" (allow both "
-"authenticated and unauthenticated provisioning).  See the wpa_supplicant "
-"documentation for more details."
+"are \"0\" (disabled), \"1\" (allow unauthenticated provisioning), \"2\" "
+"(allow authenticated provisioning), and \"3\" (allow both authenticated and "
+"unauthenticated provisioning).  See the wpa_supplicant documentation for "
+"more details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:54
+#: src/libnmc-setting/settings-docs.h.in:62
 msgid ""
 "Forces use of the new PEAP label during key derivation.  Some RADIUS servers "
 "may require forcing the new PEAP label to interoperate with PEAPv1.  Set to "
@@ -6190,7 +6655,7 @@ msgid ""
 "documentation for more details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:55
+#: src/libnmc-setting/settings-docs.h.in:63
 msgid ""
 "Forces which PEAP version is used when PEAP is set as the EAP method in the "
 "\"eap\" property.  When unset, the version reported by the server will be "
@@ -6199,7 +6664,7 @@ msgid ""
 "set to \"0\" or \"1\" to force that specific PEAP version."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:56
+#: src/libnmc-setting/settings-docs.h.in:64
 msgid ""
 "List of strings to be matched against the altSubjectName of the certificate "
 "presented by the authentication server during the inner \"phase 2\" "
@@ -6207,7 +6672,7 @@ msgid ""
 "certificate's altSubjectName is performed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:57
+#: src/libnmc-setting/settings-docs.h.in:65
 msgid ""
 "Specifies the allowed \"phase 2\" inner authentication method when an EAP "
 "method that uses an inner TLS tunnel is specified in the \"eap\" property.  "
@@ -6220,7 +6685,7 @@ msgid ""
 "\"phase2-autheap\" cannot be specified."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:58
+#: src/libnmc-setting/settings-docs.h.in:66
 msgid ""
 "Specifies the allowed \"phase 2\" inner EAP-based authentication method when "
 "TTLS is specified in the \"eap\" property.  Recognized EAP-based \"phase 2\" "
@@ -6229,34 +6694,29 @@ msgid ""
 "authentication; see the wpa_supplicant documentation for more details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:59
+#: src/libnmc-setting/settings-docs.h.in:67
 msgid ""
-"Contains the \"phase 2\" CA certificate if used by the EAP method specified "
-"in the \"phase2-auth\" or \"phase2-autheap\" properties. Certificate data is "
-"specified using a \"scheme\"; three are currently supported: blob, path and "
-"pkcs#11 URL. When using the blob scheme this property should be set to the "
-"certificate's DER encoded data. When using the path scheme, this property "
-"should be set to the full UTF-8 encoded path of the certificate, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte. This "
-"property can be unset even if the EAP method supports CA certificates, but "
-"this allows man-in-the-middle attacks and is NOT recommended. Note that "
-"enabling NMSetting8021x:system-ca-certs will override this setting to use "
-"the built-in path, if the built-in path is not a directory."
+"Contains the path to the \"phase 2\" CA certificate if used by the EAP "
+"method specified in the 802-1x.phase2-auth or 802-1x.phase2-autheap "
+"properties. This property can be unset even if the EAP method supports CA "
+"certificates, but this allows man-in-the-middle attacks and is NOT "
+"recommended. Note that enabling 802-1x.system-ca-certs will override this "
+"setting to use the built-in path, if the built-in path is not a directory."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:60
+#: src/libnmc-setting/settings-docs.h.in:68
 msgid ""
 "The password used to access the \"phase2\" CA certificate stored in \"phase2-"
 "ca-cert\" property. Only makes sense if the certificate is stored on a "
 "PKCS#11 token that requires a login."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:61
+#: src/libnmc-setting/settings-docs.h.in:69
 msgid ""
 "Flags indicating how to handle the \"phase2-ca-cert-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:62
+#: src/libnmc-setting/settings-docs.h.in:70
 msgid ""
 "UTF-8 encoded path to a directory containing PEM or DER formatted "
 "certificates to be added to the verification chain in addition to the "
@@ -6265,33 +6725,26 @@ msgid ""
 "directory, then this setting is ignored."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:63
+#: src/libnmc-setting/settings-docs.h.in:71
 msgid ""
-"Contains the \"phase 2\" client certificate if used by the EAP method "
-"specified in the \"phase2-auth\" or \"phase2-autheap\" properties. "
-"Certificate data is specified using a \"scheme\"; two are currently "
-"supported: blob and path. When using the blob scheme (which is backwards "
-"compatible with NM 0.7.x) this property should be set to the certificate's "
-"DER encoded data. When using the path scheme, this property should be set to "
-"the full UTF-8 encoded path of the certificate, prefixed with the string "
-"\"file://\" and ending with a terminating NUL byte. This property can be "
-"unset even if the EAP method supports CA certificates, but this allows man-"
-"in-the-middle attacks and is NOT recommended."
+"Contains the path to the \"phase 2\" client certificate if used by the EAP "
+"method specified in the 802-1x.phase2-auth or 802-1x.phase2-autheap "
+"properties."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:64
+#: src/libnmc-setting/settings-docs.h.in:72
 msgid ""
 "The password used to access the \"phase2\" client certificate stored in "
 "\"phase2-client-cert\" property. Only makes sense if the certificate is "
 "stored on a PKCS#11 token that requires a login."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:65
+#: src/libnmc-setting/settings-docs.h.in:73
 msgid ""
 "Flags indicating how to handle the \"phase2-client-cert-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:66
+#: src/libnmc-setting/settings-docs.h.in:74
 msgid ""
 "Constraint for server domain name. If set, this list of FQDNs is used as a "
 "match requirement for dNSName element(s) of the certificate presented by the "
@@ -6301,7 +6754,7 @@ msgid ""
 "comparison. Multiple valid FQDNs can be passed as a \";\" delimited list."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:67
+#: src/libnmc-setting/settings-docs.h.in:75
 msgid ""
 "Constraint for server domain name. If set, this FQDN is used as a suffix "
 "match requirement for dNSName element(s) of the certificate presented by the "
@@ -6312,38 +6765,25 @@ msgid ""
 "a \";\" delimited list."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:68
+#: src/libnmc-setting/settings-docs.h.in:76
 msgid ""
-"Contains the \"phase 2\" inner private key when the \"phase2-auth\" or "
-"\"phase2-autheap\" property is set to \"tls\". Key data is specified using a "
-"\"scheme\"; two are currently supported: blob and path. When using the blob "
-"scheme and private keys, this property should be set to the key's encrypted "
-"PEM encoded data. When using private keys with the path scheme, this "
-"property should be set to the full UTF-8 encoded path of the key, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte. When "
-"using PKCS#12 format private keys and the blob scheme, this property should "
-"be set to the PKCS#12 data and the \"phase2-private-key-password\" property "
-"must be set to password used to decrypt the PKCS#12 certificate and key. "
-"When using PKCS#12 files and the path scheme, this property should be set to "
-"the full UTF-8 encoded path of the key, prefixed with the string \"file://\" "
-"and ending with a terminating NUL byte, and as with the blob scheme the "
-"\"phase2-private-key-password\" property must be set to the password used to "
-"decode the PKCS#12 private key and certificate."
+"The path to the \"phase 2\" inner private key when the 802-1x.phase2-auth or "
+"802-1x.phase2-autheap property is set to \"tls\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:69
+#: src/libnmc-setting/settings-docs.h.in:77
 msgid ""
 "The password used to decrypt the \"phase 2\" private key specified in the "
-"\"phase2-private-key\" property when the private key either uses the path "
-"scheme, or is a PKCS#12 format key."
+"802-1x.phase2-private-key property. This is normally used by secret agents, "
+"not directly by users."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:70
+#: src/libnmc-setting/settings-docs.h.in:78
 msgid ""
 "Flags indicating how to handle the \"phase2-private-key-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:71
+#: src/libnmc-setting/settings-docs.h.in:79
 msgid ""
 "Substring to be matched against the subject of the certificate presented by "
 "the authentication server during the inner \"phase 2\" authentication. When "
@@ -6352,49 +6792,31 @@ msgid ""
 "used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:72
+#: src/libnmc-setting/settings-docs.h.in:80
 msgid "PIN used for EAP authentication methods."
 msgstr "EAP ავთენტიკაციის მეთოდებში გამოყენებული PIN კოდი."
 
-#: src/libnmc-setting/settings-docs.h.in:73
-#: src/libnmc-setting/settings-docs.h.in:152
+#: src/libnmc-setting/settings-docs.h.in:81
+#: src/libnmc-setting/settings-docs.h.in:170
 msgid "Flags indicating how to handle the \"pin\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:74
+#: src/libnmc-setting/settings-docs.h.in:82
 msgid ""
-"Contains the private key when the \"eap\" property is set to \"tls\". Key "
-"data is specified using a \"scheme\"; two are currently supported: blob and "
-"path. When using the blob scheme and private keys, this property should be "
-"set to the key's encrypted PEM encoded data. When using private keys with "
-"the path scheme, this property should be set to the full UTF-8 encoded path "
-"of the key, prefixed with the string \"file://\" and ending with a "
-"terminating NUL byte. When using PKCS#12 format private keys and the blob "
-"scheme, this property should be set to the PKCS#12 data and the \"private-"
-"key-password\" property must be set to password used to decrypt the PKCS#12 "
-"certificate and key. When using PKCS#12 files and the path scheme, this "
-"property should be set to the full UTF-8 encoded path of the key, prefixed "
-"with the string \"file://\" and ending with a terminating NUL byte, and as "
-"with the blob scheme the \"private-key-password\" property must be set to "
-"the password used to decode the PKCS#12 private key and certificate. "
-"WARNING: \"private-key\" is not a \"secret\" property, and thus unencrypted "
-"private key data using the BLOB scheme may be readable by unprivileged "
-"users.  Private keys should always be encrypted with a private key password "
-"to prevent unauthorized access to unencrypted private key data."
+"The path to the private key when the 802-1.eap property is set to \"tls\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:75
+#: src/libnmc-setting/settings-docs.h.in:83
 msgid ""
-"The password used to decrypt the private key specified in the \"private-"
-"key\" property when the private key either uses the path scheme, or if the "
-"private key is a PKCS#12 format key."
+"The password used to decrypt the private key specified in the 802-1x.private-"
+"key property. This is normally used by secret agents, not directly by users."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:76
+#: src/libnmc-setting/settings-docs.h.in:84
 msgid "Flags indicating how to handle the \"private-key-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:77
+#: src/libnmc-setting/settings-docs.h.in:85
 msgid ""
 "Substring to be matched against the subject of the certificate presented by "
 "the authentication server. When unset, no verification of the authentication "
@@ -6402,7 +6824,7 @@ msgid ""
 "security, if any, and should not be used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:78
+#: src/libnmc-setting/settings-docs.h.in:86
 msgid ""
 "When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" properties using "
 "the system CA directory specified at configure time with the --system-ca-"
@@ -6414,56 +6836,56 @@ msgid ""
 "ca_cert/ca_cert2 options for wpa_supplicant)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:79
+#: src/libnmc-setting/settings-docs.h.in:87
 msgid "Encapsulation of ADSL connection.  Can be \"vcmux\" or \"llc\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:80
+#: src/libnmc-setting/settings-docs.h.in:88
 msgid "Password used to authenticate with the ADSL service."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:82
+#: src/libnmc-setting/settings-docs.h.in:90
 msgid "ADSL connection protocol.  Can be \"pppoa\", \"pppoe\" or \"ipoatm\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:83
+#: src/libnmc-setting/settings-docs.h.in:91
 msgid "Username used to authenticate with the ADSL service."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:84
+#: src/libnmc-setting/settings-docs.h.in:92
 msgid "VCI of ADSL connection"
 msgstr "ADSL შეერთების VCI"
 
-#: src/libnmc-setting/settings-docs.h.in:85
+#: src/libnmc-setting/settings-docs.h.in:93
 msgid "VPI of ADSL connection"
 msgstr "ADSL შეერთების VPI"
 
-#: src/libnmc-setting/settings-docs.h.in:86
+#: src/libnmc-setting/settings-docs.h.in:94
 msgid "The Bluetooth address of the device."
 msgstr "ბლუთუზის მოწყობილობის მისამართი."
 
-#: src/libnmc-setting/settings-docs.h.in:87
+#: src/libnmc-setting/settings-docs.h.in:95
 msgid ""
 "Either \"dun\" for Dial-Up Networking connections or \"panu\" for Personal "
 "Area Networking connections to devices supporting the NAP profile."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:88
+#: src/libnmc-setting/settings-docs.h.in:96
 msgid ""
 "Dictionary of key/value pairs of bonding options.  Both keys and values must "
 "be strings. Option names must contain only alphanumeric characters (ie, [a-"
 "zA-Z0-9])."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:89
+#: src/libnmc-setting/settings-docs.h.in:97
 msgid "The Ethernet MAC address aging time, in seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:90
+#: src/libnmc-setting/settings-docs.h.in:98
 msgid "The Spanning Tree Protocol (STP) forwarding delay, in seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:91
+#: src/libnmc-setting/settings-docs.h.in:99
 msgid ""
 "If specified, The MAC address of the multicast group this bridge uses for "
 "STP. The address must be a link-local address in standard Ethernet MAC "
@@ -6471,7 +6893,7 @@ msgid ""
 "4..F]. If not specified the default value is 01:80:C2:00:00:00."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:92
+#: src/libnmc-setting/settings-docs.h.in:100
 msgid ""
 "A mask of group addresses to forward. Usually, group addresses in the range "
 "from 01:80:C2:00:00:00 to 01:80:C2:00:00:0F are not forwarded according to "
@@ -6480,11 +6902,11 @@ msgid ""
 "or 2 set because they are used for STP, MAC pause frames and LACP."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:93
+#: src/libnmc-setting/settings-docs.h.in:101
 msgid "The Spanning Tree Protocol (STP) hello time, in seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:94
+#: src/libnmc-setting/settings-docs.h.in:102
 msgid ""
 "If specified, the MAC address of bridge. When creating a new bridge, this "
 "MAC address will be set. If this field is left unspecified, the \"ethernet."
@@ -6493,63 +6915,63 @@ msgid ""
 "the MAC address of the bridge later while activating the bridge."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:95
+#: src/libnmc-setting/settings-docs.h.in:103
 msgid "The Spanning Tree Protocol (STP) maximum message age, in seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:96
+#: src/libnmc-setting/settings-docs.h.in:104
 msgid "Set maximum size of multicast hash table (value must be a power of 2)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:97
+#: src/libnmc-setting/settings-docs.h.in:105
 msgid ""
 "Set the number of queries the bridge will send before stopping forwarding a "
 "multicast group after a \"leave\" message has been received."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:98
+#: src/libnmc-setting/settings-docs.h.in:106
 msgid ""
 "Set interval (in deciseconds) between queries to find remaining members of a "
 "group, after a \"leave\" message is received."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:99
+#: src/libnmc-setting/settings-docs.h.in:107
 msgid ""
 "Set delay (in deciseconds) after which the bridge will leave a group, if no "
 "membership reports for this group are received."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:100
+#: src/libnmc-setting/settings-docs.h.in:108
 msgid ""
 "Enable or disable sending of multicast queries by the bridge. If not "
 "specified the option is disabled."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:101
+#: src/libnmc-setting/settings-docs.h.in:109
 msgid ""
 "If no queries are seen after this delay (in deciseconds) has passed, the "
 "bridge will start to send its own queries."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:102
+#: src/libnmc-setting/settings-docs.h.in:110
 msgid ""
 "Interval (in deciseconds) between queries sent by the bridge after the end "
 "of the startup phase."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:103
+#: src/libnmc-setting/settings-docs.h.in:111
 msgid ""
 "Set the Max Response Time/Max Response Delay (in deciseconds) for IGMP/MLD "
 "queries sent by the bridge."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:104
+#: src/libnmc-setting/settings-docs.h.in:112
 msgid ""
 "If enabled the bridge's own IP address is used as the source address for "
 "IGMP queries otherwise the default of 0.0.0.0 is used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:105
+#: src/libnmc-setting/settings-docs.h.in:113
 msgid ""
 "Sets bridge's multicast router. Multicast-snooping must be enabled for this "
 "option to work. Supported values are: 'auto', 'disabled', 'enabled' to which "
@@ -6557,56 +6979,56 @@ msgid ""
 "default value is 'auto' (1)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:106
+#: src/libnmc-setting/settings-docs.h.in:114
 msgid ""
 "Controls whether IGMP snooping is enabled for this bridge. Note that if "
 "snooping was automatically disabled due to hash collisions, the system may "
 "refuse to enable the feature until the collisions are resolved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:107
+#: src/libnmc-setting/settings-docs.h.in:115
 msgid "Set the number of IGMP queries to send during startup phase."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:108
+#: src/libnmc-setting/settings-docs.h.in:116
 msgid ""
 "Sets the time (in deciseconds) between queries sent out at startup to "
 "determine membership information."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:109
+#: src/libnmc-setting/settings-docs.h.in:117
 msgid ""
 "Sets the Spanning Tree Protocol (STP) priority for this bridge.  Lower "
 "values are \"better\"; the lowest priority bridge will be elected the root "
 "bridge."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:110
+#: src/libnmc-setting/settings-docs.h.in:118
 msgid ""
 "Controls whether Spanning Tree Protocol (STP) is enabled for this bridge."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:111
+#: src/libnmc-setting/settings-docs.h.in:119
 msgid ""
 "The default PVID for the ports of the bridge, that is the VLAN id assigned "
 "to incoming untagged frames."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:112
+#: src/libnmc-setting/settings-docs.h.in:120
 msgid "Control whether VLAN filtering is enabled on the bridge."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:113
+#: src/libnmc-setting/settings-docs.h.in:121
 msgid ""
 "If specified, the protocol used for VLAN filtering. Supported values are: "
 "'802.1Q', '802.1ad'. If not specified the default value is '802.1Q'."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:114
+#: src/libnmc-setting/settings-docs.h.in:122
 msgid "Controls whether per-VLAN stats accounting is enabled."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:115
+#: src/libnmc-setting/settings-docs.h.in:123
 msgid ""
 "Array of bridge VLAN objects. In addition to the VLANs specified here, the "
 "bridge will also have the default-pvid VLAN configured  by the bridge.vlan-"
@@ -6616,22 +7038,22 @@ msgid ""
 "couple of ids separated by a dash."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:116
+#: src/libnmc-setting/settings-docs.h.in:124
 msgid ""
 "Enables or disables \"hairpin mode\" for the port, which allows frames to be "
 "sent back out through the port the frame was received on."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:117
+#: src/libnmc-setting/settings-docs.h.in:125
 msgid ""
 "The Spanning Tree Protocol (STP) port cost for destinations via this port."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:118
+#: src/libnmc-setting/settings-docs.h.in:126
 msgid "The Spanning Tree Protocol (STP) priority of this bridge port."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:119
+#: src/libnmc-setting/settings-docs.h.in:127
 msgid ""
 "Array of bridge VLAN objects. In addition to the VLANs specified here, the "
 "port will also have the default-pvid VLAN configured on the bridge by the "
@@ -6641,87 +7063,87 @@ msgid ""
 "range, represented as a couple of ids separated by a dash."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:120
-#: src/libnmc-setting/settings-docs.h.in:146
-#: src/libnmc-setting/settings-docs.h.in:157
+#: src/libnmc-setting/settings-docs.h.in:128
+#: src/libnmc-setting/settings-docs.h.in:164
+#: src/libnmc-setting/settings-docs.h.in:179
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
 "breaking larger packets up into multiple frames."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:121
+#: src/libnmc-setting/settings-docs.h.in:129
 msgid ""
 "The number to dial to establish the connection to the CDMA-based mobile "
 "broadband network, if any.  If not specified, the default number (#777) is "
 "used when required."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:122
-#: src/libnmc-setting/settings-docs.h.in:149
+#: src/libnmc-setting/settings-docs.h.in:130
+#: src/libnmc-setting/settings-docs.h.in:167
 msgid ""
 "The password used to authenticate with the network, if required.  Many "
 "providers do not require a password, or accept any password.  But if a "
 "password is required, it is specified here."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:124
-#: src/libnmc-setting/settings-docs.h.in:155
+#: src/libnmc-setting/settings-docs.h.in:132
+#: src/libnmc-setting/settings-docs.h.in:173
 msgid ""
 "The username used to authenticate with the network, if required.  Many "
 "providers do not require a username, or accept any username.  But if a "
 "username is required, it is specified here."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:125
+#: src/libnmc-setting/settings-docs.h.in:133
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB FCoE application.  Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
+"any combination of \"enable\" (0x1), \"advertise\" (0x2), and \"willing\" "
+"(0x4)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:126
+#: src/libnmc-setting/settings-docs.h.in:134
 msgid ""
 "The FCoE controller mode; either \"fabric\" or \"vn2vn\". Since 1.34, NULL "
 "is the default and means \"fabric\". Before 1.34, NULL was rejected as "
 "invalid and the default was \"fabric\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:127
+#: src/libnmc-setting/settings-docs.h.in:135
 msgid ""
 "The highest User Priority (0 - 7) which FCoE frames should use, or -1 for "
 "default priority.  Only used when the \"app-fcoe-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
+"the \"enable\" (0x1) flag."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:128
+#: src/libnmc-setting/settings-docs.h.in:136
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB FIP application.  Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
+"any combination of \"enable\" (0x1), \"advertise\" (0x2), and \"willing\" "
+"(0x4)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:129
+#: src/libnmc-setting/settings-docs.h.in:137
 msgid ""
 "The highest User Priority (0 - 7) which FIP frames should use, or -1 for "
 "default priority.  Only used when the \"app-fip-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
+"the \"enable\" (0x1) flag."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:130
+#: src/libnmc-setting/settings-docs.h.in:138
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB iSCSI application.  Flags may be "
-"any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
+"any combination of \"enable\" (0x1), \"advertise\" (0x2), and \"willing\" "
+"(0x4)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:131
+#: src/libnmc-setting/settings-docs.h.in:139
 msgid ""
 "The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for "
 "default priority. Only used when the \"app-iscsi-flags\" property includes "
-"the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag."
+"the \"enable\" (0x1) flag."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:132
+#: src/libnmc-setting/settings-docs.h.in:140
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
 "Priority (0 - 7) and the value indicates the percentage of bandwidth of the "
@@ -6730,21 +7152,21 @@ msgid ""
 "percents."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:133
+#: src/libnmc-setting/settings-docs.h.in:141
 msgid ""
 "An array of 8 boolean values, where the array index corresponds to the User "
 "Priority (0 - 7) and the value indicates whether or not the corresponding "
 "priority should transmit priority pause."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:134
+#: src/libnmc-setting/settings-docs.h.in:142
 msgid ""
 "Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags "
-"may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
+"may be any combination of \"enable\" (0x1), \"advertise\" (0x2), and "
+"\"willing\" (0x4)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:135
+#: src/libnmc-setting/settings-docs.h.in:143
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the Priority "
 "Group ID (0 - 7) and the value indicates the percentage of link bandwidth "
@@ -6752,35 +7174,46 @@ msgid ""
 "values must total 100 percents."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:136
+#: src/libnmc-setting/settings-docs.h.in:144
 msgid ""
 "Specifies the NMSettingDcbFlags for DCB Priority Groups.  Flags may be any "
-"combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), "
-"NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)."
+"combination of \"enable\" (0x1), \"advertise\" (0x2), and \"willing\" (0x4)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:137
+#: src/libnmc-setting/settings-docs.h.in:145
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
 "Priority (0 - 7) and the value indicates the Priority Group ID.  Allowed "
 "Priority Group ID values are 0 - 7 or 15 for the unrestricted group."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:138
+#: src/libnmc-setting/settings-docs.h.in:146
 msgid ""
 "An array of 8 boolean values, where the array index corresponds to the User "
 "Priority (0 - 7) and the value indicates whether or not the priority may use "
 "all of the bandwidth allocated to its assigned group."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:139
+#: src/libnmc-setting/settings-docs.h.in:147
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
 "Priority (0 - 7) and the value indicates the traffic class (0 - 7) to which "
 "the priority is mapped."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:140
+#: src/libnmc-setting/settings-docs.h.in:148
+msgid ""
+"Name of the device handler that will be invoked to add and delete the device "
+"for this connection. The name can only contain ASCII alphanumeric characters "
+"and '-', '_', '.'. It cannot start with '.'. See the NetworkManager-"
+"dispatcher(8) man page for more details about how to write the device "
+"handler. By setting this property the generic connection becomes "
+"\"virtual\", meaning that it can be activated without an existing device; "
+"the device will be created at the time the connection is started by invoking "
+"the device-handler."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:149
 msgid ""
 "The GPRS Access Point Name specifying the APN used when establishing a data "
 "session with the GSM-based network.  The APN often determines how the user "
@@ -6788,44 +7221,104 @@ msgid ""
 "the Internet or just a provider-specific walled-garden, so it is important "
 "to use the correct APN for the user's mobile broadband plan. The APN may "
 "only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section "
-"14.9."
+"14.9. If the APN is unset (the default) then it may be detected based on "
+"\"auto-config\" setting. The property can be explicitly set to the empty "
+"string to prevent that and use no APN."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:141
+#: src/libnmc-setting/settings-docs.h.in:150
 msgid ""
 "When TRUE, the settings such as APN, username, or password will default to "
 "values that match the network the modem will register to in the Mobile "
 "Broadband Provider database."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:142
+#: src/libnmc-setting/settings-docs.h.in:151
 msgid ""
 "The device unique identifier (as given by the WWAN management service) which "
 "this connection applies to.  If given, the connection will only apply to the "
 "specified device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:143
+#: src/libnmc-setting/settings-docs.h.in:152
 msgid ""
 "When TRUE, only connections to the home network will be allowed. Connections "
 "to roaming networks will not be made."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:144
+#: src/libnmc-setting/settings-docs.h.in:153
 msgid ""
 "For LTE modems, this sets the APN for the initial EPS bearer that is set up "
 "when attaching to the network.  Setting this parameter implies initial-eps-"
 "bearer-configure to be TRUE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:145
+#: src/libnmc-setting/settings-docs.h.in:154
 msgid ""
 "For LTE modems, this setting determines whether the initial EPS bearer shall "
 "be configured when bringing up the connection.  It is inferred TRUE if "
 "initial-eps-bearer-apn is set."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:147
+#: src/libnmc-setting/settings-docs.h.in:155
+msgid ""
+"For LTE modems, this sets NOAUTH authentication method for the initial EPS "
+"bearer that is set up when attaching to the network. If TRUE, do not require "
+"the other side to authenticate itself to the client. If FALSE, require "
+"authentication from the remote side.  In almost all cases, this should be "
+"TRUE."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:156
+msgid ""
+"For LTE modems, this sets the password for the initial EPS bearer that is "
+"set up when attaching to the network.  Setting this parameter implies "
+"initial-eps-bearer-configure to be TRUE."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:157
+msgid ""
+"Flags indicating how to handle the \"initial-eps-bearer-password\" property."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:158
+msgid ""
+"For LTE modems, this disables CHAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:159
+msgid ""
+"For LTE modems, this disables EAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:160
+msgid ""
+"For LTE modems, this disables MSCHAP authentication method for the initial "
+"EPS bearer that is set up when attaching to the network."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:161
+msgid ""
+"For LTE modems, this disables MSCHAPV2 authentication method for the initial "
+"EPS bearer that is set up when attaching to the network."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:162
+msgid ""
+"For LTE modems, this disables PAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:163
+msgid ""
+"For LTE modems, this sets the username for the initial EPS bearer that is "
+"set up when attaching to the network.  Setting this parameter implies "
+"initial-eps-bearer-configure to be TRUE."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:165
 msgid ""
 "The Network ID (GSM LAI format, ie MCC-MNC) to force specific network "
 "registration.  If the Network ID is specified, NetworkManager will attempt "
@@ -6834,20 +7327,20 @@ msgid ""
 "the device is not otherwise possible."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:148
+#: src/libnmc-setting/settings-docs.h.in:166
 msgid ""
 "Legacy setting that used to help establishing PPP data sessions for GSM-"
 "based modems."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:151
+#: src/libnmc-setting/settings-docs.h.in:169
 msgid ""
 "If the SIM is locked with a PIN it must be unlocked before any other "
 "operations are requested.  Specify the PIN here to allow operation of the "
 "device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:153
+#: src/libnmc-setting/settings-docs.h.in:171
 msgid ""
 "The SIM card unique identifier (as given by the WWAN management service) "
 "which this connection applies to.  If given, the connection will apply to "
@@ -6855,7 +7348,7 @@ msgid ""
 "the given identifier."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:154
+#: src/libnmc-setting/settings-docs.h.in:172
 msgid ""
 "A MCC/MNC string like \"310260\" or \"21601\" identifying the specific "
 "mobile network operator which this connection applies to.  If given, the "
@@ -6863,14 +7356,30 @@ msgid ""
 "id\" which contains a SIM card provisioned by the given operator."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:156
+#: src/libnmc-setting/settings-docs.h.in:174
+msgid "The last byte of supervision address."
+msgstr "ზედამხედველობის მისამართის ბოლო ბაიტი."
+
+#: src/libnmc-setting/settings-docs.h.in:175
+msgid "The port1 interface name of the HSR. This property is mandatory."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:176
+msgid "The port2 interface name of the HSR. This property is mandatory."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:177
+msgid "The protocol used by the interface, whether it is PRP or HSR."
+msgstr "ინტერფეისის მიერ გამოყენებული პროტოკოლი. შეიძლება იყოს PRP, ან HSR."
+
+#: src/libnmc-setting/settings-docs.h.in:178
 msgid ""
 "If specified, this connection will only apply to the IPoIB device whose "
 "permanent MAC address matches. This property does not change the MAC address "
 "of the device (i.e. MAC spoofing)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:158
+#: src/libnmc-setting/settings-docs.h.in:180
 msgid ""
 "The InfiniBand p-key to use for this device. A value of -1 means to use the "
 "default p-key (aka \"the p-key at index 0\"). Otherwise, it is a 16-bit "
@@ -6883,19 +7392,19 @@ msgid ""
 "membership p-key with 0x8000 flag set."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:159
+#: src/libnmc-setting/settings-docs.h.in:181
 msgid ""
 "The interface name of the parent device of this device. Normally NULL, but "
 "if the \"p_key\" property is set, then you must specify the base device by "
 "setting either this property or \"mac-address\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:160
+#: src/libnmc-setting/settings-docs.h.in:182
 msgid ""
 "The IP-over-InfiniBand transport mode. Either \"datagram\" or \"connected\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:161
+#: src/libnmc-setting/settings-docs.h.in:183
 msgid ""
 "A list of IPv4 addresses and their prefix length. Multiple addresses can be "
 "separated by comma. For example \"192.168.1.5/24, 10.1.0.5/24\". The "
@@ -6903,8 +7412,8 @@ msgid ""
 "be the primary address."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:162
-#: src/libnmc-setting/settings-docs.h.in:192
+#: src/libnmc-setting/settings-docs.h.in:184
+#: src/libnmc-setting/settings-docs.h.in:221
 msgid ""
 "VPN connections will default to add the route automatically unless this "
 "setting is set to FALSE. For other connection types, adding such an "
@@ -6912,18 +7421,21 @@ msgid ""
 "effect."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:163
-#: src/libnmc-setting/settings-docs.h.in:193
+#: src/libnmc-setting/settings-docs.h.in:185
+#: src/libnmc-setting/settings-docs.h.in:222
 msgid ""
-"Timeout in milliseconds used to check for the presence of duplicate IP "
-"addresses on the network.  If an address conflict is detected, the "
-"activation will fail.  A zero value means that no duplicate address "
-"detection is performed, -1 means the default value (either configuration "
-"ipvx.dad-timeout override or zero).  A value greater than zero is a timeout "
-"in milliseconds. The property is currently implemented only for IPv4."
+"Maximum timeout in milliseconds used to check for the presence of duplicate "
+"IP addresses on the network.  If an address conflict is detected, the "
+"activation will fail. The property is currently implemented only for IPv4. A "
+"zero value means that no duplicate address detection is performed, -1 means "
+"the default value (either the value configured globally in NetworkManger."
+"conf or 200ms).  A value greater than zero is a timeout in milliseconds.  "
+"Note that the time intervals are subject to randomization as per RFC 5227 "
+"and so the actual duration can be between half and the full time specified "
+"in this property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:164
+#: src/libnmc-setting/settings-docs.h.in:186
 msgid ""
 "A string sent to the DHCP server to identify the local machine which the "
 "DHCP server may use to customize the DHCP lease and options. When the "
@@ -6944,47 +7456,58 @@ msgid ""
 "special value \"stable\" is supported to generate a type 0 client identifier "
 "based on the stable-id (see connection.stable-id) and a per-host key. If you "
 "set the stable-id, you may want to include the \"${DEVICE}\" or \"${MAC}\" "
-"specifier to get a per-device key. If unset, a globally configured default "
-"is used. If still unset, the default depends on the DHCP plugin."
+"specifier to get a per-device key. The special value \"none\" prevents any "
+"client identifier from being sent. Note that this is normally not "
+"recommended. If unset, a globally configured default from NetworkManager."
+"conf is used. If still unset, the default depends on the DHCP plugin. The "
+"internal dhcp client will default to \"mac\" and the dhclient plugin will "
+"try to use one from its config file if present, or won't sent any client-id "
+"otherwise."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:165
+#: src/libnmc-setting/settings-docs.h.in:187
+#: src/libnmc-setting/settings-docs.h.in:223
+msgid ""
+"Specifies the value for the DSCP field (traffic class) of the IP header. "
+"When empty, the global default value is used; if no global default is "
+"specified, it is assumed to be \"CS0\". Allowed values are: \"CS0\", \"CS4\" "
+"and \"CS6\". The property is currently valid only for IPv4, and it is "
+"supported only by the \"internal\" DHCP plugin."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:188
 msgid ""
 "If the \"dhcp-send-hostname\" property is TRUE, then the specified FQDN will "
 "be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
 "hostname\" are mutually exclusive and cannot be set at the same time."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:166
-#: src/libnmc-setting/settings-docs.h.in:195
+#: src/libnmc-setting/settings-docs.h.in:189
+#: src/libnmc-setting/settings-docs.h.in:225
 msgid ""
 "If the \"dhcp-send-hostname\" property is TRUE, then the specified name will "
 "be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
 "fqdn\" are mutually exclusive and cannot be set at the same time."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:167
-#: src/libnmc-setting/settings-docs.h.in:196
+#: src/libnmc-setting/settings-docs.h.in:190
+#: src/libnmc-setting/settings-docs.h.in:226
 msgid ""
 "Flags for the DHCP hostname and FQDN. Currently, this property only includes "
 "flags to control the FQDN flags set in the DHCP FQDN option. Supported FQDN "
-"flags are NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE (0x4).  When no FQDN flag is set and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is set, the DHCP FQDN option "
-"will contain no flag. Otherwise, if no FQDN flag is set and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is not set, the standard FQDN "
-"flags are set in the request: NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) for IPv4 and "
-"NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1) for IPv6. When this property is "
-"set to the default value NM_DHCP_HOSTNAME_FLAG_NONE (0x0), a global default "
-"is looked up in NetworkManager configuration. If that value is unset or also "
-"NM_DHCP_HOSTNAME_FLAG_NONE (0x0), then the standard FQDN flags described "
-"above are sent in the DHCP requests."
+"flags are \"fqdn-serv-update\" (0x1), \"fqdn-encoded\" (0x2) and \"fqdn-no-"
+"update\" (0x4).  When no FQDN flag is set and \"fqdn-clear-flags\" (0x8) is "
+"set, the DHCP FQDN option will contain no flag. Otherwise, if no FQDN flag "
+"is set and \"fqdn-clear-flags\" (0x8) is not set, the standard FQDN flags "
+"are set in the request: \"fqdn-serv-update\" (0x1), \"fqdn-encoded\" (0x2) "
+"for IPv4 and \"fqdn-serv-update\" (0x1) for IPv6. When this property is set "
+"to the default value \"none\" (0x0), a global default is looked up in "
+"NetworkManager configuration. If that value is unset or also \"none\" (0x0), "
+"then the standard FQDN flags described above are sent in the DHCP requests."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:168
-#: src/libnmc-setting/settings-docs.h.in:197
+#: src/libnmc-setting/settings-docs.h.in:191
+#: src/libnmc-setting/settings-docs.h.in:227
 msgid ""
 "A string containing the \"Identity Association Identifier\" (IAID) used by "
 "the DHCP client. The string can be a 32-bit number (either decimal, "
@@ -7005,8 +7528,22 @@ msgid ""
 "the lease information of the device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:169
-#: src/libnmc-setting/settings-docs.h.in:199
+#: src/libnmc-setting/settings-docs.h.in:192
+msgid ""
+"Controls the \"IPv6-Only Preferred\" DHCPv4 option (RFC 8925). When set to "
+"\"yes\" (1), the host adds the option to the parameter request list; if the "
+"DHCP server sends the option back, the host stops the DHCP client for the "
+"time interval specified in the option. Enable this feature if the host "
+"supports an IPv6-only mode, i.e. either all applications are IPv6-only "
+"capable or there is a form of 464XLAT deployed. When set to \"default\" "
+"(-1), the actual value is looked up in the global configuration; if not "
+"specified, it defaults to \"no\" (0). If the connection has IPv6 method set "
+"to \"disabled\", this property does not have effect and the \"IPv6-Only "
+"Preferred\" option is always disabled."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:193
+#: src/libnmc-setting/settings-docs.h.in:229
 msgid ""
 "Array of servers from which DHCP offers must be rejected. This property is "
 "useful to avoid getting a lease from misconfigured or rogue servers. For "
@@ -7015,18 +7552,40 @@ msgid ""
 "not implemented for DHCPv6."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:170
-#: src/libnmc-setting/settings-docs.h.in:200
+#: src/libnmc-setting/settings-docs.h.in:194
+#: src/libnmc-setting/settings-docs.h.in:230
+msgid ""
+"Since 1.52 this property is deprecated and is only used as fallback value "
+"for dhcp-send-hostname if it's set to 'default'. This is only done to avoid "
+"breaking existing configurations, the new property should be used from now "
+"on."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:195
+#: src/libnmc-setting/settings-docs.h.in:231
 msgid ""
 "If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some "
 "DHCP servers use this hostname to update DNS databases, essentially "
-"providing a static hostname for the computer.  If the \"dhcp-hostname\" "
-"property is NULL and this property is TRUE, the current persistent hostname "
-"of the computer is sent."
+"providing a static hostname for the computer.  If the dhcp-hostname property "
+"is NULL and this property is TRUE, the current persistent hostname of the "
+"computer is sent. The default value is default (-1). In this case the global "
+"value from NetworkManager configuration is looked up. If it's not set, the "
+"value from dhcp-send-hostname-deprecated, which defaults to TRUE, is used "
+"for backwards compatibility. In the future this will change and, in absence "
+"of a global default, it will always fallback to TRUE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:171
-#: src/libnmc-setting/settings-docs.h.in:201
+#: src/libnmc-setting/settings-docs.h.in:196
+#: src/libnmc-setting/settings-docs.h.in:232
+msgid ""
+"Whether the DHCP client will send RELEASE message when bringing the "
+"connection down. The default value is \"default\" (-1). When the default "
+"value is specified, then the global value from NetworkManager configuration "
+"is looked up, if not set, it is considered as FALSE."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:197
+#: src/libnmc-setting/settings-docs.h.in:233
 msgid ""
 "A timeout for a DHCP transaction in seconds. If zero (the default), a "
 "globally configured default is used. If still unspecified, a device specific "
@@ -7034,7 +7593,7 @@ msgid ""
 "infinity."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:172
+#: src/libnmc-setting/settings-docs.h.in:198
 msgid ""
 "The Vendor Class Identifier DHCP option (60). Special characters in the data "
 "string may be escaped using C-style escapes, nevertheless this property "
@@ -7043,15 +7602,18 @@ msgid ""
 "the DHCP option is not sent to the server."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:173
-#: src/libnmc-setting/settings-docs.h.in:202
+#: src/libnmc-setting/settings-docs.h.in:199
+#: src/libnmc-setting/settings-docs.h.in:234
 msgid ""
-"Array of IP addresses of DNS servers. For DoT (DNS over TLS), the SNI server "
-"name can be specified by appending \"#example.com\" to the IP address of the "
-"DNS server. This currently only has effect when using systemd-resolved."
+"Array of DNS servers. Each server can be specified either as a plain IP "
+"address (optionally followed by a \"#\" and the SNI server name for DNS over "
+"TLS) or with a URI syntax. When it is specified as an URI, the following "
+"forms are supported: dns+udp://ADDRESS[:PORT], dns+tls://ADDRESS[:PORT]"
+"[SERVERNAME] . When using the URI syntax, IPv6 addresses must be enclosed in "
+"square brackets ('[', ']')."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:174
+#: src/libnmc-setting/settings-docs.h.in:200
 msgid ""
 "DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The "
 "currently supported options are \"attempts\", \"debug\", \"edns0\", "
@@ -7069,8 +7631,8 @@ msgid ""
 "options\" get merged together."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:175
-#: src/libnmc-setting/settings-docs.h.in:204
+#: src/libnmc-setting/settings-docs.h.in:201
+#: src/libnmc-setting/settings-docs.h.in:236
 msgid ""
 "DNS servers priority. The relative priority for DNS servers specified by "
 "this setting.  A lower numerical value is better (higher priority). Negative "
@@ -7110,8 +7672,8 @@ msgid ""
 "of the desired interface are configured."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:176
-#: src/libnmc-setting/settings-docs.h.in:205
+#: src/libnmc-setting/settings-docs.h.in:202
+#: src/libnmc-setting/settings-docs.h.in:237
 msgid ""
 "List of DNS search domains. Domains starting with a tilde ('~') are "
 "considered 'routing' domains and are used only to decide the interface over "
@@ -7127,8 +7689,8 @@ msgid ""
 "DHCP (option 15)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:177
-#: src/libnmc-setting/settings-docs.h.in:206
+#: src/libnmc-setting/settings-docs.h.in:203
+#: src/libnmc-setting/settings-docs.h.in:238
 msgid ""
 "The gateway associated with this configuration. This is only meaningful if "
 "\"addresses\" is also set. Setting the gateway causes NetworkManager to "
@@ -7140,8 +7702,8 @@ msgid ""
 "case. See \"ip4-auto-default-route\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:178
-#: src/libnmc-setting/settings-docs.h.in:207
+#: src/libnmc-setting/settings-docs.h.in:204
+#: src/libnmc-setting/settings-docs.h.in:239
 msgid ""
 "When \"method\" is set to \"auto\" and this property to TRUE, automatically "
 "configured name servers and search domains are ignored and only name servers "
@@ -7149,15 +7711,15 @@ msgid ""
 "if any, are used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:179
-#: src/libnmc-setting/settings-docs.h.in:208
+#: src/libnmc-setting/settings-docs.h.in:205
+#: src/libnmc-setting/settings-docs.h.in:240
 msgid ""
 "When \"method\" is set to \"auto\" and this property to TRUE, automatically "
 "configured routes are ignored and only routes specified in the \"routes\" "
 "property, if any, are used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:180
+#: src/libnmc-setting/settings-docs.h.in:206
 msgid ""
 "Enable and disable the IPv4 link-local configuration independently of the "
 "ipv4.method configuration. This allows a link-local address (169.254.x.y/16) "
@@ -7166,11 +7728,13 @@ msgid ""
 "is dependent on \"ipv4.method\". When set to \"default\", it honors the "
 "global connection default, before falling back to \"auto\". Note that if "
 "\"ipv4.method\" is \"disabled\", then link local addressing is always "
-"disabled too. The default is \"default\"."
+"disabled too. The default is \"default\". Since 1.52, when set to "
+"\"fallback\", a link-local address is obtained if no other IPv4 address is "
+"set."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:181
-#: src/libnmc-setting/settings-docs.h.in:210
+#: src/libnmc-setting/settings-docs.h.in:207
+#: src/libnmc-setting/settings-docs.h.in:242
 msgid ""
 "If TRUE, allow overall network configuration to proceed even if the "
 "configuration specified by this property times out.  Note that at least one "
@@ -7180,26 +7744,26 @@ msgid ""
 "if IPv4 configuration fails but IPv6 configuration completes successfully."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:182
+#: src/libnmc-setting/settings-docs.h.in:208
 msgid "The IPv4 connection method."
 msgstr "IPv4 შეერთების მეთოდი."
 
-#: src/libnmc-setting/settings-docs.h.in:183
-#: src/libnmc-setting/settings-docs.h.in:213
+#: src/libnmc-setting/settings-docs.h.in:209
+#: src/libnmc-setting/settings-docs.h.in:245
 msgid ""
 "If TRUE, this connection will never be the default connection for this IP "
 "type, meaning it will never be assigned the default route by NetworkManager."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:184
-#: src/libnmc-setting/settings-docs.h.in:215
+#: src/libnmc-setting/settings-docs.h.in:210
+#: src/libnmc-setting/settings-docs.h.in:247
 msgid ""
 "Connections will default to keep the autogenerated priority 0 local rule "
 "unless this setting is set to TRUE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:185
-#: src/libnmc-setting/settings-docs.h.in:216
+#: src/libnmc-setting/settings-docs.h.in:211
+#: src/libnmc-setting/settings-docs.h.in:248
 msgid ""
 "The minimum time interval in milliseconds for which dynamic IP configuration "
 "should be tried before the connection succeeds. This property is useful for "
@@ -7214,8 +7778,8 @@ msgid ""
 "configuration ipvx.required-timeout override or zero)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:186
-#: src/libnmc-setting/settings-docs.h.in:217
+#: src/libnmc-setting/settings-docs.h.in:212
+#: src/libnmc-setting/settings-docs.h.in:249
 msgid ""
 "The default metric for routes that don't explicitly specify a metric. The "
 "default value -1 means that the metric is chosen automatically based on the "
@@ -7226,8 +7790,8 @@ msgid ""
 "mean setting it to 1024. For IPv4, zero is a regular value for the metric."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:187
-#: src/libnmc-setting/settings-docs.h.in:218
+#: src/libnmc-setting/settings-docs.h.in:213
+#: src/libnmc-setting/settings-docs.h.in:250
 msgid ""
 "Enable policy routing (source routing) and set the routing table used when "
 "adding routes. This affects all routes, including device-routes, IPv4LL, "
@@ -7244,7 +7808,19 @@ msgid ""
 "tables outside of NetworkManager."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:188
+#: src/libnmc-setting/settings-docs.h.in:214
+#: src/libnmc-setting/settings-docs.h.in:251
+msgid ""
+"Whether to add routes for DNS servers. When enabled, NetworkManager adds a "
+"route for each DNS server that is associated with this connection either "
+"statically (defined in the connection profile) or dynamically (for example, "
+"retrieved via DHCP). The route guarantees that the DNS server is reached via "
+"this interface. When set to \"default\" (-1), the value from global "
+"configuration is used; if no global default is defined, this feature is "
+"disabled."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:215
 msgid ""
 "A list of IPv4 destination addresses, prefix length, optional IPv4 next hop "
 "addresses, optional route metric, optional attribute. The valid syntax is: "
@@ -7252,16 +7828,42 @@ msgid ""
 "example \"192.0.2.0/24 10.1.1.1 77, 198.51.100.0/24\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:189
-#: src/libnmc-setting/settings-docs.h.in:220
+#: src/libnmc-setting/settings-docs.h.in:216
+#: src/libnmc-setting/settings-docs.h.in:253
 msgid "A comma separated list of routing rules for policy routing."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:190
+#: src/libnmc-setting/settings-docs.h.in:217
+#: src/libnmc-setting/settings-docs.h.in:254
 msgid ""
-"Configure method for creating the IPv6 interface identifier of addresses with "
-"RFC4862 IPv6 Stateless Address Autoconfiguration and Link Local addresses. "
-"The permitted values are: \"eui64\" (0), \"stable-privacy\" (1), "
+"This option allows you to specify a custom DHCP lease time for the shared "
+"connection method in seconds. The value should be either a number between "
+"120 and 31536000 (one year) If this option is not specified, 3600 (one hour) "
+"is used. Special values are 0 for default value of 1 hour and 2147483647 "
+"(MAXINT32) for infinite lease time."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:218
+#: src/libnmc-setting/settings-docs.h.in:255
+msgid ""
+"This option allows you to specify a custom DHCP range for the shared "
+"connection method. The value is expected to be in `<START_ADDRESS>,"
+"<END_ADDRESS>` format. The range should be part of network set by ipv4."
+"address option and it should not contain network address or broadcast "
+"address. If this option is not specified, the DHCP range will be "
+"automatically determined based on the interface address. The range will be "
+"selected to be adjacent to the interface address, either before or after it, "
+"with the larger possible range being preferred. The range will be adjusted "
+"to fill the available address space, except for networks with a prefix "
+"length greater than 24, which will be treated as if they have a prefix "
+"length of 24."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:219
+msgid ""
+"Configure method for creating the IPv6 interface identifier of addresses "
+"with RFC4862 IPv6 Stateless Address Autoconfiguration and Link Local "
+"addresses. The permitted values are: \"eui64\" (0), \"stable-privacy\" (1), "
 "\"default\" (3) or \"default-or-eui64\" (2). If the property is set to "
 "\"eui64\", the addresses will be generated using the interface token derived "
 "from hardware address. This makes the host part of the address to stay "
@@ -7286,7 +7888,7 @@ msgid ""
 "option."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:191
+#: src/libnmc-setting/settings-docs.h.in:220
 msgid ""
 "A list of IPv6 addresses and their prefix length. Multiple addresses can be "
 "separated by comma. For example \"2001:db8:85a3::8a2e:370:7334/64, 2001:"
@@ -7295,7 +7897,7 @@ msgid ""
 "with IPv6 source address selection (RFC 6724, section 5)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:194
+#: src/libnmc-setting/settings-docs.h.in:224
 msgid ""
 "A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp "
 "client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried "
@@ -7324,7 +7926,7 @@ msgid ""
 "assumed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:198
+#: src/libnmc-setting/settings-docs.h.in:228
 msgid ""
 "A IPv6 address followed by a slash and a prefix length. If set, the value is "
 "sent to the DHCPv6 server as hint indicating the prefix delegation (IA_PD) "
@@ -7332,7 +7934,7 @@ msgid ""
 "address part to the zero address (for example \"::/60\")."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:203
+#: src/libnmc-setting/settings-docs.h.in:235
 msgid ""
 "DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The "
 "currently supported options are \"attempts\", \"debug\", \"edns0\", "
@@ -7351,7 +7953,7 @@ msgid ""
 "options\" get merged together."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:209
+#: src/libnmc-setting/settings-docs.h.in:241
 msgid ""
 "Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941.  If "
 "enabled, it makes the kernel generate a temporary IPv6 address in addition "
@@ -7359,20 +7961,19 @@ msgid ""
 "enhances privacy, but could cause problems in some applications, on the "
 "other hand.  The permitted values are: -1: unknown, 0: disabled, 1: enabled "
 "(prefer public address), 2: enabled (prefer temporary addresses). Having a "
-"per-connection setting set to \"-1\" (unknown) means fallback to global "
-"configuration \"ipv6.ip6-privacy\". If also global configuration is "
-"unspecified or set to \"-1\", fallback to read \"/proc/sys/net/ipv6/conf/"
-"default/use_tempaddr\". Note that this setting is distinct from the Stable "
-"Privacy addresses that can be enabled with the \"addr-gen-mode\" property's "
-"\"stable-privacy\" setting as another way of avoiding host tracking with "
-"IPv6 addresses."
+"per-connection setting set to \"-1\" (default) means fallback to global "
+"configuration \"ipv6.ip6-privacy\". If it's also unspecified or set to "
+"\"-1\", fallback to read \"/proc/sys/net/ipv6/conf/default/use_tempaddr\". "
+"Note that this setting is distinct from the Stable Privacy addresses that "
+"can be enabled with the \"addr-gen-mode\" property's \"stable-privacy\" "
+"setting as another way of avoiding host tracking with IPv6 addresses."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:211
+#: src/libnmc-setting/settings-docs.h.in:243
 msgid "The IPv6 connection method."
 msgstr "IPv6 შეერთების მეთოდი."
 
-#: src/libnmc-setting/settings-docs.h.in:212
+#: src/libnmc-setting/settings-docs.h.in:244
 msgid ""
 "Maximum transmission unit size, in bytes. If zero (the default), the MTU is "
 "set automatically from router advertisements or is left equal to the link-"
@@ -7380,7 +7981,7 @@ msgid ""
 "than the minimum IPv6 MTU of 1280, this value has no effect."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:214
+#: src/libnmc-setting/settings-docs.h.in:246
 msgid ""
 "A timeout for waiting Router Advertisements in seconds. If zero (the "
 "default), a globally configured default is used. If still unspecified, the "
@@ -7388,11 +7989,29 @@ msgid ""
 "(MAXINT32) for infinity."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:219
+#: src/libnmc-setting/settings-docs.h.in:252
 msgid "Array of IP routes."
 msgstr "IP რაუტების მასივი."
 
-#: src/libnmc-setting/settings-docs.h.in:221
+#: src/libnmc-setting/settings-docs.h.in:256
+msgid ""
+"The preferred lifetime of autogenerated temporary addresses, in seconds. "
+"Having a per-connection setting set to \"0\" (default) means fallback to "
+"global configuration \"ipv6.temp-preferred-lifetime\" setting\". If it's "
+"also unspecified or set to \"0\", fallback to read \"/proc/sys/net/ipv6/conf/"
+"default/temp_prefered_lft\"."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:257
+msgid ""
+"The valid lifetime of autogenerated temporary addresses, in seconds. Having "
+"a per-connection setting set to \"0\" (default) means fallback to global "
+"configuration \"ipv6.temp-valid-lifetime\" setting\". If it's also "
+"unspecified or set to \"0\", fallback to read \"/proc/sys/net/ipv6/conf/"
+"default/temp_valid_lft\"."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:258
 msgid ""
 "Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 "
 "tokenized interface identifiers. Useful with eui64 addr-gen-mode. When set, "
@@ -7401,123 +8020,151 @@ msgid ""
 "not to IPv6 link local addresses."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:222
+#: src/libnmc-setting/settings-docs.h.in:259
 msgid ""
 "How many additional levels of encapsulation are permitted to be prepended to "
 "packets. This property applies only to IPv6 tunnels. To disable this option, "
-"add NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT (0x1) to ip-tunnel flags."
+"add 0x1 (ip6-ign-encap-limit) to ip-tunnel flags."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:223
+#: src/libnmc-setting/settings-docs.h.in:260
 msgid ""
-"Tunnel flags. Currently, the following values are supported: "
-"NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT (0x1), "
-"NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_TCLASS (0x2), "
-"NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FLOWLABEL (0x4), "
-"NM_IP_TUNNEL_FLAG_IP6_MIP6_DEV (0x8), NM_IP_TUNNEL_FLAG_IP6_RCV_DSCP_COPY "
-"(0x10), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK (0x20). They are valid only "
-"for IPv6 tunnels."
+"Tunnel flags. Currently, the following values are supported: 0x1 (ip6-ign-"
+"encap-limit), 0x2 (ip6-use-orig-tclass), 0x4 (ip6-use-orig-flowlabel), 0x8 "
+"(ip6-mip6-dev), 0x10 (ip6-rcv-dscp-copy) and 0x20 (ip6-use-orig-fwmark). "
+"They are valid only for IPv6 tunnels."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:224
+#: src/libnmc-setting/settings-docs.h.in:261
 msgid ""
 "The flow label to assign to tunnel packets. This property applies only to "
 "IPv6 tunnels."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:225
+#: src/libnmc-setting/settings-docs.h.in:262
 msgid ""
 "The fwmark value to assign to tunnel packets. This property can be set to a "
 "non zero value only on VTI and VTI6 tunnels."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:226
+#: src/libnmc-setting/settings-docs.h.in:263
 msgid ""
 "The key used for tunnel input packets; the property is valid only for "
 "certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:227
+#: src/libnmc-setting/settings-docs.h.in:264
 msgid ""
 "The local endpoint of the tunnel; the value can be empty, otherwise it must "
 "contain an IPv4 or IPv6 address."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:228
+#: src/libnmc-setting/settings-docs.h.in:265
 msgid ""
-"The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or "
-"NM_IP_TUNNEL_MODE_GRE (2)."
+"The tunneling mode. Valid values: ipip (1), gre (2), sit (3), isatap (4), "
+"vti (5), ip6ip6 (6), ipip6 (7), ip6gre (8), vti6 (9), gretap (10) and "
+"ip6gretap (11)"
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:229
+#: src/libnmc-setting/settings-docs.h.in:266
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
 "breaking larger packets up into multiple fragments."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:230
+#: src/libnmc-setting/settings-docs.h.in:267
 msgid ""
 "The key used for tunnel output packets; the property is valid only for "
 "certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:231
+#: src/libnmc-setting/settings-docs.h.in:268
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID the "
 "new device will be bound to so that tunneled packets will only be routed via "
 "that interface."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:232
+#: src/libnmc-setting/settings-docs.h.in:269
 msgid "Whether to enable Path MTU Discovery on this tunnel."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:233
+#: src/libnmc-setting/settings-docs.h.in:270
 msgid ""
 "The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 "
 "address."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:234
+#: src/libnmc-setting/settings-docs.h.in:271
 msgid ""
 "The type of service (IPv4) or traffic class (IPv6) field to be set on "
 "tunneled packets."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:235
+#: src/libnmc-setting/settings-docs.h.in:272
 msgid ""
 "The TTL to assign to tunneled packets. 0 is a special value meaning that "
 "packets inherit the TTL value."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:236
-msgid "Whether the transmitted traffic must be encrypted."
+#: src/libnmc-setting/settings-docs.h.in:273
+msgid "The IPVLAN mode. Valid values: l2 (1), l3 (2), l3s (3)"
+msgstr "IPVLAN-ის რეჟიმი. სწორი მნიშვნელობებია: l2 (1), l3 (2), l3s (3)"
+
+#: src/libnmc-setting/settings-docs.h.in:274
+msgid ""
+"If given, specifies the parent interface name or parent connection UUID from "
+"which this IPVLAN interface should be created. If this property is not "
+"specified, the connection must contain an \"802-3-ethernet\" setting with a "
+"\"mac-address\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:237
+#: src/libnmc-setting/settings-docs.h.in:275
+msgid "Whether the interface should be put in private mode."
+msgstr "უნდა გადაირთოს თუ არა ინტერფეისი პირად რეჟიმში."
+
+#: src/libnmc-setting/settings-docs.h.in:276
+msgid "Whether the interface should be put in VEPA mode."
+msgstr "უნდა გადაირთოს თუ არა ინტერფეისი VEPA რეჟიმში."
+
+#: src/libnmc-setting/settings-docs.h.in:277
+msgid "Whether the transmitted traffic must be encrypted."
+msgstr "უნდა დაიშიფროს თუ არა გაგზავნილი ტრაფიკი."
+
+#: src/libnmc-setting/settings-docs.h.in:278
 msgid ""
 "The pre-shared CAK (Connectivity Association Key) for MACsec Key Agreement. "
 "Must be a string of 32 hexadecimal characters."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:238
+#: src/libnmc-setting/settings-docs.h.in:279
 msgid "Flags indicating how to handle the \"mka-cak\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:239
+#: src/libnmc-setting/settings-docs.h.in:280
 msgid ""
 "The pre-shared CKN (Connectivity-association Key Name) for MACsec Key "
 "Agreement. Must be a string of hexadecimal characters with a even length "
 "between 2 and 64."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:240
+#: src/libnmc-setting/settings-docs.h.in:281
 msgid ""
 "Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key "
 "Agreement) is obtained."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:241
+#: src/libnmc-setting/settings-docs.h.in:282
+msgid ""
+"Specifies the MACsec offload mode. \"off\" (0) disables MACsec offload. "
+"\"phy\" (1) and \"mac\" (2) request offload respectively to the PHY or to "
+"the MAC; if the selected mode is not available, the connection will fail. "
+"\"default\" (-1) uses the global default value specified in NetworkManager "
+"configuration; if no global default is defined, the built-in default is "
+"\"off\" (0)."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:283
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
 "which this MACSEC interface should be created.  If this property is not "
@@ -7525,29 +8172,29 @@ msgid ""
 "\"mac-address\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:242
+#: src/libnmc-setting/settings-docs.h.in:284
 msgid ""
 "The port component of the SCI (Secure Channel Identifier), between 1 and "
 "65534."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:243
+#: src/libnmc-setting/settings-docs.h.in:285
 msgid ""
 "Specifies whether the SCI (Secure Channel Identifier) is included in every "
 "packet."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:244
+#: src/libnmc-setting/settings-docs.h.in:286
 msgid "Specifies the validation mode for incoming frames."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:245
+#: src/libnmc-setting/settings-docs.h.in:287
 msgid ""
 "The macvlan mode, which specifies the communication mechanism between "
 "multiple macvlans on the same lower device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:246
+#: src/libnmc-setting/settings-docs.h.in:288
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
 "which this MAC-VLAN interface should be created.  If this property is not "
@@ -7555,15 +8202,15 @@ msgid ""
 "\"mac-address\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:247
+#: src/libnmc-setting/settings-docs.h.in:289
 msgid "Whether the interface should be put in promiscuous mode."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:248
+#: src/libnmc-setting/settings-docs.h.in:290
 msgid "Whether the interface should be a MACVTAP."
-msgstr ""
+msgstr "უნდა იყოს თუ არა ინტერფეისი MACVTAP."
 
-#: src/libnmc-setting/settings-docs.h.in:249
+#: src/libnmc-setting/settings-docs.h.in:291
 msgid ""
 "A list of driver names to match. Each element is a shell wildcard pattern. "
 "See NMSettingMatch:interface-name for how special characters '|', '&', '!' "
@@ -7571,7 +8218,7 @@ msgid ""
 "pattern."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:250
+#: src/libnmc-setting/settings-docs.h.in:292
 msgid ""
 "A list of interface names to match. Each element is a shell wildcard "
 "pattern. An element can be prefixed with a pipe symbol (|) or an ampersand "
@@ -7588,7 +8235,7 @@ msgid ""
 "For example, \"&\\!a\" is an mandatory match for literally \"!a\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:251
+#: src/libnmc-setting/settings-docs.h.in:293
 msgid ""
 "A list of kernel command line arguments to match. This may be used to check "
 "whether a specific kernel command line option is set (or unset, if prefixed "
@@ -7601,7 +8248,7 @@ msgid ""
 "and '\\' are used for optional and mandatory matches and inverting the match."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:252
+#: src/libnmc-setting/settings-docs.h.in:294
 msgid ""
 "A list of paths to match against the ID_PATH udev property of devices. "
 "ID_PATH represents the topological persistent path of a device. It typically "
@@ -7616,52 +8263,52 @@ msgid ""
 "'\\' are used for optional and mandatory matches and inverting the pattern."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:253
+#: src/libnmc-setting/settings-docs.h.in:295
 msgid "Channel on which the mesh network to join is located."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:254
+#: src/libnmc-setting/settings-docs.h.in:296
 msgid ""
 "Anycast DHCP MAC address used when requesting an IP address via DHCP. The "
 "specific anycast address used determines which DHCP server class answers the "
 "request. This is currently only implemented by dhclient DHCP plugin."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:255
+#: src/libnmc-setting/settings-docs.h.in:297
 msgid "SSID of the mesh network to join."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:256
+#: src/libnmc-setting/settings-docs.h.in:298
 msgid "The data path type. One of \"system\", \"netdev\" or empty."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:257
+#: src/libnmc-setting/settings-docs.h.in:299
 msgid "The bridge failure mode. One of \"secure\", \"standalone\" or empty."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:258
+#: src/libnmc-setting/settings-docs.h.in:300
 msgid "Enable or disable multicast snooping."
 msgstr "Multicast სნუპინგის ჩართ/გამორთ."
 
-#: src/libnmc-setting/settings-docs.h.in:259
+#: src/libnmc-setting/settings-docs.h.in:301
 msgid "Enable or disable RSTP."
 msgstr "RSTP-ის ჩართ/გამორთ."
 
-#: src/libnmc-setting/settings-docs.h.in:260
+#: src/libnmc-setting/settings-docs.h.in:302
 msgid "Enable or disable STP."
 msgstr "STP-ის ჩართ/გამორთ."
 
-#: src/libnmc-setting/settings-docs.h.in:261
+#: src/libnmc-setting/settings-docs.h.in:303
 msgid "Open vSwitch DPDK device arguments."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:262
+#: src/libnmc-setting/settings-docs.h.in:304
 msgid ""
 "Open vSwitch DPDK number of rx queues. Defaults to zero which means to leave "
 "the parameter in OVS unspecified and effectively configures one queue."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:263
+#: src/libnmc-setting/settings-docs.h.in:305
 msgid ""
 "The rx queue size (number of rx descriptors) for DPDK ports. Must be zero or "
 "a power of 2 between 1 and 4096, and supported by the hardware. Defaults to "
@@ -7669,7 +8316,7 @@ msgid ""
 "configures 2048 descriptors."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:264
+#: src/libnmc-setting/settings-docs.h.in:306
 msgid ""
 "The tx queue size (number of tx descriptors) for DPDK ports. Must be zero or "
 "a power of 2 between 1 and 4096, and supported by the hardware. Defaults to "
@@ -7677,7 +8324,7 @@ msgid ""
 "configures 2048 descriptors."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:265
+#: src/libnmc-setting/settings-docs.h.in:307
 msgid ""
 "Open vSwitch openflow port number. Defaults to zero which means that port "
 "number will not be specified and it will be chosen randomly by ovs. OpenFlow "
@@ -7686,67 +8333,68 @@ msgid ""
 "to each other via their OpenFlow ports."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:266
+#: src/libnmc-setting/settings-docs.h.in:308
 msgid ""
 "The interface type. Either \"internal\", \"system\", \"patch\", \"dpdk\", or "
 "empty."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:267
+#: src/libnmc-setting/settings-docs.h.in:309
 msgid ""
 "Specifies the name of the interface for the other side of the patch. The "
 "patch on the other side must also set this interface as peer."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:268
+#: src/libnmc-setting/settings-docs.h.in:310
 msgid "The time port must be inactive in order to be considered down."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:269
+#: src/libnmc-setting/settings-docs.h.in:311
 msgid ""
 "Bonding mode. One of \"active-backup\", \"balance-slb\", or \"balance-tcp\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:270
+#: src/libnmc-setting/settings-docs.h.in:312
 msgid "The time port must be active before it starts forwarding traffic."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:271
+#: src/libnmc-setting/settings-docs.h.in:313
 msgid "LACP mode. One of \"active\", \"off\", or \"passive\"."
 msgstr ""
+"LACP-ის რეჟიმი. ერთერთი მნიშვნელობებიდან \"active\", \"off\", ან \"passive\"."
 
-#: src/libnmc-setting/settings-docs.h.in:272
+#: src/libnmc-setting/settings-docs.h.in:314
 msgid "The VLAN tag in the range 0-4095."
-msgstr ""
+msgstr "VLAN-ის ჭდე შუალედიდან 0-4095."
 
-#: src/libnmc-setting/settings-docs.h.in:273
+#: src/libnmc-setting/settings-docs.h.in:315
 msgid ""
 "A list of VLAN ranges that this port trunks. The property is valid only for "
 "ports with mode \"trunk\", \"native-tagged\", or \"native-untagged port\". "
 "If it is empty, the port trunks all VLANs."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:274
+#: src/libnmc-setting/settings-docs.h.in:316
 msgid ""
 "The VLAN mode. One of \"access\", \"native-tagged\", \"native-untagged\", "
 "\"trunk\", \"dot1q-tunnel\" or unset."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:275
+#: src/libnmc-setting/settings-docs.h.in:317
 msgid ""
 "If non-zero, instruct pppd to set the serial port to the specified "
 "baudrate.  This value should normally be left as 0 to automatically choose "
 "the speed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:276
+#: src/libnmc-setting/settings-docs.h.in:318
 msgid ""
 "If TRUE, specify that pppd should set the serial port to use hardware flow "
 "control with RTS and CTS signals.  This value should normally be set to "
 "FALSE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:277
+#: src/libnmc-setting/settings-docs.h.in:319
 msgid ""
 "If non-zero, instruct pppd to presume the connection to the peer has failed "
 "if the specified number of LCP echo-requests go unanswered by the peer.  The "
@@ -7754,7 +8402,7 @@ msgid ""
 "property is used."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:278
+#: src/libnmc-setting/settings-docs.h.in:320
 msgid ""
 "If non-zero, instruct pppd to send an LCP echo-request frame to the peer "
 "every n seconds (where n is the specified value).  Note that some PPP peers "
@@ -7762,78 +8410,78 @@ msgid ""
 "autodetect this."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:279
+#: src/libnmc-setting/settings-docs.h.in:321
 msgid ""
 "If TRUE, stateful MPPE is used.  See pppd documentation for more information "
 "on stateful MPPE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:280
+#: src/libnmc-setting/settings-docs.h.in:322
 msgid ""
 "If non-zero, instruct pppd to request that the peer send packets no larger "
 "than the specified size.  If non-zero, the MRU should be between 128 and "
 "16384."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:281
+#: src/libnmc-setting/settings-docs.h.in:323
 msgid ""
 "If non-zero, instruct pppd to send packets no larger than the specified size."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:282
+#: src/libnmc-setting/settings-docs.h.in:324
 msgid "If TRUE, Van Jacobsen TCP header compression will not be requested."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:283
+#: src/libnmc-setting/settings-docs.h.in:325
 msgid ""
 "If TRUE, do not require the other side (usually the PPP server) to "
 "authenticate itself to the client.  If FALSE, require authentication from "
 "the remote side.  In almost all cases, this should be TRUE."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:284
+#: src/libnmc-setting/settings-docs.h.in:326
 msgid "If TRUE, BSD compression will not be requested."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, BSD შეკუშვა მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:285
+#: src/libnmc-setting/settings-docs.h.in:327
 msgid "If TRUE, \"deflate\" compression will not be requested."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, \"deflate\" შეკუმშვა მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:286
+#: src/libnmc-setting/settings-docs.h.in:328
 msgid "If TRUE, the CHAP authentication method will not be used."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, ავთენტიკაციის მეთოდი CHAP მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:287
+#: src/libnmc-setting/settings-docs.h.in:329
 msgid "If TRUE, the EAP authentication method will not be used."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, ავთენტიკაციის მეთოდი EAP მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:288
+#: src/libnmc-setting/settings-docs.h.in:330
 msgid "If TRUE, the MSCHAP authentication method will not be used."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, ავთენტიკაციის მეთოდი MSCHAP მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:289
+#: src/libnmc-setting/settings-docs.h.in:331
 msgid "If TRUE, the MSCHAPv2 authentication method will not be used."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, ავთენტიკაციის მეთოდი MSCHAPv2 მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:290
+#: src/libnmc-setting/settings-docs.h.in:332
 msgid "If TRUE, the PAP authentication method will not be used."
-msgstr ""
+msgstr "თუ ჭეშმარიტია, ავთენტიკაციის მეთოდი PAP მოთხოვნილი არ იქნება."
 
-#: src/libnmc-setting/settings-docs.h.in:291
+#: src/libnmc-setting/settings-docs.h.in:333
 msgid ""
 "If TRUE, MPPE (Microsoft Point-to-Point Encryption) will be required for the "
 "PPP session.  If either 64-bit or 128-bit MPPE is not available the session "
 "will fail.  Note that MPPE is not used on mobile broadband connections."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:292
+#: src/libnmc-setting/settings-docs.h.in:334
 msgid ""
 "If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required "
 "for the PPP session, and the \"require-mppe\" property must also be set to "
 "TRUE.  If 128-bit MPPE is not available the session will fail."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:293
+#: src/libnmc-setting/settings-docs.h.in:335
 msgid ""
 "If given, specifies the parent interface name on which this PPPoE connection "
 "should be created.  If this property is not specified, the connection is "
@@ -7841,11 +8489,11 @@ msgid ""
 "NMSettingConnection."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:294
+#: src/libnmc-setting/settings-docs.h.in:336
 msgid "Password used to authenticate with the PPPoE service."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:296
+#: src/libnmc-setting/settings-docs.h.in:338
 msgid ""
 "If specified, instruct PPPoE to only initiate sessions with access "
 "concentrators that provide the specified service.  For most providers, this "
@@ -7853,20 +8501,19 @@ msgid ""
 "concentrators or a specific service is known to be required."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:297
+#: src/libnmc-setting/settings-docs.h.in:339
 msgid "Username used to authenticate with the PPPoE service."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:298
+#: src/libnmc-setting/settings-docs.h.in:340
 msgid "Whether the proxy configuration is for browser only."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:299
-msgid ""
-"Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)"
+#: src/libnmc-setting/settings-docs.h.in:341
+msgid "Method for proxy configuration, Default is \"none\" (0)"
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:300
+#: src/libnmc-setting/settings-docs.h.in:342
 msgid ""
 "The PAC script. In the profile this must be an UTF-8 encoded javascript code "
 "that defines a FindProxyForURL() function. When setting the property in "
@@ -7875,47 +8522,73 @@ msgid ""
 "supported to explicitly differentiate between the two."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:301
+#: src/libnmc-setting/settings-docs.h.in:343
 msgid "PAC URL for obtaining PAC file."
-msgstr ""
+msgstr "PAC-ის ბმული PAC ფაილის მისაღებად."
 
-#: src/libnmc-setting/settings-docs.h.in:302
+#: src/libnmc-setting/settings-docs.h.in:344
 msgid ""
 "Speed to use for communication over the serial port.  Note that this value "
 "usually has no effect for mobile broadband modems as they generally ignore "
 "speed settings and use the highest available speed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:303
+#: src/libnmc-setting/settings-docs.h.in:345
 msgid "Byte-width of the serial communication. The 8 in \"8n1\" for example."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:304
+#: src/libnmc-setting/settings-docs.h.in:346
 msgid "Parity setting of the serial port."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:305
+#: src/libnmc-setting/settings-docs.h.in:347
 msgid "Time to delay between each byte sent to the modem, in microseconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:306
+#: src/libnmc-setting/settings-docs.h.in:348
 msgid ""
 "Number of stop bits for communication on the serial port.  Either 1 or 2. "
 "The 1 in \"8n1\" for example."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:307
+#: src/libnmc-setting/settings-docs.h.in:349
 msgid ""
 "Whether to autoprobe virtual functions by a compatible driver. If set to "
-"NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver "
-"and if this succeeds a new network interface will be instantiated for each "
-"VF. If set to NM_TERNARY_FALSE (0), VFs will not be claimed and no network "
-"interfaces will be created for them. When set to NM_TERNARY_DEFAULT (-1), "
-"the global default is used; in case the global default is unspecified it is "
-"assumed to be NM_TERNARY_TRUE (1)."
+"\"true\" (1), the kernel will try to bind VFs to a compatible driver and if "
+"this succeeds a new network interface will be instantiated for each VF. If "
+"set to \"false\" (0), VFs will not be claimed and no network interfaces will "
+"be created for them. When set to \"default\" (-1), the global default is "
+"used; in case the global default is unspecified it is assumed to be \"true\" "
+"(1)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:308
+#: src/libnmc-setting/settings-docs.h.in:350
+msgid ""
+"Select the eswitch encapsulation support. Currently it's only supported for "
+"PCI PF devices, and only if the eswitch device is managed from the same PCI "
+"address than the PF. If set to \"preserve\" (-1) (default) the eswitch encap-"
+"mode won't be modified by NetworkManager."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:351
+msgid ""
+"Select the eswitch inline-mode of the device. Some HWs need the VF driver to "
+"put part of the packet headers on the TX descriptor so the e-switch can do "
+"proper matching and steering. Currently it's only supported for PCI PF "
+"devices, and only if the eswitch device is managed from the same PCI address "
+"than the PF. If set to \"preserve\" (-1) (default) the eswitch inline-mode "
+"won't be modified by NetworkManager."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:352
+msgid ""
+"Select the eswitch mode of the device. Currently it's only supported for PCI "
+"PF devices, and only if the eswitch device is managed from the same PCI "
+"address than the PF. If set to \"preserve\" (-1) (default) the eswitch mode "
+"won't be modified by NetworkManager."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:353
 msgid ""
 "The total number of virtual functions to create. Note that when the sriov "
 "setting is present NetworkManager enforces the number of virtual functions "
@@ -7924,7 +8597,7 @@ msgid ""
 "setting to the connection."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:309
+#: src/libnmc-setting/settings-docs.h.in:354
 msgid ""
 "Array of virtual function descriptors. Each VF descriptor is a dictionary "
 "mapping attribute names to GVariant values. The 'index' entry is mandatory "
@@ -7938,7 +8611,7 @@ msgid ""
 "default) or 'ad' for 802.1ad."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:310
+#: src/libnmc-setting/settings-docs.h.in:355
 msgid ""
 "Array of TC queueing disciplines. When the \"tc\" setting is present, qdiscs "
 "from this property are applied upon activation. If the property is empty, "
@@ -7948,7 +8621,7 @@ msgid ""
 "present on the interface."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:311
+#: src/libnmc-setting/settings-docs.h.in:356
 msgid ""
 "Array of TC traffic filters. When the \"tc\" setting is present, filters "
 "from this property are applied upon activation. If the property is empty, "
@@ -7956,7 +8629,7 @@ msgid ""
 "present, NetworkManager doesn't touch the filters present on the interface."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:312
+#: src/libnmc-setting/settings-docs.h.in:357
 msgid ""
 "The JSON configuration for the team network interface.  The property should "
 "contain raw JSON configuration data suitable for teamd, because the value is "
@@ -7964,8 +8637,8 @@ msgid ""
 "used.  See man teamd.conf for the format details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:313
-#: src/libnmc-setting/settings-docs.h.in:331
+#: src/libnmc-setting/settings-docs.h.in:358
+#: src/libnmc-setting/settings-docs.h.in:376
 msgid ""
 "Link watchers configuration for the connection: each link watcher is defined "
 "by a dictionary, whose keys depend upon the selected link watcher. Available "
@@ -7977,65 +8650,68 @@ msgid ""
 "for more details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:314
+#: src/libnmc-setting/settings-docs.h.in:359
 msgid "Corresponds to the teamd mcast_rejoin.count."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს mcast_rejoin.count."
 
-#: src/libnmc-setting/settings-docs.h.in:315
+#: src/libnmc-setting/settings-docs.h.in:360
 msgid "Corresponds to the teamd mcast_rejoin.interval."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს mcast_rejoin.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:316
+#: src/libnmc-setting/settings-docs.h.in:361
 msgid "Corresponds to the teamd notify_peers.count."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს notify_peers.count."
 
-#: src/libnmc-setting/settings-docs.h.in:317
+#: src/libnmc-setting/settings-docs.h.in:362
 msgid "Corresponds to the teamd notify_peers.interval."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს notify_peers.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:318
+#: src/libnmc-setting/settings-docs.h.in:363
 msgid ""
 "Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", "
 "\"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", \"random\"."
 msgstr ""
+"შეესაბამება teamd-ის პარამეტრს runner.name. დაშვებული მნიშვნელობებია: "
+"\"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", "
+"\"random\"."
 
-#: src/libnmc-setting/settings-docs.h.in:319
+#: src/libnmc-setting/settings-docs.h.in:364
 msgid "Corresponds to the teamd runner.active."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.active."
 
-#: src/libnmc-setting/settings-docs.h.in:320
+#: src/libnmc-setting/settings-docs.h.in:365
 msgid "Corresponds to the teamd runner.agg_select_policy."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.agg_select_policy."
 
-#: src/libnmc-setting/settings-docs.h.in:321
+#: src/libnmc-setting/settings-docs.h.in:366
 msgid "Corresponds to the teamd runner.fast_rate."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.fast_rate."
 
-#: src/libnmc-setting/settings-docs.h.in:322
+#: src/libnmc-setting/settings-docs.h.in:367
 msgid "Corresponds to the teamd runner.hwaddr_policy."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.hwaddr_policy."
 
-#: src/libnmc-setting/settings-docs.h.in:323
+#: src/libnmc-setting/settings-docs.h.in:368
 msgid "Corresponds to the teamd runner.min_ports."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.min_ports."
 
-#: src/libnmc-setting/settings-docs.h.in:324
+#: src/libnmc-setting/settings-docs.h.in:369
 msgid "Corresponds to the teamd runner.sys_prio."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.sys_prio."
 
-#: src/libnmc-setting/settings-docs.h.in:325
+#: src/libnmc-setting/settings-docs.h.in:370
 msgid "Corresponds to the teamd runner.tx_balancer.name."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.tx_balancer.name."
 
-#: src/libnmc-setting/settings-docs.h.in:326
+#: src/libnmc-setting/settings-docs.h.in:371
 msgid "Corresponds to the teamd runner.tx_balancer.interval."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.tx_balancer.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:327
+#: src/libnmc-setting/settings-docs.h.in:372
 msgid "Corresponds to the teamd runner.tx_hash."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს runner.tx_hash."
 
-#: src/libnmc-setting/settings-docs.h.in:328
+#: src/libnmc-setting/settings-docs.h.in:373
 msgid ""
 "The JSON configuration for the team port. The property should contain raw "
 "JSON configuration data suitable for teamd, because the value is passed "
@@ -8043,67 +8719,69 @@ msgid ""
 "man teamd.conf for the format details."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:329
+#: src/libnmc-setting/settings-docs.h.in:374
 msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_key."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს ports.PORTIFNAME.lacp_key."
 
-#: src/libnmc-setting/settings-docs.h.in:330
+#: src/libnmc-setting/settings-docs.h.in:375
 msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_prio."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს ports.PORTIFNAME.lacp_prio."
 
-#: src/libnmc-setting/settings-docs.h.in:332
+#: src/libnmc-setting/settings-docs.h.in:377
 msgid "Corresponds to the teamd ports.PORTIFNAME.prio."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს ports.PORTIFNAME.prio."
 
-#: src/libnmc-setting/settings-docs.h.in:333
+#: src/libnmc-setting/settings-docs.h.in:378
 msgid ""
 "Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the "
 "parameter is skipped from the json config."
 msgstr ""
+"შეესაბამება teamd-ის პარამეტრს ports.PORTIFNAME.queue_id. როცა დაყენებულია "
+"მნიშვნელობაზე -1, ნიშნავს, რომ პარამეტრი ამოღებულია json კონფიგურაციიდან."
 
-#: src/libnmc-setting/settings-docs.h.in:334
+#: src/libnmc-setting/settings-docs.h.in:379
 msgid "Corresponds to the teamd ports.PORTIFNAME.sticky."
-msgstr ""
+msgstr "შეესაბამება teamd-ის პარამეტრს ports.PORTIFNAME.sticky."
 
-#: src/libnmc-setting/settings-docs.h.in:335
+#: src/libnmc-setting/settings-docs.h.in:380
 msgid ""
 "The group ID which will own the device. If set to NULL everyone will be able "
 "to use the device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:336
+#: src/libnmc-setting/settings-docs.h.in:381
 msgid ""
-"The operating mode of the virtual device. Allowed values are "
-"NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and "
-"NM_SETTING_TUN_MODE_TAP (2) to create an Ethernet-like layer 2 one."
+"The operating mode of the virtual device. Allowed values are \"tun\" (1) to "
+"create a layer 3 device and \"tap\" (2) to create an Ethernet-like layer 2 "
+"one."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:337
+#: src/libnmc-setting/settings-docs.h.in:382
 msgid ""
 "If the property is set to TRUE, the interface will support multiple file "
 "descriptors (queues) to parallelize packet sending or receiving. Otherwise, "
 "the interface will only support a single queue."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:338
+#: src/libnmc-setting/settings-docs.h.in:383
 msgid ""
 "The user ID which will own the device. If set to NULL everyone will be able "
 "to use the device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:339
+#: src/libnmc-setting/settings-docs.h.in:384
 msgid ""
 "If TRUE the interface will prepend a 4 byte header describing the physical "
 "interface to the packets."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:340
+#: src/libnmc-setting/settings-docs.h.in:385
 msgid ""
 "If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network "
 "header."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:341
+#: src/libnmc-setting/settings-docs.h.in:386
 msgid ""
 "A dictionary of key/value pairs with user data. This data is ignored by "
 "NetworkManager and can be used at the users discretion. The keys only "
@@ -8111,40 +8789,39 @@ msgid ""
 "up to a certain length."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:342
+#: src/libnmc-setting/settings-docs.h.in:387
 msgid ""
 "For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p "
 "priorities.  The mapping is given in the format \"from:to\" where both "
 "\"from\" and \"to\" are unsigned integers, ie \"7:3\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:343
+#: src/libnmc-setting/settings-docs.h.in:388
 msgid ""
 "One or more flags which control the behavior and features of the VLAN "
-"interface.  Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of "
-"output packet headers), NM_VLAN_FLAG_GVRP (0x2) (use of the GVRP protocol), "
-"and NM_VLAN_FLAG_LOOSE_BINDING (0x4) (loose binding of the interface to its "
-"master device's operating state). NM_VLAN_FLAG_MVRP (0x8) (use of the MVRP "
-"protocol). The default value of this property is "
-"NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. To preserve backward "
-"compatibility, the default-value in the D-Bus API continues to be 0 and a "
-"missing property on D-Bus is still considered as 0."
+"interface.  Flags include \"reorder-headers\" (0x1) (reordering of output "
+"packet headers), \"gvrp\" (0x2) (use of the GVRP protocol), and \"loose-"
+"binding\" (0x4) (loose binding of the interface to its controller device's "
+"operating state). \"mvrp\" (0x8) (use of the MVRP protocol). The default "
+"value of this property is NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. "
+"To preserve backward compatibility, the default-value in the D-Bus API "
+"continues to be 0 and a missing property on D-Bus is still considered as 0."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:344
+#: src/libnmc-setting/settings-docs.h.in:389
 msgid ""
 "The VLAN identifier that the interface created by this connection should be "
 "assigned. The valid range is from 0 to 4094, without the reserved id 4095."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:345
+#: src/libnmc-setting/settings-docs.h.in:390
 msgid ""
 "For incoming packets, a list of mappings from 802.1p priorities to Linux SKB "
 "priorities.  The mapping is given in the format \"from:to\" where both "
 "\"from\" and \"to\" are unsigned integers, ie \"7:3\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:346
+#: src/libnmc-setting/settings-docs.h.in:391
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
 "which this VLAN interface should be created.  If this property is not "
@@ -8152,38 +8829,38 @@ msgid ""
 "\"mac-address\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:347
+#: src/libnmc-setting/settings-docs.h.in:392
 msgid ""
 "Specifies the VLAN protocol to use for encapsulation. Supported values are: "
 "'802.1Q', '802.1ad'. If not specified the default value is '802.1Q'."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:348
+#: src/libnmc-setting/settings-docs.h.in:393
 msgid ""
 "Dictionary of key/value pairs of VPN plugin specific data.  Both keys and "
 "values must be strings."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:349
+#: src/libnmc-setting/settings-docs.h.in:394
 msgid ""
 "If the VPN service supports persistence, and this property is TRUE, the VPN "
 "will attempt to stay connected across link changes and outages, until "
 "explicitly disconnected."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:350
+#: src/libnmc-setting/settings-docs.h.in:395
 msgid ""
 "Dictionary of key/value pairs of VPN plugin specific secrets like passwords "
 "or private keys.  Both keys and values must be strings."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:351
+#: src/libnmc-setting/settings-docs.h.in:396
 msgid ""
 "D-Bus service name of the VPN plugin that this setting uses to connect to "
 "its network.  i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:352
+#: src/libnmc-setting/settings-docs.h.in:397
 msgid ""
 "Timeout for the VPN service to establish the connection. Some services may "
 "take quite a long time to connect. Value of 0 means a default timeout, which "
@@ -8191,7 +8868,7 @@ msgid ""
 "Values greater than zero mean timeout in seconds."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:353
+#: src/libnmc-setting/settings-docs.h.in:398
 msgid ""
 "If the VPN connection requires a user name for authentication, that name "
 "should be provided here.  If the connection is available to more than one "
@@ -8201,96 +8878,96 @@ msgid ""
 "connection."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:354
+#: src/libnmc-setting/settings-docs.h.in:399
 msgid "The routing table for this VRF."
 msgstr "რაუტინგის ცხრილი ამ VRF-სთვის."
 
-#: src/libnmc-setting/settings-docs.h.in:355
+#: src/libnmc-setting/settings-docs.h.in:400
 msgid "Specifies the lifetime in seconds of FDB entries learnt by the kernel."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:356
+#: src/libnmc-setting/settings-docs.h.in:401
 msgid ""
 "Specifies the UDP destination port to communicate to the remote VXLAN tunnel "
 "endpoint."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:357
+#: src/libnmc-setting/settings-docs.h.in:402
 msgid ""
 "Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:358
+#: src/libnmc-setting/settings-docs.h.in:403
 msgid "Specifies whether netlink LL ADDR miss notifications are generated."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:359
+#: src/libnmc-setting/settings-docs.h.in:404
 msgid "Specifies whether netlink IP ADDR miss notifications are generated."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:360
+#: src/libnmc-setting/settings-docs.h.in:405
 msgid ""
 "Specifies whether unknown source link layer addresses and IP addresses are "
 "entered into the VXLAN device forwarding database."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:361
+#: src/libnmc-setting/settings-docs.h.in:406
 msgid ""
 "Specifies the maximum number of FDB entries. A value of zero means that the "
 "kernel will store unlimited entries."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:362
+#: src/libnmc-setting/settings-docs.h.in:407
 msgid "If given, specifies the source IP address to use in outgoing packets."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:363
+#: src/libnmc-setting/settings-docs.h.in:408
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:364
+#: src/libnmc-setting/settings-docs.h.in:409
 msgid "Specifies whether ARP proxy is turned on."
 msgstr "მიუთითებს, ჩართულია ARP პროქსი, თუ არა."
 
-#: src/libnmc-setting/settings-docs.h.in:365
+#: src/libnmc-setting/settings-docs.h.in:410
 msgid ""
 "Specifies the unicast destination IP address to use in outgoing packets when "
 "the destination link layer address is not known in the VXLAN device "
 "forwarding database, or the multicast IP address to join."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:366
+#: src/libnmc-setting/settings-docs.h.in:411
 msgid "Specifies whether route short circuit is turned on."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:367
+#: src/libnmc-setting/settings-docs.h.in:412
 msgid ""
 "Specifies the maximum UDP source port to communicate to the remote VXLAN "
 "tunnel endpoint."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:368
+#: src/libnmc-setting/settings-docs.h.in:413
 msgid ""
 "Specifies the minimum UDP source port to communicate to the remote VXLAN "
 "tunnel endpoint."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:369
+#: src/libnmc-setting/settings-docs.h.in:414
 msgid "Specifies the TOS value to use in outgoing packets."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:370
+#: src/libnmc-setting/settings-docs.h.in:415
 msgid "Specifies the time-to-live value to use in outgoing packets."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:371
+#: src/libnmc-setting/settings-docs.h.in:416
 msgid ""
 "The P2P device that should be connected to. Currently, this is the only way "
 "to create or join a group."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:372
+#: src/libnmc-setting/settings-docs.h.in:417
 msgid ""
 "The Wi-Fi Display (WFD) Information Elements (IEs) to set. Wi-Fi Display "
 "requires a protocol specific information element to be set in certain Wi-Fi "
@@ -8299,27 +8976,27 @@ msgid ""
 "client."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:373
+#: src/libnmc-setting/settings-docs.h.in:418
 msgid ""
 "Flags indicating which mode of WPS is to be used. There's little point in "
 "changing the default setting as NetworkManager will automatically determine "
 "the best method to use."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:374
+#: src/libnmc-setting/settings-docs.h.in:419
 msgid ""
 "If specified, this connection will only apply to the WiMAX device whose MAC "
 "address matches. This property does not change the MAC address of the device "
 "(known as MAC spoofing)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:375
+#: src/libnmc-setting/settings-docs.h.in:420
 msgid ""
 "Network Service Provider (NSP) name of the WiMAX network this connection "
 "should use."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:376
+#: src/libnmc-setting/settings-docs.h.in:421
 msgid ""
 "When TRUE, setup the interface to accept packets for all MAC addresses. This "
 "is enabling the kernel interface flag IFF_PROMISC. When FALSE, the interface "
@@ -8327,7 +9004,7 @@ msgid ""
 "broadcast."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:377
+#: src/libnmc-setting/settings-docs.h.in:422
 msgid ""
 "When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" "
 "and \"duplex\" properties are both specified, only that single mode will be "
@@ -8338,7 +9015,7 @@ msgid ""
 "will be skipped."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:378
+#: src/libnmc-setting/settings-docs.h.in:423
 msgid ""
 "If specified, request that the device use this MAC address instead. This is "
 "known as MAC cloning or spoofing. Beside explicitly specifying a MAC "
@@ -8349,13 +9026,13 @@ msgid ""
 "creates a random MAC address on each connect. \"stable\" creates a hashed "
 "MAC address based on connection.stable-id and a machine dependent key. If "
 "unspecified, the value can be overwritten via global defaults, see manual of "
-"NetworkManager.conf. If still unspecified, it defaults to "
-"\"preserve\" (older versions of NetworkManager may use a different default "
-"value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the "
-"deprecated \"cloned-mac-address\"."
+"NetworkManager.conf. If still unspecified, it defaults to \"preserve\" "
+"(older versions of NetworkManager may use a different default value). On D-"
+"Bus, this field is expressed as \"assigned-mac-address\" or the deprecated "
+"\"cloned-mac-address\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:379
+#: src/libnmc-setting/settings-docs.h.in:424
 msgid ""
 "When a value is set, either \"half\" or \"full\", configures the device to "
 "use the specified duplex mode. If \"auto-negotiate\" is \"yes\" the "
@@ -8370,8 +9047,8 @@ msgid ""
 "your device supports it."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:380
-#: src/libnmc-setting/settings-docs.h.in:404
+#: src/libnmc-setting/settings-docs.h.in:425
+#: src/libnmc-setting/settings-docs.h.in:451
 msgid ""
 "With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all "
 "bits of the MAC address are scrambled and a locally-administered, unicast "
@@ -8398,29 +9075,30 @@ msgid ""
 "administered."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:381
+#: src/libnmc-setting/settings-docs.h.in:426
 msgid ""
 "If specified, this connection will only apply to the Ethernet device whose "
 "permanent MAC address matches. This property does not change the MAC address "
 "of the device (i.e. MAC spoofing)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:382
+#: src/libnmc-setting/settings-docs.h.in:427
+#: src/libnmc-setting/settings-docs.h.in:428
 msgid ""
 "If specified, this connection will never apply to the Ethernet device whose "
 "permanent MAC address matches an address in the list.  Each MAC address is "
 "in the standard hex-digits-and-colons notation (00:11:22:33:44:55)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:383
-#: src/libnmc-setting/settings-docs.h.in:410
-#: src/libnmc-setting/settings-docs.h.in:452
+#: src/libnmc-setting/settings-docs.h.in:429
+#: src/libnmc-setting/settings-docs.h.in:458
+#: src/libnmc-setting/settings-docs.h.in:500
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
 "breaking larger packets up into multiple Ethernet frames."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:384
+#: src/libnmc-setting/settings-docs.h.in:430
 msgid ""
 "Specific port type to use if the device supports multiple attachment "
 "methods.  One of \"tp\" (Twisted Pair), \"aui\" (Attachment Unit Interface), "
@@ -8428,13 +9106,13 @@ msgid ""
 "device supports only one port type, this setting is ignored."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:385
+#: src/libnmc-setting/settings-docs.h.in:431
 msgid ""
 "s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing "
 "the different types of virtual network devices available on s390 systems."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:386
+#: src/libnmc-setting/settings-docs.h.in:432
 msgid ""
 "Dictionary of key/value pairs of s390-specific device options.  Both keys "
 "and values must be strings.  Allowed keys include \"portno\", \"layer2\", "
@@ -8444,7 +9122,7 @@ msgid ""
 "which parses this information and applies it to the interface."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:387
+#: src/libnmc-setting/settings-docs.h.in:433
 msgid ""
 "Identifies specific subchannels that this network device uses for "
 "communication with z/VM or s390 host.  Like the \"mac-address\" property for "
@@ -8454,7 +9132,7 @@ msgid ""
 "hexadecimal characters and the period (.) character."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:388
+#: src/libnmc-setting/settings-docs.h.in:434
 msgid ""
 "When a value greater than 0 is set, configures the device to use the "
 "specified speed. If \"auto-negotiate\" is \"yes\" the specified speed will "
@@ -8469,27 +9147,23 @@ msgid ""
 "sure your device supports it."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:389
+#: src/libnmc-setting/settings-docs.h.in:435
 msgid ""
 "The NMSettingWiredWakeOnLan options to enable. Not all devices support all "
-"options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), "
-"NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC "
-"(0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to "
-"use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to "
-"disable management of Wake-on-LAN in NetworkManager)."
+"options. May be any combination of \"phy\" (0x2), \"unicast\" (0x4), "
+"\"multicast\" (0x8), \"broadcast\" (0x10), \"arp\" (0x20), \"magic\" (0x40) "
+"or the special values \"default\" (0x1) (to use global settings) and "
+"\"ignore\" (0x8000) (to disable management of Wake-on-LAN in NetworkManager)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:390
+#: src/libnmc-setting/settings-docs.h.in:436
 msgid ""
 "If specified, the password used with magic-packet-based Wake-on-LAN, "
 "represented as an Ethernet MAC address.  If NULL, no password will be "
 "required."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:391
+#: src/libnmc-setting/settings-docs.h.in:437
 msgid ""
 "The use of fwmark is optional and is by default off. Setting it to 0 "
 "disables it. Otherwise, it is a 32-bit fwmark for outgoing packets. Note "
@@ -8497,7 +9171,7 @@ msgid ""
 "implies to automatically choose a fwmark."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:392
+#: src/libnmc-setting/settings-docs.h.in:438
 msgid ""
 "Whether to enable special handling of the IPv4 default route. If enabled, "
 "the IPv4 default route from wireguard.peer-routes will be placed to a "
@@ -8515,17 +9189,17 @@ msgid ""
 "want to configure your own routing and rules."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:393
+#: src/libnmc-setting/settings-docs.h.in:439
 msgid "Like ip4-auto-default-route, but for the IPv6 default route."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:394
+#: src/libnmc-setting/settings-docs.h.in:440
 msgid ""
 "The listen-port. If listen-port is not specified, the port will be chosen "
 "randomly when the interface comes up."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:395
+#: src/libnmc-setting/settings-docs.h.in:441
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
 "breaking larger packets up into multiple fragments. If zero a default MTU is "
@@ -8533,7 +9207,7 @@ msgid ""
 "account the current routes at the time of activation."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:396
+#: src/libnmc-setting/settings-docs.h.in:442
 msgid ""
 "Whether to automatically add routes for the AllowedIPs ranges of the peers. "
 "If TRUE (the default), NetworkManager will automatically add routes in the "
@@ -8546,30 +9220,29 @@ msgid ""
 "be added automatically."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:397
+#: src/libnmc-setting/settings-docs.h.in:443
 msgid "The 256 bit private-key in base64 encoding."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:398
+#: src/libnmc-setting/settings-docs.h.in:444
 msgid "Flags indicating how to handle the \"private-key\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:399
+#: src/libnmc-setting/settings-docs.h.in:445
 msgid ""
 "Configures AP isolation, which prevents communication between wireless "
 "devices connected to this AP. This property can be set to a value different "
-"from NM_TERNARY_DEFAULT (-1) only when the interface is configured in AP "
-"mode. If set to NM_TERNARY_TRUE (1), devices are not able to communicate "
-"with each other. This increases security because it protects devices against "
-"attacks from other clients in the network. At the same time, it prevents "
-"devices to access resources on the same wireless networks as file shares, "
-"printers, etc. If set to NM_TERNARY_FALSE (0), devices can talk to each "
-"other. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in "
-"case the global default is unspecified it is assumed to be NM_TERNARY_FALSE "
-"(0)."
+"from \"default\" (-1) only when the interface is configured in AP mode. If "
+"set to \"true\" (1), devices are not able to communicate with each other. "
+"This increases security because it protects devices against attacks from "
+"other clients in the network. At the same time, it prevents devices to "
+"access resources on the same wireless networks as file shares, printers, "
+"etc. If set to \"false\" (0), devices can talk to each other. When set to "
+"\"default\" (-1), the global default is used; in case the global default is "
+"unspecified it is assumed to be \"false\" (0)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:400
+#: src/libnmc-setting/settings-docs.h.in:446
 msgid ""
 "802.11 frequency band of the network.  One of \"a\" for 5GHz 802.11a or "
 "\"bg\" for 2.4GHz 802.11.  This will lock associations to the Wi-Fi network "
@@ -8579,7 +9252,7 @@ msgid ""
 "and may not work with all drivers."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:401
+#: src/libnmc-setting/settings-docs.h.in:447
 msgid ""
 "If specified, directs the device to only associate with the given access "
 "point.  This capability is highly driver dependent and not supported by all "
@@ -8589,7 +9262,7 @@ msgid ""
 "scanning. That can be useful, if there is only one access point for the SSID."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:402
+#: src/libnmc-setting/settings-docs.h.in:448
 msgid ""
 "Wireless channel to use for the Wi-Fi connection.  The device will only join "
 "(or create for Ad-Hoc networks) a Wi-Fi network on the specified channel.  "
@@ -8597,23 +9270,36 @@ msgid ""
 "the \"band\" property to be set."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:403
+#: src/libnmc-setting/settings-docs.h.in:449
+msgid ""
+"Specifies width of the wireless channel in Access Point (AP) mode. When set "
+"to \"auto\" (0) (the default), the channel width is automatically "
+"determined. At the moment, this means that the safest (smallest) width is "
+"chosen. If the value is not \"auto\" (0), then the 'channel' property must "
+"also be set. When using the 2.4GHz band, the width can be at most 40MHz. "
+"This property can be set to a value different from \"auto\" (0) only when "
+"the interface is configured in AP mode."
+msgstr ""
+
+#: src/libnmc-setting/settings-docs.h.in:450
 msgid ""
 "If specified, request that the device use this MAC address instead. This is "
 "known as MAC cloning or spoofing. Beside explicitly specifying a MAC "
-"address, the special values \"preserve\", \"permanent\", \"random\" and "
-"\"stable\" are supported. \"preserve\" means not to touch the MAC address on "
-"activation. \"permanent\" means to use the permanent hardware address of the "
-"device. \"random\" creates a random MAC address on each connect. \"stable\" "
-"creates a hashed MAC address based on connection.stable-id and a machine "
-"dependent key. If unspecified, the value can be overwritten via global "
+"address, the special values \"preserve\", \"permanent\", \"random\", "
+"\"stable\" and \"stable-ssid\" are supported. \"preserve\" means not to "
+"touch the MAC address on activation. \"permanent\" means to use the "
+"permanent hardware address of the device. \"random\" creates a random MAC "
+"address on each connect. \"stable\" creates a hashed MAC address based on "
+"connection.stable-id and a machine dependent key. \"stable-ssid\" creates a "
+"hashed MAC address based on the SSID, the same as setting the stable-id to "
+"\"${NETWORK_SSID}\". If unspecified, the value can be overwritten via global "
 "defaults, see manual of NetworkManager.conf. If still unspecified, it "
 "defaults to \"preserve\" (older versions of NetworkManager may use a "
 "different default value). On D-Bus, this field is expressed as \"assigned-"
 "mac-address\" or the deprecated \"cloned-mac-address\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:405
+#: src/libnmc-setting/settings-docs.h.in:452
 msgid ""
 "If TRUE, indicates that the network is a non-broadcasting network that hides "
 "its SSID. This works both in infrastructure and AP mode. In infrastructure "
@@ -8626,50 +9312,49 @@ msgid ""
 "mode), as the explicit probe-scans are distinctly recognizable on the air."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:406
+#: src/libnmc-setting/settings-docs.h.in:453
 msgid ""
 "If specified, this connection will only apply to the Wi-Fi device whose "
 "permanent MAC address matches. This property does not change the MAC address "
 "of the device (i.e. MAC spoofing)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:407
+#: src/libnmc-setting/settings-docs.h.in:454
+#: src/libnmc-setting/settings-docs.h.in:455
 msgid ""
 "A list of permanent MAC addresses of Wi-Fi devices to which this connection "
 "should never apply.  Each MAC address should be given in the standard hex-"
 "digits-and-colons notation (eg \"00:11:22:33:44:55\")."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:408
+#: src/libnmc-setting/settings-docs.h.in:456
 msgid ""
-"One of NM_SETTING_MAC_RANDOMIZATION_DEFAULT (0) (never randomize unless the "
-"user has set a global default to randomize and the supplicant supports "
-"randomization),  NM_SETTING_MAC_RANDOMIZATION_NEVER (1) (never randomize the "
-"MAC address), or NM_SETTING_MAC_RANDOMIZATION_ALWAYS (2) (always randomize "
+"One of \"default\" (0) (never randomize unless the user has set a global "
+"default to randomize and the supplicant supports randomization),  \"never\" "
+"(1) (never randomize the MAC address), or \"always\" (2) (always randomize "
 "the MAC address)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:409
+#: src/libnmc-setting/settings-docs.h.in:457
 msgid ""
 "Wi-Fi network mode; one of \"infrastructure\", \"mesh\", \"adhoc\" or "
 "\"ap\".  If blank, infrastructure is assumed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:411
+#: src/libnmc-setting/settings-docs.h.in:459
 msgid ""
-"One of NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2) (disable Wi-Fi power "
-"saving), NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3) (enable Wi-Fi power "
-"saving), NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1) (don't touch currently "
-"configure setting) or NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0) (use the "
-"globally configured value). All other values are reserved."
+"One of \"disable\" (2) (disable Wi-Fi power saving), \"enable\" (3) (enable "
+"Wi-Fi power saving), \"ignore\" (1) (don't touch currently configure "
+"setting) or \"default\" (0) (use the globally configured value). All other "
+"values are reserved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:412
-#: src/libnmc-setting/settings-docs.h.in:415
+#: src/libnmc-setting/settings-docs.h.in:460
+#: src/libnmc-setting/settings-docs.h.in:463
 msgid "This property is not implemented and has no effect."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:413
+#: src/libnmc-setting/settings-docs.h.in:461
 msgid ""
 "A list of BSSIDs (each BSSID formatted as a MAC address like "
 "\"00:11:22:33:44:55\") that have been detected as part of the Wi-Fi "
@@ -8681,27 +9366,21 @@ msgid ""
 "in \"/var/lib/NetworkManager/seen-bssids\" file."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:414
+#: src/libnmc-setting/settings-docs.h.in:462
 msgid "SSID of the Wi-Fi network. Must be specified."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:416
+#: src/libnmc-setting/settings-docs.h.in:464
 msgid ""
 "The NMSettingWirelessWakeOnWLan options to enable. Not all devices support "
-"all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY "
-"(0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and "
-"NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of "
-"Wake-on-LAN in NetworkManager)."
+"all options. May be any combination of \"any\" (0x2), \"disconnect\" (0x4), "
+"\"magic\" (0x8), \"gtk-rekey-failure\" (0x10), \"eap-identity-request\" "
+"(0x20), \"4way-handshake\" (0x40), \"rfkill-release\" (0x80), \"tcp\" "
+"(0x100) or the special values \"default\" (0x1) (to use global settings) and "
+"\"ignore\" (0x8000) (to disable management of Wake-on-LAN in NetworkManager)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:417
+#: src/libnmc-setting/settings-docs.h.in:465
 msgid ""
 "When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the "
 "802.11 authentication algorithm required by the AP here.  One of \"open\" "
@@ -8710,19 +9389,17 @@ msgid ""
 "the \"leap-username\" and \"leap-password\" properties must be specified."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:418
+#: src/libnmc-setting/settings-docs.h.in:466
 msgid ""
 "Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the "
-"connection.  One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use "
-"global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) "
-"(disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS "
-"if the supplicant and the access point support it) or "
-"NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not "
-"supported).  When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and "
-"no global default is set, FILS will be optionally enabled."
+"connection.  One of \"default\" (0) (use global default value), \"disable\" "
+"(1) (disable FILS), \"optional\" (2) (enable FILS if the supplicant and the "
+"access point support it) or \"required\" (3) (enable FILS and fail if not "
+"supported).  When set to \"default\" (0) and no global default is set, FILS "
+"will be optionally enabled."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:419
+#: src/libnmc-setting/settings-docs.h.in:467
 msgid ""
 "A list of group/broadcast encryption algorithms which prevents connections "
 "to Wi-Fi networks that do not utilize one of the algorithms in the list.  "
@@ -8730,7 +9407,7 @@ msgid ""
 "be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:420
+#: src/libnmc-setting/settings-docs.h.in:468
 msgid ""
 "Key management used for the connection. One of \"none\" (WEP or no password "
 "protection), \"ieee8021x\" (Dynamic WEP), \"owe\" (Opportunistic Wireless "
@@ -8740,23 +9417,23 @@ msgid ""
 "uses security."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:421
+#: src/libnmc-setting/settings-docs.h.in:469
 msgid ""
 "The login password for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
 "and auth-alg = \"leap\")."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:422
+#: src/libnmc-setting/settings-docs.h.in:470
 msgid "Flags indicating how to handle the \"leap-password\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:423
+#: src/libnmc-setting/settings-docs.h.in:471
 msgid ""
 "The login username for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
 "and auth-alg = \"leap\")."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:424
+#: src/libnmc-setting/settings-docs.h.in:472
 msgid ""
 "A list of pairwise encryption algorithms which prevents connections to Wi-Fi "
 "networks that do not utilize one of the algorithms in the list. For maximum "
@@ -8764,26 +9441,24 @@ msgid ""
 "\"tkip\" or \"ccmp\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:425
+#: src/libnmc-setting/settings-docs.h.in:473
 msgid ""
 "Indicates whether Protected Management Frames (802.11w) must be enabled for "
-"the connection.  One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use "
-"global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable "
-"PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the "
-"supplicant and the access point support it) or "
-"NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not "
-"supported).  When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no "
-"global default is set, PMF will be optionally enabled."
+"the connection.  One of \"default\" (0) (use global default value), "
+"\"disable\" (1) (disable PMF), \"optional\" (2) (enable PMF if the "
+"supplicant and the access point support it) or \"required\" (3) (enable PMF "
+"and fail if not supported).  When set to \"default\" (0) and no global "
+"default is set, PMF will be optionally enabled."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:426
+#: src/libnmc-setting/settings-docs.h.in:474
 msgid ""
 "List of strings specifying the allowed WPA protocol versions to use. Each "
 "element may be one \"wpa\" (allow WPA) or \"rsn\" (allow WPA2/RSN).  If not "
 "specified, both WPA and RSN connections are allowed."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:427
+#: src/libnmc-setting/settings-docs.h.in:475
 msgid ""
 "Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII "
 "passphrase of 8 to 63 characters that is (as specified in the 802.11i "
@@ -8792,51 +9467,50 @@ msgid ""
 "length for SAE authentication."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:428
+#: src/libnmc-setting/settings-docs.h.in:476
 msgid "Flags indicating how to handle the \"psk\" property."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:429
+#: src/libnmc-setting/settings-docs.h.in:477
 msgid ""
 "Flags indicating how to handle the \"wep-key0\", \"wep-key1\", \"wep-key2\", "
 "and \"wep-key3\" properties."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:430
+#: src/libnmc-setting/settings-docs.h.in:478
 msgid ""
-"Controls the interpretation of WEP keys.  Allowed values are "
-"NM_WEP_KEY_TYPE_KEY (1), in which case the key is either a 10- or 26-"
-"character hexadecimal string, or a 5- or 13-character ASCII password; or "
-"NM_WEP_KEY_TYPE_PASSPHRASE (2), in which case the passphrase is provided as "
-"a string and will be hashed using the de-facto MD5 method to derive the "
-"actual WEP key."
+"Controls the interpretation of WEP keys.  Allowed values are \"key\" (1), in "
+"which case the key is either a 10- or 26-character hexadecimal string, or a "
+"5- or 13-character ASCII password; or \"passphrase\" (2), in which case the "
+"passphrase is provided as a string and will be hashed using the de-facto MD5 "
+"method to derive the actual WEP key."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:431
+#: src/libnmc-setting/settings-docs.h.in:479
 msgid ""
 "Index 0 WEP key.  This is the WEP key used in most networks.  See the \"wep-"
 "key-type\" property for a description of how this key is interpreted."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:432
+#: src/libnmc-setting/settings-docs.h.in:480
 msgid ""
 "Index 1 WEP key.  This WEP index is not used by most networks.  See the "
 "\"wep-key-type\" property for a description of how this key is interpreted."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:433
+#: src/libnmc-setting/settings-docs.h.in:481
 msgid ""
 "Index 2 WEP key.  This WEP index is not used by most networks.  See the "
 "\"wep-key-type\" property for a description of how this key is interpreted."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:434
+#: src/libnmc-setting/settings-docs.h.in:482
 msgid ""
 "Index 3 WEP key.  This WEP index is not used by most networks.  See the "
 "\"wep-key-type\" property for a description of how this key is interpreted."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:435
+#: src/libnmc-setting/settings-docs.h.in:483
 msgid ""
 "When static WEP is used (ie, key-mgmt = \"none\") and a non-default WEP key "
 "index is used by the AP, put that WEP key index here.  Valid values are 0 "
@@ -8844,7 +9518,7 @@ msgid ""
 "Linksys WRT54G) number the keys 1 - 4."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:436
+#: src/libnmc-setting/settings-docs.h.in:484
 msgid ""
 "Flags indicating which mode of WPS is to be used if any. There's little "
 "point in changing the default setting as NetworkManager will automatically "
@@ -8853,33 +9527,33 @@ msgid ""
 "of 1."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:437
+#: src/libnmc-setting/settings-docs.h.in:485
 msgid ""
 "IEEE 802.15.4 channel. A positive integer or -1, meaning \"do not set, use "
 "whatever the device is already set to\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:438
+#: src/libnmc-setting/settings-docs.h.in:486
 msgid ""
 "If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) "
 "MAC layer device whose permanent MAC address matches."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:439
+#: src/libnmc-setting/settings-docs.h.in:487
 msgid ""
 "IEEE 802.15.4 channel page. A positive integer or -1, meaning \"do not set, "
 "use whatever the device is already set to\"."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:440
+#: src/libnmc-setting/settings-docs.h.in:488
 msgid "IEEE 802.15.4 Personal Area Network (PAN) identifier."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:441
+#: src/libnmc-setting/settings-docs.h.in:489
 msgid "Short IEEE 802.15.4 address to be used within a restricted environment."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:442
+#: src/libnmc-setting/settings-docs.h.in:490
 msgid ""
 "The port priority for bond active port re-selection during failover. A "
 "higher number means a higher priority in selection. The primary port has the "
@@ -8887,42 +9561,40 @@ msgid ""
 "tlb and balance-alb modes."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:443
+#: src/libnmc-setting/settings-docs.h.in:491
 msgid ""
 "The queue ID of this bond port. The maximum value of queue ID is the number "
 "of TX queues currently active in device."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:444
+#: src/libnmc-setting/settings-docs.h.in:492
 msgid ""
 "Whether the system hostname can be determined from DHCP on this connection. "
-"When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is "
-"used. If the property doesn't have a value in the global configuration, "
-"NetworkManager assumes the value to be NM_TERNARY_TRUE (1)."
+"When set to \"default\" (-1), the value from global configuration is used. "
+"If the property doesn't have a value in the global configuration, "
+"NetworkManager assumes the value to be \"true\" (1)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:445
+#: src/libnmc-setting/settings-docs.h.in:493
 msgid ""
 "Whether the system hostname can be determined from reverse DNS lookup of "
-"addresses on this device. When set to NM_TERNARY_DEFAULT (-1), the value "
-"from global configuration is used. If the property doesn't have a value in "
-"the global configuration, NetworkManager assumes the value to be "
-"NM_TERNARY_TRUE (1)."
+"addresses on this device. When set to \"default\" (-1), the value from "
+"global configuration is used. If the property doesn't have a value in the "
+"global configuration, NetworkManager assumes the value to be \"true\" (1)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:446
+#: src/libnmc-setting/settings-docs.h.in:494
 msgid ""
-"If set to NM_TERNARY_TRUE (1), NetworkManager attempts to get the hostname "
-"via DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device "
-"has the default route for the given address family (IPv4/IPv6). If set to "
-"NM_TERNARY_FALSE (0), the hostname can be set from this device even if it "
-"doesn't have the default route. When set to NM_TERNARY_DEFAULT (-1), the "
-"value from global configuration is used. If the property doesn't have a "
-"value in the global configuration, NetworkManager assumes the value to be "
-"NM_TERNARY_FALSE (0)."
+"If set to \"true\" (1), NetworkManager attempts to get the hostname via "
+"DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device has "
+"the default route for the given address family (IPv4/IPv6). If set to "
+"\"false\" (0), the hostname can be set from this device even if it doesn't "
+"have the default route. When set to \"default\" (-1), the value from global "
+"configuration is used. If the property doesn't have a value in the global "
+"configuration, NetworkManager assumes the value to be \"false\" (0)."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:447
+#: src/libnmc-setting/settings-docs.h.in:495
 msgid ""
 "The relative priority of this connection to determine the system hostname. A "
 "lower numerical value is better (higher priority).  A connection with higher "
@@ -8936,69 +9608,74 @@ msgid ""
 "hostname."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:448
+#: src/libnmc-setting/settings-docs.h.in:496
 msgid ""
 "The maximum size of a packet built by the Generic Receive Offload stack for "
 "this device. The value must be between 0 and 4294967295. When set to -1, the "
 "existing value is preserved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:449
+#: src/libnmc-setting/settings-docs.h.in:497
 msgid ""
 "The maximum segments of a Generic Segment Offload packet the device should "
 "accept. The value must be between 0 and 4294967295. When set to -1, the "
 "existing value is preserved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:450
+#: src/libnmc-setting/settings-docs.h.in:498
 msgid ""
 "The maximum size of a Generic Segment Offload packet the device should "
 "accept. The value must be between 0 and 4294967295. When set to -1, the "
 "existing value is preserved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:451
+#: src/libnmc-setting/settings-docs.h.in:499
 msgid ""
 "The size of the transmit queue for the device, in number of packets. The "
 "value must be between 0 and 4294967295. When set to -1, the existing value "
 "is preserved."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:453
+#: src/libnmc-setting/settings-docs.h.in:501
 msgid "A dictionary of key/value pairs with external-ids for OVS."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:454
+#: src/libnmc-setting/settings-docs.h.in:502
 msgid ""
 "A dictionary of key/value pairs with other_config settings for OVS. See also "
 "\"other_config\" in the \"ovs-vswitchd.conf.db\" manual for the keys that "
 "OVS supports."
 msgstr ""
 
-#: src/libnmc-setting/settings-docs.h.in:455
+#: src/libnmc-setting/settings-docs.h.in:503
 msgid ""
 "This property specifies the peer interface name of the veth. This property "
 "is mandatory."
 msgstr ""
 
-#: src/libnmt-newt/nmt-newt-utils.c:267 src/nmtui/nmt-editor.c:442
+#: src/libnmt-newt/nmt-newt-utils.c:267 src/nmtui/nmt-editor.c:445
 #: src/nmtui/nmt-password-dialog.c:163 src/nmtui/nmt-route-editor.c:105
 #: src/nmtui/nmt-wireguard-peer-editor.c:154 src/nmtui/nmtui-hostname.c:53
 #: src/nmtui/nmtui.c:115
 msgid "OK"
 msgstr "დიახ"
 
-#: src/libnmt-newt/nmt-newt-utils.c:412 src/libnmt-newt/nmt-newt-utils.c:450
+#: src/libnmt-newt/nmt-newt-utils.c:412 src/libnmt-newt/nmt-newt-utils.c:459
 #, c-format
 msgid "Could not create temporary file: %s"
 msgstr "დროებითი ფაილის შექმნის შეცდომა: %s"
 
-#: src/libnmt-newt/nmt-newt-utils.c:456
+#: src/libnmt-newt/nmt-newt-utils.c:426
+#, c-format
+msgid "Could not write to temporary file: %s"
+msgstr "ჩაწერის შეცდომა დროებითი ფაილისთვის: %s"
+
+#: src/libnmt-newt/nmt-newt-utils.c:465
 #, c-format
 msgid "Editor failed: %s"
 msgstr "რედაქტორის შეცდომა: %s"
 
-#: src/libnmt-newt/nmt-newt-utils.c:462
+#: src/libnmt-newt/nmt-newt-utils.c:471
 #, c-format
 msgid "Could not re-read file: %s"
 msgstr "ფაილის ხელახლა წაკითხვა ვერ მოხერხდა: %s"
@@ -9008,8 +9685,9 @@ msgid "Connecting"
 msgstr "დაკავშირება"
 
 #: src/nm-online/nm-online.c:189
+#, c-format
 msgid "Error: timeout creating NMClient object\n"
-msgstr ""
+msgstr "შეცდომა: NMClient ობიექტის შექმნის მოლოდინის ვადა ამოიწურა\n"
 
 #: src/nm-online/nm-online.c:210
 #, c-format
@@ -9042,6 +9720,8 @@ msgstr ""
 #: src/nm-online/nm-online.c:289 src/nm-online/nm-online.c:296
 msgid "Invalid option.  Please use --help to see a list of valid options."
 msgstr ""
+"არასწორი პარამეტრი.  სწორი პარმეტრების ჩამონათვალის მისაღებად გამოიყენეთ '--"
+"help'."
 
 #: src/nmcli/agent.c:25
 msgid ""
@@ -9086,6 +9766,7 @@ msgid "nmcli successfully registered as a NetworkManager's secret agent.\n"
 msgstr ""
 
 #: src/nmcli/agent.c:143
+#, c-format
 msgid "Error: secret agent initialization failed"
 msgstr "შეცდომა: საიდუმლოების აგენტის ინიციალიზაციის შეცდომა"
 
@@ -9099,7 +9780,7 @@ msgid "Error: polkit agent initialization failed: %s"
 msgstr "შეცდომა: polkit-ის აგენტის ინიციალიზაციის შეცდომა: %s"
 
 #: src/nmcli/common.c:362 src/nmcli/common.c:363 src/nmcli/common.c:393
-#: src/nmcli/common.c:394 src/nmcli/connections.c:1741
+#: src/nmcli/common.c:394 src/nmcli/connections.c:1769
 msgid "GROUP"
 msgstr "GROUP"
 
@@ -9115,49 +9796,49 @@ msgid ""
 "without '--ask' option.\n"
 msgstr ""
 
-#: src/nmcli/common.c:1248
+#: src/nmcli/common.c:1249
 #, c-format
 msgid "Error: Could not create NMClient object: %s."
 msgstr "შეცდომა: NMClient ტიპის ობიექტის შექმნა შეუძლებელია: %s."
 
-#: src/nmcli/common.c:1379
+#: src/nmcli/common.c:1381
 msgid "Error: command doesn't support --offline mode."
 msgstr "შეცდომა: ბრძანებას --offline რეჟიმის მხარდაჭერა არ გააჩნია."
 
-#: src/nmcli/common.c:1419
+#: src/nmcli/common.c:1421
 msgid "Error: NetworkManager is not running."
 msgstr "შეცდომა: NetworkManager გაშვებული არაა."
 
-#: src/nmcli/common.c:1522
+#: src/nmcli/common.c:1524
 #, c-format
 msgid "Error: argument '%s' not understood. Try passing --help instead."
 msgstr "შეცდომა: არგუმენტი '%s' გაუგებარია. სცადეთ --help გადასცეთ."
 
-#: src/nmcli/common.c:1533
+#: src/nmcli/common.c:1535
 msgid "Error: missing argument. Try passing --help."
 msgstr "შეცდომა: არგუმენტი აკლია. სცადეთ --help."
 
-#: src/nmcli/common.c:1598
+#: src/nmcli/common.c:1600
 msgid "access denied"
 msgstr "წვდომა აკრძალულია"
 
-#: src/nmcli/common.c:1600
+#: src/nmcli/common.c:1602
 msgid "NetworkManager is not running"
 msgstr "NetworkManager-ი გაშვებული არაა"
 
-#: src/nmcli/common.c:1610
+#: src/nmcli/common.c:1612
 msgid "none"
 msgstr "არცერთი"
 
-#: src/nmcli/common.c:1611
+#: src/nmcli/common.c:1613
 msgid "portal"
 msgstr "პორტალი"
 
-#: src/nmcli/common.c:1612
+#: src/nmcli/common.c:1614
 msgid "limited"
 msgstr "შეზღუდული"
 
-#: src/nmcli/common.c:1613
+#: src/nmcli/common.c:1615
 msgid "full"
 msgstr "მთლიანი"
 
@@ -9236,19 +9917,19 @@ msgstr "VPN გათიშულია"
 msgid "Error: Error writing connection: %s"
 msgstr "შეცდომა: შეერთების ჩაწერის შეცდომა: %s"
 
-#: src/nmcli/connections.c:651
+#: src/nmcli/connections.c:676
 msgid "WiMax is no longer supported"
 msgstr "WiMax მხარდაჭერილი აღარაა"
 
-#: src/nmcli/connections.c:657
+#: src/nmcli/connections.c:682
 msgid "WEP encryption is known to be insecure"
 msgstr "WEP-ით დაშიფვრა დაცული არაა"
 
-#: src/nmcli/connections.c:739
+#: src/nmcli/connections.c:764
 msgid "never"
 msgstr "არასოდეს"
 
-#: src/nmcli/connections.c:1088
+#: src/nmcli/connections.c:1115
 msgid ""
 "Usage: nmcli connection { COMMAND | help }\n"
 "\n"
@@ -9263,7 +9944,7 @@ msgid ""
 "\n"
 "  down [id | uuid | path | apath] <ID> ...\n"
 "\n"
-"  add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- "
+"  add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS PORT_OPTIONS IP_OPTIONS [-- "
 "([+|-]<setting>.<property> <value>)+]\n"
 "\n"
 "  modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> "
@@ -9324,7 +10005,7 @@ msgstr ""
 "  export [id | uuid | ბილიკი] <ID> [<გამოტანის_ფაილი>]\n"
 "\n"
 
-#: src/nmcli/connections.c:1114
+#: src/nmcli/connections.c:1141
 msgid ""
 "Usage: nmcli connection show { ARGUMENTS | help }\n"
 "\n"
@@ -9350,7 +10031,7 @@ msgid ""
 "well.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1136
+#: src/nmcli/connections.c:1163
 msgid ""
 "Usage: nmcli connection up { ARGUMENTS | help }\n"
 "\n"
@@ -9374,7 +10055,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1160
+#: src/nmcli/connections.c:1187
 msgid ""
 "Usage: nmcli connection down { ARGUMENTS | help }\n"
 "\n"
@@ -9387,11 +10068,11 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1172
+#: src/nmcli/connections.c:1200
 msgid ""
 "Usage: nmcli connection add { ARGUMENTS | help }\n"
 "\n"
-"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS "
+"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS PORT_OPTIONS IP_OPTIONS "
 "[-- ([+|-]<setting>.<property> <value>)+]\n"
 "\n"
 "  COMMON_OPTIONS:\n"
@@ -9400,8 +10081,9 @@ msgid ""
 "                  [con-name <connection name>]\n"
 "                  [autoconnect yes|no]\n"
 "                  [save yes|no]\n"
-"                  [master <master (ifname, or connection UUID or name)>]\n"
-"                  [slave-type <master connection type>]\n"
+"                  [controller <controller (ifname, or connection UUID or "
+"name)>]\n"
+"                  [port-type <controller connection type>]\n"
 "\n"
 "  TYPE_SPECIFIC_OPTIONS:\n"
 "    ethernet:     [mac <MAC address>]\n"
@@ -9458,12 +10140,14 @@ msgid ""
 "                  [arp-ip-target <num>]\n"
 "                  [lacp-rate slow (0) | fast (1)]\n"
 "\n"
-"    bond-slave:   master <master (ifname, or connection UUID or name)>\n"
+"    bond-slave:   controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [queue-id <0-65535>]\n"
 "\n"
 "    team:         [config <file>|<raw JSON data>]\n"
 "\n"
-"    team-slave:   master <master (ifname, or connection UUID or name)>\n"
+"    team-slave:   controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [config <file>|<raw JSON data>]\n"
 "\n"
 "    bridge:       [stp yes|no]\n"
@@ -9475,7 +10159,8 @@ msgid ""
 "                  [multicast-snooping yes|no]\n"
 "                  [mac <MAC address>]\n"
 "\n"
-"    bridge-slave: master <master (ifname, or connection UUID or name)>\n"
+"    bridge-slave: controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [priority <0-63>]\n"
 "                  [path-cost <1-65535>]\n"
 "                  [hairpin yes|no]\n"
@@ -9533,7 +10218,7 @@ msgid ""
 "    6lowpan:      dev <parent device (connection UUID, ifname, or MAC)>\n"
 "    dummy:\n"
 "\n"
-"  SLAVE_OPTIONS:\n"
+"  PORT_OPTIONS:\n"
 "    bridge:       [priority <0-63>]\n"
 "                  [path-cost <1-65535>]\n"
 "                  [hairpin yes|no]\n"
@@ -9548,7 +10233,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1302
+#: src/nmcli/connections.c:1330
 msgid ""
 "Usage: nmcli connection modify { ARGUMENTS | help }\n"
 "\n"
@@ -9577,7 +10262,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1330
+#: src/nmcli/connections.c:1358
 msgid ""
 "Usage: nmcli connection clone { ARGUMENTS | help }\n"
 "\n"
@@ -9590,7 +10275,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1342
+#: src/nmcli/connections.c:1370
 msgid ""
 "Usage: nmcli connection edit { ARGUMENTS | help }\n"
 "\n"
@@ -9605,7 +10290,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1357
+#: src/nmcli/connections.c:1385
 msgid ""
 "Usage: nmcli connection delete { ARGUMENTS | help }\n"
 "\n"
@@ -9616,7 +10301,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1368
+#: src/nmcli/connections.c:1396
 msgid ""
 "Usage: nmcli connection monitor { ARGUMENTS | help }\n"
 "\n"
@@ -9628,7 +10313,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1380
+#: src/nmcli/connections.c:1408
 msgid ""
 "Usage: nmcli connection reload { help }\n"
 "\n"
@@ -9640,7 +10325,7 @@ msgstr ""
 "ყველა მიერთების ფაილი თავიდან ჩაიტვირთება, დისკიდან.\n"
 "\n"
 
-#: src/nmcli/connections.c:1389
+#: src/nmcli/connections.c:1417
 msgid ""
 "Usage: nmcli connection load { ARGUMENTS | help }\n"
 "\n"
@@ -9662,7 +10347,7 @@ msgstr ""
 "შესახებ.\n"
 "\n"
 
-#: src/nmcli/connections.c:1402
+#: src/nmcli/connections.c:1430
 msgid ""
 "Usage: nmcli connection import { ARGUMENTS | help }\n"
 "\n"
@@ -9676,7 +10361,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1416
+#: src/nmcli/connections.c:1444
 msgid ""
 "Usage: nmcli connection export { ARGUMENTS | help }\n"
 "\n"
@@ -9687,7 +10372,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1427
+#: src/nmcli/connections.c:1455
 msgid ""
 "Usage: nmcli connection migrate { ARGUMENTS | help }\n"
 "\n"
@@ -9698,321 +10383,324 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:1510
+#: src/nmcli/connections.c:1538
 #, c-format
 msgid "Error updating secrets for %s: %s\n"
 msgstr "%s-სთვის საიდუმლოების განახლების შეცდომა:%s\n"
 
-#: src/nmcli/connections.c:1561
+#: src/nmcli/connections.c:1589
 msgid "Connection profile details"
 msgstr "შეერთების პროფილის დეტალები"
 
-#: src/nmcli/connections.c:1579 src/nmcli/connections.c:1686
+#: src/nmcli/connections.c:1607 src/nmcli/connections.c:1714
 #, c-format
 msgid "Error: 'connection show': %s"
 msgstr "შეცდომა: 'შეერთების ჩვენება': %s"
 
-#: src/nmcli/connections.c:1668
+#: src/nmcli/connections.c:1696
 msgid "Active connection details"
 msgstr "აქტიური შეერთების დეტალები"
 
-#: src/nmcli/connections.c:1798 src/nmcli/devices.c:1667
-#: src/nmcli/devices.c:1684 src/nmcli/devices.c:1702 src/nmcli/devices.c:1721
-#: src/nmcli/devices.c:1785 src/nmcli/devices.c:1914
+#: src/nmcli/connections.c:1826 src/nmcli/devices.c:1681
+#: src/nmcli/devices.c:1698 src/nmcli/devices.c:1716 src/nmcli/devices.c:1735
+#: src/nmcli/devices.c:1799 src/nmcli/devices.c:1928
 msgid "NAME"
 msgstr "სახელი"
 
-#: src/nmcli/connections.c:1898
+#: src/nmcli/connections.c:1941
 #, c-format
 msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s"
 msgstr ""
 
-#: src/nmcli/connections.c:1915 src/nmcli/connections.c:1926
+#: src/nmcli/connections.c:1958 src/nmcli/connections.c:1969
 #, c-format
 msgid "'%s' has to be alone"
 msgstr "'%s' მარტო უნდა იყოს"
 
-#: src/nmcli/connections.c:2182
+#: src/nmcli/connections.c:2225
 #, c-format
 msgid "incorrect string '%s' of '--order' option"
-msgstr ""
+msgstr "არასწორი სტრიქონი '%s' პარამეტრისთვის '--order'"
 
-#: src/nmcli/connections.c:2206
+#: src/nmcli/connections.c:2249
 #, c-format
 msgid "incorrect item '%s' in '--order' option"
-msgstr ""
+msgstr "არასწორი ელემენტი '%s' პარამეტრში '--order'"
 
-#: src/nmcli/connections.c:2251
+#: src/nmcli/connections.c:2294
 msgid "No connection specified"
 msgstr "მიერთება მითითებული არაა"
 
-#: src/nmcli/connections.c:2264
+#: src/nmcli/connections.c:2307
 #, c-format
 msgid "%s argument is missing"
 msgstr "არგუმენტი %s აკლია"
 
-#: src/nmcli/connections.c:2285
+#: src/nmcli/connections.c:2328
 #, c-format
 msgid "unknown connection '%s'"
 msgstr "უცნობი შეერთება '%s'"
 
-#: src/nmcli/connections.c:2314
+#: src/nmcli/connections.c:2357
 msgid "'--order' argument is missing"
 msgstr "'--order' არგუმენტი აკლია"
 
-#: src/nmcli/connections.c:2378
+#: src/nmcli/connections.c:2421
 msgid "NetworkManager active profiles"
 msgstr "NetworkManager-ის აქტიური პროფილები"
 
-#: src/nmcli/connections.c:2379
+#: src/nmcli/connections.c:2422
 msgid "NetworkManager connection profiles"
 msgstr "NetworkManager-ის შეერთების პროფილები"
 
-#: src/nmcli/connections.c:2435 src/nmcli/connections.c:3162
-#: src/nmcli/connections.c:3174 src/nmcli/connections.c:3186
-#: src/nmcli/connections.c:3422 src/nmcli/connections.c:9668
-#: src/nmcli/connections.c:9687 src/nmcli/devices.c:3377
-#: src/nmcli/devices.c:3390 src/nmcli/devices.c:3402 src/nmcli/devices.c:3706
-#: src/nmcli/devices.c:3717 src/nmcli/devices.c:3736 src/nmcli/devices.c:3745
-#: src/nmcli/devices.c:3767 src/nmcli/devices.c:3778 src/nmcli/devices.c:3799
-#: src/nmcli/devices.c:4370 src/nmcli/devices.c:4381 src/nmcli/devices.c:4390
-#: src/nmcli/devices.c:4404 src/nmcli/devices.c:4422 src/nmcli/devices.c:4431
-#: src/nmcli/devices.c:4580 src/nmcli/devices.c:4591 src/nmcli/devices.c:4810
-#: src/nmcli/devices.c:4989 src/nmcli/devices.c:5210
+#: src/nmcli/connections.c:2478 src/nmcli/connections.c:3199
+#: src/nmcli/connections.c:3211 src/nmcli/connections.c:3223
+#: src/nmcli/connections.c:3459 src/nmcli/connections.c:9731
+#: src/nmcli/connections.c:9750 src/nmcli/devices.c:3398
+#: src/nmcli/devices.c:3411 src/nmcli/devices.c:3423 src/nmcli/devices.c:3726
+#: src/nmcli/devices.c:3737 src/nmcli/devices.c:3756 src/nmcli/devices.c:3765
+#: src/nmcli/devices.c:3787 src/nmcli/devices.c:3798 src/nmcli/devices.c:3819
+#: src/nmcli/devices.c:4375 src/nmcli/devices.c:4386 src/nmcli/devices.c:4395
+#: src/nmcli/devices.c:4409 src/nmcli/devices.c:4427 src/nmcli/devices.c:4436
+#: src/nmcli/devices.c:4585 src/nmcli/devices.c:4596 src/nmcli/devices.c:4815
+#: src/nmcli/devices.c:4994 src/nmcli/devices.c:5215
 #, c-format
 msgid "Error: %s argument is missing."
 msgstr "შეცდომა: არგუმენტი %s აკლია."
 
-#: src/nmcli/connections.c:2470
+#: src/nmcli/connections.c:2513
 #, c-format
 msgid "Error: %s - no such connection profile."
-msgstr ""
+msgstr "შეცდომა: %s - ასეთი კავშირის პროფილი არ არსებობს."
 
-#: src/nmcli/connections.c:2562 src/nmcli/connections.c:3148
-#: src/nmcli/connections.c:3222 src/nmcli/connections.c:9174
-#: src/nmcli/connections.c:9258 src/nmcli/connections.c:9792
-#: src/nmcli/devices.c:2014 src/nmcli/devices.c:2316 src/nmcli/devices.c:2483
-#: src/nmcli/devices.c:2609 src/nmcli/devices.c:2794 src/nmcli/devices.c:3577
-#: src/nmcli/devices.c:4544 src/nmcli/devices.c:4996 src/nmcli/general.c:1069
+#: src/nmcli/connections.c:2605 src/nmcli/connections.c:3185
+#: src/nmcli/connections.c:3259 src/nmcli/connections.c:9235
+#: src/nmcli/connections.c:9319 src/nmcli/connections.c:9855
+#: src/nmcli/devices.c:2028 src/nmcli/devices.c:2337 src/nmcli/devices.c:2504
+#: src/nmcli/devices.c:2630 src/nmcli/devices.c:2815 src/nmcli/devices.c:3598
+#: src/nmcli/devices.c:4549 src/nmcli/devices.c:5001 src/nmcli/general.c:1076
 #, c-format
 msgid "Error: %s."
 msgstr "შეცდომა: %s."
 
-#: src/nmcli/connections.c:2660 src/nmcli/devices.c:4763
+#: src/nmcli/connections.c:2703 src/nmcli/devices.c:4768
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "მოწყობილობაზე '%s' აქტიური შეერთებები არ არსებობს"
 
-#: src/nmcli/connections.c:2668
+#: src/nmcli/connections.c:2711
 msgid "no active connection or device"
 msgstr "აქტიური შეერთების ან მოწყობილობის გარეშე"
 
-#: src/nmcli/connections.c:2691
+#: src/nmcli/connections.c:2734
 #, c-format
 msgid "device '%s' not compatible with connection '%s': "
 msgstr "მოწყობილობა (%s) შეერთებასთან (%s) თავსებადი არაა: "
 
-#: src/nmcli/connections.c:2729
+#: src/nmcli/connections.c:2772
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr ""
 
-#: src/nmcli/connections.c:2736
+#: src/nmcli/connections.c:2779
 #, c-format
 msgid "device '%s' not found for connection '%s'"
 msgstr "მოწყობილობა %s არ არსებობს შეერთებისთვის %s"
 
-#: src/nmcli/connections.c:2744
+#: src/nmcli/connections.c:2787
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "შეერთებისთვის (%s) მოწყობილობა არ არსებობს"
 
-#: src/nmcli/connections.c:2795
+#: src/nmcli/connections.c:2838
 #, c-format
 msgid "Hint: use '%s' to get more details."
-msgstr ""
+msgstr "მინიშნება: დამატებითი დეტალების მისაღებად გამოიყენეთ '%s'."
 
-#: src/nmcli/connections.c:2813
+#: src/nmcli/connections.c:2856
 #, c-format
 msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n"
 msgstr ""
 
-#: src/nmcli/connections.c:2817 src/nmcli/connections.c:2968
-#: src/nmcli/connections.c:7413
+#: src/nmcli/connections.c:2860 src/nmcli/connections.c:3011
+#: src/nmcli/connections.c:7474
 #, c-format
 msgid "Connection successfully activated (D-Bus active path: %s)\n"
 msgstr ""
 
-#: src/nmcli/connections.c:2824 src/nmcli/connections.c:2947
+#: src/nmcli/connections.c:2867 src/nmcli/connections.c:2990
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "შეცდომა: ქსელის კავშირის აქტივაციის შეცდომა: %s"
 
-#: src/nmcli/connections.c:2860
+#: src/nmcli/connections.c:2903
 #, c-format
 msgid "Error: Timeout expired (%d seconds)"
 msgstr "შეცდომა: მოლოდინის ვადა (%d წამი) ამოიწურა"
 
-#: src/nmcli/connections.c:3042
+#: src/nmcli/connections.c:3085
 #, c-format
 msgid "unknown device '%s'."
 msgstr "უცნობი მოწყობილობა '%s'."
 
-#: src/nmcli/connections.c:3050
+#: src/nmcli/connections.c:3093
 msgid "neither a valid connection nor device given"
 msgstr ""
 
-#: src/nmcli/connections.c:3065
+#: src/nmcli/connections.c:3108
 #, c-format
 msgid "invalid passwd-file '%s' at line %zd: %s"
 msgstr "passwd ფაილი (%s) არასწორია ხაზზე %zd: %s"
 
-#: src/nmcli/connections.c:3073
+#: src/nmcli/connections.c:3116
 #, c-format
 msgid "invalid passwd-file '%s': %s"
 msgstr "არასწორი passwd ფაილი '%s': %s"
 
-#: src/nmcli/connections.c:3196 src/nmcli/connections.c:9696
-#: src/nmcli/devices.c:1971 src/nmcli/devices.c:2020 src/nmcli/devices.c:2489
-#: src/nmcli/devices.c:2682 src/nmcli/devices.c:2749 src/nmcli/devices.c:2949
-#: src/nmcli/devices.c:3437 src/nmcli/devices.c:3815 src/nmcli/devices.c:4441
-#: src/nmcli/devices.c:4597 src/nmcli/devices.c:4818 src/nmcli/devices.c:5001
+#: src/nmcli/connections.c:3233 src/nmcli/connections.c:9759
+#: src/nmcli/devices.c:1985 src/nmcli/devices.c:2034 src/nmcli/devices.c:2510
+#: src/nmcli/devices.c:2703 src/nmcli/devices.c:2770 src/nmcli/devices.c:2970
+#: src/nmcli/devices.c:3458 src/nmcli/devices.c:3835 src/nmcli/devices.c:4446
+#: src/nmcli/devices.c:4602 src/nmcli/devices.c:4823 src/nmcli/devices.c:5006
 #, c-format
 msgid "Error: invalid extra argument '%s'."
 msgstr "შეცდომა: არასწორი დამატებითი არგუმენტი '%s'."
 
-#: src/nmcli/connections.c:3230
+#: src/nmcli/connections.c:3267
 msgid "preparing"
 msgstr "მომზადება"
 
-#: src/nmcli/connections.c:3338
+#: src/nmcli/connections.c:3375
 #, c-format
 msgid "Connection '%s' (%s) successfully deleted.\n"
 msgstr "შეერთება '%s' (%s) წარმატებით წაიშალა.\n"
 
-#: src/nmcli/connections.c:3354
+#: src/nmcli/connections.c:3391
 #, c-format
 msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n"
 msgstr ""
 "შეერთების ('%s') დეაქტივაცია წარმატებით დასრულდა (D-Bus-ის აქტიური ბილიკი: "
 "%s)\n"
 
-#: src/nmcli/connections.c:3403 src/nmcli/connections.c:9354
-#: src/nmcli/connections.c:9389 src/nmcli/connections.c:9578
+#: src/nmcli/connections.c:3440 src/nmcli/connections.c:9415
+#: src/nmcli/connections.c:9452 src/nmcli/connections.c:9641
+#, c-format
 msgid "Error: No connection specified."
 msgstr "შეცდომა: მიერთება მითითებული არაა."
 
-#: src/nmcli/connections.c:3435
+#: src/nmcli/connections.c:3472
 #, c-format
 msgid "Error: '%s' is not an active connection.\n"
 msgstr "შეცდომა: %s აქტიურ შეერთებას არ წარმოადგენს.\n"
 
-#: src/nmcli/connections.c:3436
+#: src/nmcli/connections.c:3473
+#, c-format
 msgid "Error: not all active connections found."
 msgstr "შეცდომა: ყველა აქტიური შეერთება ნაპოვნი არაა."
 
-#: src/nmcli/connections.c:3444
+#: src/nmcli/connections.c:3481
+#, c-format
 msgid "Error: no active connection provided."
 msgstr "შეცდომა: აქტიური შეერთება მიწოდებული არაა."
 
-#: src/nmcli/connections.c:3476
+#: src/nmcli/connections.c:3513
 #, c-format
 msgid "Connection '%s' deactivation failed: %s\n"
 msgstr "შეერთების (%s) დეაქტივაციის შეცდომა: %s\n"
 
-#: src/nmcli/connections.c:3957
+#: src/nmcli/connections.c:4002
 #, c-format
-msgid "Warning: master='%s' doesn't refer to any existing profile.\n"
-msgstr ""
+msgid "Warning: controller='%s' doesn't refer to any existing profile.\n"
+msgstr "გაფრთხილება: controller='%s' არც ერთ არსებულ პროფილს არ მიმართავს.\n"
 
-#: src/nmcli/connections.c:4338
+#: src/nmcli/connections.c:4383
 #, c-format
 msgid "Error: invalid property '%s': %s."
-msgstr ""
+msgstr "შეცდომა: არასწორი თვისება '%s': %s."
 
-#: src/nmcli/connections.c:4356
+#: src/nmcli/connections.c:4401
 #, c-format
 msgid "Error: failed to modify %s.%s: %s."
 msgstr "შეცდომა: შეცვლის შეცდომა %s.%s: %s."
 
-#: src/nmcli/connections.c:4357
+#: src/nmcli/connections.c:4402
 #, c-format
 msgid "Error: failed to remove a value from %s.%s: %s."
 msgstr "შეცდომა: შეცდომა %s.%s-დან მნიშვნელობის წაშლისას: %s."
 
-#: src/nmcli/connections.c:4437
+#: src/nmcli/connections.c:4482
 #, c-format
-msgid "Error: invalid slave type; %s."
-msgstr ""
+msgid "Error: invalid port type; %s."
+msgstr "შეცდომა: პორტის არასწორი ტიპი: %s."
 
-#: src/nmcli/connections.c:4448
+#: src/nmcli/connections.c:4493
 #, c-format
 msgid "Error: invalid connection type; %s."
 msgstr "შეცდომა: შეერთების არასწორი ტიპი: %s."
 
-#: src/nmcli/connections.c:4581
+#: src/nmcli/connections.c:4628
 #, c-format
 msgid "Error: bad connection type: %s"
 msgstr "შეცდომა: შეერთების ცუდი ტიპი: %s"
 
-#: src/nmcli/connections.c:4657
-msgid "Error: master is required"
-msgstr ""
+#: src/nmcli/connections.c:4704
+msgid "Error: controller is required"
+msgstr "შეცდომა: კონტროლერი აუცილებელია"
 
-#: src/nmcli/connections.c:4758
+#: src/nmcli/connections.c:4805
 #, c-format
 msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:4798
+#: src/nmcli/connections.c:4845
 #, c-format
 msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]."
 msgstr ""
 
-#: src/nmcli/connections.c:5147
+#: src/nmcli/connections.c:5199
 #, c-format
 msgid "Error: setting '%s' is mandatory and cannot be removed."
 msgstr "შეცდომა: პარამეტრი %s აუცილებელია და ვერ წაიშლება."
 
-#: src/nmcli/connections.c:5163
+#: src/nmcli/connections.c:5215
 #, c-format
 msgid "Error: value for '%s' is missing."
 msgstr "შეცდომა: '%s'-ის მნიშვნელობა მითითებული არაა."
 
-#: src/nmcli/connections.c:5214
+#: src/nmcli/connections.c:5266
 msgid "Error: <setting>.<property> argument is missing."
 msgstr "შეცდომა: <პარამეტრი>.<თვისება> არგუმენტი მითითებული არაა."
 
-#: src/nmcli/connections.c:5256
+#: src/nmcli/connections.c:5308
 msgid "Error: missing setting."
 msgstr "შეცდომა: ნაკლული პარამეტრი."
 
-#: src/nmcli/connections.c:5270
+#: src/nmcli/connections.c:5322
 #, c-format
 msgid "Error: invalid setting argument '%s'."
 msgstr "შეცდომა: პარამეტრის არასწორი არგუმენტი '%s'."
 
-#: src/nmcli/connections.c:5301
+#: src/nmcli/connections.c:5353
 #, c-format
 msgid "Error: invalid or not allowed setting '%s': %s."
 msgstr ""
 
-#: src/nmcli/connections.c:5360 src/nmcli/connections.c:5381
+#: src/nmcli/connections.c:5412 src/nmcli/connections.c:5433
 #, c-format
 msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)."
-msgstr ""
+msgstr "შეცდომა: '%s' ბუნდოვანია (%s.%s or %s.%s)."
 
-#: src/nmcli/connections.c:5405
+#: src/nmcli/connections.c:5457
 #, c-format
 msgid "Error: invalid <setting>.<property> '%s'."
-msgstr ""
+msgstr "შეცდომა: არასწორი <პარამეტრი>.<თვისება> '%s'."
 
-#: src/nmcli/connections.c:5439 src/nmcli/devices.c:2203
+#: src/nmcli/connections.c:5491 src/nmcli/devices.c:2217
 #, c-format
 msgid "Warning: %s.\n"
 msgstr "გაფრთხილება: %s\n"
 
-#: src/nmcli/connections.c:5455
+#: src/nmcli/connections.c:5507
 #, c-format
 msgid ""
 "Warning: There is another connection with the name '%1$s'. Reference the "
@@ -10022,7 +10710,7 @@ msgid_plural ""
 "the connection by its uuid '%2$s'\n"
 msgstr[0] ""
 
-#: src/nmcli/connections.c:5477 src/nmcli/connections.c:9206
+#: src/nmcli/connections.c:5529 src/nmcli/connections.c:9267
 #, c-format
 msgid "Error: Failed to add '%s' connection: %s"
 msgstr "შეცდომა: '%s' ინტერფეისის დამატების შეცდომა: %s"
@@ -10036,43 +10724,43 @@ msgstr "შეცდომა: '%s' ინტერფეისის დამ
 #. *
 #. * This is true for many messages that the user might parse. But this one
 #. * seems in particular interesting for a user to parse.
-#: src/nmcli/connections.c:5494
+#: src/nmcli/connections.c:5546
 #, c-format
 msgid "Connection '%s' (%s) successfully added.\n"
-msgstr ""
+msgstr "მიერთება '%s' (%s) წარმატებით დაემატა.\n"
 
-#: src/nmcli/connections.c:5643
+#: src/nmcli/connections.c:5695
 msgid ""
 "You can specify this option more than once. Press <Enter> when you're done.\n"
 msgstr ""
 
 #. Ask for optional arguments.
-#: src/nmcli/connections.c:5754
+#: src/nmcli/connections.c:5806
 #, c-format
 msgid "There are %d optional settings for %s.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:5756
+#: src/nmcli/connections.c:5808
 #, c-format
 msgid "Do you want to provide them? %s"
-msgstr ""
+msgstr "გნებავთ, შეიყვანოთ ისინი? %s"
 
-#: src/nmcli/connections.c:5896 src/nmcli/utils.c:280
+#: src/nmcli/connections.c:5948 src/nmcli/utils.c:280
 #, c-format
 msgid "Error: value for '%s' argument is required."
-msgstr ""
+msgstr "შეცდომა: არგუმენტს '%s' მნიშვნელობა სჭირდება."
 
-#: src/nmcli/connections.c:5903
+#: src/nmcli/connections.c:5955
 #, c-format
 msgid "Error: 'save': %s."
 msgstr "შეცდომა: 'save': %s."
 
-#: src/nmcli/connections.c:5991 src/nmcli/connections.c:6004
+#: src/nmcli/connections.c:6043 src/nmcli/connections.c:6056
 #, c-format
 msgid "Error: '%s' argument is required."
 msgstr "შეცდომა: არგუმენტი \"%s\" აუცილებელია."
 
-#: src/nmcli/connections.c:6961
+#: src/nmcli/connections.c:7022
 #, c-format
 msgid "['%s' setting values]\n"
 msgstr "['%s' პარამეტრის მნიშვნელობები]\n"
@@ -10080,7 +10768,7 @@ msgstr "['%s' პარამეტრის მნიშვნელობე
 #. TRANSLATORS: do not translate command names and keywords before ::
 #. *              However, you should translate terms enclosed in <>.
 #.
-#: src/nmcli/connections.c:7072
+#: src/nmcli/connections.c:7133
 msgid ""
 "---[ Main menu ]---\n"
 "goto     [<setting> | <prop>]        :: go to a setting or property\n"
@@ -10098,7 +10786,7 @@ msgid ""
 "quit                                 :: exit nmcli\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7100
+#: src/nmcli/connections.c:7161
 msgid ""
 "goto <setting>[.<prop>] | <prop>  :: enter setting/property for editing\n"
 "\n"
@@ -10109,7 +10797,7 @@ msgid ""
 "          nmcli> goto ipv4.addresses\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7108
+#: src/nmcli/connections.c:7169
 msgid ""
 "remove <setting>[.<prop>]  :: remove setting or reset property value\n"
 "\n"
@@ -10121,7 +10809,7 @@ msgid ""
 "          nmcli> remove eth.mtu\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7115
+#: src/nmcli/connections.c:7176
 msgid ""
 "set [<setting>.<prop> <value>]  :: set property value\n"
 "\n"
@@ -10130,7 +10818,7 @@ msgid ""
 "Example: nmcli> set con.id My connection\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7120
+#: src/nmcli/connections.c:7181
 msgid ""
 "add [<setting>.<prop> <value>]  :: add property value\n"
 "\n"
@@ -10139,7 +10827,7 @@ msgid ""
 "Example: nmcli> add ipv4.addresses 192.168.1.1/24\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7125
+#: src/nmcli/connections.c:7186
 msgid ""
 "describe [<setting>.<prop>]  :: describe property\n"
 "\n"
@@ -10147,7 +10835,7 @@ msgid ""
 "see all NM settings and properties.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7130
+#: src/nmcli/connections.c:7191
 msgid ""
 "print [all]  :: print setting or connection values\n"
 "\n"
@@ -10156,7 +10844,7 @@ msgid ""
 "Example: nmcli ipv4> print all\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7136
+#: src/nmcli/connections.c:7197
 msgid ""
 "verify [all | fix]  :: verify setting or connection validity\n"
 "\n"
@@ -10170,7 +10858,7 @@ msgid ""
 "          nmcli bond> verify\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7146
+#: src/nmcli/connections.c:7207
 msgid ""
 "save [persistent|temporary]  :: save the connection\n"
 "\n"
@@ -10185,7 +10873,7 @@ msgid ""
 "profile must be deleted.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7157
+#: src/nmcli/connections.c:7218
 msgid ""
 "activate [<ifname>] [/<ap>|<nsp>]  :: activate the connection\n"
 "\n"
@@ -10197,7 +10885,7 @@ msgid ""
 "specified)\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7165 src/nmcli/connections.c:7324
+#: src/nmcli/connections.c:7226 src/nmcli/connections.c:7385
 msgid ""
 "back  :: go to upper menu level\n"
 "\n"
@@ -10205,13 +10893,15 @@ msgstr ""
 "უკან  :: მენიუში ერთი დონით მაღლა ასვლა\n"
 "\n"
 
-#: src/nmcli/connections.c:7168
+#: src/nmcli/connections.c:7229
 msgid ""
 "help/? [<command>]  :: help for the nmcli commands\n"
 "\n"
 msgstr ""
+"help/? [<ბრძანება>]  :: დახმარება nmcli-ის ბრძანებებისთვის\n"
+"\n"
 
-#: src/nmcli/connections.c:7171
+#: src/nmcli/connections.c:7232
 #, c-format
 msgid ""
 "nmcli [<conf-option> <value>]  :: nmcli configuration\n"
@@ -10227,7 +10917,7 @@ msgid ""
 "          nmcli> nmcli prompt-color 3\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7193 src/nmcli/connections.c:7330
+#: src/nmcli/connections.c:7254 src/nmcli/connections.c:7391
 msgid ""
 "quit  :: exit nmcli\n"
 "\n"
@@ -10235,8 +10925,8 @@ msgid ""
 "user is asked to confirm the action.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7198 src/nmcli/connections.c:7335
-#: src/nmcli/connections.c:7727 src/nmcli/connections.c:8769
+#: src/nmcli/connections.c:7259 src/nmcli/connections.c:7396
+#: src/nmcli/connections.c:7788 src/nmcli/connections.c:8830
 #, c-format
 msgid "Unknown command: '%s'\n"
 msgstr "უცნობი ბრძანება: '%s'\n"
@@ -10244,7 +10934,7 @@ msgstr "უცნობი ბრძანება: '%s'\n"
 #. TRANSLATORS: do not translate command names and keywords before ::
 #. *              However, you should translate terms enclosed in <>.
 #.
-#: src/nmcli/connections.c:7263
+#: src/nmcli/connections.c:7324
 msgid ""
 "---[ Property menu ]---\n"
 "set      [<value>]               :: set new value\n"
@@ -10259,14 +10949,14 @@ msgid ""
 "quit                             :: exit nmcli\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7287
+#: src/nmcli/connections.c:7348
 msgid ""
 "set [<value>]  :: set new value\n"
 "\n"
 "This command sets provided <value> to this property\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7291
+#: src/nmcli/connections.c:7352
 msgid ""
 "add [<value>]  :: append new value to the property\n"
 "\n"
@@ -10275,14 +10965,14 @@ msgid ""
 "(same as 'set').\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7297
+#: src/nmcli/connections.c:7358
 msgid ""
 "change  :: change current value\n"
 "\n"
 "Displays current value and allows editing it.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7302
+#: src/nmcli/connections.c:7363
 msgid ""
 "remove [<value>|<index>|<option name>]  :: delete the value\n"
 "\n"
@@ -10301,7 +10991,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7313
+#: src/nmcli/connections.c:7374
 msgid ""
 "describe  :: describe property\n"
 "\n"
@@ -10309,7 +10999,7 @@ msgid ""
 "see all NM settings and properties.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7318
+#: src/nmcli/connections.c:7379
 msgid ""
 "print [property|setting|connection]  :: print property (setting, connection) "
 "value(s)\n"
@@ -10318,7 +11008,7 @@ msgid ""
 "the whole setting or connection.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7327
+#: src/nmcli/connections.c:7388
 msgid ""
 "help/? [<command>]  :: help for nmcli commands\n"
 "\n"
@@ -10326,81 +11016,81 @@ msgstr ""
 "help/? [<command>]  :: დახმარება nmcli-ის ბრძანებებისთვის\n"
 "\n"
 
-#: src/nmcli/connections.c:7419
+#: src/nmcli/connections.c:7480
 msgid "Error: Connection activation failed.\n"
 msgstr "შეცდომა: ქსელის კავშირის აქტივაციის შეცდომა.\n"
 
 #. TRANSLATORS: status line in nmcli connection editor
-#: src/nmcli/connections.c:7517
+#: src/nmcli/connections.c:7578
 #, c-format
 msgid "[ Type: %s | Name: %s | UUID: %s | Dirty: %s | Temp: %s ]\n"
 msgstr "[ ტიპი: %s | სახელი: %s | UUID: %s | Dirty: %s | ტემპ: %s ]\n"
 
-#: src/nmcli/connections.c:7555
+#: src/nmcli/connections.c:7616
 #, c-format
 msgid "The connection is not saved. Do you really want to quit? %s"
 msgstr ""
 
-#: src/nmcli/connections.c:7599
+#: src/nmcli/connections.c:7660
 msgid ""
 "The connection profile has been removed from another client. You may type "
 "'save' in the main menu to restore it.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7631 src/nmcli/connections.c:8027
-#: src/nmcli/connections.c:8100
+#: src/nmcli/connections.c:7692 src/nmcli/connections.c:8088
+#: src/nmcli/connections.c:8161
 #, c-format
 msgid "Allowed values for '%s' property: %s\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7633 src/nmcli/connections.c:8032
-#: src/nmcli/connections.c:8104
+#: src/nmcli/connections.c:7694 src/nmcli/connections.c:8093
+#: src/nmcli/connections.c:8165
 #, c-format
 msgid "Enter '%s' value: "
 msgstr "შეიყვანეთ \"%s\"-ის მნიშვნელობა: "
 
-#: src/nmcli/connections.c:7646 src/nmcli/connections.c:7665
-#: src/nmcli/connections.c:8040 src/nmcli/connections.c:8115
+#: src/nmcli/connections.c:7707 src/nmcli/connections.c:7726
+#: src/nmcli/connections.c:8101 src/nmcli/connections.c:8176
 #, c-format
 msgid "Error: failed to set '%s' property: %s\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7657
+#: src/nmcli/connections.c:7718
 #, c-format
 msgid "Edit '%s' value: "
 msgstr "'%s'-ის მნიშვნელობის ჩასწორება: "
 
-#: src/nmcli/connections.c:7680 src/nmcli/settings.c:443
+#: src/nmcli/connections.c:7741 src/nmcli/settings.c:443
 #, c-format
 msgid "Error: %s\n"
 msgstr "შეცდომა: %s\n"
 
-#: src/nmcli/connections.c:7699
+#: src/nmcli/connections.c:7760
 #, c-format
 msgid "Unknown command argument: '%s'\n"
-msgstr ""
+msgstr "უცნობი ბრძანების არგუმენტი: \"%s\"\n"
 
-#: src/nmcli/connections.c:7794
+#: src/nmcli/connections.c:7855
 #, c-format
 msgid "Available settings: %s\n"
 msgstr "ხელმისაწვდომი პარამეტრები: %s\n"
 
-#: src/nmcli/connections.c:7805
+#: src/nmcli/connections.c:7866
 #, c-format
 msgid "Error: invalid setting name; %s\n"
 msgstr "შეცდომა: პარამეტრის არასწორი სახელი: %s\n"
 
-#: src/nmcli/connections.c:7822
+#: src/nmcli/connections.c:7883
 #, c-format
 msgid "Available properties: %s\n"
 msgstr "ხელმისაწვდომი თვისებები: %s\n"
 
-#: src/nmcli/connections.c:7830
+#: src/nmcli/connections.c:7891
 #, c-format
 msgid "Error: property %s\n"
 msgstr "შეცდომა: თვისება %s\n"
 
-#: src/nmcli/connections.c:7875
+#: src/nmcli/connections.c:7936
 #, c-format
 msgid ""
 "Saving the connection with 'autoconnect=yes'. That might result in an "
@@ -10408,421 +11098,430 @@ msgid ""
 "Do you still want to save? %s"
 msgstr ""
 
-#: src/nmcli/connections.c:7961
+#: src/nmcli/connections.c:8022
 #, c-format
 msgid "You may edit the following settings: %s\n"
 msgstr ""
 
-#: src/nmcli/connections.c:7989
+#: src/nmcli/connections.c:8050
 msgid ""
 "The connection profile has been removed from another client. You may type "
 "'save' to restore it.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8046 src/nmcli/connections.c:8332
-#: src/nmcli/connections.c:8367
+#: src/nmcli/connections.c:8107 src/nmcli/connections.c:8393
+#: src/nmcli/connections.c:8428
 #, c-format
 msgid "Error: no setting selected; valid are [%s]\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8048
+#: src/nmcli/connections.c:8109
 msgid "use 'goto <setting>' first, or 'set <setting>.<property>'\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8068 src/nmcli/connections.c:8248
-#: src/nmcli/connections.c:8356
+#: src/nmcli/connections.c:8129 src/nmcli/connections.c:8309
+#: src/nmcli/connections.c:8417
 #, c-format
 msgid "Error: invalid setting argument '%s'; valid are [%s]\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8078
+#: src/nmcli/connections.c:8139
 #, c-format
 msgid "Error: missing setting for '%s' property\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8085
+#: src/nmcli/connections.c:8146
 #, c-format
 msgid "Error: invalid property: %s\n"
-msgstr ""
+msgstr "შეცდომა: არასწორი თვისება: %s\n"
 
-#: src/nmcli/connections.c:8148
+#: src/nmcli/connections.c:8209
 #, c-format
 msgid "Error: unknown setting '%s'\n"
-msgstr ""
+msgstr "შეცდომა: უცნობი პარამეტრი '%s'\n"
 
-#: src/nmcli/connections.c:8174
+#: src/nmcli/connections.c:8235
 #, c-format
 msgid "You may edit the following properties: %s\n"
-msgstr ""
+msgstr "შეგიძლიათ, ჩაასწოროთ შემდეგი თვისებები: %s\n"
 
-#: src/nmcli/connections.c:8220 src/nmcli/connections.c:8282
+#: src/nmcli/connections.c:8281 src/nmcli/connections.c:8343
 #, c-format
 msgid "Error: failed to remove value of '%s': %s\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8226
+#: src/nmcli/connections.c:8287
 #, c-format
 msgid "Error: no argument given; valid are [%s]\n"
-msgstr ""
+msgstr "შეცდომა: არგუმენტი მოწოდებული არაა. სწორი არგუმენტებია [%s]\n"
 
-#: src/nmcli/connections.c:8245
+#: src/nmcli/connections.c:8306
 #, c-format
 msgid "Setting '%s' is not present in the connection.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8308
+#: src/nmcli/connections.c:8369
 #, c-format
 msgid "Error: %s properties, nor it is a setting name.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8335 src/nmcli/connections.c:8370
+#: src/nmcli/connections.c:8396 src/nmcli/connections.c:8431
 msgid "use 'goto <setting>' first, or 'describe <setting>.<property>'\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8393
+#: src/nmcli/connections.c:8454
 #, c-format
 msgid "Error: invalid property: %s, neither a valid setting name.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8423
+#: src/nmcli/connections.c:8484
 #, c-format
 msgid "Error: unknown setting: '%s'\n"
-msgstr ""
+msgstr "შეცდომა: უცნობი პარამეტრი: '%s'\n"
 
-#: src/nmcli/connections.c:8428
+#: src/nmcli/connections.c:8489
 #, c-format
 msgid "Error: '%s' setting not present in the connection\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8460
+#: src/nmcli/connections.c:8521
 #, c-format
 msgid "Error: invalid property: %s%s\n"
-msgstr ""
+msgstr "შეცდომა: არასწორი თვისება: %s%s\n"
 
-#: src/nmcli/connections.c:8462
+#: src/nmcli/connections.c:8523
 msgid ", neither a valid setting name"
 msgstr ""
 
-#: src/nmcli/connections.c:8478
+#: src/nmcli/connections.c:8539
 #, c-format
 msgid "Invalid verify option: %s\n"
-msgstr ""
+msgstr "არასწორი გადამოწმების პარამეტრი: %s\n"
 
-#: src/nmcli/connections.c:8486
+#: src/nmcli/connections.c:8547
 #, c-format
 msgid "Verify setting '%s': %s\n"
-msgstr ""
+msgstr "შეამოწმეთ პარამეტრი '%s': %s\n"
 
-#: src/nmcli/connections.c:8501
+#: src/nmcli/connections.c:8562
 #, c-format
 msgid "Verify connection: %s\n"
 msgstr "შეერთების შემოწმება: %s\n"
 
-#: src/nmcli/connections.c:8503
+#: src/nmcli/connections.c:8564
 msgid "The error cannot be fixed automatically.\n"
-msgstr ""
+msgstr "შეცდომა ავტომატურად ვერ გასწორდება.\n"
 
-#: src/nmcli/connections.c:8523
+#: src/nmcli/connections.c:8584
 #, c-format
 msgid "Error: invalid argument '%s'\n"
-msgstr ""
+msgstr "შეცდომა: არასწორი არგუმენტი '%s'\n"
 
-#: src/nmcli/connections.c:8580
+#: src/nmcli/connections.c:8641
 #, c-format
 msgid "Error: Failed to save '%s' (%s) connection: %s\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8586
+#: src/nmcli/connections.c:8647
 #, c-format
 msgid "Error: Timeout saving '%s' (%s) connection\n"
 msgstr "შეცდომა: '%s'(%s) შეერთების შენახვის დრო გავიდა\n"
 
-#: src/nmcli/connections.c:8590
+#: src/nmcli/connections.c:8651
 #, c-format
 msgid "Connection '%s' (%s) successfully saved.\n"
-msgstr ""
+msgstr "მიერთების '%s' (%s) წარმატებით იქნა შენახული.\n"
 
-#: src/nmcli/connections.c:8591
+#: src/nmcli/connections.c:8652
 #, c-format
 msgid "Connection '%s' (%s) successfully updated.\n"
-msgstr ""
+msgstr "მიერთება '%s' (%s) წარმატებით განახლდა.\n"
 
-#: src/nmcli/connections.c:8625
+#: src/nmcli/connections.c:8686
 #, c-format
 msgid "Error: connection verification failed: %s\n"
 msgstr "შეცდომა: შეერთების შემოწმების შეცდომა: %s\n"
 
-#: src/nmcli/connections.c:8626
+#: src/nmcli/connections.c:8687
 msgid "(unknown error)"
 msgstr "(უცნობი შეცდომა)"
 
-#: src/nmcli/connections.c:8627
+#: src/nmcli/connections.c:8688
 msgid "You may try running 'verify fix' to fix errors.\n"
-msgstr ""
+msgstr "შეცდომების გასასწორებლად, შეგიძლიათ, 'verify fix' გაუშვათ.\n"
 
 #. TRANSLATORS: do not translate 'save', leave it as it is
-#: src/nmcli/connections.c:8650
+#: src/nmcli/connections.c:8711
 msgid "Error: connection is not saved. Type 'save' first.\n"
-msgstr ""
+msgstr "შეცდომა: მიერთება შენახული არაა. ჯერ აკრიფეთ 'save'.\n"
 
-#: src/nmcli/connections.c:8654
+#: src/nmcli/connections.c:8715
 #, c-format
 msgid "Error: connection is not valid: %s\n"
 msgstr "შეცდომა: შეერთება არასწორია: %s\n"
 
-#: src/nmcli/connections.c:8670
+#: src/nmcli/connections.c:8731
 #, c-format
 msgid "Error: Cannot activate connection: %s.\n"
 msgstr "შეცდომა: შეერთების აქტივაცია შეუძლებელია: %s.\n"
 
-#: src/nmcli/connections.c:8679
+#: src/nmcli/connections.c:8740
 #, c-format
 msgid "Error: Failed to activate '%s' (%s) connection: %s\n"
-msgstr ""
+msgstr "შეცდომა: ჩავარდა გააქტიურება ინტერფეისისთვის '%s' (%s) კავშირი: %s\n"
 
-#: src/nmcli/connections.c:8686
+#: src/nmcli/connections.c:8747
 msgid "Monitoring connection activation (press any key to continue)\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8721
+#: src/nmcli/connections.c:8782
 #, c-format
 msgid "Error: status-line: %s\n"
-msgstr ""
+msgstr "შეცდომა: status-line: %s\n"
 
-#: src/nmcli/connections.c:8729
+#: src/nmcli/connections.c:8790
 #, c-format
 msgid "Error: save-confirmation: %s\n"
 msgstr "შეცდომა: შენახვის-დადასტურება: %s\n"
 
-#: src/nmcli/connections.c:8737
+#: src/nmcli/connections.c:8798
 #, c-format
 msgid "Error: show-secrets: %s\n"
-msgstr ""
+msgstr "შეცდომა: show-secrets: %s\n"
 
-#: src/nmcli/connections.c:8745
+#: src/nmcli/connections.c:8806
 msgid "Current nmcli configuration:\n"
-msgstr ""
+msgstr "მიმდინარე nmcli-ის კონფიგურაცია:\n"
 
-#: src/nmcli/connections.c:8753
+#: src/nmcli/connections.c:8814
 #, c-format
 msgid "Invalid configuration option '%s'; allowed [%s]\n"
 msgstr ""
 
-#: src/nmcli/connections.c:8985
+#: src/nmcli/connections.c:9046
+#, c-format
 msgid "Error: only one of 'id', 'filename', uuid, or 'path' can be provided."
 msgstr ""
 
-#: src/nmcli/connections.c:9000
+#: src/nmcli/connections.c:9061
 #, c-format
 msgid "Error: Unknown connection '%s'."
 msgstr "შეცდომა: უცნობი შეერთება '%s'."
 
-#: src/nmcli/connections.c:9017
+#: src/nmcli/connections.c:9078
 #, c-format
 msgid "Warning: editing existing connection '%s'; 'type' argument is ignored\n"
 msgstr ""
 
-#: src/nmcli/connections.c:9021
+#: src/nmcli/connections.c:9082
 #, c-format
 msgid ""
 "Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"
 msgstr ""
 
-#: src/nmcli/connections.c:9048
+#: src/nmcli/connections.c:9109
 #, c-format
 msgid "Valid connection types: %s\n"
 msgstr "შეერთების სწორი ტიპები: %s\n"
 
-#: src/nmcli/connections.c:9050
+#: src/nmcli/connections.c:9111
 #, c-format
 msgid "Error: invalid connection type; %s\n"
 msgstr "შეცდომა: შეერთების არასწორი ტიპი: %s\n"
 
-#: src/nmcli/connections.c:9089
+#: src/nmcli/connections.c:9150
 msgid "===| nmcli interactive connection editor |==="
 msgstr ""
 
-#: src/nmcli/connections.c:9092
+#: src/nmcli/connections.c:9153
 #, c-format
 msgid "Editing existing '%s' connection: '%s'"
 msgstr "არსებული '%s' შეერთების ჩასწორება: '%s'"
 
-#: src/nmcli/connections.c:9094
+#: src/nmcli/connections.c:9155
 #, c-format
 msgid "Adding a new '%s' connection"
 msgstr "ახალი %s შეერთების დამატება"
 
 #. TRANSLATORS: do not translate 'help', leave it as it is
-#: src/nmcli/connections.c:9097
+#: src/nmcli/connections.c:9158
 msgid "Type 'help' or '?' for available commands."
-msgstr ""
+msgstr "ხელმისაწვდომი ბრძანებების სანახავად აკრიფეთ 'help' ან '?'."
 
 #. TRANSLATORS: do not translate 'print', leave it as it is
-#: src/nmcli/connections.c:9100
+#: src/nmcli/connections.c:9161
 msgid "Type 'print' to show all the connection properties."
-msgstr ""
+msgstr "ყველა კავშირის თვისების სანახავად აკრიფეთ 'print'."
 
 #. TRANSLATORS: do not translate 'describe', leave it as it is
-#: src/nmcli/connections.c:9103
+#: src/nmcli/connections.c:9164
 msgid "Type 'describe [<setting>.<prop>]' for detailed property description."
 msgstr ""
 
-#: src/nmcli/connections.c:9130
+#: src/nmcli/connections.c:9191
 #, c-format
 msgid "Error: Failed to modify connection '%s': %s"
 msgstr "შეცდომა: '%s' შეერთების შეცვლის შეცდომა: %s"
 
-#: src/nmcli/connections.c:9138
+#: src/nmcli/connections.c:9199
 #, c-format
 msgid "Connection '%s' (%s) successfully modified.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:9211
+#: src/nmcli/connections.c:9272
 #, c-format
 msgid "%s (%s) cloned as %s (%s).\n"
-msgstr ""
+msgstr "%s (%s) დაიკლონა, როგორც %s (%s).\n"
 
-#: src/nmcli/connections.c:9269
+#: src/nmcli/connections.c:9330
 msgid "New connection name: "
 msgstr "ახალი შეერთების სახელი: "
 
-#: src/nmcli/connections.c:9271
+#: src/nmcli/connections.c:9332
+#, c-format
 msgid "Error: <new name> argument is missing."
-msgstr ""
+msgstr "შეცდომა: არგუმენტი <ახალი სახელი> მითითებული არაა."
 
-#: src/nmcli/connections.c:9277 src/nmcli/connections.c:9803
+#: src/nmcli/connections.c:9338 src/nmcli/connections.c:9866
 #, c-format
 msgid "Error: unknown extra argument: '%s'."
-msgstr ""
+msgstr "შეცდომა: უცნობი დამატებითი არგუმენტი: \"%s\"."
 
-#: src/nmcli/connections.c:9311
+#: src/nmcli/connections.c:9372
+#, c-format
 msgid "Error: not all connections deleted."
-msgstr ""
+msgstr "შეცდომა: ყველა კავშირი არ წაიშალა."
 
-#: src/nmcli/connections.c:9312
+#: src/nmcli/connections.c:9373
 #, c-format
 msgid "Error: Connection deletion failed: %s\n"
 msgstr "შეცდომა: შეერთების წაშლა შეუძლებელია: %s\n"
 
-#: src/nmcli/connections.c:9367 src/nmcli/connections.c:9494
-#: src/nmcli/connections.c:9956
+#: src/nmcli/connections.c:9428 src/nmcli/connections.c:9557
+#: src/nmcli/connections.c:10019
 #, c-format
 msgid "Error: %s.\n"
 msgstr "შეცდომა: %s.\n"
 
-#: src/nmcli/connections.c:9368 src/nmcli/connections.c:9495
-#: src/nmcli/connections.c:9957
+#: src/nmcli/connections.c:9429 src/nmcli/connections.c:9558
+#: src/nmcli/connections.c:10020
+#, c-format
 msgid "Error: not all connections found."
 msgstr "შეცდომა: ყველა შეერთება ნაპოვნი არაა."
 
-#: src/nmcli/connections.c:9427
+#: src/nmcli/connections.c:9490
 #, c-format
 msgid "Error: cannot delete unknown connection(s): %s."
-msgstr ""
+msgstr "შეცდომა: ვერ წავშალე უცნობი მიერთებები: %s."
 
-#: src/nmcli/connections.c:9435
+#: src/nmcli/connections.c:9498
 #, c-format
 msgid "%s: connection profile changed\n"
-msgstr ""
+msgstr "%s: მიერთების პროფილი შეიცვალა\n"
 
-#: src/nmcli/connections.c:9461
+#: src/nmcli/connections.c:9524
 #, c-format
 msgid "%s: connection profile created\n"
-msgstr ""
+msgstr "%s: მიერთების პროფილი შეიქმნა\n"
 
-#: src/nmcli/connections.c:9470
+#: src/nmcli/connections.c:9533
 #, c-format
 msgid "%s: connection profile removed\n"
-msgstr ""
+msgstr "%s: მიერთების პროფილი წაიშალა\n"
 
-#: src/nmcli/connections.c:9538
+#: src/nmcli/connections.c:9601
 #, c-format
 msgid "Error: failed to reload connections: %s."
 msgstr "შეცდომა: შეერთების გადატვირთვის შეცდომა: %s."
 
-#: src/nmcli/connections.c:9610
+#: src/nmcli/connections.c:9673
 #, c-format
 msgid "Error: failed to load connection: %s."
 msgstr "შეცდომა: შეერთების ჩატვირთვის შეცდომა: %s."
 
-#: src/nmcli/connections.c:9618
+#: src/nmcli/connections.c:9681
 #, c-format
 msgid "Could not load file '%s'\n"
-msgstr ""
+msgstr "ვერ ჩავტვირთე ფაილი '%s'\n"
 
-#: src/nmcli/connections.c:9622
+#: src/nmcli/connections.c:9685
 msgid "File to import: "
 msgstr "შემოსატანი ფაილი: "
 
-#: src/nmcli/connections.c:9653
+#: src/nmcli/connections.c:9716
+#, c-format
 msgid "Error: No arguments provided."
-msgstr ""
+msgstr "შეცდომა: არგუმენტები მითითებული არაა."
 
-#: src/nmcli/connections.c:9708
+#: src/nmcli/connections.c:9771
+#, c-format
 msgid "Error: 'type' argument is required."
-msgstr ""
+msgstr "შეცდომა: არგუმენტი 'type' აუცილებელია."
 
-#: src/nmcli/connections.c:9713
+#: src/nmcli/connections.c:9776
+#, c-format
 msgid "Error: 'file' argument is required."
-msgstr ""
+msgstr "შეცდომა: არგუმენტი 'file' აუცილებელია."
 
-#: src/nmcli/connections.c:9723
+#: src/nmcli/connections.c:9786
 #, c-format
 msgid "Error: failed to find VPN plugin for %s."
 msgstr "შეცდომა: VPN დამატების მოძებნა %s-სთვის შეუძლებელია."
 
-#: src/nmcli/connections.c:9732 src/nmcli/connections.c:9824
+#: src/nmcli/connections.c:9795 src/nmcli/connections.c:9887
 #, c-format
 msgid "Error: failed to load VPN plugin: %s."
-msgstr ""
+msgstr "შეცდომა: ვერ ჩავტვირთე VPN-ის დამატება: %s."
 
-#: src/nmcli/connections.c:9743
+#: src/nmcli/connections.c:9806
 #, c-format
 msgid "Error: failed to import '%s': %s."
-msgstr ""
+msgstr "შეცდომა: '%s'-ის შემოტანა ჩავარდა: %s."
 
-#: src/nmcli/connections.c:9809
+#: src/nmcli/connections.c:9872
 msgid "Output file name: "
 msgstr "გამოტანის ფაილის სახელი: "
 
-#: src/nmcli/connections.c:9814
+#: src/nmcli/connections.c:9877
+#, c-format
 msgid "Error: the connection is not VPN."
 msgstr "შეცდომა: შეერთება VPN არაა."
 
-#: src/nmcli/connections.c:9838
+#: src/nmcli/connections.c:9901
 #, c-format
 msgid "Error: failed to create temporary file %s."
-msgstr ""
+msgstr "შეცდომა: ჩავარდა შექმნა დროებითი ფაილისთვის %s."
 
-#: src/nmcli/connections.c:9848
+#: src/nmcli/connections.c:9911
 #, c-format
 msgid "Error: failed to export '%s': %s."
-msgstr ""
+msgstr "შეცდომა: '%s'-ის გატანა ჩავარდა: %s."
 
-#: src/nmcli/connections.c:9862
+#: src/nmcli/connections.c:9925
 #, c-format
 msgid "Error: failed to read temporary file '%s': %s."
-msgstr ""
+msgstr "შეცდომა: ჩავარდა წაკითხვა დროებითი ფაილისთვის '%s': %s."
 
-#: src/nmcli/connections.c:9886
+#: src/nmcli/connections.c:9949
+#, c-format
 msgid "Error: not all connections migrated."
 msgstr "შეცდომა: ყველა შეერთება არ დამიგრირებულა."
 
-#: src/nmcli/connections.c:9887
+#: src/nmcli/connections.c:9950
 #, c-format
 msgid "Error: Connection migration failed: %s\n"
 msgstr "შეცდომა: შეერთების მიგრაცია შეუძლებელია: %s\n"
 
-#: src/nmcli/connections.c:9891
+#: src/nmcli/connections.c:9954
 #, c-format
 msgid "Connection '%s' (%s) successfully migrated.\n"
 msgstr ""
 
-#: src/nmcli/connections.c:9923
+#: src/nmcli/connections.c:9986
 msgid "'--plugin' argument is missing"
-msgstr ""
+msgstr "'--plugin' არგუმენტი მითითებული არაა"
 
-#: src/nmcli/connections.c:10019
+#: src/nmcli/connections.c:10082
 #, c-format
 msgid "Error: cannot migrate unknown connection(s): %s."
 msgstr "შეცდომა: უცნობი შეერთებების მიგრაცია შეუძლებელია: %s."
@@ -10836,14 +11535,14 @@ msgstr "ინტერფეისი: "
 msgid "Interface(s): "
 msgstr "ინტერფეის(ებ)-ი: "
 
-#: src/nmcli/devices.c:72 src/nmcli/devices.c:1445
+#: src/nmcli/devices.c:72 src/nmcli/devices.c:1461
 msgid "(none)"
 msgstr "(არცერთი)"
 
 #: src/nmcli/devices.c:374
 #, c-format
 msgid "<invisible> | %s"
-msgstr ""
+msgstr "<უჩინარი> | %s"
 
 #: src/nmcli/devices.c:375
 msgid "<invisible>"
@@ -10854,7 +11553,7 @@ msgstr "<უხილავი>"
 msgid "%u Mb/s"
 msgstr "%u მბ/წმ"
 
-#: src/nmcli/devices.c:842
+#: src/nmcli/devices.c:852
 msgid ""
 "Usage: nmcli device { COMMAND | help }\n"
 "\n"
@@ -10897,7 +11596,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:870
+#: src/nmcli/devices.c:880
 msgid ""
 "Usage: nmcli device status { help }\n"
 "\n"
@@ -10914,7 +11613,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:885
+#: src/nmcli/devices.c:895
 msgid ""
 "Usage: nmcli device show { ARGUMENTS | help }\n"
 "\n"
@@ -10925,7 +11624,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:896
+#: src/nmcli/devices.c:906
 msgid ""
 "Usage: nmcli device connect { ARGUMENTS | help }\n"
 "\n"
@@ -10938,7 +11637,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:908
+#: src/nmcli/devices.c:918
 msgid ""
 "Usage: nmcli device reapply { ARGUMENTS | help }\n"
 "\n"
@@ -10949,7 +11648,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:920
+#: src/nmcli/devices.c:930
 msgid ""
 "Usage: nmcli device modify { ARGUMENTS | help }\n"
 "\n"
@@ -10970,7 +11669,7 @@ msgid ""
 "nmcli dev mod em1 -ipv6.addr \"abbe::cafe/56\"\n"
 msgstr ""
 
-#: src/nmcli/devices.c:940
+#: src/nmcli/devices.c:950
 msgid ""
 "Usage: nmcli device disconnect { ARGUMENTS | help }\n"
 "\n"
@@ -10982,7 +11681,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:952
+#: src/nmcli/devices.c:962
 msgid ""
 "Usage: nmcli device delete { ARGUMENTS | help }\n"
 "\n"
@@ -10995,7 +11694,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:965
+#: src/nmcli/devices.c:975
 msgid ""
 "Usage: nmcli device set { ARGUMENTS | help }\n"
 "\n"
@@ -11008,7 +11707,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:978
+#: src/nmcli/devices.c:988
 msgid ""
 "Usage: nmcli device monitor { ARGUMENTS | help }\n"
 "\n"
@@ -11020,7 +11719,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:991
+#: src/nmcli/devices.c:1001
 msgid ""
 "Usage: nmcli device wifi { ARGUMENTS | help }\n"
 "\n"
@@ -11073,7 +11772,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:1039
+#: src/nmcli/devices.c:1049
 msgid ""
 "Usage: nmcli device lldp { ARGUMENTS | help }\n"
 "\n"
@@ -11085,7 +11784,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:1050
+#: src/nmcli/devices.c:1060
 msgid ""
 "Usage: nmcli device checkpoint { ARGUMENTS | help }\n"
 "\n"
@@ -11097,409 +11796,416 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/devices.c:1152
+#: src/nmcli/devices.c:1162
+#, c-format
 msgid "Error: No interface specified."
 msgstr "შეცდომა: ინტერფეისი მითითებული არაა."
 
-#: src/nmcli/devices.c:1182
+#: src/nmcli/devices.c:1192
 #, c-format
 msgid "Warning: argument '%s' is duplicated.\n"
-msgstr ""
+msgstr "გაფრთხილება: არგუმენტი '%s' გამეორებულია.\n"
 
-#: src/nmcli/devices.c:1185
+#: src/nmcli/devices.c:1195
 #, c-format
 msgid "Error: Device '%s' not found.\n"
 msgstr "შეცდომა: მოწყობილობა '%s' ვერ ვიპოვე.\n"
 
-#: src/nmcli/devices.c:1186 src/nmcli/devices.c:5234
+#: src/nmcli/devices.c:1196 src/nmcli/devices.c:5239
+#, c-format
 msgid "Error: not all devices found."
 msgstr "შეცდომა: ყველა მოწყობილობა ვერ ვიპოვე."
 
-#: src/nmcli/devices.c:1215
+#: src/nmcli/devices.c:1225
 msgid "No interface specified"
 msgstr "ინტერფეისი მითითებული არაა"
 
-#: src/nmcli/devices.c:1236
+#: src/nmcli/devices.c:1246
 #, c-format
 msgid "Device '%s' not found"
 msgstr "მოწყობილობა \"%s\" ვერ მოიძებნა"
 
-#: src/nmcli/devices.c:1348
+#: src/nmcli/devices.c:1362 src/nmcli/devices.c:1364
 #, c-format
 msgid "%u MHz"
 msgstr "%u მჰც"
 
-#: src/nmcli/devices.c:1349
+#: src/nmcli/devices.c:1363
 #, c-format
 msgid "%u Mbit/s"
 msgstr "%u მბიტ/წმ"
 
-#: src/nmcli/devices.c:1398
+#: src/nmcli/devices.c:1413
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
 
-#: src/nmcli/devices.c:1399
+#: src/nmcli/devices.c:1414
 msgid "Infra"
 msgstr "Infra"
 
-#: src/nmcli/devices.c:1401
+#: src/nmcli/devices.c:1416
 msgid "N/A"
 msgstr "არარსებული"
 
-#: src/nmcli/devices.c:1593
+#: src/nmcli/devices.c:1607
 msgid "Device details"
 msgstr "მოწყობილობის დეტალები"
 
-#: src/nmcli/devices.c:1610
+#: src/nmcli/devices.c:1624
 #, c-format
 msgid "Error: 'device show': %s"
 msgstr "შეცდომა: 'device show': %s"
 
-#: src/nmcli/devices.c:1988
+#: src/nmcli/devices.c:2002
 msgid "Status of devices"
 msgstr "მოწყობილობების სტტუსი"
 
-#: src/nmcli/devices.c:1992
+#: src/nmcli/devices.c:2006
 #, c-format
 msgid "Error: 'device status': %s"
 msgstr "შეცდომა: 'device status': %s"
 
-#: src/nmcli/devices.c:2055 src/nmcli/general.c:528
+#: src/nmcli/devices.c:2069 src/nmcli/general.c:535
 #, c-format
 msgid "Error: Timeout %d sec expired."
-msgstr ""
+msgstr "შეცდომა; ამოიწურა მოლოდინის ვადა %d წმ."
 
-#: src/nmcli/devices.c:2132
+#: src/nmcli/devices.c:2146
 #, c-format
 msgid "Device '%s' successfully activated with '%s'.\n"
-msgstr ""
+msgstr "მოწყობილობა '%s' წარმატებულად გააქტიურდა '%s'-სთან ერთად.\n"
 
-#: src/nmcli/devices.c:2138
+#: src/nmcli/devices.c:2152
 msgid ""
 "Hint: \"nmcli dev wifi show-password\" shows the Wi-Fi name and password.\n"
 msgstr ""
 
-#: src/nmcli/devices.c:2142
+#: src/nmcli/devices.c:2156
 #, c-format
 msgid "Error: Connection activation failed: %s."
 msgstr "შეცდომა: ქსელის კავშირის აქტივაციის შეცდომა: %s."
 
-#: src/nmcli/devices.c:2184
+#: src/nmcli/devices.c:2198
 #, c-format
 msgid "Error: Failed to setup a Wi-Fi hotspot: %s"
 msgstr ""
 
-#: src/nmcli/devices.c:2188
+#: src/nmcli/devices.c:2202
 #, c-format
 msgid "Error: Failed to add/activate new connection: %s"
 msgstr ""
 
-#: src/nmcli/devices.c:2192
+#: src/nmcli/devices.c:2206
 #, c-format
 msgid "Error: Failed to activate connection: %s"
 msgstr "შეცდომა: შეერთების აქტივაცია შეუძლებელია: %s"
 
-#: src/nmcli/devices.c:2266
+#: src/nmcli/devices.c:2287
 #, c-format
 msgid "Error: Device activation failed: %s"
-msgstr ""
+msgstr "შეცდომა: მოწყობილობის გააქტიურება ჩავარდა: %s"
 
-#: src/nmcli/devices.c:2322
+#: src/nmcli/devices.c:2343
 #, c-format
 msgid "Error: extra argument not allowed: '%s'."
-msgstr ""
+msgstr "შეცდომა: დამატებითი არგუმენტი დაუშვებელია: '%s'."
 
-#: src/nmcli/devices.c:2391 src/nmcli/devices.c:2404 src/nmcli/devices.c:2659
+#: src/nmcli/devices.c:2412 src/nmcli/devices.c:2425 src/nmcli/devices.c:2680
 #, c-format
 msgid "Device '%s' successfully disconnected.\n"
-msgstr ""
+msgstr "მოწყობილობა '%s' წარმატებით გაითიშა.\n"
 
-#: src/nmcli/devices.c:2393 src/nmcli/devices.c:2730
+#: src/nmcli/devices.c:2414 src/nmcli/devices.c:2751
 #, c-format
 msgid "Device '%s' successfully removed.\n"
-msgstr ""
+msgstr "მოწყობილობა '%s' წარმატებით წაიშალა.\n"
 
-#: src/nmcli/devices.c:2453 src/nmcli/devices.c:2535
+#: src/nmcli/devices.c:2474 src/nmcli/devices.c:2556
 #, c-format
 msgid "Error: Reapplying connection to device '%s' (%s) failed: %s"
 msgstr ""
 "შეცდომა: მოწყობილობაზე %s (%s) შეერთების თავიდან გადატარების შეცდომა: %s"
 
-#: src/nmcli/devices.c:2463 src/nmcli/devices.c:2544
+#: src/nmcli/devices.c:2484 src/nmcli/devices.c:2565
 #, c-format
 msgid "Connection successfully reapplied to device '%s'.\n"
 msgstr ""
 
-#: src/nmcli/devices.c:2566
+#: src/nmcli/devices.c:2587
 #, c-format
 msgid "Error: Reading applied connection from device '%s' (%s) failed: %s"
 msgstr ""
 
-#: src/nmcli/devices.c:2643
+#: src/nmcli/devices.c:2664
+#, c-format
 msgid "Error: not all devices disconnected."
 msgstr ""
 
-#: src/nmcli/devices.c:2644
+#: src/nmcli/devices.c:2665
 #, c-format
 msgid "Error: Device '%s' (%s) disconnecting failed: %s\n"
 msgstr ""
 
-#: src/nmcli/devices.c:2721
+#: src/nmcli/devices.c:2742
+#, c-format
 msgid "Error: not all devices deleted."
-msgstr ""
+msgstr "შეცდომა: ყველა მოწყობილობა არ წაშლილა."
 
-#: src/nmcli/devices.c:2722
+#: src/nmcli/devices.c:2743
 #, c-format
 msgid "Error: Device '%s' (%s) deletion failed: %s\n"
-msgstr ""
+msgstr "შეცდომა: მოწყობილობის '%s' (%s) წაშლა ჩავარდა: %s\n"
 
-#: src/nmcli/devices.c:2800
+#: src/nmcli/devices.c:2821
+#, c-format
 msgid "Error: No property specified."
-msgstr ""
+msgstr "შეცდომა: თვისება მითითებული არაა."
 
-#: src/nmcli/devices.c:2817 src/nmcli/devices.c:2836 src/nmcli/general.c:798
-#: src/nmcli/general.c:820
+#: src/nmcli/devices.c:2838 src/nmcli/devices.c:2857 src/nmcli/general.c:805
+#: src/nmcli/general.c:827
 #, c-format
 msgid "Error: '%s' argument is missing."
-msgstr ""
+msgstr "შეცდომა: არგუმენტი '%s' აკლია."
 
-#: src/nmcli/devices.c:2825
+#: src/nmcli/devices.c:2846
 #, c-format
 msgid "Error: 'managed': %s."
 msgstr "შეცდომა: 'managed': %s."
 
-#: src/nmcli/devices.c:2844
+#: src/nmcli/devices.c:2865
 #, c-format
 msgid "Error: 'autoconnect': %s."
 msgstr "შეცდომა: 'autoconnect': %s."
 
-#: src/nmcli/devices.c:2851 src/nmcli/general.c:870
+#: src/nmcli/devices.c:2872 src/nmcli/general.c:877
 #, c-format
 msgid "Error: property '%s' is not known."
-msgstr ""
+msgstr "შეცდომა: თვისება '%s' უცნობია."
 
-#: src/nmcli/devices.c:2898
+#: src/nmcli/devices.c:2919
 #, c-format
 msgid "%s: using connection '%s'\n"
 msgstr "%s: გამოყენებული შეერთება %s\n"
 
-#: src/nmcli/devices.c:2924
+#: src/nmcli/devices.c:2945
 #, c-format
 msgid "%s: device created\n"
 msgstr "%s მოწყობილობა შექმნილია\n"
 
-#: src/nmcli/devices.c:2931
+#: src/nmcli/devices.c:2952
 #, c-format
 msgid "%s: device removed\n"
 msgstr "%s: მოწყობილობა წაიშალა\n"
 
-#: src/nmcli/devices.c:3111
+#: src/nmcli/devices.c:3132
 msgid "Wi-Fi scan list"
 msgstr "Wi-Fi სკანირების სია"
 
-#: src/nmcli/devices.c:3228 src/nmcli/devices.c:3509
+#: src/nmcli/devices.c:3249 src/nmcli/devices.c:3530
 #, c-format
 msgid "Error: Access point with bssid '%s' not found."
-msgstr ""
+msgstr "შეცდომა: წვდომის წერტილი bssid-ით '%s' აღმოჩენილი არაა."
 
-#: src/nmcli/devices.c:3430
+#: src/nmcli/devices.c:3451
 #, c-format
 msgid "Error: 'device wifi': %s"
 msgstr "შეცდომა: 'device wifi': %s"
 
-#: src/nmcli/devices.c:3450
+#: src/nmcli/devices.c:3471
 #, c-format
 msgid "Error: invalid rescan argument: '%s' not among [auto, no, yes]"
 msgstr ""
 
-#: src/nmcli/devices.c:3489
+#: src/nmcli/devices.c:3510
 #, c-format
 msgid "Error: Device '%s' not found."
 msgstr "შეცდომა: მოწყობილობა '%s' ვერ ვიპოვე."
 
-#: src/nmcli/devices.c:3493
+#: src/nmcli/devices.c:3514
 #, c-format
 msgid ""
 "Error: Device '%s' was not recognized as a Wi-Fi device, check "
 "NetworkManager Wi-Fi plugin."
 msgstr ""
 
-#: src/nmcli/devices.c:3498 src/nmcli/devices.c:3850 src/nmcli/devices.c:4479
-#: src/nmcli/devices.c:4614 src/nmcli/devices.c:4749
+#: src/nmcli/devices.c:3519 src/nmcli/devices.c:3870 src/nmcli/devices.c:4484
+#: src/nmcli/devices.c:4619 src/nmcli/devices.c:4754
 #, c-format
 msgid "Error: Device '%s' is not a Wi-Fi device."
 msgstr ""
 
-#: src/nmcli/devices.c:3678
+#: src/nmcli/devices.c:3698
 msgid "SSID or BSSID: "
 msgstr "SSID ან BSSID: "
 
-#: src/nmcli/devices.c:3683
+#: src/nmcli/devices.c:3703
+#, c-format
 msgid "Error: SSID or BSSID are missing."
-msgstr ""
+msgstr "შეცდომა: SSID ან BSSID აკლია."
 
-#: src/nmcli/devices.c:3727
+#: src/nmcli/devices.c:3747
 #, c-format
 msgid "Error: bssid argument value '%s' is not a valid BSSID."
 msgstr ""
 
-#: src/nmcli/devices.c:3758
+#: src/nmcli/devices.c:3778
 #, c-format
 msgid ""
 "Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
 msgstr ""
 
-#: src/nmcli/devices.c:3786 src/nmcli/devices.c:3807
+#: src/nmcli/devices.c:3806 src/nmcli/devices.c:3827
 #, c-format
 msgid "Error: %s: %s."
 msgstr "შეცდომა: %s: %s."
 
-#: src/nmcli/devices.c:3829
+#: src/nmcli/devices.c:3849
 #, c-format
 msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
 msgstr ""
 
-#: src/nmcli/devices.c:3837
+#: src/nmcli/devices.c:3857
 #, c-format
 msgid "Error: Parameter '%s' is neither SSID nor BSSID."
 msgstr ""
 
-#: src/nmcli/devices.c:3853 src/nmcli/devices.c:4482 src/nmcli/devices.c:4617
-#: src/nmcli/devices.c:4849
+#: src/nmcli/devices.c:3873 src/nmcli/devices.c:4487 src/nmcli/devices.c:4622
+#: src/nmcli/devices.c:4854
+#, c-format
 msgid "Error: No Wi-Fi device found."
 msgstr "შეცდომა: WiFi ბარათი ნაპვოვნი არაა."
 
-#: src/nmcli/devices.c:3875
+#: src/nmcli/devices.c:3895
 #, c-format
 msgid "Error: Failed to scan hidden SSID: %s."
 msgstr ""
 
-#: src/nmcli/devices.c:3907
+#: src/nmcli/devices.c:3927
 #, c-format
 msgid "Error: No network with SSID '%s' found."
 msgstr ""
 
-#: src/nmcli/devices.c:3911
+#: src/nmcli/devices.c:3931
 #, c-format
 msgid "Error: No access point with BSSID '%s' found."
 msgstr ""
 
-#: src/nmcli/devices.c:3940
+#: src/nmcli/devices.c:3960
 #, c-format
 msgid "Error: Connection '%s' exists but properties don't match."
 msgstr ""
 
-#: src/nmcli/devices.c:3990
+#: src/nmcli/devices.c:4010
 #, c-format
 msgid ""
 "Warning: '%s' should be SSID for hidden APs; but it looks like a BSSID.\n"
 msgstr ""
 
-#: src/nmcli/devices.c:4032
-msgid "Password: "
-msgstr "პაროლი: "
-
-#: src/nmcli/devices.c:4172
+#: src/nmcli/devices.c:4177
 #, c-format
 msgid "'%s' is not valid WPA PSK"
 msgstr ""
 
-#: src/nmcli/devices.c:4193
+#: src/nmcli/devices.c:4198
 #, c-format
 msgid "'%s' is not valid WEP key (it should be 5 or 13 ASCII chars)"
 msgstr ""
 
-#: src/nmcli/devices.c:4212
+#: src/nmcli/devices.c:4217
 #, c-format
 msgid "Hotspot password: %s\n"
 msgstr "ჰოტსპოტის პაროლი: %s\n"
 
-#: src/nmcli/devices.c:4395
+#: src/nmcli/devices.c:4400
+#, c-format
 msgid "Error: ssid is too long."
-msgstr ""
+msgstr "შეცდომა: SSID ძალიან გრძელია."
 
-#: src/nmcli/devices.c:4413
+#: src/nmcli/devices.c:4418
 #, c-format
 msgid "Error: band argument value '%s' is invalid; use 'a' or 'bg'."
 msgstr ""
 
-#: src/nmcli/devices.c:4457
+#: src/nmcli/devices.c:4462
+#, c-format
 msgid "Error: channel requires band too."
 msgstr ""
 
-#: src/nmcli/devices.c:4464
+#: src/nmcli/devices.c:4469
 #, c-format
 msgid "Error: channel '%s' not valid for band '%s'."
 msgstr ""
 
-#: src/nmcli/devices.c:4495
+#: src/nmcli/devices.c:4500
 #, c-format
 msgid "Error: Device '%s' supports neither AP nor Ad-Hoc mode."
 msgstr ""
 
-#: src/nmcli/devices.c:4522
+#: src/nmcli/devices.c:4527
 #, c-format
 msgid "Error: Invalid 'password': %s."
-msgstr ""
+msgstr "შეცდომა: არასწორი 'password': %s."
 
-#: src/nmcli/devices.c:4573 src/nmcli/devices.c:4803
+#: src/nmcli/devices.c:4578 src/nmcli/devices.c:4808
 #, c-format
 msgid "Error: '%s' cannot repeat."
-msgstr ""
+msgstr "შეცდომა: '%s' არ შეიძლება, მეორდებოდეს."
 
-#: src/nmcli/devices.c:4708 src/nmcli/devices.c:4711 src/nmcli/devices.c:4715
-#: src/nmcli/devices.c:4718 src/nmtui/nmt-page-wifi.c:269
+#: src/nmcli/devices.c:4713 src/nmcli/devices.c:4716 src/nmcli/devices.c:4720
+#: src/nmcli/devices.c:4723 src/nmtui/nmt-page-wifi.c:269
 msgid "Security"
 msgstr "უსაფრთხოება"
 
-#: src/nmcli/devices.c:4708
+#: src/nmcli/devices.c:4713
 msgid "None"
 msgstr "არცერთი"
 
 #. Main header name
-#: src/nmcli/devices.c:4890
+#: src/nmcli/devices.c:4895
 msgid "Device LLDP neighbors"
-msgstr ""
+msgstr "მოწყობილობის LLDP მეზობლები"
 
-#: src/nmcli/devices.c:5023
+#: src/nmcli/devices.c:5028
 #, c-format
 msgid "Error: 'device lldp list': %s"
-msgstr ""
+msgstr "შეცდომა: 'device lldp list': %s"
 
-#: src/nmcli/devices.c:5091
+#: src/nmcli/devices.c:5096
+#, c-format
 msgid "Checkpoint was removed."
 msgstr "საკონტროლო წერტილი წაიშალა."
 
 #. The command is done, we're in the confirmation prompt.
-#: src/nmcli/devices.c:5098
+#: src/nmcli/devices.c:5103
 msgid "No"
 msgstr "არა"
 
-#: src/nmcli/devices.c:5111
+#: src/nmcli/devices.c:5116
 #, c-format
 msgid "Error: Destroying a checkpoint failed: %s"
 msgstr "შეცდომა: საკონტროლო წერტილის წაშლის შეცდომა: %s"
 
-#: src/nmcli/devices.c:5133 src/nmcli/devices.c:5134
+#: src/nmcli/devices.c:5138 src/nmcli/devices.c:5139
 msgid "Yes"
 msgstr "დიახ"
 
-#: src/nmcli/devices.c:5160
+#: src/nmcli/devices.c:5165
 #, c-format
 msgid "Error: Creating a checkpoint failed: %s"
 msgstr "შეცდომა: საკონტროლო წერტილის შექმნის შეცდომა: %s"
 
-#: src/nmcli/devices.c:5176
+#: src/nmcli/devices.c:5181
 #, c-format
 msgid "Error: %s"
 msgstr "შეცდომა: %s"
 
-#: src/nmcli/devices.c:5215 src/nmcli/nmcli.c:885
+#: src/nmcli/devices.c:5220 src/nmcli/nmcli.c:890
 #, c-format
 msgid "Error: '%s' is not a valid timeout."
-msgstr ""
+msgstr "შეცდომა: '%s' სწორი დრო არაა."
 
-#: src/nmcli/devices.c:5242
+#: src/nmcli/devices.c:5247
+#, c-format
 msgid "Error: Expected a command to run after '--'"
 msgstr ""
 
@@ -11527,31 +12233,31 @@ msgstr "გათიშვა"
 msgid "auth"
 msgstr "ავთენტიკაცია"
 
-#: src/nmcli/general.c:123
+#: src/nmcli/general.c:124
 msgid "running"
 msgstr "გაშვებულია"
 
-#: src/nmcli/general.c:137
+#: src/nmcli/general.c:138
 msgid "starting"
 msgstr "გაშვება"
 
-#: src/nmcli/general.c:137
+#: src/nmcli/general.c:138
 msgid "started"
 msgstr "გაეშვა"
 
-#: src/nmcli/general.c:150 src/nmcli/general.c:161
+#: src/nmcli/general.c:151 src/nmcli/general.c:162
 msgid "missing"
 msgstr "აკლია"
 
-#: src/nmcli/general.c:181
+#: src/nmcli/general.c:187
 msgid "enabled"
 msgstr "ჩართულია"
 
-#: src/nmcli/general.c:181
+#: src/nmcli/general.c:187
 msgid "disabled"
 msgstr "გამორთულია"
 
-#: src/nmcli/general.c:302
+#: src/nmcli/general.c:309
 msgid ""
 "Usage: nmcli general { COMMAND | help }\n"
 "\n"
@@ -11569,7 +12275,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:315
+#: src/nmcli/general.c:322
 msgid ""
 "Usage: nmcli general status { help }\n"
 "\n"
@@ -11579,7 +12285,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:325
+#: src/nmcli/general.c:332
 msgid ""
 "Usage: nmcli general hostname { ARGUMENTS | help }\n"
 "\n"
@@ -11592,7 +12298,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:337
+#: src/nmcli/general.c:344
 msgid ""
 "Usage: nmcli general permissions { help }\n"
 "\n"
@@ -11600,7 +12306,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:345
+#: src/nmcli/general.c:352
 msgid ""
 "Usage: nmcli general reload { ARGUMENTS | help }\n"
 "\n"
@@ -11632,7 +12338,7 @@ msgid ""
 "identical to sending a SIGHUP.\n"
 msgstr ""
 
-#: src/nmcli/general.c:379
+#: src/nmcli/general.c:386
 msgid ""
 "Usage: nmcli general logging { ARGUMENTS | help }\n"
 "\n"
@@ -11647,7 +12353,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:392
+#: src/nmcli/general.c:399
 msgid ""
 "Usage: nmcli networking { COMMAND | help }\n"
 "\n"
@@ -11661,7 +12367,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:402
+#: src/nmcli/general.c:409
 msgid ""
 "Usage: nmcli networking on { help }\n"
 "\n"
@@ -11669,7 +12375,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:410
+#: src/nmcli/general.c:417
 msgid ""
 "Usage: nmcli networking off { help }\n"
 "\n"
@@ -11677,7 +12383,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:419
+#: src/nmcli/general.c:426
 msgid ""
 "Usage: nmcli networking connectivity { ARGUMENTS | help }\n"
 "\n"
@@ -11689,7 +12395,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:430
+#: src/nmcli/general.c:437
 msgid ""
 "Usage: nmcli radio { COMMAND | help }\n"
 "\n"
@@ -11699,7 +12405,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:438
+#: src/nmcli/general.c:445
 msgid ""
 "Usage: nmcli radio all { ARGUMENTS | help }\n"
 "\n"
@@ -11709,7 +12415,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:448
+#: src/nmcli/general.c:455
 msgid ""
 "Usage: nmcli radio wifi { ARGUMENTS | help }\n"
 "\n"
@@ -11719,7 +12425,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:458
+#: src/nmcli/general.c:465
 msgid ""
 "Usage: nmcli radio wwan { ARGUMENTS | help }\n"
 "\n"
@@ -11729,7 +12435,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:468
+#: src/nmcli/general.c:475
 msgid ""
 "Usage: nmcli monitor\n"
 "\n"
@@ -11738,231 +12444,232 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/general.c:498
+#: src/nmcli/general.c:505
 msgid "NetworkManager status"
 msgstr "NetworkManager-ის სტატუსი"
 
-#: src/nmcli/general.c:503
+#: src/nmcli/general.c:510
 #, c-format
 msgid "Error: only these fields are allowed: %s"
 msgstr ""
 
 #. NetworkManager quit while we were waiting.
-#: src/nmcli/general.c:555 src/nmtui/nmtui.c:243
+#: src/nmcli/general.c:562 src/nmtui/nmtui.c:243
+#, c-format
 msgid "NetworkManager is not running."
 msgstr "NetworkManager-ი გაშვებული არაა."
 
-#: src/nmcli/general.c:577
+#: src/nmcli/general.c:584
 msgid "NetworkManager permissions"
 msgstr "NetworkManager-ის წვდომები"
 
-#: src/nmcli/general.c:581
+#: src/nmcli/general.c:588
 #, c-format
 msgid "Error: 'general permissions': %s"
 msgstr "შეცდომა: 'general permissions': %s"
 
-#: src/nmcli/general.c:628
+#: src/nmcli/general.c:635
 #, c-format
 msgid "Error: failed to reload: %s"
 msgstr "შეცდომა: გადატვირთვის შეცდომა: %s"
 
-#: src/nmcli/general.c:669
+#: src/nmcli/general.c:676
 #, c-format
 msgid "Error: invalid reload flag '%s'. Allowed flags are: %s"
 msgstr ""
 
-#: src/nmcli/general.c:680
+#: src/nmcli/general.c:687
 #, c-format
 msgid "Error: extra argument '%s'"
-msgstr ""
+msgstr "შეცდომა: დამატებითი არგუმენტი '%s'"
 
-#: src/nmcli/general.c:731
+#: src/nmcli/general.c:738
 msgid "NetworkManager logging"
 msgstr "NetworkManager-ის ჟურნალი"
 
-#: src/nmcli/general.c:735
+#: src/nmcli/general.c:742
 #, c-format
 msgid "Error: 'general logging': %s"
-msgstr ""
+msgstr "შეცდომა: 'general logging': %s"
 
-#: src/nmcli/general.c:768
+#: src/nmcli/general.c:775
 #, c-format
 msgid "Error: failed to set logging: %s"
-msgstr ""
+msgstr "შეცდომა: ჩავარდა ჟურნალის დაყენება: %s"
 
-#: src/nmcli/general.c:901
+#: src/nmcli/general.c:908
 #, c-format
 msgid "Error: failed to set hostname: %s"
-msgstr ""
+msgstr "შეცდომა: ჩავარდა ჰოსტის სახელის დაყენება: %s"
 
-#: src/nmcli/general.c:962
+#: src/nmcli/general.c:969
 #, c-format
 msgid "Error: '--fields' value '%s' is not valid here (allowed field: %s)"
 msgstr ""
 
-#: src/nmcli/general.c:989
+#: src/nmcli/general.c:996
 #, c-format
 msgid "Error: invalid '%s' argument: '%s' (use on/off)."
 msgstr ""
 
-#: src/nmcli/general.c:1015
+#: src/nmcli/general.c:1022
 #, c-format
 msgid "Error: failed to set networking: %s"
 msgstr "შეცდომა: ქსელის აწყობის შეცდომა: %s"
 
 #. no arguments -> get current state
-#: src/nmcli/general.c:1060 src/nmcli/general.c:1072
+#: src/nmcli/general.c:1067 src/nmcli/general.c:1079
 msgid "Connectivity"
 msgstr "დაკავშირება"
 
-#: src/nmcli/general.c:1076
+#: src/nmcli/general.c:1083
 #, c-format
 msgid "Error: 'networking' command '%s' is not valid."
 msgstr ""
 
-#: src/nmcli/general.c:1089
+#: src/nmcli/general.c:1096
 msgid "Networking"
 msgstr "ქსელი"
 
 #. no argument, show all radio switches
-#: src/nmcli/general.c:1117
+#: src/nmcli/general.c:1124
 msgid "Radio switches"
-msgstr ""
+msgstr "რადიოს გადამრთველები"
 
-#: src/nmcli/general.c:1143
+#: src/nmcli/general.c:1150
 #, c-format
 msgid "Error: failed to set Wi-Fi radio: %s"
 msgstr "შეცდომა: Wi-Fi-ის რადიოს დაყენების შეცდომა: %s"
 
 #. no argument, show current Wi-Fi state
-#: src/nmcli/general.c:1161
+#: src/nmcli/general.c:1168
 msgid "Wi-Fi radio switch"
 msgstr "Wi-Fi რადიოს გადამრთველი"
 
 #. no argument, show current WWAN (mobile broadband) state
-#: src/nmcli/general.c:1197
+#: src/nmcli/general.c:1204
 msgid "WWAN radio switch"
 msgstr "WWAN რადიოს გადამრთველი"
 
-#: src/nmcli/general.c:1237
+#: src/nmcli/general.c:1244
 msgid "NetworkManager is running"
 msgstr "NetworkManager-ი გაშვებულია"
 
-#: src/nmcli/general.c:1237
+#: src/nmcli/general.c:1244
 msgid "NetworkManager is stopped"
 msgstr "NetworkManager-ი შეჩერებულია"
 
-#: src/nmcli/general.c:1248
+#: src/nmcli/general.c:1255
 #, c-format
 msgid "Hostname set to '%s'\n"
-msgstr ""
+msgstr "ჰოსტის სახელი დაყენებულია მნიშვნელობაზე '%s'\n"
 
-#: src/nmcli/general.c:1263
+#: src/nmcli/general.c:1270
 #, c-format
 msgid "'%s' is now the primary connection\n"
-msgstr ""
+msgstr "'%s' ახლა ძირითადი მიერთებაა\n"
 
-#: src/nmcli/general.c:1265
+#: src/nmcli/general.c:1272
 msgid "There's no primary connection\n"
 msgstr "ძირითადი შეერთება არ არსებობს\n"
 
-#: src/nmcli/general.c:1278
+#: src/nmcli/general.c:1285
 #, c-format
 msgid "Connectivity is now '%s'\n"
 msgstr ""
 
-#: src/nmcli/general.c:1293
+#: src/nmcli/general.c:1300
 #, c-format
 msgid "Networkmanager is now in the '%s' state\n"
 msgstr "NetworkManager-ის მიმდინარე მდგომარეობაა: %s\n"
 
-#: src/nmcli/general.c:1314
+#: src/nmcli/general.c:1321
 msgid "connection available"
 msgstr "კავშირი ხელმისაწვდომია"
 
-#: src/nmcli/general.c:1316
+#: src/nmcli/general.c:1323
 msgid "connections available"
 msgstr "კავშირები ხელმისაწვდომია"
 
-#: src/nmcli/general.c:1332
+#: src/nmcli/general.c:1339
 msgid "autoconnect"
 msgstr "ავტომატური შეერთება"
 
-#: src/nmcli/general.c:1335
+#: src/nmcli/general.c:1342
 msgid "fw missing"
 msgstr "fw აკლია"
 
-#: src/nmcli/general.c:1342
+#: src/nmcli/general.c:1349
 msgid "plugin missing"
 msgstr "დამატება აკლია"
 
-#: src/nmcli/general.c:1352 src/nmcli/general.c:1367
+#: src/nmcli/general.c:1359 src/nmcli/general.c:1374
 msgid "sw disabled"
 msgstr "პრგ გამორთულია"
 
-#: src/nmcli/general.c:1357 src/nmcli/general.c:1373
+#: src/nmcli/general.c:1364 src/nmcli/general.c:1380
 msgid "hw disabled"
 msgstr "აპრ გამორთულია"
 
-#: src/nmcli/general.c:1385
+#: src/nmcli/general.c:1392
 msgid "sw"
 msgstr "sw"
 
-#: src/nmcli/general.c:1387
+#: src/nmcli/general.c:1394
 msgid "hw"
 msgstr "hw"
 
-#: src/nmcli/general.c:1389
+#: src/nmcli/general.c:1396
 msgid "sriov"
 msgstr "sriov"
 
-#: src/nmcli/general.c:1392
+#: src/nmcli/general.c:1399
 msgid "iface"
 msgstr "iface"
 
-#: src/nmcli/general.c:1397
+#: src/nmcli/general.c:1404
 msgid "port"
 msgstr "პორტი"
 
-#: src/nmcli/general.c:1401
+#: src/nmcli/general.c:1408
 msgid "mtu"
 msgstr "mtu"
 
-#: src/nmcli/general.c:1421
-msgid "master"
-msgstr "master"
+#: src/nmcli/general.c:1429
+msgid "controller"
+msgstr "კონტროლერი"
 
-#: src/nmcli/general.c:1425 src/nmtui/nm-editor-utils.c:255
-#: src/nmtui/nmt-connect-connection-list.c:392
+#: src/nmcli/general.c:1433 src/nmtui/nm-editor-utils.c:255
+#: src/nmtui/nmt-connect-connection-list.c:393
 msgid "VPN"
 msgstr "VPN"
 
-#: src/nmcli/general.c:1427
+#: src/nmcli/general.c:1435
 msgid "ip4 default"
 msgstr "ნაგულისხმები ip4"
 
-#: src/nmcli/general.c:1429
+#: src/nmcli/general.c:1437
 msgid "ip6 default"
 msgstr "ip6 ნაგულისხმები"
 
-#: src/nmcli/general.c:1511
+#: src/nmcli/general.c:1520
 #, c-format
 msgid "%s VPN connection"
 msgstr "%s VPN შეერთება"
 
-#: src/nmcli/general.c:1532
+#: src/nmcli/general.c:1541
 #, c-format
 msgctxt "nmcli-overview"
 msgid "%s: %s to %s"
 msgstr "%s: %s-დან %s-მდე"
 
-#: src/nmcli/general.c:1541
+#: src/nmcli/general.c:1550
 #, c-format
 msgctxt "nmcli-overview"
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/nmcli/general.c:1592
+#: src/nmcli/general.c:1601
 msgid ""
 "Use \"nmcli device show\" to get complete information about known devices "
 "and\n"
@@ -11972,12 +12679,12 @@ msgid ""
 "details.\n"
 msgstr ""
 
-#: src/nmcli/general.c:1609
+#: src/nmcli/general.c:1618
 #, c-format
 msgid "Error: 'monitor' command '%s' is not valid."
 msgstr ""
 
-#: src/nmcli/nmcli.c:243
+#: src/nmcli/nmcli.c:246
 msgid ""
 "Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }\n"
 "\n"
@@ -12009,73 +12716,77 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/nmcli/nmcli.c:315
+#: src/nmcli/nmcli.c:318
 #, c-format
 msgid "Error: missing argument for '%s' option."
 msgstr ""
 
-#: src/nmcli/nmcli.c:630
+#: src/nmcli/nmcli.c:635
 #, c-format
 msgid "Unexpected end of file following '%s'\n"
 msgstr ""
 
-#: src/nmcli/nmcli.c:637
+#: src/nmcli/nmcli.c:642
 #, c-format
 msgid "Expected whitespace following '%s'\n"
 msgstr ""
 
-#: src/nmcli/nmcli.c:648
+#: src/nmcli/nmcli.c:653
 #, c-format
 msgid "Expected a value for '%s'\n"
-msgstr ""
+msgstr "მოველოდი მნიშვნელობას '%s'-სთვის\n"
 
-#: src/nmcli/nmcli.c:664
+#: src/nmcli/nmcli.c:669
 #, c-format
 msgid "Expected a line break following '%s'\n"
 msgstr ""
 
-#: src/nmcli/nmcli.c:792
+#: src/nmcli/nmcli.c:797
+#, c-format
 msgid "Error: Option '--terse' is specified the second time."
 msgstr ""
 
-#: src/nmcli/nmcli.c:798
+#: src/nmcli/nmcli.c:803
+#, c-format
 msgid "Error: Option '--terse' is mutually exclusive with '--pretty'."
 msgstr ""
 
-#: src/nmcli/nmcli.c:806
+#: src/nmcli/nmcli.c:811
+#, c-format
 msgid "Error: Option '--pretty' is specified the second time."
 msgstr ""
 
-#: src/nmcli/nmcli.c:812
+#: src/nmcli/nmcli.c:817
+#, c-format
 msgid "Error: Option '--pretty' is mutually exclusive with '--terse'."
 msgstr ""
 
-#: src/nmcli/nmcli.c:827
+#: src/nmcli/nmcli.c:832
 #, c-format
 msgid "Error: '%s' is not a valid argument for '%s' option."
 msgstr ""
 
-#: src/nmcli/nmcli.c:844 src/nmcli/nmcli.c:859
+#: src/nmcli/nmcli.c:849 src/nmcli/nmcli.c:864
 #, c-format
 msgid "Error: '%s' is not valid argument for '%s' option."
 msgstr ""
 
-#: src/nmcli/nmcli.c:892
+#: src/nmcli/nmcli.c:897
 #, c-format
 msgid "nmcli tool, version %s\n"
 msgstr "nmcli, ვერსია %s\n"
 
-#: src/nmcli/nmcli.c:901
+#: src/nmcli/nmcli.c:906
 #, c-format
 msgid "Error: Option '%s' is unknown, try 'nmcli -help'."
 msgstr ""
 
-#: src/nmcli/nmcli.c:959 src/nmcli/nmcli.c:968
+#: src/nmcli/nmcli.c:964 src/nmcli/nmcli.c:973
 #, c-format
 msgid "Error: nmcli terminated by signal %s (%d)"
 msgstr ""
 
-#: src/nmcli/nmcli.c:1035
+#: src/nmcli/nmcli.c:1040
 msgid "Success"
 msgstr "წარმატება"
 
@@ -12097,7 +12808,7 @@ msgstr ""
 #: src/nmcli/settings.c:34
 #, c-format
 msgid "Do you also want to clear '%s'? [yes]: "
-msgstr ""
+msgstr "გნებავთ, ასევე გაასუფთავოთ '%s'? [დიახ]: "
 
 #: src/nmcli/settings.c:249
 #, c-format
@@ -12112,7 +12823,7 @@ msgstr ""
 
 #: src/nmcli/settings.c:272
 msgid "Do you want to remove them? [yes] "
-msgstr ""
+msgstr "მართლა გნებავთ, წაშალოთ ისინი? [დიახ] "
 
 #: src/nmcli/settings.c:379
 #, c-format
@@ -12139,19 +12850,19 @@ msgstr "გაფრთხილება: %s\n"
 msgid "Info: %s\n"
 msgstr "ინფორმაცია: %s\n"
 
-#: src/nmcli/settings.c:549
+#: src/nmcli/settings.c:551
 msgid "don't know how to get the property value"
 msgstr ""
 
-#: src/nmcli/settings.c:642
+#: src/nmcli/settings.c:647
 msgid "the property can't be changed"
 msgstr ""
 
-#: src/nmcli/settings.c:720
+#: src/nmcli/settings.c:733
 msgid "[NM property description]"
 msgstr ""
 
-#: src/nmcli/settings.c:730
+#: src/nmcli/settings.c:743
 msgid "[nmcli specific description]"
 msgstr ""
 
@@ -12163,47 +12874,55 @@ msgstr ""
 #: src/nmcli/utils.c:315
 #, c-format
 msgid "Error: Unexpected argument '%s'"
-msgstr ""
+msgstr "შეცდომა: მოულოდნელი არგუმენტი '%s'"
 
 #: src/nmcli/utils.c:702
 #, c-format
 msgid "invalid field '%s%s%s'; no such field"
-msgstr ""
+msgstr "არასწორი ველი '%s%s%s'; ასეთი ველი არ არსებობს"
 
 #: src/nmcli/utils.c:710
 #, c-format
 msgid "invalid field '%s%s%s'; allowed fields: [%s]"
-msgstr ""
+msgstr "არასწორი ველი '%s%s%s'; დაშვებული ველებია: [%s]"
 
 #: src/nmcli/utils.c:806
+#, c-format
 msgid "failure to select field"
-msgstr ""
+msgstr "ველის არჩევის ჩავარდნა"
 
-#: src/nmcli/utils.c:1461
+#: src/nmcli/utils.c:1472
 #, c-format
 msgid "Failed to create pager pipe: %s\n"
 msgstr ""
 
-#: src/nmcli/utils.c:1475
+#: src/nmcli/utils.c:1486
 #, c-format
 msgid "Failed to fork pager: %s\n"
 msgstr ""
 
-#: src/nmcli/utils.c:1519 src/nmcli/utils.c:1523
+#: src/nmcli/utils.c:1530 src/nmcli/utils.c:1534
 #, c-format
 msgid "Failed to duplicate pager pipe: %s\n"
 msgstr ""
 
-#: src/nmcli/utils.h:307
+#: src/nmcli/utils.c:1849
+#, c-format
+msgid ""
+"Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Restarting "
+"NetworkManager is advised.\n"
+msgstr ""
+
+#: src/nmcli/utils.h:311
 msgid "(unknown)"
 msgstr "(უცნობია)"
 
-#: src/nmcli/utils.h:347
+#: src/nmcli/utils.h:351
 #, c-format
 msgid "%lld (%s)"
 msgstr "%lld (%s)"
 
-#: src/nmcli/utils.h:354
+#: src/nmcli/utils.h:358
 #, c-format
 msgid "%lld - %s"
 msgstr "%lld - %s"
@@ -12286,104 +13005,149 @@ msgstr "VPN-შეერთება %d"
 msgid "WireGuard connection %d"
 msgstr "WireGuard-ის შეერთება %d"
 
-#: src/nmtui/nmt-8021x-fields.c:212 src/nmtui/nmt-8021x-fields.c:397
+#: src/nmtui/nmt-8021x-fields.c:209 src/nmtui/nmt-8021x-fields.c:214
+msgid "Default"
+msgstr "ნაგულისხმევი"
+
+#: src/nmtui/nmt-8021x-fields.c:210 src/nmtui/nmt-8021x-fields.c:215
+msgid "Disable"
+msgstr "გამორთვა"
+
+#: src/nmtui/nmt-8021x-fields.c:211
+msgid "Enable"
+msgstr "ჩართვა"
+
+#: src/nmtui/nmt-8021x-fields.c:302
+msgid "TLS 1.0"
+msgstr "TLS 1.0"
+
+#: src/nmtui/nmt-8021x-fields.c:303
+msgid "TLS 1.1"
+msgstr "TLS 1.1"
+
+#: src/nmtui/nmt-8021x-fields.c:304
+msgid "TLS 1.2"
+msgstr "TLS 1.2"
+
+#: src/nmtui/nmt-8021x-fields.c:305
+msgid "TLS 1.3"
+msgstr "TLS 1.3"
+
+#: src/nmtui/nmt-8021x-fields.c:307
+msgid "Disable time checks"
+msgstr "დროის შემოწმების გამორთვა"
+
+#: src/nmtui/nmt-8021x-fields.c:318
+msgid "Show expert TLS options"
+msgstr "TLS-ის დამატებითი პარამეტრების ჩვენება"
+
+#: src/nmtui/nmt-8021x-fields.c:331
+#| msgid "duplicate setting name"
+msgid "Wpa_supplicant settings:"
+msgstr "Wpa_supplicant-ის პარამეტრები:"
+
+#: src/nmtui/nmt-8021x-fields.c:333
+msgid "Cipher string"
+msgstr "შიფრის სტრიქონი"
+
+#: src/nmtui/nmt-8021x-fields.c:373 src/nmtui/nmt-8021x-fields.c:562
 msgid "Domain"
 msgstr "დომენი"
 
-#: src/nmtui/nmt-8021x-fields.c:220 src/nmtui/nmt-8021x-fields.c:309
-#: src/nmtui/nmt-8021x-fields.c:405
+#: src/nmtui/nmt-8021x-fields.c:381 src/nmtui/nmt-8021x-fields.c:472
+#: src/nmtui/nmt-8021x-fields.c:570
 msgid "CA cert"
 msgstr "CA სერტიფიკატი"
 
-#: src/nmtui/nmt-8021x-fields.c:240 src/nmtui/nmt-8021x-fields.c:329
-#: src/nmtui/nmt-8021x-fields.c:425
+#: src/nmtui/nmt-8021x-fields.c:401 src/nmtui/nmt-8021x-fields.c:492
+#: src/nmtui/nmt-8021x-fields.c:590
 msgid "CA cert password"
 msgstr "CA სერტიფიკატის პაროლი"
 
-#: src/nmtui/nmt-8021x-fields.c:243
+#: src/nmtui/nmt-8021x-fields.c:404
 msgid "User cert"
 msgstr "მომხმარებლის სერტიფიკატი"
 
-#: src/nmtui/nmt-8021x-fields.c:263
+#: src/nmtui/nmt-8021x-fields.c:424
 msgid "User cert password"
 msgstr "მომხმარებლის სერტიფიკატის პაროლი"
 
-#: src/nmtui/nmt-8021x-fields.c:266
+#: src/nmtui/nmt-8021x-fields.c:427
 msgid "User private key"
 msgstr "მომხმარებლის პირადი გასაღები"
 
-#: src/nmtui/nmt-8021x-fields.c:284
+#: src/nmtui/nmt-8021x-fields.c:445
 msgid "User privkey password"
 msgstr "მომხმარებლის პირადი გასაღების პაროლი"
 
-#: src/nmtui/nmt-8021x-fields.c:291 src/nmtui/nmt-page-ppp.c:141
+#: src/nmtui/nmt-8021x-fields.c:454 src/nmtui/nmt-page-ppp.c:141
 msgid "PAP"
 msgstr "PAP"
 
-#: src/nmtui/nmt-8021x-fields.c:292 src/nmtui/nmt-page-ppp.c:168
+#: src/nmtui/nmt-8021x-fields.c:455 src/nmtui/nmt-page-ppp.c:168
 msgid "MSCHAP"
 msgstr "MSCHAP"
 
-#: src/nmtui/nmt-8021x-fields.c:293 src/nmtui/nmt-8021x-fields.c:384
+#: src/nmtui/nmt-8021x-fields.c:456 src/nmtui/nmt-8021x-fields.c:549
 #: src/nmtui/nmt-page-ppp.c:159
 msgid "MSCHAPv2"
 msgstr "MSCHAPv2"
 
-#: src/nmtui/nmt-8021x-fields.c:294
+#: src/nmtui/nmt-8021x-fields.c:457
 msgid "MSCHAPv2 (no EAP)"
 msgstr "MSCHAPv2 (არა- EAP)"
 
-#: src/nmtui/nmt-8021x-fields.c:295 src/nmtui/nmt-page-ppp.c:150
+#: src/nmtui/nmt-8021x-fields.c:458 src/nmtui/nmt-page-ppp.c:150
 msgid "CHAP"
 msgstr "CHAP"
 
-#: src/nmtui/nmt-8021x-fields.c:296 src/nmtui/nmt-8021x-fields.c:385
-#: src/nmtui/nmt-8021x-fields.c:489
+#: src/nmtui/nmt-8021x-fields.c:459 src/nmtui/nmt-8021x-fields.c:550
+#: src/nmtui/nmt-8021x-fields.c:656
 msgid "MD5"
 msgstr "MD5"
 
-#: src/nmtui/nmt-8021x-fields.c:297 src/nmtui/nmt-8021x-fields.c:386
+#: src/nmtui/nmt-8021x-fields.c:460 src/nmtui/nmt-8021x-fields.c:551
 msgid "GTC"
 msgstr "GTC"
 
-#: src/nmtui/nmt-8021x-fields.c:301 src/nmtui/nmt-8021x-fields.c:390
+#: src/nmtui/nmt-8021x-fields.c:464 src/nmtui/nmt-8021x-fields.c:555
 msgid "Anonymous identity"
 msgstr "ანონიმური იდენტიფიკაცია"
 
-#: src/nmtui/nmt-8021x-fields.c:345 src/nmtui/nmt-8021x-fields.c:449
+#: src/nmtui/nmt-8021x-fields.c:508 src/nmtui/nmt-8021x-fields.c:614
 msgid "Inner authentication"
 msgstr "შიდა ავთენტიკაცია"
 
-#: src/nmtui/nmt-8021x-fields.c:380 src/nmtui/nmt-page-ip4.c:28
+#: src/nmtui/nmt-8021x-fields.c:545 src/nmtui/nmt-page-ip4.c:28
 #: src/nmtui/nmt-page-ip6.c:28
 msgid "Automatic"
 msgstr "ავტომატური"
 
-#: src/nmtui/nmt-8021x-fields.c:381
+#: src/nmtui/nmt-8021x-fields.c:546
 msgid "Version 0"
 msgstr "ვერსია 0"
 
-#: src/nmtui/nmt-8021x-fields.c:382
+#: src/nmtui/nmt-8021x-fields.c:547
 msgid "Version 1"
 msgstr "ვერსია 1"
 
-#: src/nmtui/nmt-8021x-fields.c:433
+#: src/nmtui/nmt-8021x-fields.c:598
 msgid "PEAP version"
 msgstr "PEAP ვერსია"
 
-#: src/nmtui/nmt-8021x-fields.c:495
+#: src/nmtui/nmt-8021x-fields.c:662
 msgid "PWD"
 msgstr "PWD"
 
-#: src/nmtui/nmt-8021x-fields.c:500
+#: src/nmtui/nmt-8021x-fields.c:667
 msgid "TLS"
 msgstr "TLS"
 
-#: src/nmtui/nmt-8021x-fields.c:505
+#: src/nmtui/nmt-8021x-fields.c:672
 msgid "TTLS"
 msgstr "TTLS"
 
-#: src/nmtui/nmt-8021x-fields.c:511
+#: src/nmtui/nmt-8021x-fields.c:678
 msgid "PEAP"
 msgstr "PEAP"
 
@@ -12415,52 +13179,52 @@ msgstr "დამალვა"
 msgid "Show"
 msgstr "ჩვენება"
 
-#: src/nmtui/nmt-editor.c:91
+#: src/nmtui/nmt-editor.c:92
 #, c-format
 msgid "Could not create editor for connection '%s' of type '%s'."
 msgstr "რედაქტორის შექმნის შეცდომა შეერთებისთვის %s, რომლის ტიპია %s."
 
-#: src/nmtui/nmt-editor.c:95
+#: src/nmtui/nmt-editor.c:96
 #, c-format
 msgid "Could not create editor for invalid connection '%s'."
 msgstr ""
 
-#: src/nmtui/nmt-editor.c:108
+#: src/nmtui/nmt-editor.c:109
 msgid "Edit Connection"
 msgstr "შეერთების ჩასწორება"
 
-#: src/nmtui/nmt-editor.c:166
+#: src/nmtui/nmt-editor.c:167
 #, c-format
 msgid "Unable to save connection: %s"
 msgstr "შეერთების შენახვის შეცდომა: %s"
 
-#: src/nmtui/nmt-editor.c:183
+#: src/nmtui/nmt-editor.c:184
 #, c-format
 msgid "Unable to add new connection: %s"
 msgstr "ახალი შეერთების დამატების შეცდომა: %s"
 
-#: src/nmtui/nmt-editor.c:332
+#: src/nmtui/nmt-editor.c:333
 msgid "Profile name"
 msgstr "პროფილის სახელი"
 
-#: src/nmtui/nmt-editor.c:343
+#: src/nmtui/nmt-editor.c:344
 msgid "Ethernet device"
 msgstr "Ethernet მოწყობილობა"
 
-#: src/nmtui/nmt-editor.c:345
+#: src/nmtui/nmt-editor.c:346
 msgid "Device"
 msgstr "მოწყობილობა"
 
 #. And finally the bottom widgets
-#: src/nmtui/nmt-editor.c:413
+#: src/nmtui/nmt-editor.c:416
 msgid "Automatically connect"
 msgstr "ავტომატური მიერთება"
 
-#: src/nmtui/nmt-editor.c:421
+#: src/nmtui/nmt-editor.c:424
 msgid "Available to all users"
 msgstr "ხელმისაწვდომია ყველა მომხმარებლისთვის"
 
-#: src/nmtui/nmt-editor.c:439 src/nmtui/nmt-password-dialog.c:160
+#: src/nmtui/nmt-editor.c:442 src/nmtui/nmt-password-dialog.c:160
 #: src/nmtui/nmt-route-editor.c:97 src/nmtui/nmt-wireguard-peer-editor.c:146
 #: src/nmtui/nmtui-edit.c:199 src/nmtui/nmtui-edit.c:510
 #: src/nmtui/nmtui-hostname.c:51
@@ -12522,8 +13286,8 @@ msgstr "ბმა"
 
 #: src/nmtui/nmt-page-bond.c:346 src/nmtui/nmt-page-bridge.c:63
 #: src/nmtui/nmt-page-team.c:126
-msgid "Slaves"
-msgstr "დამხმარეები"
+msgid "Ports"
+msgstr "პორტები"
 
 #: src/nmtui/nmt-page-bond.c:356 src/nmtui/nmt-page-ip-tunnel.c:128
 #: src/nmtui/nmt-page-macsec.c:113 src/nmtui/nmt-page-wifi.c:224
@@ -12561,7 +13325,8 @@ msgid "ARP targets"
 msgstr "ARP სამიზნეები"
 
 #: src/nmtui/nmt-page-bond.c:404 src/nmtui/nmt-page-ethernet.c:116
-#: src/nmtui/nmt-page-vlan.c:92 src/nmtui/nmt-page-wifi.c:387
+#: src/nmtui/nmt-page-veth.c:72 src/nmtui/nmt-page-vlan.c:92
+#: src/nmtui/nmt-page-wifi.c:387
 msgid "Cloned MAC address"
 msgstr "კლონირებული MAC მისამართი"
 
@@ -12598,7 +13363,7 @@ msgstr "დაბერების დრო"
 msgid "Enable STP (Spanning Tree Protocol)"
 msgstr "STP-ის ჩართვა"
 
-#: src/nmtui/nmt-page-ethernet.c:107
+#: src/nmtui/nmt-page-ethernet.c:107 src/nmtui/nmt-page-veth.c:63
 msgid "ETHERNET"
 msgstr "Ethernet"
 
@@ -12609,7 +13374,7 @@ msgstr "802.1X უსაფრთხოება"
 
 #: src/nmtui/nmt-page-ethernet.c:131
 msgid "Enable 802.1X security"
-msgstr ""
+msgstr "802.1X უსაფრთხოების ჩართვა"
 
 #: src/nmtui/nmt-page-infiniband.c:35
 msgid "Datagram"
@@ -12751,7 +13516,7 @@ msgstr ""
 
 #: src/nmtui/nmt-page-ip4.c:193
 msgid "Require IPv4 addressing for this connection"
-msgstr ""
+msgstr "IPv4-ის მისამართის მოთხოვნა ამ კავშირისთვის"
 
 #: src/nmtui/nmt-page-ip6.c:27
 msgid "Ignore"
@@ -12767,7 +13532,7 @@ msgstr "IPv6 მორგება"
 
 #: src/nmtui/nmt-page-ip6.c:192
 msgid "Require IPv6 addressing for this connection"
-msgstr ""
+msgstr "IPv6-ის მისამართის მოთხოვნა ამ კავშირისთვის"
 
 #: src/nmtui/nmt-page-macsec.c:67
 msgid "PSK"
@@ -12853,6 +13618,10 @@ msgstr "JSON კონფიგურაცია"
 msgid "TEAM"
 msgstr "ჯგუფი"
 
+#: src/nmtui/nmt-page-veth.c:50
+msgid "VETH"
+msgstr "VETH"
+
 #: src/nmtui/nmt-page-vlan.c:82
 msgid "VLAN id"
 msgstr "Vlan ID"
@@ -12908,7 +13677,7 @@ msgstr "LEAP"
 
 #: src/nmtui/nmt-page-wifi.c:72
 msgid "Enhanced Open (OWE)"
-msgstr ""
+msgstr "დამატებითი გახსნა (OWE)"
 
 #: src/nmtui/nmt-page-wifi.c:73
 msgid "WEP 40/128-bit Key (Hex or ASCII)"
@@ -12998,11 +13767,11 @@ msgstr "პარტნიორები"
 
 #: src/nmtui/nmt-password-fields.c:136
 msgid "Store password for all users"
-msgstr ""
+msgstr "ყველა მომხმარებლის პაროლების დამახსოვრება"
 
 #: src/nmtui/nmt-password-fields.c:137
 msgid "Store password only for this user"
-msgstr ""
+msgstr "პაროლის, მხოლოდ, ამ მომხმარებლისთვის დამახსოვრება"
 
 #: src/nmtui/nmt-password-fields.c:138
 msgid "Ask password every time"
@@ -13012,6 +13781,10 @@ msgstr "პაროლის ყოველ ჯერზე მოთხოვ
 msgid "Show password"
 msgstr "პაროლის ჩვენება"
 
+#: src/nmtui/nmt-port-list.c:127
+msgid "Select the type of port connection you wish to add."
+msgstr "აირჩიეთ პორტის კავშირის ტიპი, რომლის დამატებაც გნებავთ."
+
 #: src/nmtui/nmt-route-table.c:169
 msgid "Destination"
 msgstr "დანიშნულება"
@@ -13032,10 +13805,6 @@ msgstr "მეტრიკა"
 msgid "No custom routes are defined."
 msgstr "რაუტები ხელით მითითებული არაა."
 
-#: src/nmtui/nmt-port-list.c:126
-msgid "Select the type of slave connection you wish to add."
-msgstr ""
-
 #: src/nmtui/nmt-widget-list.c:131
 msgid "Add..."
 msgstr "დამატება..."
@@ -13078,7 +13847,7 @@ msgstr ""
 #: src/nmtui/nmtui-connect.c:58
 #, c-format
 msgid "Error: openconnect failed: %s"
-msgstr ""
+msgstr "შეცდომა: openconnect ჩავარდა: %s"
 
 #: src/nmtui/nmtui-connect.c:108
 #, c-format
@@ -13132,7 +13901,7 @@ msgstr "შექმნა"
 
 #: src/nmtui/nmtui-edit.c:349
 msgid "Select the type of connection you wish to create."
-msgstr ""
+msgstr "აირჩიეთ კავშირის ტიპი, რომელიც გნებავთ, შექმნათ."
 
 #: src/nmtui/nmtui-edit.c:358
 msgid ""
@@ -13157,7 +13926,7 @@ msgstr "შეერთების (%s) წაშლის შეცდომ
 #: src/nmtui/nmtui-edit.c:512
 #, c-format
 msgid "Are you sure you want to delete the connection '%s'?"
-msgstr ""
+msgstr "მართლა გნებავთ, წაშალოთ კავშირი '%s'?"
 
 #: src/nmtui/nmtui-hostname.c:31
 msgid "Set Hostname"
@@ -13251,3 +14020,4 @@ msgstr "არგუმენტების დამუშავების 
 #, c-format
 msgid "Could not contact NetworkManager: %s.\n"
 msgstr "NetworkManager-თან დაკავშირების შეცდომა: %s.\n"
+
diff --git a/po/meson.build b/po/meson.build
index dddbe0f8..64c55f04 100644
--- a/po/meson.build
+++ b/po/meson.build
@@ -1,3 +1,8 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
 i18n.gettext(nm_name, preset: 'glib')
+
+test(
+    'check-potfile-list',
+    find_program(join_paths(source_root, 'src/tests/check-potfile-list.py'))
+)
\ No newline at end of file
diff --git a/po/sl.po b/po/sl.po
index 61f5b6ed..70af0203 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -12,8 +12,8 @@ msgstr ""
 "Project-Id-Version: NetworkManager\n"
 "Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/NetworkManager/"
 "NetworkManager/issues\n"
-"POT-Creation-Date: 2024-07-10 15:27+0000\n"
-"PO-Revision-Date: 2024-08-17 23:39+0200\n"
+"POT-Creation-Date: 2025-02-09 15:27+0000\n"
+"PO-Revision-Date: 2025-02-09 18:16+0100\n"
 "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
 "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
 "Language: sl\n"
@@ -35,15 +35,13 @@ msgstr ""
 "Sistemska določila preprečujejo omogočanje ali onemogočanje omrežnih povezav."
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:22
-#, fuzzy
 msgid "Reload NetworkManager configuration"
-msgstr "Izpiši različico programa NetworkManager in končaj"
+msgstr "Znova naloži prilagoditev za NetworkManager"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:23
-#, fuzzy
 msgid "System policy prevents reloading NetworkManager"
 msgstr ""
-"Sistemska določila preprečujejo omogočanje ali onemogočanje omrežnih povezav."
+"Sistemska pravila preprečujejo vnovično nalaganje programa NetworkManager"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:32
 msgid ""
@@ -98,15 +96,12 @@ msgid "System policy prevents control of network connections"
 msgstr "Sistemska določila preprečujejo nadzor omrežnih povezav"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:78
-#, fuzzy
 msgid "Allow control of Wi-Fi scans"
-msgstr "Dovoli nadzor omrežnih povezav"
+msgstr "Omogoči nadzorapregledov omrežja Wi-Fi"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:79
-#, fuzzy
 msgid "System policy prevents Wi-Fi scans"
-msgstr ""
-"Sistemska določila preprečujejo omogočanja ali onemogočanje Wi-Fi naprav"
+msgstr "Sistemska določila preprečujejo pregled omrežja Wi-Fi"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:88
 msgid "Connection sharing via a protected Wi-Fi network"
@@ -157,65 +152,59 @@ msgstr ""
 "Sistemska pravila preprečujejo spremembo imena gostitelja trajnega sistema"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:136
-#, fuzzy
 msgid "Modify persistent global DNS configuration"
-msgstr "Spreminjanje trajne globalne konfiguracije DNS"
+msgstr "Spremeni trajne splošnne nastavitve DNS"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:137
-#, fuzzy
 msgid ""
 "System policy prevents modification of the persistent global DNS "
 "configuration"
 msgstr ""
-"Sistemska pravila preprečujejo spremembo imena gostitelja trajnega sistema"
+"Sistemski pravilnik preprečuje spreminjanje vztrajne globalne prilagoditve "
+"DNS"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:146
-#, fuzzy
 msgid "Perform a checkpoint or rollback of interfaces configuration"
-msgstr "Izvedba kontrolne točke ali povrnitve konfiguracije vmesnikov"
+msgstr "Izvedite kontrolno točko ali povrnitev prilagoditve vmesnikov"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:147
-#, fuzzy
 msgid "System policy prevents the creation of a checkpoint or its rollback"
 msgstr ""
 "Sistemski pravilnik preprečuje ustvarjanje kontrolne točke ali njeno "
 "povrnitev"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:156
-#, fuzzy
 msgid "Enable or disable device statistics"
-msgstr "Omogočanje ali onemogočanje statističnih podatkov o napravah"
+msgstr "Omogoči ali onemogoči statistične podatke o napravah"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:157
-#, fuzzy
 msgid "System policy prevents enabling or disabling device statistics"
 msgstr ""
 "Sistemski pravilnik preprečuje omogočanje ali onemogočanje statističnih "
 "podatkov o napravah"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:165
-#, fuzzy
 msgid "Enable or disable connectivity checking"
-msgstr "Omogoči ali onemogoči sistemske omrežne povezave"
+msgstr "Omogoči ali onemogoči preverjanje povezljivosti"
 
 #: data/org.freedesktop.NetworkManager.policy.in.in:166
-#, fuzzy
 msgid "System policy prevents enabling or disabling connectivity checking"
 msgstr ""
-"Sistemska določila preprečujejo omogočanje ali onemogočanje omrežnih povezav."
+"Sistemska določila preprečujejo omogočanje ali onemogočanje preverjanj "
+"povezljivosti"
 
 #. TRANSLATORS: the first %s is a prefix for the connection id, such
 #. * as "Wired Connection" or "VPN Connection". The %d is a number
 #. * that is combined with the first argument to create a unique
 #. * connection id.
 #: src/core/NetworkManagerUtils.c:121
-#, fuzzy, c-format
+#, c-format
 msgctxt "connection id fallback"
 msgid "%s %u"
-msgstr "%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:8900
 msgid "ADSL connection"
 msgstr "Povezava ADSL"
 
@@ -246,31 +235,28 @@ msgid "PAN connection"
 msgstr "Povezava PAN"
 
 #: src/core/devices/bluetooth/nm-device-bt.c:358
-#, fuzzy
 msgid "DUN requested, but Bluetooth device does not support DUN"
-msgstr "DUN je zahteval, vendar naprava Bluetooth ne podpira DUN"
+msgstr "DUN je zahtevan, vendar naprava Bluetooth ne podpira DUN"
 
 #: src/core/devices/bluetooth/nm-device-bt.c:371
-#, fuzzy
 msgid "DUN connection must include a GSM or CDMA setting"
 msgstr "Povezava DUN mora vključevati nastavitev GSM ali 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 "Povezava 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 "Povezava CDMA"
 
 #: src/core/devices/bluetooth/nm-device-bt.c:392
-#, fuzzy
 msgid "Unknown/unhandled Bluetooth connection type"
 msgstr "Neznana/neobdelana vrsta povezave 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 "povezava se ne ujema z napravo"
 
@@ -279,19 +265,17 @@ msgid "6LOWPAN connection"
 msgstr "Povezava 6LOWPAN"
 
 #: src/core/devices/nm-device-bond.c:95
-#, fuzzy
 msgid "Bond connection"
-msgstr "Povezava vezi %d"
+msgstr "Povezava vezi"
 
-#: src/core/devices/nm-device-bridge.c:164
-#, fuzzy
+#: src/core/devices/nm-device-bridge.c:165
 msgid "Bridge connection"
-msgstr "Premosti povezavo %d"
+msgstr "Povezava mosta"
 
 #: src/core/devices/nm-device-dummy.c:56
 #, fuzzy
 msgid "Dummy connection"
-msgstr "Povezava ADSL %d"
+msgstr "Lažna povezava"
 
 #: src/core/devices/nm-device-ethernet-utils.c:20
 #, c-format
@@ -299,161 +283,139 @@ msgid "Wired connection %d"
 msgstr "Žična povezava %d"
 
 #: src/core/devices/nm-device-ethernet.c:1641
-#: src/libnmc-setting/nm-meta-setting-desc.c:8739
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8943
 msgid "Veth connection"
-msgstr "VPN povezovanje"
+msgstr "Povezava Veth"
 
-#: src/core/devices/nm-device-ethernet.c:1699
-#, fuzzy
+#: src/core/devices/nm-device-ethernet.c:1698
 msgid "PPPoE connection"
-msgstr "Povezava PPPoE %d"
+msgstr "Povezava PPPoE"
 
-#: src/core/devices/nm-device-ethernet.c:1699
-#, fuzzy
+#: src/core/devices/nm-device-ethernet.c:1698
 msgid "Wired connection"
-msgstr "Žična povezava %d"
+msgstr "Žična povezava"
 
 #: src/core/devices/nm-device-infiniband.c:160
-#: src/libnmc-setting/nm-meta-setting-desc.c:8712
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8915
 msgid "InfiniBand connection"
-msgstr "Povezava InfiniBand %d"
+msgstr "Povezava InfiniBand"
 
 #: src/core/devices/nm-device-ip-tunnel.c:403
 #, fuzzy
 msgid "IP tunnel connection"
-msgstr "Povezava IP-tunela %d"
+msgstr "Povezava IP-tunel %d"
 
 #: src/core/devices/nm-device-loopback.c:67
 #, fuzzy
 msgid "Loopback connection"
-msgstr "Povezava ADSL %d"
+msgstr "Povezava s povratno zanko"
 
-#: src/core/devices/nm-device-macvlan.c:366
-#, fuzzy
+#: src/core/devices/nm-device-macvlan.c:365
 msgid "MACVLAN connection"
-msgstr "Povezava VLAN %d"
+msgstr "Povezava MACVLAN"
 
 #: src/core/devices/nm-device-tun.c:144
-#, fuzzy
 msgid "TUN connection"
-msgstr "Povezava DUN %d"
+msgstr "Povezava TUN"
 
 #: src/core/devices/nm-device-vlan.c:380
-#: src/libnmc-setting/nm-meta-setting-desc.c:8740
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8944
 msgid "VLAN connection"
-msgstr "Povezava VLAN %d"
+msgstr "Povezava VLAN"
 
 #: src/core/devices/nm-device-vrf.c:185
-#: src/libnmc-setting/nm-meta-setting-desc.c:8742
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8946
 msgid "VRF connection"
-msgstr "VPN povezovanje"
+msgstr "Povezava VRF"
 
 #: src/core/devices/nm-device-vxlan.c:385
-#: src/libnmc-setting/nm-meta-setting-desc.c:8743
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8947
 msgid "VXLAN connection"
-msgstr "Povezava VLAN %d"
+msgstr "Povezava VXLAN"
 
 #: src/core/devices/nm-device-wpan.c:54
-#, fuzzy
 msgid "WPAN connection"
-msgstr "Povezava PAN %d"
+msgstr "Povezava WPAN"
 
 #: src/core/devices/team/nm-device-team.c:131
-#, fuzzy
 msgid "Team connection"
-msgstr "Povezava skupine %d"
+msgstr "Povezava skupine"
 
 #: src/core/devices/wifi/nm-device-olpc-mesh.c:112 src/nmcli/devices.c:1415
 msgid "Mesh"
 msgstr "Mreževina"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:34
-#, fuzzy, c-format
+#, c-format
 msgid "%s is incompatible with static WEP keys"
-msgstr "%s ni združljiv s statičnimi tipkami WEP"
+msgstr "%s ni združljiv s statičnimi ključi WEP"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:69
-#, fuzzy
 msgid "LEAP authentication requires a LEAP username"
 msgstr "Preverjanje pristnosti LEAP zahteva uporabniško ime LEAP"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:81
-#, fuzzy
 msgid "LEAP username requires 'leap' authentication"
 msgstr "Uporabniško ime LEAP zahteva preverjanje pristnosti »leap«"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:96
-#, fuzzy
 msgid "LEAP authentication requires IEEE 802.1x key management"
 msgstr "Preverjanje pristnosti LEAP zahteva upravljanje ključev IEEE 802.1x"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:118
-#, fuzzy
 msgid "LEAP authentication is incompatible with Ad-Hoc mode"
 msgstr "Preverjanje pristnosti LEAP ni združljivo z načinom Ad-Hoc"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:130
-#, fuzzy
 msgid "LEAP authentication is incompatible with 802.1x setting"
 msgstr "Preverjanje pristnosti LEAP ni združljivo z nastavitvijo 802.1x"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:150
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot use WPA key management"
 msgstr ""
 "povezava s preverjanjem pristnosti »%s« ne more uporabljati upravljanja "
 "ključev WPA"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:163
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify WPA protocols"
 msgstr ""
 "povezava s preverjanjem pristnosti »%s« ne more določiti protokolov WPA"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:181
 #: src/core/devices/wifi/nm-wifi-utils.c:200
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify WPA ciphers"
-msgstr "povezava s preverjanjem pristnosti »%s« ne more določiti šifr WPA"
+msgstr "povezava s preverjanjem pristnosti »%s« ne more določiti šifer WPA"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:214
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify a WPA password"
 msgstr "povezava s preverjanjem pristnosti »%s« ne more določiti gesla WPA"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:247
-#, fuzzy
 msgid "Dynamic WEP requires an 802.1x setting"
 msgstr "Za dinamični WEP potrebujete nastavitev 802.1x"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:257
 #: src/core/devices/wifi/nm-wifi-utils.c:289
-#, fuzzy
 msgid "Dynamic WEP requires 'open' authentication"
-msgstr "Dinamični WEP zahteva »odprto« preverjanje pristnosti"
+msgstr "Za dinamični WEP potrebujete »odprto« (»open«) preverjanje pristnosti"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:274
-#, fuzzy
 msgid "Dynamic WEP requires 'ieee8021x' key management"
-msgstr "Dinamični WEP zahteva upravljanje ključev »ieee8021x«"
+msgstr "Za dinamični WEP potrebujete upravljanje ključev »ieee8021x«"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:325
-#, fuzzy
 msgid "WPA-PSK authentication is incompatible with 802.1x"
-msgstr "Preverjanje pristnosti WPA-PSK ni združljivo s standardom 802.1x"
+msgstr "Preverjanje pristnosti WPA-PSK ni združljivo s 802.1x"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:335
-#, fuzzy
 msgid "WPA-PSK requires 'open' authentication"
-msgstr "WPA-PSK zahteva »odprto« preverjanje pristnosti"
+msgstr "Za WPA-PSK potrebujete »odprto« (»open«) preverjanje pristnosti"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:349
-#, fuzzy
 msgid "Access point does not support PSK but setting requires it"
 msgstr "Dostopna točka ne podpira PSK, vendar nastavitev to zahteva"
 
@@ -473,22 +435,18 @@ msgid "WPA Ad-Hoc requires 'ccmp' group cipher"
 msgstr "WPA Ad-Hoc zahteva skupinsko šifro »ccmp«"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:421
-#, fuzzy
 msgid "WPA-EAP authentication requires an 802.1x setting"
 msgstr "Preverjanje pristnosti WPA-EAP zahteva nastavitev 802.1x"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:431
-#, fuzzy
 msgid "WPA-EAP requires 'open' authentication"
 msgstr "WPA-EAP zahteva »odprto« preverjanje pristnosti"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:444
-#, fuzzy
 msgid "802.1x setting requires 'wpa-eap' key management"
-msgstr "Nastavitev 802.1x zahteva upravljanje ključev »WPA-EAP«"
+msgstr "Nastavitev 802.1x zahteva upravljanje ključev »wpa-eap«"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:458
-#, fuzzy
 msgid "Access point does not support 802.1x but setting requires it"
 msgstr ""
 "Dostopna točka ne podpira standarda 802.1x, vendar jo nastavitev zahteva"
@@ -521,10 +479,9 @@ msgstr "povezava se ne ujema z dostopno točko"
 #: src/core/devices/wifi/nm-wifi-utils.c:654
 #, fuzzy
 msgid "connection does not match mesh point"
-msgstr "ni dejavne povezave ali naprave"
+msgstr "povezava se ne ujema s točko mreže"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:673
-#, fuzzy
 msgid "Access point is unencrypted but setting specifies security"
 msgstr "Dostopna točka ni šifrirana, vendar nastavitev določa varnost"
 
@@ -534,11 +491,10 @@ msgid ""
 "WPA authentication is incompatible with non-EAP (original) LEAP or Dynamic "
 "WEP"
 msgstr ""
-"Preverjanje pristnosti WPA ni združljivo z LEAP ali dinamičnim WEP, ki ni "
-"EAP (izvirnik)"
+"Preverjanje pristnosti WPA ni združljivo z LEAP, ki ni EAP (izvirnik) ali "
+"dinamičnim WEP"
 
 #: src/core/devices/wifi/nm-wifi-utils.c:774
-#, fuzzy
 msgid "WPA authentication is incompatible with Shared Key authentication"
 msgstr ""
 "Preverjanje pristnosti WPA ni združljivo s preverjanjem pristnosti s ključem "
@@ -583,9 +539,9 @@ msgid "%s.  Please use --help to see a list of valid options.\n"
 msgstr "%s. Uporabite --help za prikaz seznam veljavnih možnosti.\n"
 
 #: src/core/main.c:164 src/core/main.c:379
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to read configuration: %s\n"
-msgstr "Branje nastavitev je spodletelo: (%d) %s\n"
+msgstr "Branje prilagoditev je spodletelo: %s\n"
 
 #: src/core/main.c:191
 msgid "Print NetworkManager version and exit"
@@ -601,9 +557,9 @@ msgid "Log level: one of [%s]"
 msgstr "Raven dnevnika: ena od [%s]"
 
 #: src/core/main.c:212
-#, fuzzy, c-format
+#, c-format
 msgid "Log domains separated by ',': any combination of [%s]"
-msgstr "Dnevniške domene, ločene z ',': katera koli kombinacija [%s]"
+msgstr "Beleži domene, ločene z »,«: poljubna kombinacija [%s]"
 
 #: src/core/main.c:219
 msgid "Make all warnings fatal"
@@ -614,9 +570,8 @@ msgid "Specify the location of a PID file"
 msgstr "Določite mesto datoteke PID"
 
 #: src/core/main.c:240
-#, fuzzy
 msgid "Print NetworkManager configuration and exit"
-msgstr "Izpiši različico programa NetworkManager in končaj"
+msgstr "Izpiši prilagoditev programa NetworkManager in končaj"
 
 #: src/core/main.c:251
 msgid ""
@@ -636,14 +591,14 @@ msgid "Could not daemonize: %s [error %u]\n"
 msgstr "Opravila ni mogoče pretvoriti za ozadnje delovanje: %s [napaka %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
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:2164
+#: src/libnmc-setting/nm-meta-setting-desc.c:4310
+#, c-format
 msgid "'%s' is not valid"
-msgstr "»%s« ni mogoče pretvoriti v veljaven NSURL."
+msgstr "»%s« ni veljavno"
 
 #: src/core/nm-config.c:566
-#, fuzzy, c-format
+#, c-format
 msgid "Bad '%s' option: "
 msgstr "Slaba možnost »%s«: "
 
@@ -652,9 +607,8 @@ msgid "Config file location"
 msgstr "Mesto datoteke nastavitev"
 
 #: src/core/nm-config.c:590
-#, fuzzy
 msgid "Config directory location"
-msgstr "Mesto datoteke nastavitev"
+msgstr "Mesto mape prilagoditev"
 
 #: src/core/nm-config.c:597
 #, fuzzy
@@ -702,51 +656,49 @@ msgid "The expected start of the response"
 msgstr "Pričakovan začetek odziva"
 
 #: src/core/nm-config.c:671
-#, fuzzy
 msgid "NetworkManager options"
-msgstr "Dovoljenja programa NetworkManager"
+msgstr "Možnosti programa NetworkManager"
 
 #: src/core/nm-config.c:672
-#, fuzzy
 msgid "Show NetworkManager options"
-msgstr "Dovoljenja programa NetworkManager"
+msgstr "Pokaži možnosti programa NetworkManager"
 
-#: src/core/nm-manager.c:6925 src/libnmc-setting/nm-meta-setting-desc.c:8741
+#: src/core/nm-manager.c:6986 src/libnmc-setting/nm-meta-setting-desc.c:8945
 msgid "VPN connection"
 msgstr "Povezava 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:196
 msgid "Bond"
 msgstr "Vez"
 
-#: 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:214
 msgid "Team"
 msgstr "Skupina"
 
-#: 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:205
 msgid "Bridge"
 msgstr "Most"
 
-#: src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9026
-#: src/libnm-core-impl/nm-team-utils.c:2391
+#: 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 "Neveljaven JSON"
 
-#: src/libnm-client-impl/nm-client.c:3816
-#, fuzzy, c-format
+#: src/libnm-client-impl/nm-client.c:3817
+#, c-format
 msgid "request succeeded with %s but object is in an unsuitable state"
-msgstr "Zahteva je uspela z %s vendar je predmet v neprimernem stanju"
+msgstr "Zahteva je uspela z %s, vendar je predmet v neprimernem stanju"
 
-#: src/libnm-client-impl/nm-client.c:3908
-#, fuzzy, c-format
+#: src/libnm-client-impl/nm-client.c:3909
+#, c-format
 msgid "operation succeeded but object %s does not exist"
-msgstr "Operacija je bila uspešna, vendar objekt %s ne obstaja"
+msgstr "Operacija je bila uspešna, vendar predmet %s ne obstaja"
 
 #: src/libnm-client-impl/nm-conn-utils.c:40
 #, fuzzy, c-format
@@ -754,16 +706,15 @@ msgid "Invalid peer starting at %s:%zu: %s"
 msgstr "neveljavno polje '%s'"
 
 #: src/libnm-client-impl/nm-conn-utils.c:171
-#, fuzzy
 msgid ""
 "The name of the WireGuard config must be a valid interface name followed by "
 "\".conf\""
 msgstr ""
-"Ime konfiguracije WireGuard mora biti veljavno ime vmesnika, ki mu sledi »."
-"conf«"
+"Ime prilagoditve WireGuard mora sestavljati veljavno ime vmesnika, ki mu "
+"sledi ».conf«"
 
 #: src/libnm-client-impl/nm-conn-utils.c:454
-#, fuzzy, c-format
+#, c-format
 msgid "unrecognized line at %s:%zu"
 msgstr "neprepoznana vrstica na %s:%zu"
 
@@ -778,48 +729,40 @@ msgid "invalid secret '%s' at %s:%zu"
 msgstr "Meveljavna skrivnost »%s« na %s:%zu"
 
 #: src/libnm-client-impl/nm-conn-utils.c:593
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to create WireGuard connection: %s"
-msgstr ""
-"Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
+msgstr "Ustvarjanje povezave WireGuard ni uspela: %s"
 
 #: src/libnm-client-impl/nm-device-adsl.c:66
-#, fuzzy
 msgid "The connection was not an ADSL connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava ADSL."
 
 #: src/libnm-client-impl/nm-device-bond.c:104
 #, fuzzy
 msgid "The connection was not a bond connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava z vezjo."
 
 #: src/libnm-client-impl/nm-device-bridge.c:108
-#, fuzzy
 msgid "The connection was not a bridge connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila mostna povezava."
 
 #: src/libnm-client-impl/nm-device-bt.c:133
-#, fuzzy
 msgid "The connection was not a Bluetooth connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava Bluetooth."
 
 #: src/libnm-client-impl/nm-device-bt.c:141
-#, fuzzy
 msgid "The connection is of Bluetooth NAP type."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava je vrste Bluetooth NAP."
 
 #: src/libnm-client-impl/nm-device-bt.c:152
-#, fuzzy
 msgid "Invalid device Bluetooth address."
-msgstr "Neveljaven naslov Bluetooth naprave."
+msgstr "Neveljaven naslov Bluetooth za napravo."
 
 #: src/libnm-client-impl/nm-device-bt.c:161
-#, fuzzy
 msgid "The Bluetooth addresses of the device and the connection didn't match."
 msgstr "Naslovi Bluetooth naprave in povezave se ne ujemajo."
 
 #: src/libnm-client-impl/nm-device-bt.c:173
-#, fuzzy
 msgid ""
 "The device is lacking Bluetooth capabilities required by the connection."
 msgstr "Naprava nima zmogljivosti Bluetooth, ki jih zahteva povezava."
@@ -835,17 +778,14 @@ msgstr "povezava je odstranjena"
 #: src/libnm-client-impl/nm-device-ovs-bridge.c:83
 #: src/libnm-client-impl/nm-device-ovs-interface.c:57
 #: src/libnm-client-impl/nm-device-ovs-port.c:83
-#, fuzzy
 msgid "The connection did not specify an interface name."
 msgstr "Povezava ni določila imena vmesnika."
 
 #: src/libnm-client-impl/nm-device-ethernet.c:189
-#, fuzzy
 msgid "The connection was not an Ethernet or PPPoE connection."
-msgstr "Povezava ni bila ethernetna ali PPPoE povezava."
+msgstr "Povezava ni bila povezava Ethernet ali PPPoE."
 
 #: src/libnm-client-impl/nm-device-ethernet.c:206
-#, fuzzy
 msgid "The connection and device differ in S390 subchannels."
 msgstr "Povezava in naprava se razlikujeta v podkanalih S390."
 
@@ -855,29 +795,26 @@ msgid "Invalid device MAC address %s."
 msgstr "Neveljaven naslov MAC naprave %s."
 
 #: src/libnm-client-impl/nm-device-ethernet.c:231
-#, fuzzy
 msgid "The MACs of the device and the connection do not match."
-msgstr "MAC-ji naprave in povezave se ne ujemata."
+msgstr "Številki MAC naprave in povezave se ne ujemata."
 
 #: src/libnm-client-impl/nm-device-ethernet.c:243
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid MAC in the blacklist: %s."
 msgstr "Neveljaven MAC na črnem seznamu: %s."
 
 #: src/libnm-client-impl/nm-device-ethernet.c:252
-#, fuzzy, c-format
+#, c-format
 msgid "Device MAC (%s) is blacklisted by the connection."
-msgstr "Naprava MAC (%s) je s povezavo na črni listi."
+msgstr "Naprava MAC (%s) je pri povezavi na črni listi."
 
 #: src/libnm-client-impl/nm-device-generic.c:80
-#, fuzzy
 msgid "The connection was not a generic connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila splošna povezava."
 
 #: src/libnm-client-impl/nm-device-infiniband.c:90
-#, fuzzy
 msgid "The connection was not an InfiniBand connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava InfiniBand."
 
 #: src/libnm-client-impl/nm-device-infiniband.c:100
 #: src/libnm-client-impl/nm-device-wifi.c:481
@@ -886,19 +823,18 @@ msgstr "Neveljaven naslov MAC naprave."
 
 #: src/libnm-client-impl/nm-device-infiniband.c:110
 #: src/libnm-client-impl/nm-device-wifi.c:490
-#, fuzzy
 msgid "The MACs of the device and the connection didn't match."
-msgstr "MAC-ji naprave in povezave se niso ujemali."
+msgstr "Kode MAC naprave in povezave se niso ujemale."
 
 #: src/libnm-client-impl/nm-device-ip-tunnel.c:285
 #, fuzzy
 msgid "The connection was not an IP tunnel connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava IP tunela."
 
 #: src/libnm-client-impl/nm-device-loopback.c:41
 #, fuzzy
 msgid "The connection was not a loopback connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povratna zanka."
 
 #: src/libnm-client-impl/nm-device-macvlan.c:151
 msgid "The connection was not a MAC-VLAN connection."
@@ -913,29 +849,24 @@ msgid "The connection was not a valid modem connection."
 msgstr "Povezava ni bila veljavna modemska povezava."
 
 #: src/libnm-client-impl/nm-device-modem.c:200
-#, fuzzy
 msgid "The device is lacking capabilities required by the connection."
 msgstr "Napravi primanjkuje zmogljivosti, ki jih zahteva povezava."
 
 #: src/libnm-client-impl/nm-device-olpc-mesh.c:103
-#, fuzzy
 msgid "The connection was not an OLPC Mesh connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava OLPC Mesh."
 
 #: src/libnm-client-impl/nm-device-ovs-bridge.c:74
-#, fuzzy
 msgid "The connection was not a ovs_bridge connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava ovs_bridge."
 
 #: src/libnm-client-impl/nm-device-ovs-interface.c:48
-#, fuzzy
 msgid "The connection was not a ovs_interface connection."
-msgstr "povezava je odstranjena"
+msgstr "Povezava ni bila povezava ovs_interface."
 
 #: src/libnm-client-impl/nm-device-ovs-port.c:74
-#, fuzzy
 msgid "The connection was not a ovs_port connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava ovs_port."
 
 #: src/libnm-client-impl/nm-device-team.c:124
 #, fuzzy
@@ -943,27 +874,22 @@ msgid "The connection was not a team connection."
 msgstr "povezava je odstranjena"
 
 #: src/libnm-client-impl/nm-device-tun.c:204
-#, fuzzy
 msgid "The connection was not a tun connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila tun povezava."
 
 #: src/libnm-client-impl/nm-device-tun.c:215
-#, fuzzy
 msgid "The mode of the device and the connection didn't match"
-msgstr "Dejavna povezava naprave je izginila"
+msgstr "Načina naprave in povezava se nista ujemala"
 
 #: src/libnm-client-impl/nm-device-vlan.c:121
-#, fuzzy
 msgid "The connection was not a VLAN connection."
-msgstr "Drugo povezovanje z osnovno povezavo je spodletelo."
+msgstr "Povezava ni bila povezava VLAN."
 
 #: src/libnm-client-impl/nm-device-vlan.c:131
-#, fuzzy
 msgid "The VLAN identifiers of the device and the connection didn't match."
 msgstr "Identifikatorji VLAN naprave in povezave se niso ujemali."
 
 #: src/libnm-client-impl/nm-device-vlan.c:148
-#, fuzzy
 msgid "The hardware address of the device and the connection didn't match."
 msgstr "Naslov strojne opreme naprave in povezave se nista ujemala."
 
@@ -976,182 +902,171 @@ msgid "The VRF table of the device and the connection didn't match."
 msgstr "Tabela VRF naprave in povezava se nista ujemali."
 
 #: src/libnm-client-impl/nm-device-vxlan.c:383
-#, fuzzy
 msgid "The connection was not a VXLAN connection."
 msgstr "Povezava ni bila povezava VXLAN."
 
 #: src/libnm-client-impl/nm-device-vxlan.c:393
-#, fuzzy
 msgid "The VXLAN identifiers of the device and the connection didn't match."
-msgstr "Identifikatorji VXLAN naprave in povezave se niso ujemali."
+msgstr "Identifikatorji VXLAN za napravo in povezava se niso ujemali."
 
 #: src/libnm-client-impl/nm-device-wifi-p2p.c:266
-#, fuzzy
 msgid "The connection was not a Wi-Fi P2P connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila brezžična povezava P2P."
 
 #: src/libnm-client-impl/nm-device-wifi.c:470
-#, fuzzy
 msgid "The connection was not a Wi-Fi connection."
-msgstr "Povezava ni bila povezava Wi-Fi."
+msgstr "Povezava ni bila brezžična povezava."
 
 #: src/libnm-client-impl/nm-device-wifi.c:511
-#, fuzzy
 msgid "The device is lacking WPA capabilities required by the connection."
 msgstr "Naprava nima zmogljivosti WPA, ki jih zahteva povezava."
 
 #: src/libnm-client-impl/nm-device-wifi.c:521
-#, fuzzy
 msgid "The device is lacking WPA2/RSN capabilities required by the connection."
 msgstr "Naprava nima zmogljivosti WPA2/RSN, ki jih zahteva povezava."
 
 #: src/libnm-client-impl/nm-device-wpan.c:38
-#, fuzzy
 msgid "The connection was not a wpan connection."
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava ni bila povezava 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:160
 #: 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
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1768
 msgid "OLPC Mesh"
-msgstr "OLPC mreža"
+msgstr "Mreževina OLPC"
 
-#: src/libnm-client-impl/nm-device.c:1769
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1770
 msgid "Open vSwitch Interface"
-msgstr "Odprite vmesnik vSwitch"
+msgstr "Odpri vmesnik vSwitch"
 
-#: src/libnm-client-impl/nm-device.c:1771
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1772
 msgid "Open vSwitch Port"
-msgstr "Odprite vrata vSwitch"
+msgstr "Odpri vrata vSwitch"
 
-#: src/libnm-client-impl/nm-device.c:1773
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1774
 msgid "Open vSwitch Bridge"
-msgstr "Odpiranje mostu vSwitch"
+msgstr "Odpri most 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:178
 msgid "Mobile Broadband"
 msgstr "Mobilni širokopasovni dostop"
 
-#: 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:169
 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:223
 #: 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
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1796
 msgid "IPTunnel"
 msgstr "IPTunnel"
 
-#: src/libnm-client-impl/nm-device.c:1797
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1798
 msgid "Tun"
-msgstr "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
-#, fuzzy
+#: 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:239
 #: 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 "Preizkusno"
 
-#: src/libnm-client-impl/nm-device.c:1805
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:1806
 msgid "PPP"
-msgstr "PPP je spodletel"
+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:271
 #: 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
 msgid "Loopback"
 msgstr "Povratna zanka"
 
-#: src/libnm-client-impl/nm-device.c:1819
+#: src/libnm-client-impl/nm-device.c:1820
 msgid "HSR"
 msgstr "Visoke hitrosti"
 
+#: 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 "Neznano"
 
-#: src/libnm-client-impl/nm-device.c:1851
+#: src/libnm-client-impl/nm-device.c:1854
 msgid "Wired"
 msgstr "Žično"
 
-#: src/libnm-client-impl/nm-device.c:1883
+#: src/libnm-client-impl/nm-device.c:1886
 msgid "PCI"
 msgstr ""
 "Informacijski modul <acronym>PCI</acronym>-bus/nameščenih <acronym>PCI</"
 "acronym> kartic"
 
-#: src/libnm-client-impl/nm-device.c:1885
+#: src/libnm-client-impl/nm-device.c:1888
 msgid "USB"
 msgstr "USB"
 
@@ -1161,39 +1076,35 @@ 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 "Povezava ni bila veljavna: %s"
 
-#: src/libnm-client-impl/nm-device.c:2875
-#, fuzzy
+#: src/libnm-client-impl/nm-device.c:2878
 msgid "The interface names of the device and the connection didn't match"
 msgstr "Imena vmesnikov naprave in povezave se ne ujemata"
 
 #: src/libnm-client-impl/nm-secret-agent-old.c:1384
-#, fuzzy
 msgid "registration failed"
-msgstr "Registracija ni uspela."
+msgstr "registracija ni uspela"
 
 #: src/libnm-client-impl/nm-vpn-plugin-old.c:807
-#: src/libnm-client-impl/nm-vpn-service-plugin.c:1055
-#, fuzzy
+#: src/libnm-client-impl/nm-vpn-service-plugin.c:1075
 msgid "No service name specified"
-msgstr "Napaka: iface nastavitev mora določena."
+msgstr "Ime storitve ni določeno"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:287
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not valid: properties should be specified as 'key=value'"
-msgstr ""
-"»%s« ni veljaven: lastnosti morajo biti določene kot »ključ = vrednost«"
+msgstr "»%s« ni veljaven: lastnosti morajo biti določene kot »ključ=vrednost«"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:301
 #, c-format
@@ -1201,97 +1112,137 @@ msgid "'%s' is not a valid key"
 msgstr "»%s« ni veljaven ključ"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:306
-#, fuzzy, c-format
+#, c-format
 msgid "duplicate key '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "podvojeni ključ »%s«"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:320
-#, fuzzy, c-format
+#, c-format
 msgid "number for '%s' is out of range"
-msgstr "polje '%s' mora biti samostojno."
+msgstr "število za »%s« je izven obsega"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:325
-#, fuzzy, c-format
+#, c-format
 msgid "value for '%s' must be a number"
-msgstr "Vrednost za »%s« mora biti število"
+msgstr "vrednost za »%s« mora biti število"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:338
-#, fuzzy, c-format
+#, c-format
 msgid "value for '%s' must be a boolean"
-msgstr "vrednost za \"%s\" mora biti logična vrednost"
+msgstr "vrednost za »%s« mora biti logična vrednost"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:347
-#, fuzzy
 msgid "missing 'name' attribute"
-msgstr "ime datoteke"
+msgstr "manjkajoči atribut »name«"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:356
-#, fuzzy, c-format
+#, c-format
 msgid "invalid 'name' \"%s\""
-msgstr "Neveljavno ime »%s«: imena se morajo začeti z malo črko."
+msgstr "neveljavno ime »name« »%s«"
 
 #: src/libnm-core-aux-extern/nm-libnm-core-aux.c:369
-#, fuzzy, c-format
+#, c-format
 msgid "attribute '%s' is invalid for \"%s\""
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "atribut »%s« ni veljaven za »%s«"
 
 #: src/libnm-core-aux-intern/nm-libnm-core-utils.c:425
-#, fuzzy
 msgid "property cannot be an empty string"
-msgstr "Napaka: %s."
+msgstr "lastnost ne more biti prazen niz"
 
 #: src/libnm-core-aux-intern/nm-libnm-core-utils.c:442
-#, fuzzy
 msgid "property cannot be longer than 255 bytes"
-msgstr "lastnina ne sme biti daljša od 255 bajtov"
+msgstr "lastnost ne sme biti daljša od 255 bajtov"
 
 #: src/libnm-core-aux-intern/nm-libnm-core-utils.c:453
-#, fuzzy
 msgid "property cannot contain any nul bytes"
-msgstr "lastnost ne sme vsebovati nobenih nul bajtov"
+msgstr "lastnost ne sme vsebovati nobenih ničenih bajtov"
 
 #: src/libnm-core-aux-intern/nm-libnm-core-utils.c:474
-#, fuzzy
 msgid "invalid DSCP value; allowed values are: 'CS0', 'CS4', 'CS6'"
 msgstr "neveljavna vrednost DSCP; dovoljene vrednosti so: »CS0«, »CS4«, »CS6«"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:691
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:508
+#, fuzzy
+msgid "NULL DHCP range; it should be provided as <START_IP>,<END_IP>."
+msgstr "Območje NULL DHCP; navesti ga je treba kot <ZAČETNI_IP>,<KONČNI_IP>."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:520
+#, fuzzy
+msgid "Non-NULL range and NULL addresses detected."
+msgstr "Zaznan obseg in naslovi NULL, ki niso NULL."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:529
+msgid "Invalid DHCP range; it should be provided as <START_IP>,<END_IP>."
+msgstr ""
+"Neveljaven obseg DHCP; navesti ga je treba kot <ZAČETNI_IP>,<KONČNI_IP>."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:538
+msgid "Start IP has invalid length."
+msgstr "Začetni IP ima neveljavno dolžino."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:549
+msgid "Start IP is invalid."
+msgstr "Začetni IP je neveljaven."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:557
+msgid "End IP is invalid."
+msgstr "Končni IP je neveljaven."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:565
+msgid "Start IP should be lower than the end IP."
+msgstr "Začetni IP mora biti nižji od končnega IP-ja."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:594
+#, fuzzy
+msgid "Requested range is not in any network configured on the interface."
+msgstr "Zahtevani obseg ni v nobenem omrežju, ki je prilagojeno v vmesniku."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:615
+#, fuzzy, c-format
+msgid ""
+"Invalid DHCP lease time value; it should be either default or a positive "
+"number between %u and %u or %s."
+msgstr ""
+"Neveljavna vrednost časa najema DHCP; To mora biti privzeto ali pozitivno "
+"število med %u in %u ali %s."
+
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1019
 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:82
 #: src/libnm-core-impl/nm-setting-user.c:93
 msgid "missing key"
 msgstr "manjkajoči ključ"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:699
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1027
 #: 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 "ključ je predolg"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:706
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1034
 #: 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 "ključ mora biti UTF8"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:715
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1043
 #: 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 "ključ vsebuje neveljavne znake"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:743
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1071
 #: 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 "manjka vrednost"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:752
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1080
 #: 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 "vrednost je prevelika"
 
-#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:760
+#: src/libnm-core-aux-intern/nm-libnm-core-utils.c:1088
 #: 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"
@@ -1321,38 +1272,37 @@ msgstr "ima UUID, ki zahteva normalizacijo"
 msgid "has duplicate UUIDs"
 msgstr "ima podvojene UUID-je"
 
-#: src/libnm-core-impl/nm-connection.c:1839
+#: src/libnm-core-impl/nm-connection.c:1936
 msgid "setting not found"
 msgstr "nastavitve ni mogoče najti"
 
-#: 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 "nastavitev je potrebna za nepodrejene povezave"
+#: src/libnm-core-impl/nm-connection.c:1990
+#: src/libnm-core-impl/nm-connection.c:2015
+#: src/libnm-core-impl/nm-connection.c:2040
+#, fuzzy
+msgid "setting is required for non-port connections"
+msgstr "nastavitev je potrebna za povezave, ki niso vrat"
 
-#: 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 "Nastavitev ni dovoljena v podrejeni povezavi"
+#: 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 "Nastavitev ni dovoljena v povezavi vrat"
 
-#: src/libnm-core-impl/nm-connection.c:2068
-#, fuzzy
+#: src/libnm-core-impl/nm-connection.c:2166
 msgid "Unexpected failure to normalize the connection"
 msgstr "Nepričakovana napaka pri normalizaciji povezave"
 
-#: src/libnm-core-impl/nm-connection.c:2129
-#, fuzzy
+#: src/libnm-core-impl/nm-connection.c:2227
 msgid "Unexpected failure to verify the connection"
 msgstr "Nepričakovana napaka pri preverjanju povezave"
 
-#: src/libnm-core-impl/nm-connection.c:2166
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-connection.c:2264
+#, c-format
 msgid "unexpected uuid %s instead of %s"
-msgstr "Nepričakovano uuid %s namesto %s"
+msgstr "nepričakovan uuid %s namesto %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
@@ -1362,10 +1312,10 @@ msgstr "Nepričakovano uuid %s namesto %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:5596
 #: 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
@@ -1378,255 +1328,270 @@ msgstr "Nepričakovano uuid %s namesto %s"
 msgid "property is missing"
 msgstr "manjka lastnost"
 
-#: src/libnm-core-impl/nm-connection.c:3256
+#: src/libnm-core-impl/nm-connection.c:3355
 msgid "IP Tunnel"
 msgstr "IP-tunel"
 
-#: src/libnm-core-impl/nm-connection.c:3260
-#, fuzzy
+#: src/libnm-core-impl/nm-connection.c:3359
 msgid "TUN/TAP"
-msgstr "Nastavi vrsto in ime navidezne omrežne naprave (TAP/TUN)."
+msgstr "TUN/TAP"
 
 #: src/libnm-core-impl/nm-keyfile-utils.c:174
-#, fuzzy
 msgid "Value cannot be interpreted as a list of numbers."
-msgstr "Vrednosti ni mogoče razlagati kot seznam števil."
+msgstr "Vrednosti ni mogoče tolmačiti kot seznama števil."
 
 #: src/libnm-core-impl/nm-keyfile-utils.c:303
-#, fuzzy, c-format
+#, c-format
 msgid "value is not an integer in range [%lld, %lld]"
 msgstr "vrednost ni celo število v obsegu [%lld, %lld]"
 
-#: src/libnm-core-impl/nm-keyfile.c:333
-#, fuzzy
+#: src/libnm-core-impl/nm-keyfile.c:334
 msgid "ignoring missing number"
 msgstr "Ignoriranje manjkajoče številke"
 
-#: src/libnm-core-impl/nm-keyfile.c:345
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:346
+#, c-format
 msgid "ignoring invalid number '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "Ignoriranje neveljavne številke »%s«"
 
-#: src/libnm-core-impl/nm-keyfile.c:374
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:375
+#, c-format
 msgid "ignoring invalid %s address: %s"
-msgstr "ignoriranje neveljavnega %s naslova: %s"
+msgstr "ignoriranje neveljavnega naslova %s: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:420
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:421
+#, c-format
 msgid "ignoring invalid gateway '%s' for %s route"
-msgstr "Ignoriranje neveljavnega prehoda »%s« za %s načrtovano pot"
+msgstr "Ignoriranje neveljavnega prehoda »%s« za pot %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:442
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:443
+#, c-format
 msgid "ignoring invalid %s route: %s"
-msgstr "ignoriranje neveljavne %s poti: %s"
+msgstr "ignoriranje neveljavne poti %s: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:620
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:621
+#, c-format
 msgid "unexpected character '%c' for address %s: '%s' (position %td)"
 msgstr "nepričakovan znak »%c« za naslov %s: »%s« (položaj %td)"
 
-#: src/libnm-core-impl/nm-keyfile.c:636
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:637
+#, c-format
 msgid "unexpected character '%c' for %s: '%s' (position %td)"
-msgstr "Nepričakovan znak \"%c\" za %s: \"%s\" (položaj %td)"
+msgstr "nepričakovan znak »%c« za %s: »%s« (položaj %td)"
 
-#: src/libnm-core-impl/nm-keyfile.c:652
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:653
+#, c-format
 msgid "unexpected character '%c' in prefix length for %s: '%s' (position %td)"
-msgstr "nepričakovan znak '%c' v dolžini predpone za %s: '%s' (položaj %td)"
+msgstr "nepričakovan znak »%c« v dolžini predpone za %s: »%s« (položaj %td)"
 
-#: src/libnm-core-impl/nm-keyfile.c:669
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:670
+#, c-format
 msgid "garbage at the end of value %s: '%s'"
-msgstr "smeti na koncu vrednosti %s: \"%s\""
+msgstr "smeti na koncu vrednosti %s: »%s«"
 
-#: src/libnm-core-impl/nm-keyfile.c:679
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:680
+#, c-format
 msgid "deprecated semicolon at the end of value %s: '%s'"
-msgstr "zastarelo podpičje na koncu vrednosti %s: »%s«"
+msgstr "opuščeno podpičje na koncu vrednosti %s: »%s«"
 
-#: src/libnm-core-impl/nm-keyfile.c:698
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:699
+#, c-format
 msgid "invalid prefix length for %s '%s', defaulting to %d"
-msgstr "neveljavna dolžina predpone za %s '%s', privzeto %d"
+msgstr "neveljavna dolžina predpone za %s »%s«, vrnjeno na privzeto %d"
 
-#: src/libnm-core-impl/nm-keyfile.c:710
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:711
+#, c-format
 msgid "missing prefix length for %s '%s', defaulting to %d"
-msgstr "manjkajoča dolžina predpone za %s '%s', privzeto %d"
+msgstr "manjkajoča dolžina predpone za %s »%s«, vrnjeno na privzeto %d"
 
-#: src/libnm-core-impl/nm-keyfile.c:1053
+#: src/libnm-core-impl/nm-keyfile.c:959
+#, fuzzy, c-format
+msgid ""
+"ignoring gateway \"%s\" from \"address*\" keys because the \"gateway\" key "
+"is set"
+msgstr ""
+"ignoriranje prehoda »%s« iz ključev »address*«, ker je nastavljen ključ "
+"»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
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value for \"%s\": %s"
 msgstr "Neveljavna vrednost za »%s«: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:1140
+#: src/libnm-core-impl/nm-keyfile.c:1166
 #, fuzzy, c-format
 msgid "ignoring invalid DNS server IPv%c address '%s'"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-keyfile.c:1177
-#: src/libnmc-setting/nm-meta-setting-desc.c:1653
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:1203
+#: src/libnmc-setting/nm-meta-setting-desc.c:1654
+#, c-format
 msgid "invalid option '%s', use one of [%s]"
-msgstr "neveljavna možnost '%s', uporabite eno od [%s]"
+msgstr "neveljavna možnost »%s«, uporabite eno izmed [%s]"
 
-#: src/libnm-core-impl/nm-keyfile.c:1257
-#, fuzzy
+#: src/libnm-core-impl/nm-keyfile.c:1283
 msgid "ignoring invalid MAC address"
 msgstr "ignoriranje neveljavnega naslova MAC"
 
-#: src/libnm-core-impl/nm-keyfile.c:1333
+#: src/libnm-core-impl/nm-keyfile.c:1359
 #, fuzzy, c-format
 msgid "ignoring invalid bond option %s%s%s = %s%s%s: %s"
 msgstr "ignoriranje možnosti neveljavne obveznice %s%s%s = %s%s%s: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:1523
-#, fuzzy
+#: src/libnm-core-impl/nm-keyfile.c:1549
 msgid "ignoring invalid SSID"
 msgstr "ignoriranje neveljavnega SSID-ja"
 
-#: src/libnm-core-impl/nm-keyfile.c:1541
+#: src/libnm-core-impl/nm-keyfile.c:1567
 #, fuzzy
 msgid "ignoring invalid raw password"
 msgstr "Ignoriranje neveljavnega neobdelanega gesla"
 
-#: src/libnm-core-impl/nm-keyfile.c:1686
+#: src/libnm-core-impl/nm-keyfile.c:1712
 msgid "invalid key/cert value"
 msgstr "Neveljavna vrednost ključa/potrdila"
 
-#: 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 "Neveljavna pot do vrednosti ključa/potrdila »%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 "Datoteka s potrdilom ali ključem »%s« ne obstaja"
 
-#: 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 "neveljaven 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 "neveljavni podatki o vrednosti ključa/potrdila; base64, ni 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 "neveljavni podatki o vrednosti ključa/potrdila; base64,file://"
 
-#: src/libnm-core-impl/nm-keyfile.c:1839
+#: src/libnm-core-impl/nm-keyfile.c:1865
 #, fuzzy
 msgid "invalid key/cert value is not a valid blob"
 msgstr "Neveljavna vrednost ključa/potrdila ni veljavna zbirka dvojiške zbirke"
 
-#: src/libnm-core-impl/nm-keyfile.c:1941
+#: src/libnm-core-impl/nm-keyfile.c:1967
 #, c-format
 msgid "invalid parity value '%s'"
 msgstr "neveljavna vrednost paritete »%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 "Neveljavna nastavitev: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:1983
+#: src/libnm-core-impl/nm-keyfile.c:2009
 #, fuzzy, c-format
 msgid "ignoring invalid team configuration: %s"
 msgstr "Ignoriranje neveljavne konfiguracije ekipe: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:2104
+#: src/libnm-core-impl/nm-keyfile.c:2130
 #, c-format
 msgid "invalid qdisc: %s"
 msgstr "Neveljaven qdisc: %s"
 
-#: src/libnm-core-impl/nm-keyfile.c:2154
+#: src/libnm-core-impl/nm-keyfile.c:2180
 #, c-format
 msgid "invalid tfilter: %s"
 msgstr "Neveljaven tfilter: %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 "Napaka pri nalaganju vrednosti nastavitve: %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 "vrednosti ni mogoče tolmačiti kot celo število"
 
-#: src/libnm-core-impl/nm-keyfile.c:3486
+#: src/libnm-core-impl/nm-keyfile.c:3507
 #, fuzzy, c-format
 msgid "ignoring invalid byte element '%u' (not between 0 and 255 inclusive)"
 msgstr ""
 "ignoriranje neveljavnega bajtnega elementa '%u' (ne med 0 in vključno 255)"
 
-#: src/libnm-core-impl/nm-keyfile.c:3570
+#: src/libnm-core-impl/nm-keyfile.c:3601
+#, fuzzy, c-format
+#| msgid "invalid value for key '%s'"
+msgid "invalid value for '%s.dhcp-send-hostname'"
+msgstr "neveljavna vrednost za »%s.dhcp-send-hostname-deprecated«"
+
+#: src/libnm-core-impl/nm-keyfile.c:3622
+#, fuzzy, c-format
+msgid "invalid value for '%s.dhcp-send-hostname-deprecated'"
+msgstr "neveljavna vrednost za »%s.dhcp-send-hostname-deprecated«"
+
+#: src/libnm-core-impl/nm-keyfile.c:3647
 #, c-format
 msgid "invalid setting name '%s'"
 msgstr "Neveljavno ime nastavitve »%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 "Neveljaven ključ »%s.%s«"
 
-#: src/libnm-core-impl/nm-keyfile.c:3633
+#: src/libnm-core-impl/nm-keyfile.c:3712
 #, fuzzy, c-format
 msgid "key '%s.%s' is not boolean"
-msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
+msgstr "Ključ »%s.%s« ni logična vrednost"
 
-#: src/libnm-core-impl/nm-keyfile.c:3650
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-keyfile.c:3729
+#, c-format
 msgid "key '%s.%s' is not a uint32"
-msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
+msgstr "Ključ »%s.%s« ni uint32"
 
-#: src/libnm-core-impl/nm-keyfile.c:3707
+#: src/libnm-core-impl/nm-keyfile.c:3786
 #, fuzzy, c-format
 msgid "invalid peer public key in section '%s'"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-keyfile.c:3722
+#: src/libnm-core-impl/nm-keyfile.c:3801
 #, fuzzy, c-format
 msgid "key '%s.%s' is not a valid 256 bit key in base64 encoding"
 msgstr "Ključ '%s. %s' ni veljaven 256-bitni ključ v kodiranju base64"
 
-#: src/libnm-core-impl/nm-keyfile.c:3745
+#: src/libnm-core-impl/nm-keyfile.c:3824
 #, fuzzy, c-format
 msgid "key '%s.%s' is not a valid secret flag"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/libnm-core-impl/nm-keyfile.c:3768
+#: src/libnm-core-impl/nm-keyfile.c:3847
 #, fuzzy, c-format
 msgid "key '%s.%s' is not a integer in range 0 to 2^32"
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
 
-#: src/libnm-core-impl/nm-keyfile.c:3784
+#: src/libnm-core-impl/nm-keyfile.c:3863
 #, fuzzy, c-format
 msgid "key '%s.%s' is not a valid endpoint"
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
 
-#: src/libnm-core-impl/nm-keyfile.c:3810
+#: src/libnm-core-impl/nm-keyfile.c:3889
 #, fuzzy, c-format
 msgid "key '%s.%s' has invalid allowed-ips"
 msgstr "Ključ '%s. %s' ima neveljavne dovoljene IP-je"
 
-#: src/libnm-core-impl/nm-keyfile.c:3825
+#: src/libnm-core-impl/nm-keyfile.c:3904
 #, fuzzy, c-format
 msgid "peer '%s' is invalid: %s"
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
 
-#: 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 "Nepodprta možnost »%s.%s« variante vrste %s"
@@ -1711,16 +1676,16 @@ msgstr "geslo ni podprto, če potrdilo ni v žetonu PKCS#11"
 #: 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:5605
+#: 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
@@ -1728,7 +1693,7 @@ msgstr "geslo ni podprto, če potrdilo ni v žetonu PKCS#11"
 #: 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
+#: src/libnm-core-impl/nm-setting.c:2626
 msgid "property is empty"
 msgstr "Lastnost je prazna"
 
@@ -1752,8 +1717,8 @@ msgstr "skupini netlink se ni mogoče pridružiti: %s"
 #: 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
@@ -1806,14 +1771,14 @@ msgstr ""
 "nastavljeni za isto različico TLS"
 
 #: src/libnm-core-impl/nm-setting-bluetooth.c:167
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' connection requires '%s' or '%s' setting"
 msgstr "Za povezavo »%s« potrebujete nastavitev »%s« ali »%s«"
 
 #: src/libnm-core-impl/nm-setting-bluetooth.c:219
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' connection requires '%s' setting"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "Za povezavo »%s« je potrebna nastavitev »%s«"
 
 #: src/libnm-core-impl/nm-setting-bond-port.c:99
 #: src/libnm-core-impl/nm-setting-bridge-port.c:326
@@ -1822,21 +1787,21 @@ msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 #: 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
-#, fuzzy
 msgid "missing setting"
 msgstr "manjkajoča nastavitev"
 
 #: 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
-#, fuzzy, c-format
+#, 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 ""
-"Povezava z nastavitvijo '%s' mora imeti podrejeni tip nastavljen na '%s'. "
-"Namesto tega je \"%s\""
+"Povezava z nastavitvijo »%s« mora imeti vrsto vrat nastavljeno na »%s«. "
+"Namesto tega je »%s«"
 
 #: src/libnm-core-impl/nm-setting-bond.c:524
 #, c-format
@@ -1844,14 +1809,13 @@ msgid "'%s' option is empty"
 msgstr "Možnost »%s« je prazna"
 
 #: src/libnm-core-impl/nm-setting-bond.c:537
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not a valid %s address for '%s' option"
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "»%s« ni veljaven naslov %s za možnost »%s«"
 
 #: src/libnm-core-impl/nm-setting-bond.c:565
-#, fuzzy
 msgid "missing option name"
-msgstr "ime datoteke"
+msgstr "manjkajoče ime možnosti"
 
 #: src/libnm-core-impl/nm-setting-bond.c:570
 #, c-format
@@ -1919,289 +1883,328 @@ msgstr "Možnost '%s' zahteva nastavitev možnosti '%s'"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1108
 #: src/libnm-core-impl/nm-setting-bond.c:1120
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' option is only valid with mode '%s'"
-msgstr "Možnost '%s' je veljavna samo v načinu '%s'"
+msgstr "Možnost »%s« je veljavna samo v načinu »%s«"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1133
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' and '%s' cannot have different values"
-msgstr "\"%s\" in \"%s\" ne moreta imeti različnih vrednosti"
+msgstr "»%s« in »%s« ne moreta imeti različnih vrednosti"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1146
-#, fuzzy, c-format
+#, c-format
 msgid "%s requires bond mode \"%s\""
 msgstr "%s zahteva način povezave »%s«"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1159
-#, fuzzy, c-format
+#, c-format
 msgid "%s requires xmit_hash_policy \"vlan+srcmac\""
 msgstr "%s zahteva xmit_hash_policy »vlan+srcmac«"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1182
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' option should be string"
-msgstr "Možnost '%s' mora biti niz"
+msgstr "Možnost »%s« mora biti niz"
 
 #: src/libnm-core-impl/nm-setting-bond.c:1195
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' option is not valid with mode '%s'"
-msgstr "Napaka: naprava '%s' ni naprava Wi-Fi."
+msgstr "Možnost »%s« ni veljavna v načinu »%s«"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1182
-#, fuzzy, c-format
+#, c-format
 msgid "value '%d' is out of range <%d-%d>"
 msgstr "Vrednost »%d« je izven obsega <%d–%d>"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1201
-#, fuzzy
 msgid "is not a valid MAC address"
 msgstr "ni veljaven naslov MAC"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1245
-#, fuzzy
 msgid "the mask can't contain bits 0 (STP), 1 (MAC) or 2 (LACP)"
-msgstr "maska ne sme vsebovati bitov 0 (STP), 1 (MAC) ali 2 (LACP)"
+msgstr "maska ne sme vsebovati bitov 0 (STP), 1 (MAC) in 2 (LACP)"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1267
-#, fuzzy
 msgid "is not a valid link local MAC address"
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "ni veljaven naslov MAC krajevne povezave"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1279
-#, fuzzy
 msgid "is not a valid VLAN filtering protocol"
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "ni veljaven protokol filtriranja VLAN"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1291
-#, fuzzy
 msgid "is not a valid option"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "ni veljavna možnost"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1303
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' option must be a power of 2"
-msgstr "Možnost '%s' mora biti potenca 2"
+msgstr "Možnost »%s« mora biti potenca števila 2"
 
 #: src/libnm-core-impl/nm-setting-bridge.c:1325
 #, fuzzy
 msgid "bridge connection should have a ethernet setting as well"
 msgstr "Mostna povezava mora imeti tudi ethernetno nastavitev"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1146
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1318
+#, c-format
 msgid "setting required for connection of type '%s'"
-msgstr "ni naprave za povezavo '%s'"
+msgstr "nastavitev, potrebna za povezavo vrste »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1177
-#, fuzzy, c-format
-msgid "Unknown slave type '%s'"
-msgstr "Neznana raven beleženja '%s'"
+#: src/libnm-core-impl/nm-setting-connection.c:1349
+#, c-format
+msgid "Unknown port type '%s'"
+msgstr "Neznana vrsta vrat »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1192
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1364
+#, c-format
 msgid "Slave connections need a valid '%s' property"
-msgstr "ni dejavnih povezav na napravi '%s'"
+msgstr "Podrejene povezave potrebujejo veljavno lastnost »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1216
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1387
+#, c-format
 msgid "Cannot set '%s' without '%s'"
 msgstr "Ni mogoče nastaviti »%s« brez »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1275
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1446
+#, c-format
 msgid "'%s' is not a valid UUID"
 msgstr "»%s« ni veljaven UUID"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1320
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1491
+#, c-format
 msgid "connection type '%s' is not valid"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "Vrsta povezave »%s« ni veljavna"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1426
-#, fuzzy, c-format
-msgid "'%s' connections must be enslaved to '%s', not '%s'"
-msgstr "\"%s\" povezave morajo biti zasužnjene s \"%s\", ne z \"%s\""
+#: src/libnm-core-impl/nm-setting-connection.c:1597
+#, c-format
+msgid "'%s' connections must be attached as port to '%s', not '%s'"
+msgstr "Povezave »%s« morajo biti pritrjene kot vrata na »%s«, ne »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1441
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1612
+#, c-format
 msgid "metered value %d is not valid"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "Izmerjena vrednost %d ni veljavna"
 
-#: 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
-#, fuzzy, c-format
+#: 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 "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "vrednost %d ni veljavna"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1499
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:1670
 msgid "\"disabled\" flag cannot be combined with other MPTCP flags"
 msgstr ""
-"Zastavice »onemogočeno« ni mogoče kombinirati z drugimi zastavicami MPTCP"
+"Zastavice »onemogočeno« (»disabled«) ni mogoče kombinirati z drugimi "
+"zastavicami MPTCP"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1513
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:1684
 msgid "cannot set both \"signal\" and \"fullmesh\" MPTCP flags"
-msgstr "ne morem nastaviti zastavic MPTCP »signal« in »fullmesh«"
+msgstr "ni možno nastaviti zastavic MPTCP »signal« in »fullmesh«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1525
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-connection.c:1696
+#, c-format
 msgid "value %u is not a valid combination of MPTCP flags"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "vrednost %u ni veljavna kombinacija zastavic MPTCP"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1572
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:1743
 msgid "DHCP option cannot be longer than 255 characters"
 msgstr "Možnost DHCP ne sme biti daljša od 255 znakov"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1583
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:1754
 msgid "MUD URL is not a valid URL"
-msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
+msgstr "URL MUD ni veljaven URL"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1603
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:1774
 msgid "invalid permissions not in format \"user:$UNAME[:]\""
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavna dovoljenja, ki niso v obliki »uporabnik:$UIME[:]\""
+
+#: 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 "lahko se uporablja, samo če je nastavljeno %s.%s"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1821
+#, c-format
+msgid "is incompatible with '%s'"
+msgstr "ni združljivo z »%s«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1846
+#, fuzzy, c-format
+msgid "contains IPv4 address '%s', %s.%s cannot be 'disabled'"
+msgstr "vsebuje naslov IPv4 »%s«, %s. %s ni možno onemogočiti (»disabled«)"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1632
+#: src/libnm-core-impl/nm-setting-connection.c:1860
 #, fuzzy, c-format
+msgid "contains IPv4 address '%s', %s.%s cannot be 'true'"
+msgstr "vsebuje naslov IPv4 »%s«, %s. %s ne more biti »true«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1874
+#, fuzzy, c-format
+msgid "contains IPv4 address '%s', %s.%s must be set to 'false' explicitly"
+msgstr ""
+"vsebuje naslov IPv4 »%s«, %s. %s mora biti izrecno nastavljen na »false«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1899
+#, fuzzy, c-format
+msgid "contains IPv6 address '%s', %s.%s cannot be '%s'"
+msgstr "vsebuje naslov IPv6 »%s«, %s. %s ne more biti »%s«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1914
+#, fuzzy, c-format
+msgid "contains IPv6 address '%s', %s.%s cannot be 'true'"
+msgstr "vsebuje naslov IPv6 »%s«, %s. %s ne more biti »true«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1928
+#, fuzzy, c-format
+msgid "contains IPv6 address '%s', %s.%s must be set to 'false' explicitly"
+msgstr ""
+"vsebuje naslov IPv6 »%s«, %s. %s mora biti izrecno nastavljen na »false«"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1944
+#, fuzzy, c-format
+#| msgid "invalid IP address: %s"
+msgid "has an invalid IP address '%s'"
+msgstr "neveljaven naslov IP: %s"
+
+#: src/libnm-core-impl/nm-setting-connection.c:1973
+#, c-format
 msgid "property type should be set to '%s'"
 msgstr "Vrsta lastnosti mora biti nastavljena na »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1650
+#: src/libnm-core-impl/nm-setting-connection.c:1991
 #, fuzzy, c-format
 msgid "port-type '%s' requires a '%s' setting in the connection"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/libnm-core-impl/nm-setting-connection.c:1661
+#: src/libnm-core-impl/nm-setting-connection.c:2002
 #, fuzzy, 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 ""
 "Zaznajte podrejeno povezavo z nastavljeno »%s« in vrsto vrat »%s«. »%s« bi "
 "moralo biti nastavljeno na »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1687
+#: src/libnm-core-impl/nm-setting-connection.c:2028
 #, fuzzy, 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 ""
 "Podrejena povezava z »%s«, nastavljena na »%s«, ne more imeti nastavitve »%s«"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1704
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-connection.c:2045
 msgid "UUID needs normalization"
 msgstr "UUID potrebuje normalizacijo"
 
-#: src/libnm-core-impl/nm-setting-connection.c:1719
+#: src/libnm-core-impl/nm-setting-connection.c:2062
 #, fuzzy
+#| msgid "has duplicate UUIDs"
+msgid "has duplicate addresses"
+msgstr "ima podvojene UUID-je"
+
+#: src/libnm-core-impl/nm-setting-connection.c:2074
 msgid "read-only is deprecated and not settable for the user"
 msgstr "Samo za branje je zastarelo in ga ni mogoče nastaviti za uporabnika"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:496
-#, fuzzy
 msgid "flags invalid"
 msgstr "zastavice neveljavne"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:505
-#, fuzzy
 msgid "flags invalid - disabled"
-msgstr "zastavice neveljavne - onemogočene"
+msgstr "zastavice neveljavne - onemogočeno"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:531
 #: src/libnm-core-impl/nm-setting-dcb.c:577
-#, fuzzy
 msgid "property invalid (not enabled)"
 msgstr "lastnost neveljavna (ni omogočena)"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:540
-#, fuzzy
 msgid "element invalid"
 msgstr "element neveljaven"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:555
-#, fuzzy
 msgid "sum not 100%"
-msgstr "vsota, ki ni 100%"
+msgstr "vsota ne predstavlja 100 %"
 
 #: src/libnm-core-impl/nm-setting-dcb.c:586
 #: src/libnm-core-impl/nm-setting-dcb.c:614
-#, fuzzy
 msgid "property invalid"
-msgstr "lastnost »%s« ni veljavna, ali pa ni podprta"
+msgstr "lastnost neveljavna"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:328
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-ethtool.c:345
 msgid "unsupported ethtool setting"
-msgstr "Nepodprta nastavitev ethtool"
+msgstr "nepodprta nastavitev ethtool"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:337
+#: src/libnm-core-impl/nm-setting-ethtool.c:354
 #, fuzzy
 msgid "setting has invalid variant type"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:349
+#: src/libnm-core-impl/nm-setting-ethtool.c:366
 #, fuzzy
 msgid "coalesce option must be either 0 or 1"
 msgstr "možnost združevanja mora biti 0 ali 1"
 
-#: src/libnm-core-impl/nm-setting-ethtool.c:366
+#: src/libnm-core-impl/nm-setting-ethtool.c:385
 #, fuzzy
 msgid "pause-autoneg cannot be enabled when setting rx/tx options"
 msgstr "Pause-Autoneg ni mogoče omogočiti pri nastavitvi možnosti RX/TX"
 
-#: 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:4552
 #, fuzzy, c-format
+msgid "'%s' is not valid FEC modes, valid modes are combinations of %s"
+msgstr "oznake \"%u\" niso veljavne; uporabite kombinacijo %s"
+
+#: src/libnm-core-impl/nm-setting-ethtool.c:436
+#, c-format
 msgid "unknown ethtool option '%s'"
-msgstr "Neznana domena beleženja '%s'"
+msgstr "neznana možnost 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 "Nepremičnina je potrebna, ko %s. %s je nastavljen"
+msgstr "lastnost je obvezna, ko je %s.%s nastavljen"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:337
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-gsm.c:483
 msgid "property value is empty"
-msgstr "Napaka: ni podanega veljavnega parametra."
+msgstr "vrednost lastnosti je prazna"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:346
-#, fuzzy
+#: src/libnm-core-impl/nm-setting-gsm.c:492
 msgid "property value is too long (>64)"
-msgstr "vrednost nepremičnine je predolga (>64)"
+msgstr "vrednost lastnosti je predolga (>64)"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:378
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-gsm.c:524
+#, c-format
 msgid "'%s' contains invalid char(s) (use [A-Za-z._-])"
-msgstr "'%s' vsebuje neveljavne znake (uporabite [A-Za-z._-])"
+msgstr "»%s« vsebuje neveljavne znake (uporabite [A-Za-z._-])"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:425
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-gsm.c:571
+#, c-format
 msgid "'%s' length is invalid (should be 5 or 6 digits)"
-msgstr "Dolžina \"%s\" je neveljavna (mora biti 5 ali 6 števk)"
+msgstr "Dolžina »%s« je neveljavna (mora biti 5 ali 6 števk)"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:439
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-setting-gsm.c:585
+#, c-format
 msgid "'%s' is not a number"
-msgstr ""
-"Vrednost '%s' je klicana z napačnim številom argumentov!\n"
-"(mora jih biti %d)"
+msgstr "»%s« ni število"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:476
+#: src/libnm-core-impl/nm-setting-gsm.c:622
 #, fuzzy
 msgid "property is empty or wrong size"
 msgstr "Lastnina je prazna ali napačne velikosti"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:489
+#: src/libnm-core-impl/nm-setting-gsm.c:635
 #, fuzzy
 msgid "property must contain only digits"
 msgstr "Lastnost mora vsebovati samo števke"
 
-#: src/libnm-core-impl/nm-setting-gsm.c:503
+#: src/libnm-core-impl/nm-setting-gsm.c:649
 #, fuzzy
 msgid "can't be enabled when manual configuration is present"
 msgstr "Ni mogoče omogočiti, če je na voljo ročna konfiguracija"
@@ -2290,7 +2293,7 @@ msgstr "neveljavno polje '%s'"
 #: src/libnm-core-impl/nm-setting-sriov.c:410
 #, fuzzy
 msgid "unknown attribute"
-msgstr "neznan vzrok"
+msgstr "neznan atribut »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:1349
 #: src/libnm-core-impl/nm-setting-sriov.c:420
@@ -2436,19 +2439,19 @@ msgid "suppress_prefixlength is only allowed with the to-table action"
 msgstr "suppress_prefixlength je dovoljeno samo z dejanjem za mizo"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3025
-#, fuzzy, c-format
+#, c-format
 msgid "invalid key \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "neveljaven ključ »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3037
-#, fuzzy, c-format
+#, c-format
 msgid "duplicate key %s"
-msgstr "neveljavno polje '%s'"
+msgstr "podvojeni ključ %s"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3053
-#, fuzzy, c-format
+#, c-format
 msgid "invalid variant type '%s' for \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavna različica vrste »%s« za »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3064
 #, fuzzy
@@ -2458,7 +2461,7 @@ msgstr "ime datoteke"
 #: src/libnm-core-impl/nm-setting-ip-config.c:3072
 #, fuzzy
 msgid "invalid \"family\""
-msgstr "neveljavne VPN skrivnosti"
+msgstr "Neveljavna »družina«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3129
 #, fuzzy
@@ -2471,34 +2474,32 @@ msgid "Unsupported to-string-flags argument"
 msgstr "Nepodprt argument to-string-flags"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3331
-#, fuzzy
 msgid "Unsupported extra-argument"
 msgstr "Nepodprt dodatni argument"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3633
-#, fuzzy, c-format
+#, c-format
 msgid "unsupported key \"%s\""
-msgstr "Nepodprta tipka »%s«"
+msgstr "nepodprti ključ »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3640
-#, fuzzy, c-format
+#, c-format
 msgid "duplicate key \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "podvojeni ključ »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3647
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value for \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavna vrednost za »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3659
-#, fuzzy
 msgid "empty text does not describe a rule"
 msgstr "prazno besedilo ne opisuje pravila"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3667
-#, fuzzy, c-format
+#, c-format
 msgid "missing argument for \"%s\""
-msgstr "Manjka argument za %s"
+msgstr "manjkajoči argument za »%s«"
 
 #: src/libnm-core-impl/nm-setting-ip-config.c:3681
 #, fuzzy
@@ -2526,86 +2527,91 @@ msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 msgid "invalid address family"
 msgstr "neveljavne VPN skrivnosti"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5110
+#: src/libnm-core-impl/nm-setting-ip-config.c:5114
 #, fuzzy, c-format
 msgid "rule #%u is invalid: %s"
 msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5547
+#: src/libnm-core-impl/nm-setting-ip-config.c:5622
 #, fuzzy, c-format
 msgid "%u. DNS server address is invalid"
 msgstr "%u. Naslov strežnika DNS je neveljaven"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5567
+#: src/libnm-core-impl/nm-setting-ip-config.c:5642
 #, fuzzy, c-format
 msgid "%d. IP address is invalid"
 msgstr "%d. Naslov IP je neveljaven"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5582
+#: src/libnm-core-impl/nm-setting-ip-config.c:5657
 #, fuzzy, c-format
 msgid "%d. IP address has 'label' property with invalid type"
 msgstr "%d. Naslov IP ima lastnost »label« z neveljavno vrsto"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5594
+#: src/libnm-core-impl/nm-setting-ip-config.c:5669
 #, fuzzy, c-format
 msgid "%d. IP address has invalid label '%s'"
 msgstr "%d. Naslov IP ima neveljavno oznako »%s«"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5612
+#: src/libnm-core-impl/nm-setting-ip-config.c:5687
 #, fuzzy
 msgid "gateway cannot be set if there are no addresses configured"
 msgstr "Prehoda ni mogoče nastaviti, če ni konfiguriranih naslovov"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5624
+#: src/libnm-core-impl/nm-setting-ip-config.c:5699
 #, fuzzy
 msgid "gateway is invalid"
 msgstr "Prehod IPv4 »%s« ni veljaven"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5642
+#: src/libnm-core-impl/nm-setting-ip-config.c:5717
 #, fuzzy, c-format
 msgid "%d. route is invalid"
 msgstr "%d. pot je neveljavna"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5655
+#: src/libnm-core-impl/nm-setting-ip-config.c:5730
 #, fuzzy, c-format
 msgid "invalid attribute: %s"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5675
+#: src/libnm-core-impl/nm-setting-ip-config.c:5750
 #, fuzzy, c-format
 msgid "%u. rule has wrong address-family"
 msgstr "%u. pravilo ima napačen naslov-družina"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5687
+#: src/libnm-core-impl/nm-setting-ip-config.c:5762
 #, fuzzy, c-format
 msgid "%u. rule is invalid: %s"
 msgstr "%u. pravilo je neveljavno: %s"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5703
+#: src/libnm-core-impl/nm-setting-ip-config.c:5778
 #, fuzzy, c-format
 msgid "'%s' is not a valid IAID"
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5717
+#: src/libnm-core-impl/nm-setting-ip-config.c:5792
 #, fuzzy, c-format
 msgid "the property cannot be set when '%s' is disabled"
 msgstr "Lastnosti ni mogoče nastaviti, če je možnost »%s« onemogočena"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5743
+#: src/libnm-core-impl/nm-setting-ip-config.c:5818
 #, fuzzy
 msgid "the property is currently supported only for DHCPv4"
 msgstr "lastnost je trenutno podprta le za DHCPv4"
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5760
+#: src/libnm-core-impl/nm-setting-ip-config.c:5835
 #, fuzzy, c-format
 msgid "'%s' is not a valid IP or subnet"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/libnm-core-impl/nm-setting-ip-config.c:5784
+#: src/libnm-core-impl/nm-setting-ip-config.c:5879
 #, fuzzy, c-format
 msgid "a gateway is incompatible with '%s'"
 msgstr "naprava '%s' ni združljiva s povezavo '%s'"
 
+#: src/libnm-core-impl/nm-setting-ip-config.c:5893
+#, fuzzy, c-format
+msgid "the value is inconsistent with '%s'"
+msgstr "naprava '%s' ni združljiva s povezavo '%s'"
+
 #: src/libnm-core-impl/nm-setting-ip-tunnel.c:364
 #, fuzzy, c-format
 msgid "'%d' is not a valid tunnel mode"
@@ -2650,15 +2656,15 @@ msgstr "skupini netlink se ni mogoče pridružiti: %s"
 msgid "wired setting not allowed for mode %s"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:171
+#: src/libnm-core-impl/nm-setting-ip4-config.c:193
 #: src/libnm-core-impl/nm-setting-ip6-config.c:278
 #, fuzzy, c-format
 msgid "method '%s' requires at least an address or a route"
 msgstr "Za metodo \"%s\" je potreben vsaj naslov ali pot"
 
-#: 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
@@ -2666,45 +2672,44 @@ msgstr "Za metodo \"%s\" je potreben vsaj naslov ali pot"
 msgid "this property is not allowed for '%s=%s'"
 msgstr "Ta nastanitev ni dovoljena za '%s=%s'"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:260
+#: src/libnm-core-impl/nm-setting-ip4-config.c:283
 #, fuzzy
 msgid "cannot enable ipv4.link-local with ipv4.method=disabled"
 msgstr "Ni mogoče omogočiti ipv4.link-local z ipv4.method=disabled"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:272
+#: src/libnm-core-impl/nm-setting-ip4-config.c:295
 #, fuzzy
 msgid "cannot disable ipv4.link-local with ipv4.method=link-local"
 msgstr "Ni mogoče onemogočiti ipv4.link-local z ipv4.method=link-local"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:308
+#: src/libnm-core-impl/nm-setting-ip4-config.c:331
 #, fuzzy, c-format
 msgid "'%s' is not a valid FQDN"
 msgstr "»%s« ni veljavna FQDN"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:321
+#: src/libnm-core-impl/nm-setting-ip4-config.c:344
 #, fuzzy
 msgid "property cannot be set when dhcp-hostname is also set"
 msgstr "Lastnosti ni mogoče nastaviti, če je nastavljen tudi dhcp-hostname"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:336
+#: src/libnm-core-impl/nm-setting-ip4-config.c:359
 #, fuzzy
 msgid "FQDN flags requires a FQDN set"
 msgstr "Zastavice FQDN zahtevajo nabor FQDN"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:355
+#: src/libnm-core-impl/nm-setting-ip4-config.c:378
 #, fuzzy, c-format
 msgid "multiple addresses are not allowed for '%s=%s'"
 msgstr "Več naslovov ni dovoljeno za »%s=%s«"
 
-#: src/libnm-core-impl/nm-setting-ip4-config.c:372
+#: src/libnm-core-impl/nm-setting-ip4-config.c:395
 #, fuzzy
 msgid "property should be TRUE when method is set to disabled"
 msgstr "mora biti TRUE, ko je metoda nastavljena na onemogočeno"
 
 #: src/libnm-core-impl/nm-setting-ip6-config.c:377
-#, fuzzy
 msgid "value is not a valid token"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "vrednost ni veljaven žeton"
 
 #: src/libnm-core-impl/nm-setting-ip6-config.c:391
 #, fuzzy
@@ -2712,26 +2717,31 @@ msgid "only makes sense with EUI64 address generation mode"
 msgstr "smiselno je samo z načinom generiranja naslovov EUI64"
 
 #: src/libnm-core-impl/nm-setting-ip6-config.c:405
-#, fuzzy
 msgid "invalid DUID"
 msgstr "neveljaven DUID"
 
 #: src/libnm-core-impl/nm-setting-ip6-config.c:422
-#, fuzzy
 msgid "must be a valid IPv6 address with prefix"
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "mora biti veljaven naslov IPv6 s predpono"
 
 #: src/libnm-core-impl/nm-setting-ip6-config.c:435
-#, fuzzy
 msgid "DHCP DSCP is not supported for IPv6"
 msgstr "DHCP DSCP ni podprt za IPv6"
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:449
+#: src/libnm-core-impl/nm-setting-ip6-config.c:447
+msgid "Shared DHCP range is not supported for IPv6"
+msgstr "Obseg DHCP v skupni rabi ni podprt za IPv6"
+
+#: src/libnm-core-impl/nm-setting-ip6-config.c:459
 #, fuzzy
+msgid "Shared DHCP lease time is not supported for IPv6"
+msgstr "Čas zakupa DHCP v skupni rabi ni podprt za IPv6"
+
+#: src/libnm-core-impl/nm-setting-ip6-config.c:473
 msgid "token is not in canonical form"
 msgstr "žeton ni v kanonični obliki"
 
-#: src/libnm-core-impl/nm-setting-ip6-config.c:466
+#: src/libnm-core-impl/nm-setting-ip6-config.c:490
 #, fuzzy
 msgid "property should be TRUE when method is set to ignore or disabled"
 msgstr "mora biti TRUE, če je metoda nastavljena na prezrti ali onemogočena"
@@ -2757,14 +2767,13 @@ msgid "a loopback profile cannot be a port"
 msgstr "Profil povratne zanke ne more biti vrata"
 
 #: src/libnm-core-impl/nm-setting-macsec.c:267
-#, fuzzy
 msgid "the key is empty"
 msgstr "ključ je prazen"
 
 #: src/libnm-core-impl/nm-setting-macsec.c:277
-#, fuzzy, c-format
+#, c-format
 msgid "the key must be %d characters"
-msgstr "Ključ mora biti %d znakov"
+msgstr "Ključ mora imeti %d znakov"
 
 #: src/libnm-core-impl/nm-setting-macsec.c:287
 #, fuzzy
@@ -2808,9 +2817,8 @@ msgstr "Nepromiskuitetno delovanje je dovoljeno samo v načinu passthru"
 #: 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
-#, fuzzy
 msgid "is empty"
-msgstr "Sprazni"
+msgstr "je prazno"
 
 #: src/libnm-core-impl/nm-setting-olpc-mesh.c:110
 #: src/libnm-core-impl/nm-setting-wireless.c:1113
@@ -2820,13 +2828,13 @@ msgstr "Dolžina SSID-ja je izven <1-32> bajtov</1-32> obsega"
 
 #: src/libnm-core-impl/nm-setting-olpc-mesh.c:122
 #: src/libnm-core-impl/nm-setting-wireless.c:1166
-#, fuzzy, c-format
+#, c-format
 msgid "'%d' is not a valid channel"
 msgstr "»%d« ni veljaven kanal"
 
 #: src/libnm-core-impl/nm-setting-ovs-bridge.c:160
 #, fuzzy, c-format
-msgid "A connection with a '%s' setting must not have a master."
+msgid "A connection with a '%s' setting must not have a controller."
 msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 
 #: src/libnm-core-impl/nm-setting-ovs-bridge.c:174
@@ -2836,14 +2844,12 @@ msgstr "Napaka: naprava '%s' ni naprava Wi-Fi."
 
 #: src/libnm-core-impl/nm-setting-ovs-dpdk.c:124
 #: src/libnm-core-impl/nm-setting-ovs-dpdk.c:136
-#, fuzzy
 msgid "must be a power of two"
-msgstr "mora biti moč dveh"
+msgstr "mora biti potenca števila 2"
 
 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:115
-#, fuzzy
 msgid "key cannot start with \"NM.\""
-msgstr "tipka se ne more začeti z »NM«."
+msgstr "ključ se ne more začeti z »NM«."
 
 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:166
 #, fuzzy, c-format
@@ -2859,7 +2865,7 @@ msgstr ""
 #: src/libnm-core-impl/nm-setting-user.c:361
 #, fuzzy, c-format
 msgid "invalid key \"%s\": %s"
-msgstr "neveljaven ključ »%s«: %s"
+msgstr "Neveljaven ključ »%s.%s«"
 
 #: src/libnm-core-impl/nm-setting-ovs-external-ids.c:387
 #: src/libnm-core-impl/nm-setting-ovs-other-config.c:225
@@ -2924,6 +2930,7 @@ msgid "Missing ovs interface type"
 msgstr "Manjka vrsta vmesnika ovs"
 
 #: src/libnm-core-impl/nm-setting-ovs-interface.c:315
+#: src/libnm-core-impl/nm-setting-ovs-port.c:420
 #, fuzzy, c-format
 msgid "A connection with a '%s' setting must have a controller."
 msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
@@ -2943,18 +2950,6 @@ msgstr "neveljavno polje '%s'"
 msgid "VLANs %u and %u are not sorted in ascending order"
 msgstr "Omrežja VLAN %u in %u niso razvrščena v naraščajočem vrstnem redu"
 
-#: src/libnm-core-impl/nm-setting-ovs-port.c:420
-#, fuzzy, c-format
-msgid "A connection with a '%s' setting must have a master."
-msgstr "Povezava z nastavitvijo »%s« mora imeti master."
-
-#: 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 "Napaka: vrednost časovne omejitve '%s' ni veljavna."
-
 #: src/libnm-core-impl/nm-setting-ovs-port.c:457
 #, fuzzy, c-format
 msgid "'%s' is not allowed in vlan_mode"
@@ -3018,7 +3013,7 @@ msgstr "skript nima funkcije FindProxyForURL"
 #: 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:4259
 #, fuzzy, c-format
 msgid "'%s' is not a valid MAC address"
 msgstr "»%s« ni veljaven naslov MAC"
@@ -3046,16 +3041,15 @@ msgstr "VF %d in %d niso razvrščeni po naraščajočem indeksu"
 #: 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
-#, fuzzy
 msgid "kind is missing"
-msgstr "Napaka: manjka argument %s."
+msgstr "manjka vrsta"
 
 #: src/libnm-core-impl/nm-setting-tc-config.c:62
 #: src/libnm-core-impl/nm-setting-tc-config.c:428
 #: src/libnm-core-impl/nm-setting-tc-config.c:705
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not a valid kind"
-msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
+msgstr "»%s« ni veljavna vrsta"
 
 #: src/libnm-core-impl/nm-setting-tc-config.c:71
 #: src/libnm-core-impl/nm-setting-tc-config.c:714
@@ -3076,7 +3070,7 @@ msgstr "obstajajo podvojeni filtri TC"
 #: src/libnm-core-impl/nm-setting-team.c:119
 #: src/libnm-core-impl/nm-setting-team.c:189
 #: src/libnm-core-impl/nm-setting-team.c:321
-#, fuzzy, c-format
+#, c-format
 msgid "%s is out of range [0, %d]"
 msgstr "%s je izven obsega [0, %d]"
 
@@ -3107,17 +3101,17 @@ msgid "vlanid is out of range [-1, 4094]"
 msgstr "Vlanid je izven dosega [-1, 4094]"
 
 #: src/libnm-core-impl/nm-setting-tun.c:162
-#, fuzzy, c-format
+#, c-format
 msgid "'%u': invalid mode"
-msgstr "'%u': neveljaven način"
+msgstr "»%u«: neveljaven način"
 
 #: src/libnm-core-impl/nm-setting-tun.c:173
-#, fuzzy, c-format
+#, c-format
 msgid "'%s': invalid user ID"
 msgstr "»%s«: neveljaven ID uporabnika"
 
 #: src/libnm-core-impl/nm-setting-tun.c:185
-#, fuzzy, c-format
+#, c-format
 msgid "'%s': invalid group ID"
 msgstr "»%s«: neveljaven ID skupine"
 
@@ -3127,39 +3121,35 @@ msgid "key requires a '.' for a namespace"
 msgstr "Za imenski prostor je potreben znak '.'"
 
 #: src/libnm-core-impl/nm-setting-user.c:148
-#, fuzzy
 msgid "key cannot contain \"..\""
-msgstr "ključ ne sme vsebovati \"..\""
+msgstr "ključ ne sme vsebovati »..«"
 
 #: src/libnm-core-impl/nm-setting-user.c:318
-#, fuzzy
 msgid "maximum number of user data entries reached"
 msgstr "doseženo največje število vnosov uporabniških podatkov"
 
 #: src/libnm-core-impl/nm-setting-user.c:385
-#, fuzzy, c-format
+#, c-format
 msgid "maximum number of user data entries reached (%u instead of %u)"
 msgstr "največje doseženo število vnosov uporabniških podatkov (%u namesto %u)"
 
 #: src/libnm-core-impl/nm-setting-vlan.c:666
-#, fuzzy, c-format
+#, c-format
 msgid "the vlan id must be in range 0-4094 but is %u"
 msgstr "ID VLAN mora biti v območju 0-4094, vendar je %u"
 
 #: src/libnm-core-impl/nm-setting-vlan.c:676
-#, fuzzy
 msgid "flags are invalid"
 msgstr "zastavice so neveljavne"
 
 #: src/libnm-core-impl/nm-setting-vlan.c:685
-#, fuzzy, c-format
+#, c-format
 msgid "invalid VLAN protocol %s: must be '802.1Q' or '802.1ad'"
 msgstr "neveljaven protokol VLAN %s: mora biti »802.1Q« ali »802.1ad«"
 
 #: src/libnm-core-impl/nm-setting-vlan.c:698
-#, fuzzy
 msgid "vlan setting should have a ethernet setting as well"
-msgstr "Nastavitev VLAN mora imeti tudi nastavitev Ethernet"
+msgstr "Nastavitev vlan mora imeti tudi nastavitev ethernet"
 
 #: src/libnm-core-impl/nm-setting-vpn.c:573
 #, fuzzy
@@ -3172,10 +3162,9 @@ msgid "setting contained a secret with an empty name"
 msgstr "Nastavitev je vsebovala skrivnost s praznim imenom"
 
 #: src/libnm-core-impl/nm-setting-vpn.c:694
-#: src/libnm-core-impl/nm-setting.c:3577
-#, fuzzy
+#: src/libnm-core-impl/nm-setting.c:3579
 msgid "not a secret property"
-msgstr "ni skrivna lastnina"
+msgstr "ni skrivna lastnost"
 
 #: src/libnm-core-impl/nm-setting-vpn.c:702
 #, fuzzy
@@ -3220,14 +3209,14 @@ msgid "'%s' is not a valid duplex value"
 msgstr "»%s« ni veljavna vrednost dupleksa"
 
 #: src/libnm-core-impl/nm-setting-wired.c:1058
-#, fuzzy, c-format
+#, c-format
 msgid "invalid key '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljaven ključ »%s«"
 
 #: src/libnm-core-impl/nm-setting-wired.c:1070
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value for key '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljavna vrednost za ključ »%s«"
 
 #: src/libnm-core-impl/nm-setting-wired.c:1119
 #, fuzzy
@@ -3340,12 +3329,12 @@ msgid "'%s' is not a valid value for '%s' mode connections"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
 #: src/libnm-core-impl/nm-setting-wireless-security.c:954
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' security requires '%s=%s'"
-msgstr "Za varnost »%s« je potrebna »%s=%s«"
+msgstr "Za varnost »%s« je potrebno »%s=%s«"
 
 #: src/libnm-core-impl/nm-setting-wireless-security.c:983
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' security requires '%s' setting presence"
 msgstr "Varnost »%s« zahteva prisotnost nastavitve »%s«"
 
@@ -3373,9 +3362,9 @@ msgstr ""
 "»sae« ali »wpa-eap-suite-b-192«"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1125
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not a valid Wi-Fi mode"
-msgstr "Napaka: naprava '%s' ni naprava Wi-Fi."
+msgstr "»%s« ni veljaven način Wi-Fi"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1138
 #, fuzzy, c-format
@@ -3388,15 +3377,14 @@ msgid "'%s' requires setting '%s' property"
 msgstr "»%s« zahteva nastavitev lastnosti »%s«"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1181
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' requires '%s' and '%s' property"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "»%s« zahteva lastnosti »%s« in »%s«"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1295
-#: src/libnm-core-impl/nm-team-utils.c:2251
-#, fuzzy
+#: src/libnm-core-impl/nm-team-utils.c:2254
 msgid "invalid value"
-msgstr "(neveljavna vrednost)"
+msgstr "neveljavna vrednost"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1308
 #, fuzzy
@@ -3435,17 +3423,15 @@ msgstr ""
 "Nasprotujoča si vrednost MAC-ADDRESS-randomization in Cloned-MAC-address"
 
 #: src/libnm-core-impl/nm-setting-wireless.c:1401
-#, fuzzy
 msgid "property is deprecated and not implemented"
-msgstr "Lastnost je zastarela in ni izvedena"
+msgstr "lastnost je zastarela in ni implementirana"
 
 #: src/libnm-core-impl/nm-setting-wpan.c:174
-#, fuzzy
 msgid "page must be defined along with a channel"
 msgstr "stran mora biti določena skupaj s kanalom"
 
 #: src/libnm-core-impl/nm-setting-wpan.c:183
-#, fuzzy, c-format
+#, c-format
 msgid "page must be between %d and %d"
 msgstr "stran mora biti med %d in %d"
 
@@ -3454,134 +3440,129 @@ msgstr "stran mora biti med %d in %d"
 msgid "channel must not be between %d and %d"
 msgstr "kanal ne sme biti med %d in %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
 #, fuzzy, c-format
 msgid "can't set property of type '%s' from value of type '%s'"
 msgstr "Lastnosti vrste »%s« iz vrednosti vrste »%s« ni mogoče nastaviti"
 
-#: src/libnm-core-impl/nm-setting.c:1788
+#: src/libnm-core-impl/nm-setting.c:1790
 #, fuzzy, c-format
 msgid "value of type '%s' is invalid or out of range for property '%s'"
 msgstr ""
 "vrednost »%s« vrste »%s« ni veljavna ali pa je lastnost »%s« izven obsega za "
 "vrsto »%s«"
 
-#: src/libnm-core-impl/nm-setting.c:1833
+#: src/libnm-core-impl/nm-setting.c:1835
 #, fuzzy, c-format
 msgid "can not set property: %s"
 msgstr "Napaka: %s."
 
-#: src/libnm-core-impl/nm-setting.c:2062
-#, fuzzy
+#: src/libnm-core-impl/nm-setting.c:2064
 msgid "duplicate property"
-msgstr "Podvojena lastnost"
+msgstr "podvojena lastnost"
 
-#: src/libnm-core-impl/nm-setting.c:2082
-#, fuzzy
+#: src/libnm-core-impl/nm-setting.c:2084
 msgid "unknown property"
-msgstr "Neznana lastnost %s"
+msgstr "neznana lastnost"
 
-#: src/libnm-core-impl/nm-setting.c:2156 src/libnm-core-impl/nm-setting.c:2238
-#, fuzzy, c-format
+#: 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 "Določanje maske signala je spodletelo: %d"
+msgstr "Ni uspelo nastaviti lastnosti: %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 "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "neveljavna vrednost %d, pričakovano %d-%d"
 
-#: src/libnm-core-impl/nm-setting.c:2537
-#, fuzzy
+#: src/libnm-core-impl/nm-setting.c:2539
 msgid "cannot be empty"
-msgstr "Polje imena ne more biti prazno"
+msgstr "ne sme biti prazno"
 
-#: src/libnm-core-impl/nm-setting.c:3474
+#: src/libnm-core-impl/nm-setting.c:3476
 #, fuzzy
 msgid "secret not found"
 msgstr "Skrivne kode OAuth2 ni mogoče najti"
 
-#: 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
 #, fuzzy, c-format
 msgid "invalid D-Bus property \"%s\""
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-team-utils.c:1559
+#: src/libnm-core-impl/nm-team-utils.c:1561
 #, fuzzy, c-format
 msgid "duplicate D-Bus property \"%s\""
 msgstr "Napaka: %s."
 
-#: src/libnm-core-impl/nm-team-utils.c:1579
+#: src/libnm-core-impl/nm-team-utils.c:1581
 #, fuzzy, c-format
 msgid "invalid D-Bus property \"%s\" for \"%s\""
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-team-utils.c:1651
+#: src/libnm-core-impl/nm-team-utils.c:1653
 #, fuzzy, c-format
 msgid "unknown link-watcher name \"%s\""
 msgstr "Neznana domena beleženja '%s'"
 
-#: src/libnm-core-impl/nm-team-utils.c:2238
+#: src/libnm-core-impl/nm-team-utils.c:2241
 #, fuzzy
 msgid "value out of range"
 msgstr "Vrednost je izven območja.\n"
 
-#: src/libnm-core-impl/nm-team-utils.c:2270
+#: src/libnm-core-impl/nm-team-utils.c:2274
 #, fuzzy
 msgid "invalid runner-tx-hash"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnm-core-impl/nm-team-utils.c:2298
+#: src/libnm-core-impl/nm-team-utils.c:2302
 #, fuzzy, c-format
 msgid "%s is only allowed for runner %s"
 msgstr "Napaka: ukaz 'nm' '%s' ni veljaven"
 
-#: src/libnm-core-impl/nm-team-utils.c:2308
+#: src/libnm-core-impl/nm-team-utils.c:2312
 #, fuzzy, c-format
 msgid "%s is only allowed for runners %s"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/libnm-core-impl/nm-team-utils.c:2329
+#: src/libnm-core-impl/nm-team-utils.c:2333
 #, fuzzy
 msgid "cannot set parameters for lacp and activebackup runners together"
 msgstr "Parametrov za tekače LACP in ActiveBackup ni mogoče nastaviti skupaj"
 
-#: src/libnm-core-impl/nm-team-utils.c:2343
+#: src/libnm-core-impl/nm-team-utils.c:2347
 #, fuzzy
 msgid "missing link watcher"
 msgstr "ime datoteke"
 
-#: src/libnm-core-impl/nm-team-utils.c:2369
+#: src/libnm-core-impl/nm-team-utils.c:2373
 #, fuzzy
 msgid "team config exceeds size limit"
 msgstr "Konfiguracija ekipe presega omejitev velikosti"
 
-#: src/libnm-core-impl/nm-team-utils.c:2380
+#: src/libnm-core-impl/nm-team-utils.c:2384
 #, fuzzy
 msgid "team config is not valid UTF-8"
 msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
 
-#: src/libnm-core-impl/nm-team-utils.c:2555
-#, fuzzy, c-format
+#: src/libnm-core-impl/nm-team-utils.c:2559
+#, c-format
 msgid "invalid D-Bus type \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavna vrsta vodila D-Bus »%s«"
 
-#: src/libnm-core-impl/nm-team-utils.c:2594
+#: src/libnm-core-impl/nm-team-utils.c:2598
 #, fuzzy, c-format
 msgid "invalid link-watchers: %s"
 msgstr "neveljavno polje '%s'"
 
 #: src/libnm-core-impl/nm-utils.c:1367
-#, fuzzy
 msgid "Expected value of type \"au\""
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "Pričakovana vrednost vrste »au«"
 
 #: src/libnm-core-impl/nm-utils.c:1510 src/libnm-core-impl/nm-utils.c:1675
-#, fuzzy
 msgid "Expected value of type \"aau\""
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "Pričakovana vrednost vrste »aau«"
 
 #: src/libnm-core-impl/nm-utils.c:1521
 #, fuzzy
@@ -3596,19 +3577,18 @@ msgstr "neveljavno polje '%s'"
 #: src/libnm-core-impl/nm-utils.c:1556 src/libnm-core-impl/nm-utils.c:1712
 #: src/libnm-core-impl/nm-utils.c:2021 src/libnm-core-impl/nm-utils.c:2218
 #: src/libnm-core-impl/nm-utils.c:2374 src/libnm-core-impl/nm-utils.c:2559
-#, fuzzy, c-format
+#, c-format
 msgid "%s (idx=%u)"
 msgstr "%s (idx=%u)"
 
 #: src/libnm-core-impl/nm-utils.c:1693
-#, fuzzy, c-format
+#, c-format
 msgid "Incomplete IPv4 route (idx=%u)"
 msgstr "Nepopolna pot IPv4 (idx=%u)"
 
 #: src/libnm-core-impl/nm-utils.c:1821
-#, fuzzy
 msgid "Expected value of type \"aay\""
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "Pričakovana vrednost vrste \"aay\""
 
 #: src/libnm-core-impl/nm-utils.c:1846
 #, fuzzy, c-format
@@ -3656,14 +3636,13 @@ msgid "IPv6 next-hop address with invalid length (idx=%u)"
 msgstr "IPv6 naslov naslednjega skoka z neveljavno dolžino (idx=%u)"
 
 #: src/libnm-core-impl/nm-utils.c:2343 src/libnm-core-impl/nm-utils.c:2522
-#, fuzzy
 msgid "Expected value of type \"aa{sv}\""
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "Pričakovana vrednost vrste »aa{sv}«"
 
 #: src/libnm-core-impl/nm-utils.c:2361
-#, fuzzy, c-format
-msgid "IP address requires fields \"address\" and \"prefix\" (idx=%u)"
-msgstr "Naslov IP zahteva polja »address« in »prefix« (idx=%u)"
+#, c-format
+msgid "IP address requires fields \"dest\" and \"prefix\" (idx=%u)"
+msgstr "Naslov IP zahteva polji »dest« in »prefix« (idx=%u)"
 
 #: src/libnm-core-impl/nm-utils.c:2540
 #, fuzzy, c-format
@@ -3681,39 +3660,36 @@ msgid "'%s' unexpected: parent already specified."
 msgstr "'%s' nepričakovano: starš je že določen."
 
 #: src/libnm-core-impl/nm-utils.c:2828
-#, fuzzy, c-format
+#, c-format
 msgid "invalid handle: '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljavna ročica: »%s«"
 
 #: src/libnm-core-impl/nm-utils.c:2850
-#, fuzzy
 msgid "parent not specified."
-msgstr "Napaka: iface nastavitev mora določena."
+msgstr "nadrejeni ni določen."
 
 #: src/libnm-core-impl/nm-utils.c:2914
-#, fuzzy, c-format
+#, c-format
 msgid "unsupported qdisc option: '%s'."
-msgstr "Nepodprta možnost qdisc: '%s'."
+msgstr "Nepodprta možnost qdisc: »%s«."
 
 #: src/libnm-core-impl/nm-utils.c:3044
-#, fuzzy
 msgid "action name missing."
 msgstr "manjka ime dejanja."
 
 #: src/libnm-core-impl/nm-utils.c:3069
-#, fuzzy, c-format
+#, c-format
 msgid "unsupported action option: '%s'."
-msgstr "Nepodprta možnost dejanja: »%s«."
+msgstr "Nepodprta možnost »action«: »%s«."
 
 #: src/libnm-core-impl/nm-utils.c:3206
-#, fuzzy
 msgid "invalid action: "
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavno dejanje: "
 
 #: src/libnm-core-impl/nm-utils.c:3210
-#, fuzzy, c-format
+#, c-format
 msgid "unsupported tfilter option: '%s'."
-msgstr "Nepodprta možnost tfilterja: '%s'."
+msgstr "Nepodprta možnost tfilter: »%s«."
 
 #: src/libnm-core-impl/nm-utils.c:3510
 #, fuzzy, c-format
@@ -3721,59 +3697,57 @@ msgid "failed stat file %s: %s"
 msgstr "Določanje maske signala je spodletelo: %d"
 
 #: src/libnm-core-impl/nm-utils.c:3521
-#, fuzzy, c-format
+#, c-format
 msgid "not a file (%s)"
-msgstr "Datoteka: »%s«"
+msgstr "ni datoteka (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:3532
-#, fuzzy, c-format
+#, c-format
 msgid "invalid file owner %d for %s"
-msgstr "neveljavno polje '%s'"
+msgstr "neveljaven lastnik datoteke %d za %s"
 
 #: src/libnm-core-impl/nm-utils.c:3544
-#, fuzzy, c-format
+#, c-format
 msgid "file permissions for %s"
-msgstr "Napaka: 'nm permissions': %s"
+msgstr "Dovoljenja za datoteke za %s"
 
 #: src/libnm-core-impl/nm-utils.c:3554
-#, fuzzy, c-format
+#, c-format
 msgid "reject %s"
-msgstr "zavrniti %s"
+msgstr "zavrni %s"
 
 #: src/libnm-core-impl/nm-utils.c:3574
-#, fuzzy, c-format
+#, c-format
 msgid "path is not absolute (%s)"
 msgstr "pot ni absolutna (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:3589
-#, fuzzy, c-format
+#, c-format
 msgid "Plugin file does not exist (%s)"
-msgstr "Datoteka vtičnika ne obstaja (%s)"
+msgstr "Datoteka vstavka ne obstaja (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:3598
-#, fuzzy, c-format
+#, c-format
 msgid "Plugin is not a valid file (%s)"
-msgstr "Vtičnik ni veljavna datoteka (%s)"
+msgstr "Vstavek ni veljavna datoteka (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:3609
-#, fuzzy, c-format
+#, c-format
 msgid "libtool archives are not supported (%s)"
 msgstr "Arhivi libtool niso podprti (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:3686
-#, fuzzy, c-format
+#, c-format
 msgid "Could not find \"%s\" binary"
-msgstr "Ni bilo mogoče najti binarne datoteke »%s«"
+msgstr "Ni mogoče najti binarne datoteke »%s«"
 
 #: src/libnm-core-impl/nm-utils.c:4510
-#, fuzzy
 msgid "unknown secret flags"
-msgstr "Neznana raven beleženja '%s'"
+msgstr "Neznane skrivne zastavice"
 
 #: src/libnm-core-impl/nm-utils.c:4520
-#, fuzzy
 msgid "conflicting secret flags"
-msgstr "Nasprotujoče si skrivne zastave"
+msgstr "Nasprotujoče si skrivne zastavice"
 
 #: src/libnm-core-impl/nm-utils.c:4531
 #, fuzzy
@@ -3781,7 +3755,6 @@ msgid "secret flags must not be \"not-required\""
 msgstr "Skrivne zastave ne smejo biti »neobvezne«"
 
 #: src/libnm-core-impl/nm-utils.c:4539
-#, fuzzy
 msgid "unsupported secret flags"
 msgstr "Nepodprte skrivne zastavice"
 
@@ -3791,9 +3764,8 @@ msgid "can't be simultaneously disabled and enabled"
 msgstr "Ni mogoče hkrati onemogočiti in omogočiti"
 
 #: src/libnm-core-impl/nm-utils.c:4577
-#, fuzzy
 msgid "WPS is required"
-msgstr "Preverjanje PIN je spodletelo"
+msgstr "WPS je obvezen"
 
 #: src/libnm-core-impl/nm-utils.c:4645
 #, fuzzy, c-format
@@ -3806,39 +3778,34 @@ msgid "not a valid ethernet MAC address #%u at position %lld"
 msgstr "ni veljaven ethernetni naslov MAC #%u na položaju %lld"
 
 #: src/libnm-core-impl/nm-utils.c:5321
-#, fuzzy
 msgid "not valid utf-8"
-msgstr "Neveljavni UTF-8"
+msgstr "ni veljaven UTF-8"
 
 #: src/libnm-core-impl/nm-utils.c:5342 src/libnm-core-impl/nm-utils.c:5395
-#, fuzzy
 msgid "is not a JSON object"
 msgstr "ni predmet JSON"
 
 #: src/libnm-core-impl/nm-utils.c:5371
-#, fuzzy
 msgid "value is NULL"
 msgstr "vrednost je NULL"
 
 #: src/libnm-core-impl/nm-utils.c:5371
-#, fuzzy
 msgid "value is empty"
-msgstr "vrednost niza je prazna"
+msgstr "vrednost je prazna"
 
 #: src/libnm-core-impl/nm-utils.c:5383
-#, fuzzy, c-format
+#, c-format
 msgid "invalid JSON at position %d (%s)"
 msgstr "neveljaven JSON na položaju %d (%s)"
 
 #: src/libnm-core-impl/nm-utils.c:5508 src/libnm-core-impl/nm-utils.c:5528
-#, fuzzy
 msgid "unterminated escape sequence"
-msgstr "Nezaključeno zaporedje pobega"
+msgstr "Nezaključeno ubežno zaporedje"
 
 #: src/libnm-core-impl/nm-utils.c:5554
-#, fuzzy, c-format
+#, c-format
 msgid "unknown attribute '%s'"
-msgstr "Neznana raven beleženja '%s'"
+msgstr "neznan atribut »%s«"
 
 #: src/libnm-core-impl/nm-utils.c:5572
 #, fuzzy, c-format
@@ -3881,19 +3848,18 @@ msgid "Bridge VLANs %d and %d are not sorted by ascending vid"
 msgstr "Mostni VLAN-ji %d in %d niso razvrščeni po naraščajočem vidu"
 
 #: src/libnm-core-impl/nm-utils.c:5985
-#, fuzzy, c-format
+#, c-format
 msgid "duplicate bridge VLAN vid %u"
-msgstr "neveljavno polje '%s'"
+msgstr "podvojeni most VLAN vid %u"
 
 #: src/libnm-core-impl/nm-utils.c:5997
-#, fuzzy
 msgid "only one VLAN can be the PVID"
 msgstr "samo en VLAN je lahko PVID"
 
 #: src/libnm-core-impl/nm-utils.c:6140
-#, fuzzy, c-format
+#, c-format
 msgid "unknown flags 0x%x"
-msgstr "Neznana raven beleženja '%s'"
+msgstr "neznane zastavice 0x%x"
 
 #: src/libnm-core-impl/nm-utils.c:6152
 #, fuzzy
@@ -3922,43 +3888,42 @@ msgstr "Ni mogoče naložiti vtičnika \"%s\": %s"
 msgid "failed to load nm_vpn_editor_plugin_factory() from %s (%s)"
 msgstr "ni bilo mogoče naložiti nm_vpn_editor_plugin_factory() iz %s (%s)"
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:321
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:324
 #, fuzzy, c-format
 msgid "unknown error initializing plugin %s"
 msgstr "Neznana napaka pri inicializaciji vtičnika %s"
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:341
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:344
 #, fuzzy, c-format
 msgid "cannot load VPN plugin in '%s': missing plugin name"
 msgstr "vtičnika VPN ni mogoče naložiti v '%s': manjkajoče ime vtičnika"
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:349
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:352
 #, fuzzy, c-format
 msgid "cannot load VPN plugin in '%s': invalid service name"
 msgstr "vtičnika VPN ni mogoče naložiti v '%s': neveljavno ime storitve"
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:493
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:496
 #, fuzzy
 msgid "the plugin does not support import capability"
 msgstr "Vtičnik ne podpira možnosti uvoza"
 
-#: src/libnm-core-impl/nm-vpn-editor-plugin.c:517
+#: src/libnm-core-impl/nm-vpn-editor-plugin.c:520
 #, fuzzy
 msgid "the plugin does not support export capability"
 msgstr "Vtičnik ne podpira možnosti izvoza"
 
 #: src/libnm-core-impl/nm-vpn-plugin-info.c:109
-#, fuzzy
 msgid "missing filename"
-msgstr "Manjka ime datoteke."
+msgstr "Manjka ime datoteke"
 
 #: src/libnm-core-impl/nm-vpn-plugin-info.c:117
-#, fuzzy, c-format
+#, c-format
 msgid "filename must be an absolute path (%s)"
 msgstr "Ime datoteke mora biti absolutna pot (%s)"
 
 #: src/libnm-core-impl/nm-vpn-plugin-info.c:126
-#, fuzzy, c-format
+#, c-format
 msgid "filename has invalid format (%s)"
 msgstr "Ime datoteke ima neveljavno obliko zapisa (%s)"
 
@@ -4304,33 +4269,33 @@ msgstr "Odšifriranje zasebnega ključa je spodletelo."
 msgid "Method returned type '%s', but expected '%s'"
 msgstr "Način »%s« je vrnil vrsto »%s«, pričakovana pa je vrsta »%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 "razred predmeta »%s« nima določenega imena lastnosti »%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 "lastnost »%s« poti datoteke »%s« ni zapisljiva"
 
-#: 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"
 msgstr "lastnosti »%s« za predmet »%s« ni mogoče nastaviti po sestavljanju"
 
-#: 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« ni veljavno ime lastnosti; »%s« ni podvrsta predmeta 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 "ni mogoče nastaviti lastnosti »%s« vrste »%s« za vrednost vrste »%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 "
@@ -4339,53 +4304,53 @@ msgstr ""
 "vrednost »%s« vrste »%s« ni veljavna ali pa je lastnost »%s« izven obsega za "
 "vrsto »%s«"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5516
+#: src/libnm-glib-aux/nm-shared-utils.c:5581
 #, fuzzy
 msgid "interface name is missing"
 msgstr "Napaka: manjka argument %s."
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5524
+#: src/libnm-glib-aux/nm-shared-utils.c:5589
 #, fuzzy
 msgid "interface name is too short"
 msgstr "ime vmesnika je prekratko"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5532
+#: src/libnm-glib-aux/nm-shared-utils.c:5597
 #, fuzzy
 msgid "interface name is reserved"
 msgstr "ime vmesnika je rezervirano"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5545
+#: src/libnm-glib-aux/nm-shared-utils.c:5610
 #, fuzzy
 msgid "interface name contains an invalid character"
 msgstr "Ime vmesnika vsebuje neveljaven znak"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5553
+#: src/libnm-glib-aux/nm-shared-utils.c:5618
 #, fuzzy
 msgid "interface name is longer than 15 characters"
 msgstr "Ime vmesnika je daljše od 15 znakov"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5578
+#: src/libnm-glib-aux/nm-shared-utils.c:5643
 #, fuzzy, c-format
 msgid "'%%' is not allowed in interface names"
 msgstr "Napaka: naprava '%s' ni naprava Wi-Fi."
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5590
+#: src/libnm-glib-aux/nm-shared-utils.c:5655
 #, fuzzy, c-format
 msgid "'%s' is not allowed as interface name"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5612
+#: src/libnm-glib-aux/nm-shared-utils.c:5677
 #, fuzzy
 msgid ""
 "interface name must be alphanumerical with no forward or backward slashes"
 msgstr "Ime vmesnika mora biti alfanumerično brez poševnic naprej ali nazaj"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5629
+#: src/libnm-glib-aux/nm-shared-utils.c:5694
 #, fuzzy
 msgid "interface name must not be empty"
 msgstr "Ime vmesnika ne sme biti prazno"
 
-#: src/libnm-glib-aux/nm-shared-utils.c:5637
+#: src/libnm-glib-aux/nm-shared-utils.c:5702
 #, fuzzy
 msgid "interface name must be UTF-8 encoded"
 msgstr "ime vmesnika mora biti kodirano z UTF-8"
@@ -4424,22 +4389,22 @@ msgid "'%s' is ambiguous: %s"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
 #: src/libnmc-base/nm-client-utils.c:243
-#, fuzzy, c-format
+#, c-format
 msgid "missing name, try one of [%s]"
-msgstr "manjkajoče ime, poskusite eno od [%s]"
+msgstr "manjkajoče ime, poskusite z enim izmed [%s]"
 
-#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3771
-#: src/nmcli/connections.c:3829
-#, fuzzy, c-format
+#: src/libnmc-base/nm-client-utils.c:248 src/nmcli/connections.c:3781
+#: src/nmcli/connections.c:3847
+#, c-format
 msgid "'%s' not among [%s]"
-msgstr "\"%s\" ni med [%s]"
+msgstr "»%s« ni med [%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:1818
+#: src/libnmc-setting/nm-meta-setting-desc.c:1849
+#: src/libnmc-setting/nm-meta-setting-desc.c:2858
+#: src/libnmc-setting/nm-meta-setting-desc.c:2916 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
@@ -4498,55 +4463,50 @@ msgstr "povezava je spodletela"
 #: src/libnmc-base/nm-client-utils.c:311 src/libnmc-base/nm-client-utils.c:312
 #: src/libnmc-base/nm-client-utils.c:313 src/libnmc-base/nm-client-utils.c:314
 #: src/libnmc-base/nm-client-utils.c:315 src/libnmc-base/nm-client-utils.c:316
-#, fuzzy
 msgid "connecting (externally)"
-msgstr "povezovanje  (priprava)"
+msgstr "povezovanje (zunaj)"
 
 #: src/libnmc-base/nm-client-utils.c:317
-#, fuzzy
 msgid "connected (externally)"
-msgstr "povezan (le mesto)"
+msgstr "povezan (zunaj)"
 
 #: src/libnmc-base/nm-client-utils.c:318 src/libnmc-base/nm-client-utils.c:319
-#, fuzzy
 msgid "deactivating (externally)"
-msgstr "onemogočanje"
+msgstr "onemogočanje (zunaj)"
 
 #: 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:876
+#: src/libnmc-setting/nm-meta-setting-desc.c:2850 src/nmcli/connections.c:5595
+#: src/nmcli/connections.c:7582 src/nmcli/connections.c:7583
 #: 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"
 msgstr "da"
 
 #: 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:876
+#: src/libnmc-setting/nm-meta-setting-desc.c:2853 src/nmcli/connections.c:5594
+#: src/nmcli/connections.c:7582 src/nmcli/connections.c:7583
 #: 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"
 msgstr "ne"
 
 #: src/libnmc-base/nm-client-utils.c:344
-#, fuzzy
 msgid "yes (guessed)"
-msgstr "Da (uganil)"
+msgstr "da (ugibanje)"
 
 #: src/libnmc-base/nm-client-utils.c:345
-#, fuzzy
 msgid "no (guessed)"
-msgstr "Ne (ugibal)"
+msgstr "ne (ugibanje)"
 
 #: src/libnmc-base/nm-client-utils.c:353
 msgid "No reason given"
 msgstr "Razlog ni podan"
 
 #. We should not really come here
-#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3791
-#: src/nmcli/connections.c:3850
+#: src/libnmc-base/nm-client-utils.c:354 src/nmcli/connections.c:3801
+#: src/nmcli/connections.c:3868
 msgid "Unknown error"
 msgstr "Neznana napaka"
 
@@ -4857,7 +4817,7 @@ msgstr "Naprava ni upravljana, ker povezave ni inicializiral udev"
 #, fuzzy
 msgid ""
 "The device is unmanaged by explicit user decision (e.g. 'nmcli device set "
-"$DEV managed no'"
+"$DEV managed no')"
 msgstr ""
 "Naprava ni upravljana z izrecno odločitvijo uporabnika (npr. \"nmcli device "
 "set $DEV managed no\""
@@ -4905,59 +4865,48 @@ msgid "Unknown reason"
 msgstr "Neznani razlog"
 
 #: src/libnmc-base/nm-client-utils.c:505
-#, fuzzy
 msgid "The connection was disconnected"
-msgstr "povezovanje (zagon drugotnih povezav)"
+msgstr "Povezava je bila prekinjena"
 
 #: src/libnmc-base/nm-client-utils.c:507
-#, fuzzy
 msgid "Disconnected by user"
-msgstr "povezava je prekinjena"
+msgstr "Uporabnik je prekinil povezavo"
 
 #: src/libnmc-base/nm-client-utils.c:509
-#, fuzzy
 msgid "The base network connection was interrupted"
-msgstr "osnovna omrežna povezava je bila prekinjena"
+msgstr "Osnovna omrežna povezava je bila prekinjena"
 
 #: src/libnmc-base/nm-client-utils.c:511
-#, fuzzy
 msgid "The VPN service stopped unexpectedly"
-msgstr "storitev VPN je nepričakovano zaustavljena"
+msgstr "Storitev VPN se je nepričakovano ustavila"
 
 #: src/libnmc-base/nm-client-utils.c:513
-#, fuzzy
 msgid "The VPN service returned invalid configuration"
-msgstr "storitev VPN je vrnila neveljavne nastavitve"
+msgstr "Storitev VPN je vrnila neveljavno prilagoditev"
 
 #: src/libnmc-base/nm-client-utils.c:515
-#, fuzzy
 msgid "The connection attempt timed out"
-msgstr "poskus povezave je časovno potekel"
+msgstr "Časovna omejitev poskusa povezave je potekla"
 
 #: src/libnmc-base/nm-client-utils.c:517
-#, fuzzy
 msgid "The VPN service did not start in time"
-msgstr "storitev VPN se ni pravočasno začela"
+msgstr "Storitev VPN se ni zagnala pravočasno"
 
 #: src/libnmc-base/nm-client-utils.c:519
-#, fuzzy
 msgid "The VPN service failed to start"
-msgstr "storitev VPN ni uspešno začeta"
+msgstr "Storitev VPN se ni uspela zagnati"
 
 #: src/libnmc-base/nm-client-utils.c:520
-#, fuzzy
 msgid "No valid secrets"
-msgstr "ni veljavnih VPN skrivnosti"
+msgstr "Brez veljavnih skrivnosti"
 
 #: src/libnmc-base/nm-client-utils.c:521
-#, fuzzy
 msgid "Invalid secrets"
-msgstr "neveljavne VPN skrivnosti"
+msgstr "Neveljavne skrivnosti"
 
 #: src/libnmc-base/nm-client-utils.c:523
-#, fuzzy
 msgid "The connection was removed"
-msgstr "povezava je odstranjena"
+msgstr "Povezava je bila odstranjena"
 
 #: src/libnmc-base/nm-client-utils.c:525
 #, fuzzy
@@ -4970,9 +4919,8 @@ msgid "Could not create a software link"
 msgstr "Ni mogoče dodeliti pomnilnika za podatke datoteke PEM."
 
 #: src/libnmc-base/nm-client-utils.c:529
-#, fuzzy
 msgid "The device disappeared"
-msgstr "Dejavna povezava naprave je izginila"
+msgstr "Naprava je izginila"
 
 #: src/libnmc-base/nm-client-utils.c:855
 #, fuzzy
@@ -5003,9 +4951,8 @@ msgstr ""
 "».:«</property></setting>"
 
 #: src/libnmc-base/nm-client-utils.c:899
-#, fuzzy
 msgid "invalid setting name"
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljavno ime nastavitve"
 
 #: src/libnmc-base/nm-client-utils.c:913
 #, fuzzy
@@ -5013,9 +4960,8 @@ msgid "property name is not UTF-8"
 msgstr "Napaka: ni podanega veljavnega parametra."
 
 #: src/libnmc-base/nm-client-utils.c:930 src/libnmc-base/nm-client-utils.c:936
-#, fuzzy
 msgid "secret is not UTF-8"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "skrivnost ni UTF-8"
 
 #: src/libnmc-base/nm-polkit-listener.c:327
 #, fuzzy, c-format
@@ -5034,7 +4980,7 @@ msgstr "Ključ v skupni rabi za %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:5188
 #: 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
@@ -5157,35 +5103,30 @@ msgid "Secrets are required to access the MACsec network '%s'"
 msgstr "Skrivnosti so potrebne za dostop do omrežja MACsec '%s'"
 
 #: src/libnmc-base/nm-secret-agent-simple.c:966
-#, fuzzy
 msgid "MACsec PSK authentication"
 msgstr "Preverjanje pristnosti MACsec PSK"
 
 #: src/libnmc-base/nm-secret-agent-simple.c:968
-#: src/libnmc-setting/nm-meta-setting-desc.c:6901
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7104
 msgid "MKA CAK"
 msgstr "MKA CAK"
 
 #: src/libnmc-base/nm-secret-agent-simple.c:973
-#, fuzzy
 msgid "MACsec EAP authentication"
 msgstr "Preverjanje pristnosti MACsec EAP"
 
 #: src/libnmc-base/nm-secret-agent-simple.c:978
-#, fuzzy
 msgid "WireGuard VPN secret"
 msgstr "Skrivnost WireGuard VPN"
 
 #: src/libnmc-base/nm-secret-agent-simple.c:1021
-#, fuzzy
 msgid "VPN password required"
-msgstr "Zahtevano geslo VPN"
+msgstr "Zahtevano je geslo VPN"
 
 #: src/libnmc-base/nm-vpn-helpers.c:42
-#, fuzzy, c-format
+#, c-format
 msgid "unknown VPN plugin \"%s\""
-msgstr "Neznana domena beleženja '%s'"
+msgstr "neznani vstavek VPN »%s«"
 
 #: src/libnmc-base/nm-vpn-helpers.c:58
 #, fuzzy, c-format
@@ -5201,9 +5142,9 @@ msgstr ""
 "odjemalca?"
 
 #: src/libnmc-base/nm-vpn-helpers.c:73
-#, fuzzy, c-format
+#, c-format
 msgid "failed to load VPN plugin \"%s\": %s"
-msgstr "Določanje maske signala je spodletelo: %d"
+msgstr "ni uspelo naložiti vstavka VPN »%s«: %s"
 
 #: src/libnmc-base/nm-vpn-helpers.c:149
 msgid "Certificate password"
@@ -5216,16 +5157,15 @@ msgstr "Geslo posredniškega strežnika HTTP"
 #: src/libnmc-base/nm-vpn-helpers.c:155 src/libnmc-base/nm-vpn-helpers.c:160
 #, fuzzy
 msgid "Group password"
-msgstr "Geslo skupine"
+msgstr "Geslo grupe"
 
 #: src/libnmc-base/nm-vpn-helpers.c:164
 msgid "Gateway URL"
 msgstr "URL prehoda"
 
 #: src/libnmc-base/nm-vpn-helpers.c:165
-#, fuzzy
 msgid "Cookie"
-msgstr "PIŠKOTEK"
+msgstr "Piškotek"
 
 #: src/libnmc-base/nm-vpn-helpers.c:166
 #, fuzzy
@@ -5263,206 +5203,195 @@ msgid "field '%s' has to be alone"
 msgstr "polje »%s« mora biti samostojno."
 
 #: src/libnmc-setting/nm-meta-setting-access.c:523
-#, fuzzy, c-format
+#, c-format
 msgid "invalid field '%s%s%s%s%s'; %s%s%s"
-msgstr "Napaka: 'dev wifi': %s; dovoljena polja: %s"
+msgstr "neveljavno polje »%s%s%s%s%s«; %s%s%s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:258
-#: src/libnmc-setting/nm-meta-setting-desc.c:326
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:259
+#: src/libnmc-setting/nm-meta-setting-desc.c:327
+#, c-format
 msgid "invalid prefix '%s'; <0-%d> allowed"
-msgstr "neveljavno polje '%s'"
+msgstr "neveljavna predpona »%s«; <0-%d> dovoljeno"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:269
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:270
+#, c-format
 msgid "invalid IP address: %s"
-msgstr "neveljavne VPN skrivnosti"
+msgstr "neveljaven naslov IP: %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:294
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:295
 msgid ""
 "The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [,"
 "ip[/prefix] ...]'"
 msgstr ""
-"Veljavna sintaksa je: 'ip[/predpona] [naslednji skok] [metrika] "
-"[atribut=val]... [,ip[/predpona] ...]\""
+"Veljavna skladnja: 'ip[/predpona] [naslednji-skok] [metrika] "
+"[atribut=vred]... [,ip[/predpona] …]’"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:340
+#: src/libnmc-setting/nm-meta-setting-desc.c:341
 #, fuzzy, c-format
 msgid "the next hop ('%s') must be first"
 msgstr "Naslednji skok (\"%s\") mora biti prvi"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:350
+#: src/libnmc-setting/nm-meta-setting-desc.c:351
 #, fuzzy, c-format
 msgid "the metric ('%s') must be before attributes"
 msgstr "meritev (\"%s\") mora biti pred atributi"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:403
+#: src/libnmc-setting/nm-meta-setting-desc.c:404
 #, fuzzy, c-format
 msgid "invalid route: %s. %s"
 msgstr "Neveljavna pot: %s. %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:472
+#: src/libnmc-setting/nm-meta-setting-desc.c:473
 #, fuzzy, c-format
 msgid "cannot read pac-script from file '%s'"
 msgstr "Ne morem prebrati PAC-Script iz datoteke '%s'"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:480
+#: src/libnmc-setting/nm-meta-setting-desc.c:481
 #, fuzzy, c-format
 msgid "file '%s' contains non-valid utf-8"
 msgstr "Datoteka '%s' vsebuje neveljaven UTF-8"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:493
+#: src/libnmc-setting/nm-meta-setting-desc.c:494
 #, fuzzy, c-format
 msgid "'%s' does not contain a valid PAC Script"
 msgstr "»%s« ne vsebuje veljavnega skripta PAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:496
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:497
 msgid "Not a valid PAC Script"
 msgstr "Ni veljaven skript PAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:548
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:549
+#, c-format
 msgid "cannot read team config from file '%s'"
-msgstr "Konfiguracije ekipe ni mogoče prebrati iz datoteke '%s'"
+msgstr "Prilagoditve ekipe ni mogoče prebrati iz datoteke »%s«"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:556
+#: src/libnmc-setting/nm-meta-setting-desc.c:557
 #, fuzzy, c-format
 msgid "team config file '%s' contains non-valid utf-8"
 msgstr "Konfiguracijska datoteka ekipe '%s' vsebuje neveljaven UTF-8"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1050
+#: src/libnmc-setting/nm-meta-setting-desc.c:1051
 msgid "auto"
 msgstr "samodejno"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1179
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1180
+#, c-format
 msgid "%s (%s)"
-msgstr "Stik: %s %s %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
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:1436
+#: src/libnmc-setting/nm-meta-setting-desc.c:1444
+#: src/libnmc-setting/nm-meta-setting-desc.c:4506
 msgid "'%s' is out of range [%"
-msgstr "%s: vrednost je izven dovoljenega obsega"
+msgstr "»%s« je izven obsega [%"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1451
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1452
+#, c-format
 msgid "'%s' is not a valid number"
-msgstr "\"%s\" ni veljavna številka"
+msgstr "»%s« ni veljavna številka"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1507
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1508
+#, c-format
 msgid "'%s' is out of range [0, %u]"
-msgstr "'%s' je izven obsega [0, %u]"
+msgstr "»%s« je izven obsega [0, %u]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1558
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1559
+#, c-format
 msgid "'%s' is not a valid Ethernet MAC"
-msgstr "»%s« ni veljaven ethernetni MAC"
+msgstr "»%s« ni veljaven Ethernet-ni MAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1647
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1648
+#, c-format
 msgid "invalid option '%s', use a combination of [%s]"
-msgstr "neveljavna možnost '%s', uporabite kombinacijo [%s]"
+msgstr "neveljavna možnost »%s«, uporabite kombinacijo [%s]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1784
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1785
+#, c-format
 msgid "%d (key)"
-msgstr "Naloženih %d ključev"
+msgstr "%d (ključ)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1786
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:1787
+#, c-format
 msgid "%d (passphrase)"
-msgstr "%d (104/128-bitno šifrirno geslo)"
+msgstr "%d (šifrirno geslo)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1789
+#: src/libnmc-setting/nm-meta-setting-desc.c:1790
 #, c-format
 msgid "%d (unknown)"
 msgstr "%d (neznano)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1802
+#: src/libnmc-setting/nm-meta-setting-desc.c:1803
 msgid "0 (NONE)"
 msgstr "0 (BREZ)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1808
+#: src/libnmc-setting/nm-meta-setting-desc.c:1809
 msgid "REORDER_HEADERS, "
 msgstr "PRERAZVRSTI_GLAVE,"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1810
+#: src/libnmc-setting/nm-meta-setting-desc.c:1811
 msgid "GVRP, "
 msgstr "GVRP,"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1812
+#: src/libnmc-setting/nm-meta-setting-desc.c:1813
 msgid "LOOSE_BINDING, "
 msgstr "OHLAPNE_VEZAVE,"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1814
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:1815
 msgid "MVRP, "
-msgstr "GVRP,"
+msgstr "MVRP, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1835
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:1836
 msgid "0 (none)"
-msgstr ""
-"Algoritem za kodiranje ravnine alfa (0 = brez, 1 = stisnjeno z WebP brez "
-"izgube). Privzeto je 1."
+msgstr "0 (brez)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1841
+#: src/libnmc-setting/nm-meta-setting-desc.c:1842
 #, fuzzy
 msgid "agent-owned, "
 msgstr "v lasti zastopnika, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1843
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:1844
 msgid "not saved, "
-msgstr "shranjeno"
+msgstr "ni shranjeno, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:1845
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:1846
 msgid "not required, "
-msgstr "Ni zahtevano"
+msgstr "ni potrebno, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2050
+#: src/libnmc-setting/nm-meta-setting-desc.c:2051
 #, fuzzy, c-format
 msgid "'%s' is not valid; use <option>=<value>"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2060
+#: src/libnmc-setting/nm-meta-setting-desc.c:2061
 #, fuzzy, c-format
 msgid "cannot set empty \"%s\" option"
 msgstr "Napaka: %s."
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2121
+#: src/libnmc-setting/nm-meta-setting-desc.c:2122
 #, fuzzy, c-format
 msgid "'%u' flags are not valid; use combination of %s"
 msgstr "oznake \"%u\" niso veljavne; uporabite kombinacijo %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2141
+#: src/libnmc-setting/nm-meta-setting-desc.c:2142
 #, fuzzy, c-format
 msgid "'%s' is not a valid number (or out of range)"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2241
+#: src/libnmc-setting/nm-meta-setting-desc.c:2242
 #, fuzzy, c-format
 msgid "invalid IPv4 or subnet \"%s\""
 msgstr "neveljavno polje '%s'"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2272
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:2273
 msgid "not a valid hex-string"
-msgstr "Odšifriranje zasebnega ključa je spodletelo."
+msgstr "ni veljaven šestnajstični niz"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2290
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:2291
+#, c-format
 msgid "'%s' is not a valid hex character"
-msgstr "»%s« ni veljaven šestnajstih znak"
+msgstr "»%s« ni veljaven šestnajstiški znak"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2378
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:2379
 msgid ""
 "too many arguments. Please only specify a private key file and optionally a "
 "password"
@@ -5470,12 +5399,12 @@ msgstr ""
 "preveč argumentov. Prosimo, navedite samo datoteko zasebnega ključa in po "
 "želji geslo"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2495
+#: src/libnmc-setting/nm-meta-setting-desc.c:2496
 #, fuzzy, c-format
 msgid "failed to set bond option \"%s\""
 msgstr "Določanje maske signala je spodletelo: %d"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2543
+#: src/libnmc-setting/nm-meta-setting-desc.c:2544
 #, fuzzy, c-format
 msgid ""
 "Enter a list of bonding options formatted as:\n"
@@ -5507,104 +5436,101 @@ msgstr ""
 "Primer: način = 2, miimon = 120\n"
 "</value></value>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2650
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:2651
 msgid "Can not change the connection type"
-msgstr "poskus povezave je časovno potekel"
+msgstr "Vrste povezave ni mogoče spremeniti"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2731
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:2732
+#, c-format
 msgid "invalid permission \"%s\""
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljavno dovoljenje »%s«"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2831
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:2832
+#, c-format
 msgid "the value '%s' is not a valid UUID"
-msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna."
+msgstr "vrednost »%s« ni veljaven UUID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2902
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:2903
 msgid "0 (disabled)"
 msgstr "0 (onemogočeno)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2908
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:2909
 msgid "enabled, "
-msgstr "Onemogočeno"
+msgstr "omogočeno, "
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2910
+#: src/libnmc-setting/nm-meta-setting-desc.c:2911
 #, fuzzy
 msgid "advertise, "
-msgstr "Oglaševanje"
+msgstr "Ime krajevneg gostitelja za oglaševanje na strežniku"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:2912
+#: src/libnmc-setting/nm-meta-setting-desc.c:2913
 #, fuzzy
 msgid "willing, "
 msgstr "Willing"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3001
+#: src/libnmc-setting/nm-meta-setting-desc.c:3002
 #, fuzzy, c-format
 msgid "'%s' is not a valid DCB flag"
 msgstr "\"%s\" ni veljavna zastavica DCB"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3029
+#: src/libnmc-setting/nm-meta-setting-desc.c:3030
 #, fuzzy
 msgid "must contain 8 comma-separated numbers"
 msgstr "mora vsebovati 8 številk, ločenih z vejico"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3044
+#: src/libnmc-setting/nm-meta-setting-desc.c:3045
 #, fuzzy, c-format
 msgid "'%s' not a number between 0 and %u (inclusive) or %u"
 msgstr "'%s' ni število med 0 in %u (vključno) ali %u"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3051
+#: src/libnmc-setting/nm-meta-setting-desc.c:3052
 #, fuzzy, c-format
 msgid "'%s' not a number between 0 and %u (inclusive)"
 msgstr "'%s' ni število med 0 in %u (vključno)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3077
+#: src/libnmc-setting/nm-meta-setting-desc.c:3078
 #, fuzzy, c-format
 msgid "changes will have no effect until '%s' includes 1 (enabled)"
 msgstr "Spremembe ne bodo imele učinka, dokler »%s« ne vključi 1 (omogočeno)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3109
+#: src/libnmc-setting/nm-meta-setting-desc.c:3110
 #, fuzzy, c-format
 msgid "bandwidth percentages must total 100%%"
 msgstr "Odstotki pasovne širine morajo biti 100%%"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3209
-#: src/libnmc-setting/nm-meta-setting-desc.c:3218
+#: src/libnmc-setting/nm-meta-setting-desc.c:3210
+#: src/libnmc-setting/nm-meta-setting-desc.c:3219
 #, fuzzy
 msgid "SIM operator ID must be a 5 or 6 number MCCMNC code"
 msgstr "ID operaterja SIM mora biti koda MCCMNC s 5 ali 6 številkami"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3241
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:3242
+#, c-format
 msgid "'%s' is not a valid IBoIP P_Key"
-msgstr "\"%s\" ni veljaven IBoIP P_Key"
+msgstr "»%s« ni veljaven P_Key IBoIP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3265
+#: src/libnmc-setting/nm-meta-setting-desc.c:3266
 msgid "default"
 msgstr "privzeto"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3536
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:3537
+#, c-format
 msgid "invalid gateway address '%s'"
-msgstr "neveljavno polje '%s'"
+msgstr "Neveljaven naslov prehoda »%s«"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3688
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:3689
+#, c-format
 msgid "'%s' is not a valid channel; use <1-13>"
-msgstr "'%s' ni veljaven kanal; uporabite <1-13>"
+msgstr "»%s« ni veljaven kanal; uporabite <1-13>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3782
+#: src/libnmc-setting/nm-meta-setting-desc.c:3783
 #, fuzzy
 msgid "The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"
 msgstr ""
 "Veljavna sintaksa je: vf [atribut=vrednost]... [,vf [atribut=vrednost]...]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3808
-#: src/libnmc-setting/nm-meta-setting-desc.c:3921
+#: src/libnmc-setting/nm-meta-setting-desc.c:3809
+#: src/libnmc-setting/nm-meta-setting-desc.c:3922
 #, fuzzy
 msgid ""
 "The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"
@@ -5612,27 +5538,27 @@ msgstr ""
 "Veljavna sintaksa je: '[root | nadrejeni <handle>] [ročaj <handle>] <kind>'</"
 "kind></handle></handle>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3835
+#: src/libnmc-setting/nm-meta-setting-desc.c:3836
 #, fuzzy
 msgid "The valid syntax is: '<value>' or '<start>-<end>"
 msgstr "Veljavna sintaksa je: '<value>' ali '<start>-<end></start></value>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:3865
+#: src/libnmc-setting/nm-meta-setting-desc.c:3866
 #, fuzzy
 msgid "The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"
 msgstr "Veljavna sintaksa je: '<vid>[<vid>-] [pvid] [neoznačeno]'</vid></vid>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4067
+#: src/libnmc-setting/nm-meta-setting-desc.c:4068
 #, fuzzy, c-format
 msgid "invalid priority map '%s'"
 msgstr "neveljavno polje '%s'"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4160
+#: src/libnmc-setting/nm-meta-setting-desc.c:4161
 #, fuzzy, c-format
 msgid "'%s' is not valid; 2 or 3 strings should be provided"
 msgstr "\"%s\" ni veljavno; Zagotoviti je treba 2 ali 3 strune"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4199
+#: src/libnmc-setting/nm-meta-setting-desc.c:4200
 #, fuzzy, c-format
 msgid ""
 "Enter a list of S/390 options formatted as:\n"
@@ -5644,97 +5570,97 @@ msgstr ""
 "Veljavne možnosti so: %s\n"
 "</value></value>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4233
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:4234
+#, c-format
 msgid "'%s' is not a valid channel"
-msgstr "Napaka: '%s' ni dejavna povezava."
+msgstr "»%s« ni veljaven kanal"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4241
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:4242
+#, c-format
 msgid "'%ld' is not a valid channel"
 msgstr "»%ld« ni veljaven kanal"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4322
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:4323
+#, c-format
 msgid ""
 "'%s' not compatible with %s '%s', please change the key or set the right %s "
 "first."
 msgstr ""
-"'%s' ni združljiv s %s '%s', prosimo, najprej spremenite tipko ali nastavite "
-"pravo %s."
+"»%s« ni združljiv s %s »%s«, prosimo, najprej spremenite ključ ali nastavite "
+"pravi %s."
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4338
+#: src/libnmc-setting/nm-meta-setting-desc.c:4339
 #, fuzzy, c-format
 msgid "WEP key is guessed to be of %s"
 msgstr "Tipka WEP naj bi bila %s"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4345
+#: src/libnmc-setting/nm-meta-setting-desc.c:4346
 #, fuzzy, c-format
 msgid "WEP key index set to '%d'"
 msgstr "Ključni indeks WEP nastavljen na »%d«"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4421
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:4422
+#, c-format
 msgid "'%s' is not compatible with '%s' type, please change or delete the key."
-msgstr "\"%s\" ni združljiv z vrsto \"%s\", spremenite ali izbrišite ključ."
+msgstr "»%s« ni združljivo z vrsto \"%s\", spremenite ali izbrišite ključ."
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4458 src/nmcli/utils.h:323
+#: src/libnmc-setting/nm-meta-setting-desc.c:4459 src/nmcli/utils.h:323
 msgid "on"
 msgstr "omogočeno"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4458 src/nmcli/utils.h:323
+#: src/libnmc-setting/nm-meta-setting-desc.c:4459 src/nmcli/utils.h:323
 msgid "off"
 msgstr "onemogočeno"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4506
-#, fuzzy, c-format
+#: src/libnmc-setting/nm-meta-setting-desc.c:4524
+#, c-format
 msgid "'%s' is not valid; use 'on', 'off', or 'ignore'"
-msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
+msgstr "»%s« ni veljavno; Uporabite »on«, »off« ali »ignore«"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4579
+#: src/libnmc-setting/nm-meta-setting-desc.c:4621
 #, fuzzy
 msgid "Bonding primary interface"
 msgstr "Povezovanje primarnega vmesnika"
 
 #. this is a virtual property, only needed during "ask" mode.
-#: src/libnmc-setting/nm-meta-setting-desc.c:4587
+#: src/libnmc-setting/nm-meta-setting-desc.c:4629
 #, fuzzy
 msgid "Bonding monitoring mode"
 msgstr "Način spremljanja lepljenja"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4596
+#: src/libnmc-setting/nm-meta-setting-desc.c:4638
 #, fuzzy
 msgid "Bonding miimon"
 msgstr "Lepljenje miimona"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4605
+#: src/libnmc-setting/nm-meta-setting-desc.c:4647
 #, fuzzy
 msgid "Bonding downdelay"
 msgstr "Zakasnitev navzdol lepljenja"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4614
+#: src/libnmc-setting/nm-meta-setting-desc.c:4656
 #, fuzzy
 msgid "Bonding updelay"
 msgstr "Zakasnitev lepljenja"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4623
+#: src/libnmc-setting/nm-meta-setting-desc.c:4665
 #, fuzzy
 msgid "Bonding arp-interval"
 msgstr "Lepljenje arp-intervala"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4632
+#: src/libnmc-setting/nm-meta-setting-desc.c:4674
 #, fuzzy
 msgid "Bonding arp-ip-target"
 msgstr "Lepljenje arp-ip-target"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4641
+#: src/libnmc-setting/nm-meta-setting-desc.c:4683
 #, fuzzy
 msgid "LACP rate (slow/fast)"
 msgstr "Stopnja LACP (počasna/hitra)"
 
 #. macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
 #. * that the actual type is (guint32(*)(type *)).
-#: src/libnmc-setting/nm-meta-setting-desc.c:4832
+#: src/libnmc-setting/nm-meta-setting-desc.c:4874
 #, fuzzy
 msgid ""
 "nmcli can accepts both direct JSON configuration data and a file name "
@@ -5753,7 +5679,7 @@ msgstr ""
 "\"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n"
 "          nastavite team.config /etc/my-team.conf\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4840
+#: src/libnmc-setting/nm-meta-setting-desc.c:4882
 #, fuzzy
 msgid ""
 "Enter a list of link watchers formatted as dictionaries where the keys are "
@@ -5803,12 +5729,12 @@ msgstr ""
 "   ime=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, "
 "name=ethtool delay-up=3\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:4889
+#: src/libnmc-setting/nm-meta-setting-desc.c:4931
 #, fuzzy
 msgid "IEEE 802.15.4 (WPAN) parent device or connection UUID"
-msgstr "ni naprave za povezavo '%s'"
+msgstr "IEEE 802.15.4 (WPAN) nadrejena naprava ali UUID povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5079
+#: src/libnmc-setting/nm-meta-setting-desc.c:5121
 #, fuzzy
 msgid ""
 "Enter bytes as a list of hexadecimal values.\n"
@@ -5831,108 +5757,95 @@ msgstr ""
 "Primeri: ab0455a6ea3a74C2\n"
 "          ab 4 55 0xa6 ea 3a 74 C2\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5152
-#: src/libnmc-setting/nm-meta-setting-desc.c:5455
-#: src/libnmc-setting/nm-meta-setting-desc.c:5994
-#: src/libnmc-setting/nm-meta-setting-desc.c:7265
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5194
+#: src/libnmc-setting/nm-meta-setting-desc.c:5497
+#: src/libnmc-setting/nm-meta-setting-desc.c:6078
+#: src/libnmc-setting/nm-meta-setting-desc.c:7468
 msgid "Password [none]"
 msgstr "Geslo [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5198
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5240
 msgid "Bluetooth device address"
-msgstr "Naslov naprave Bluetooth"
+msgstr "Naslov Bluetooth za napravo"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5247
+#: src/libnmc-setting/nm-meta-setting-desc.c:5289
 #: src/nmtui/nmt-page-bond-port.c:51
-#, fuzzy
 msgid "Queue ID"
-msgstr "_ID vrste"
+msgstr "ID vrste"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5253
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5295
 msgid "Port Priority"
 msgstr "Prednost vrat"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5265
-#: src/libnmc-setting/nm-meta-setting-desc.c:6105
-#: src/libnmc-setting/nm-meta-setting-desc.c:8007
-#: src/libnmc-setting/nm-meta-setting-desc.c:8045
-#: src/libnmc-setting/nm-meta-setting-desc.c:8242
-#: src/libnmc-setting/nm-meta-setting-desc.c:8507
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5307
+#: src/libnmc-setting/nm-meta-setting-desc.c:6216
+#: src/libnmc-setting/nm-meta-setting-desc.c:8210
+#: src/libnmc-setting/nm-meta-setting-desc.c:8248
+#: src/libnmc-setting/nm-meta-setting-desc.c:8445
+#: src/libnmc-setting/nm-meta-setting-desc.c:8710
 msgid "MAC [none]"
 msgstr "MAC [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5271
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5313
 msgid "Enable STP"
-msgstr "omogočeno"
+msgstr "Omogoči STP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5277
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5319
 msgid "STP priority"
-msgstr "neveljavno polje '%s'"
+msgstr "Prednost STP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5283
+#: src/libnmc-setting/nm-meta-setting-desc.c:5325
 #: src/nmtui/nmt-page-bridge.c:120
-#, fuzzy
 msgid "Forward delay"
-msgstr "Zamik prepo_šiljanja"
+msgstr "Zamik prepošiljanja"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5289
+#: src/libnmc-setting/nm-meta-setting-desc.c:5331
 #: src/nmtui/nmt-page-bridge.c:134
-#, fuzzy
 msgid "Hello time"
-msgstr "_Pozdravni čas"
+msgstr "Pozdravni čas"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5295
+#: src/libnmc-setting/nm-meta-setting-desc.c:5337
 #: src/nmtui/nmt-page-bridge.c:148
-#, fuzzy
 msgid "Max age"
-msgstr "_Najv. starost"
+msgstr "Najv. starost"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5301
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5343
 msgid "MAC address ageing time"
 msgstr "Čas staranja naslova MAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5311
+#: src/libnmc-setting/nm-meta-setting-desc.c:5353
 #: src/nmtui/nmt-page-bridge.c:156
-#, fuzzy
 msgid "Group forward mask"
-msgstr "Maska skupine za _posredovanje"
+msgstr "Maska skupine za posredovanje"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5353
+#: src/libnmc-setting/nm-meta-setting-desc.c:5395
 #: src/nmtui/nmt-page-bridge.c:79
 #, fuzzy
 msgid "Enable IGMP snooping"
-msgstr "Omogočanje vohanja IGMP"
+msgstr "Omogoči vohljanje IGMP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5411
+#: src/libnmc-setting/nm-meta-setting-desc.c:5453
 #, fuzzy
 msgid "Bridge port priority"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5417
+#: src/libnmc-setting/nm-meta-setting-desc.c:5459
 #, fuzzy
 msgid "Bridge port STP path cost"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5423
+#: src/libnmc-setting/nm-meta-setting-desc.c:5465
 #, fuzzy
 msgid "Hairpin"
-msgstr "Ostra"
+msgstr "Lasnica"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5449
-#: src/libnmc-setting/nm-meta-setting-desc.c:5988
-#: src/libnmc-setting/nm-meta-setting-desc.c:7852
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:5491
+#: src/libnmc-setting/nm-meta-setting-desc.c:6072
+#: src/libnmc-setting/nm-meta-setting-desc.c:8055
 msgid "Username [none]"
-msgstr "ime datoteke"
+msgstr "Uporabniško ime [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5554
+#: src/libnmc-setting/nm-meta-setting-desc.c:5596
 #, fuzzy
 msgid ""
 "Enter a list of user permissions. This is a list of user names formatted "
@@ -5950,11 +5863,11 @@ msgstr ""
 "Primer: alice bob charlie\n"
 "</user></user>"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5583
+#: src/libnmc-setting/nm-meta-setting-desc.c:5625
 msgid "Controller"
 msgstr "Kontrolnik"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5642
+#: src/libnmc-setting/nm-meta-setting-desc.c:5684
 #, fuzzy
 msgid ""
 "Enter secondary connections that should be activated when this connection "
@@ -5976,7 +5889,7 @@ msgstr ""
 "\n"
 "Primer: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:5666
+#: src/libnmc-setting/nm-meta-setting-desc.c:5741
 #, fuzzy
 msgid ""
 "Enter a value which indicates whether the connection is subject to a data\n"
@@ -5991,46 +5904,45 @@ msgstr ""
 "»false«, »ne«, »izklopljeno«, če želite povezavo nastaviti kot nemerno\n"
 "'unknown', da NetworkManager izbere vrednost z uporabo hevristike\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6004
+#: src/libnmc-setting/nm-meta-setting-desc.c:6088
 msgid "APN"
 msgstr "APN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6058
+#: src/libnmc-setting/nm-meta-setting-desc.c:6170
 #, fuzzy
 msgid "hsr port1"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6065
+#: src/libnmc-setting/nm-meta-setting-desc.c:6177
 #, fuzzy
 msgid "hsr port2"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6071
+#: src/libnmc-setting/nm-meta-setting-desc.c:6183
 #, fuzzy
 msgid "hsr multicast spec"
 msgstr "Specifikacija HSR Multicast"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6114
-#: src/libnmc-setting/nm-meta-setting-desc.c:6808
-#: src/libnmc-setting/nm-meta-setting-desc.c:8092
-#: src/libnmc-setting/nm-meta-setting-desc.c:8304
+#: src/libnmc-setting/nm-meta-setting-desc.c:6225
+#: src/libnmc-setting/nm-meta-setting-desc.c:7011
+#: src/libnmc-setting/nm-meta-setting-desc.c:8295
+#: src/libnmc-setting/nm-meta-setting-desc.c:8507
 #: src/nmtui/nmt-page-ethernet.c:124 src/nmtui/nmt-page-infiniband.c:81
-#: src/nmtui/nmt-page-ip-tunnel.c:178 src/nmtui/nmt-page-vlan.c:100
-#: src/nmtui/nmt-page-wifi.c:395 src/nmtui/nmt-page-wireguard.c:85
+#: src/nmtui/nmt-page-ip-tunnel.c:178 src/nmtui/nmt-page-veth.c:80
+#: src/nmtui/nmt-page-vlan.c:100 src/nmtui/nmt-page-wifi.c:395
+#: src/nmtui/nmt-page-wireguard.c:85
 msgid "MTU"
 msgstr "MTU"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6133
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6244
 msgid "P_KEY [none]"
-msgstr "P_KEY [nič]"
+msgstr "P_KEY [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6151
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6262
 msgid "Parent interface [none]"
-msgstr "Starševski vmesnik [brez]"
+msgstr "Nadrejeni vmesnik [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6180
+#: src/libnmc-setting/nm-meta-setting-desc.c:6291
 #, fuzzy
 msgid ""
 "Enter a list of IPv4 addresses of DNS servers.\n"
@@ -6041,12 +5953,12 @@ msgstr ""
 "\n"
 "Primer: 8.8.8.8, 8.8.4.4\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6230
+#: src/libnmc-setting/nm-meta-setting-desc.c:6341
 #, fuzzy
 msgid "IPv4 address (IP[/plen]) [none]"
 msgstr "Naslov IPv4 (IP[/plen]) [none]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6232
+#: src/libnmc-setting/nm-meta-setting-desc.c:6343
 #, fuzzy
 msgid ""
 "Enter a list of IPv4 addresses formatted as:\n"
@@ -6061,12 +5973,11 @@ msgstr ""
 "\n"
 "Primer: 192.168.1.5/24, 10.0.0.11/24\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6251
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6362
 msgid "IPv4 gateway [none]"
 msgstr "Prehod IPv4 [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6260
+#: src/libnmc-setting/nm-meta-setting-desc.c:6371
 #, fuzzy
 msgid ""
 "Enter a list of IPv4 routes formatted as:\n"
@@ -6090,7 +6001,7 @@ msgstr ""
 "Primeri: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n"
 "          10.1.2.0/24\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6300
+#: src/libnmc-setting/nm-meta-setting-desc.c:6411
 #, fuzzy
 msgid ""
 "Enter a list of IPv4 routing rules formatted as:\n"
@@ -6101,7 +6012,7 @@ msgstr ""
 "  prednostna naloga [prio] [od [src]] [do [DST]], ,...\n"
 "\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6447
+#: src/libnmc-setting/nm-meta-setting-desc.c:6599
 #, fuzzy
 msgid ""
 "Enter a list of IPv6 addresses of DNS servers.  If the IPv6 configuration "
@@ -6122,12 +6033,11 @@ msgstr ""
 "\n"
 "Primer: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6503
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6655
 msgid "IPv6 address (IP[/plen]) [none]"
 msgstr "Naslov IPv6 (IP[/plen]) [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6505
+#: src/libnmc-setting/nm-meta-setting-desc.c:6657
 #, fuzzy
 msgid ""
 "Enter a list of IPv6 addresses formatted as:\n"
@@ -6142,12 +6052,11 @@ msgstr ""
 "\n"
 "Primer: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6524
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6676
 msgid "IPv6 gateway [none]"
 msgstr "Prehod IPv6 [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6533
+#: src/libnmc-setting/nm-meta-setting-desc.c:6685
 #, fuzzy
 msgid ""
 "Enter a list of IPv6 routes formatted as:\n"
@@ -6173,7 +6082,7 @@ msgstr ""
 "govedina:3::/64 2001:db8:govedina::3 2\n"
 "          Abbe::/64 55\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6573
+#: src/libnmc-setting/nm-meta-setting-desc.c:6725
 #, fuzzy
 msgid ""
 "Enter a list of IPv6 routing rules formatted as:\n"
@@ -6184,204 +6093,189 @@ msgstr ""
 "  prednostna naloga [prio] [od [src]] [do [DST]], ,...\n"
 "\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6745
-#: src/libnmc-setting/nm-meta-setting-desc.c:7907
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6917
+#: src/libnmc-setting/nm-meta-setting-desc.c:8110
 msgid "Parent device [none]"
-msgstr "Starševska naprava [brez]"
+msgstr "Nadrejena naprava [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6751
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:6923
 msgid "Local endpoint [none]"
-msgstr "Lokalna končna točka [brez]"
+msgstr "Krajevna končna točka [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6758
-#: src/libnmc-setting/nm-meta-setting-desc.c:7926
+#: src/libnmc-setting/nm-meta-setting-desc.c:6930
+#: src/libnmc-setting/nm-meta-setting-desc.c:8129
 msgid "Remote"
 msgstr "Oddaljeno"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6874
+#: src/libnmc-setting/nm-meta-setting-desc.c:6981
+#, fuzzy
+#| msgid "VLAN parent device or connection UUID"
+msgid "IPVLAN parent device or connection UUID"
+msgstr "Nadrejena naprava VLAN ali UUID povezave"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:7077
 #, fuzzy
 msgid "MACsec parent device or connection UUID"
 msgstr "MACsec nadrejena naprava ali UUID povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6895
+#: src/libnmc-setting/nm-meta-setting-desc.c:7098
 msgid "Enable encryption"
 msgstr "Omogoči šifriranje"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6911
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7114
 msgid "MKA_CKN"
 msgstr "MKA_CKN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6917
+#: src/libnmc-setting/nm-meta-setting-desc.c:7120
 #: src/nmtui/nmt-page-macsec.c:170
-#, fuzzy
 msgid "SCI port"
-msgstr "Vrata _SCI"
+msgstr "Vrata SCI"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6946
+#: src/libnmc-setting/nm-meta-setting-desc.c:7149
 #, fuzzy
 msgid "MACVLAN parent device or connection UUID"
 msgstr "ni naprave za povezavo '%s'"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:6967
+#: src/libnmc-setting/nm-meta-setting-desc.c:7170
 #, fuzzy
 msgid "Tap"
-msgstr "Udarjanje"
+msgstr "Tap z enim prstom"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7038
-#: src/libnmc-setting/nm-meta-setting-desc.c:8202 src/nmtui/nmt-page-wifi.c:216
+#: src/libnmc-setting/nm-meta-setting-desc.c:7241
+#: src/libnmc-setting/nm-meta-setting-desc.c:8405 src/nmtui/nmt-page-wifi.c:216
 msgid "SSID"
 msgstr "SSID"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7048
+#: src/libnmc-setting/nm-meta-setting-desc.c:7251
 #, fuzzy
 msgid "OLPC Mesh channel"
 msgstr "Povezava CDMA %d"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7058
+#: src/libnmc-setting/nm-meta-setting-desc.c:7261
 #, fuzzy
 msgid "DHCP anycast MAC address [none]"
 msgstr "Naslov MAC vsakomernega oddajanja DHCP [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7246
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7449
 msgid "PPPoE parent device"
-msgstr "Starševska naprava PPPoE"
+msgstr "Nadrejena naprava PPPoE"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7252
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7455
 msgid "Service [none]"
 msgstr "Storitev [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7259
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7462
 msgid "PPPoE username"
-msgstr "ime datoteke"
+msgstr "Uporabniško ime PPPoE"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7295
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7498
 msgid "Browser only"
-msgstr "Samo za brskalnik"
+msgstr "Samo brskalnik"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7301
+#: src/libnmc-setting/nm-meta-setting-desc.c:7504
 msgid "PAC URL"
 msgstr "URL PAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7307
+#: src/libnmc-setting/nm-meta-setting-desc.c:7510
 msgid "PAC script"
 msgstr "Skript PAC"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7440
-#: src/libnmc-setting/nm-meta-setting-desc.c:7629
+#: src/libnmc-setting/nm-meta-setting-desc.c:7643
+#: src/libnmc-setting/nm-meta-setting-desc.c:7832
 #, fuzzy
 msgid "Team JSON configuration [none]"
 msgstr "Prilagoditev IP ni več veljavna"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7732
+#: src/libnmc-setting/nm-meta-setting-desc.c:7935
 #, fuzzy
 msgid "User ID [none]"
 msgstr "ID uporabnika [none]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7738
+#: src/libnmc-setting/nm-meta-setting-desc.c:7941
 #, fuzzy
 msgid "Group ID [none]"
 msgstr "ID skupine [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7744
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7947
 msgid "Enable PI"
-msgstr "omogočeno"
+msgstr "Omogoči PI"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7750
+#: src/libnmc-setting/nm-meta-setting-desc.c:7953
 #, fuzzy
 msgid "Enable VNET header"
 msgstr "Omogoči glavo VNET"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7756
+#: src/libnmc-setting/nm-meta-setting-desc.c:7959
 #, fuzzy
 msgid "Enable multi queue"
 msgstr "Omogoči več čakalnih vrst"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7769
+#: src/libnmc-setting/nm-meta-setting-desc.c:7972
 #, fuzzy
 msgid "veth peer"
 msgstr "Veth Peer"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7782
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7985
 msgid "VLAN parent device or connection UUID"
-msgstr "ni naprave za povezavo '%s'"
+msgstr "Nadrejena naprava VLAN ali UUID povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7789
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7992
 msgid "VLAN ID (<0-4094>)"
-msgstr "Identifikacijska oznaka VLAN (<0-4094>)</0-4094>"
+msgstr "ID VLAN (<0-4094>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7795
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:7998
 msgid "VLAN flags (<0-7>) [none]"
-msgstr "VLAN zastavice (<0-7>) [brez]</0-7>"
+msgstr "Zastavice VLAN (<0-7>) [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7811
+#: src/libnmc-setting/nm-meta-setting-desc.c:8014
 #, fuzzy
 msgid "Ingress priority maps [none]"
 msgstr "Prednostni zemljevidi vnosa [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7822
+#: src/libnmc-setting/nm-meta-setting-desc.c:8025
 #, fuzzy
 msgid "Egress priority maps [none]"
 msgstr "Prednostni zemljevidi izhoda [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7894
+#: src/libnmc-setting/nm-meta-setting-desc.c:8097
 msgid "Table"
 msgstr "Tabela"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7914
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8117
 msgid "VXLAN ID"
-msgstr "Identifikacijska oznaka VXLAN"
+msgstr "ID VXLAN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7920
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8123
 msgid "Local address [none]"
-msgstr "Lokalni naslov [none]"
+msgstr "Krajevni naslov [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7932
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8135
 msgid "Minimum source port"
-msgstr "Odšifriranje zasebnega ključa je spodletelo."
+msgstr "Najmanjša izvorna vrata"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7938
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8141
 msgid "Maximum source port"
-msgstr "Odšifriranje zasebnega ključa je spodletelo."
+msgstr "Največja izvorna vrata"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7944
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8147
 msgid "Destination port"
-msgstr "neveljavno polje '%s'"
+msgstr "Ciljna vrata"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:7984
+#: src/libnmc-setting/nm-meta-setting-desc.c:8187 src/nmtui/nmt-page-veth.c:54
 #: src/nmtui/nmt-wireguard-peer-editor.c:78
-#, fuzzy
 msgid "Peer"
-msgstr "Opisnik datoteke vtiča za prenos podatkov med soležniki"
+msgstr "Soležnik"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8014
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8217
 msgid "WiMAX NSP name"
-msgstr "Seznam ponudnikov storitev WiMAX"
+msgstr "Ime WiMAX NSP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8051
-#: src/libnmc-setting/nm-meta-setting-desc.c:8247
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8254
+#: src/libnmc-setting/nm-meta-setting-desc.c:8450
 msgid "Cloned MAC [none]"
 msgstr "Klonirani MAC [brez]"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8100
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8303
 msgid ""
 "Enter a list of subchannels (comma or space separated).\n"
 "\n"
@@ -6391,279 +6285,255 @@ msgstr ""
 "\n"
 "Primer: 0.0.0e20 0.0.0e21 0.0.0e22\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8456
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8659
 msgid ""
 "Enter the type of WEP keys. The accepted values are: 0 or unknown, 1 or key, "
 "and 2 or passphrase.\n"
 msgstr ""
 "Vnesite vrsto ključev WEP. Sprejete vrednosti so: 0 ali neznano, 1 ali ključ "
-"in 2 ali geslo.\n"
+"in 2 ali šifrirno geslo.\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8515
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8718
 msgid "Short address (<0x0000-0xffff>)"
-msgstr "Kratek naslov (<0x0000-0xffff>)</0x0000-0xffff>"
+msgstr "Kratek naslov (<0x0000-0xffff>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8531
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8734
 msgid "PAN Identifier (<0x0000-0xffff>)"
-msgstr "Identifikator PAN (<0x0000-0xffff>)</0x0000-0xffff>"
+msgstr "Identifikator PAN (<0x0000-0xffff>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8546
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8749
 msgid "Page (<default|0-31>)"
-msgstr "%d (onemogočeno)"
+msgstr "Stran (<privzeto|0-31>)"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8560
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8763
 msgid "Channel (<default|0-26>)"
 msgstr "Kanal (<privzeto|0-26>)"
 
 #. ***************************************************************************
-#: src/libnmc-setting/nm-meta-setting-desc.c:8695
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8898
 msgid "6LOWPAN settings"
-msgstr "6Nastavitve LOWPAN"
+msgstr "Nastavitve 6LOWPAN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8696
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8899
 msgid "802-1x settings"
 msgstr "Nastavitve 802-1x"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8698
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8901
 msgid "bluetooth connection"
-msgstr "Povezava Bluetooth je spodletela"
+msgstr "Povezava Bluetooth"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8699
+#: src/libnmc-setting/nm-meta-setting-desc.c:8902
 #, fuzzy
 msgid "Bond device"
 msgstr "Vezna naprava"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8700
+#: src/libnmc-setting/nm-meta-setting-desc.c:8903
 #, fuzzy
 msgid "Bond port"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8701
+#: src/libnmc-setting/nm-meta-setting-desc.c:8904
 #, fuzzy
 msgid "Bridge device"
 msgstr "Dejavne povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8702
+#: src/libnmc-setting/nm-meta-setting-desc.c:8905
 #, fuzzy
 msgid "Bridge port"
 msgstr "Vrata premostitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8703
+#: src/libnmc-setting/nm-meta-setting-desc.c:8906
 #, fuzzy
 msgid "CDMA mobile broadband connection"
 msgstr "Povezava vezi %d"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8704
+#: src/libnmc-setting/nm-meta-setting-desc.c:8907
 msgid "General settings"
 msgstr "Splošne nastavitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8705
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8908
 msgid "DCB settings"
 msgstr "Nastavitve DCB"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8706
+#: src/libnmc-setting/nm-meta-setting-desc.c:8909
 #, fuzzy
 msgid "Dummy settings"
 msgstr "Lažne nastavitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8707
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8910
 msgid "Ethtool settings"
 msgstr "Nastavitve Ethtool"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8708
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8911
 msgid "Generic settings"
 msgstr "Splošne nastavitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8709
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8912
 msgid "GSM mobile broadband connection"
-msgstr "Povezava vezi %d"
+msgstr "Mobilna širokopasovna povezava GSM"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8710
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8913
 msgid "Hostname settings"
-msgstr "neveljavno polje '%s'"
+msgstr "Nastavitve imena gostitelja"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8711
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8914
 msgid "HSR settings"
-msgstr "neveljavno polje '%s'"
+msgstr "Nastavitve HSR"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8713
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8916
 msgid "IPv4 protocol"
-msgstr "Ne uporabljaj družine protokolov IPv4"
+msgstr "Protokol IPv4"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8714
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8917
 msgid "IPv6 protocol"
-msgstr "Ne uporabljaj družine protokolov IPv6"
+msgstr "Protokol IPv6"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8715
+#: src/libnmc-setting/nm-meta-setting-desc.c:8918
 #, fuzzy
 msgid "IP-tunnel settings"
 msgstr "Nastavitve predora IP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8716
+#: src/libnmc-setting/nm-meta-setting-desc.c:8919
 #, fuzzy
+#| msgid "WPAN settings"
+msgid "IPVLAN settings"
+msgstr "Nastavitve WPAN"
+
+#: src/libnmc-setting/nm-meta-setting-desc.c:8920
 msgid "Link settings"
-msgstr "neveljavno polje '%s'"
+msgstr "Nastavitve povezave"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8717
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8921
 msgid "Loopback settings"
-msgstr "neveljavno polje '%s'"
+msgstr "Nastavitve povratne zanke"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8718
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8922
 msgid "MACsec connection"
-msgstr "Povezava MACSEC %d"
+msgstr "Povezava MACsec"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8719
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8923
 msgid "macvlan connection"
-msgstr "Povezava vezi %d"
+msgstr "Povezava MACVLAN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8720
+#: src/libnmc-setting/nm-meta-setting-desc.c:8924
 msgid "Match"
 msgstr "Se sklada"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8721
+#: src/libnmc-setting/nm-meta-setting-desc.c:8925
 #, fuzzy
 msgid "OLPC Mesh connection"
 msgstr "Povezava CDMA %d"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8722
+#: src/libnmc-setting/nm-meta-setting-desc.c:8926
 #, fuzzy
 msgid "Open vSwitch bridge settings"
 msgstr "Odpiranje nastavitev mostu vSwitch"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8723
+#: src/libnmc-setting/nm-meta-setting-desc.c:8927
 #, fuzzy
 msgid "Open vSwitch DPDK interface settings"
 msgstr "Odprite nastavitve vmesnika vSwitch DPDK"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8724
+#: src/libnmc-setting/nm-meta-setting-desc.c:8928
 #, fuzzy
 msgid "OVS Other Config"
 msgstr "OVS Druga konfiguracija"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8725
+#: src/libnmc-setting/nm-meta-setting-desc.c:8929
 #, fuzzy
 msgid "OVS External IDs"
 msgstr "Zunanji ID-ji OVS"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8726
+#: src/libnmc-setting/nm-meta-setting-desc.c:8930
 #, fuzzy
 msgid "Open vSwitch interface settings"
 msgstr "Odprite nastavitve vmesnika vSwitch"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8727
+#: src/libnmc-setting/nm-meta-setting-desc.c:8931
 #, fuzzy
 msgid "Open vSwitch patch interface settings"
 msgstr "Odprite nastavitve vmesnika popravka vSwitch"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8728
+#: src/libnmc-setting/nm-meta-setting-desc.c:8932
 #, fuzzy
 msgid "Open vSwitch port settings"
 msgstr "Odpiranje nastavitev vrat vSwitch"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8729
+#: src/libnmc-setting/nm-meta-setting-desc.c:8933
 #, fuzzy
 msgid "PPP settings"
 msgstr "Nastavitve PPP"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8730
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8934
 msgid "PPPoE"
-msgstr "Le samodejni (PPPoE) naslovi"
+msgstr "PPPoE"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8731
+#: src/libnmc-setting/nm-meta-setting-desc.c:8935
 msgid "Proxy"
 msgstr "Posr. strežnik"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8732
+#: src/libnmc-setting/nm-meta-setting-desc.c:8936
 #, fuzzy
 msgid "Serial settings"
 msgstr "Serijske nastavitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8733
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8937
 msgid "SR-IOV settings"
 msgstr "Nastavitve SR-IOV"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8734
+#: src/libnmc-setting/nm-meta-setting-desc.c:8938
 #, fuzzy
 msgid "Traffic controls"
 msgstr "Nadzor prometa"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8735
+#: src/libnmc-setting/nm-meta-setting-desc.c:8939
 #, fuzzy
 msgid "Team device"
 msgstr "Naprava je bila odstranjena"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8736
+#: src/libnmc-setting/nm-meta-setting-desc.c:8940
 #, fuzzy
 msgid "Team port"
 msgstr "Vrata skupine"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8737
+#: src/libnmc-setting/nm-meta-setting-desc.c:8941
 #, fuzzy
 msgid "Tun device"
-msgstr "Namestitev naprave TUN je spodletela\n"
+msgstr "Odpiranje naprave TUN je spodletelo: %s\n"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8738
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8942
 msgid "User settings"
 msgstr "Uporabniške nastavitve"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8744
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8948
 msgid "Wi-Fi P2P connection"
-msgstr "Žična povezava %d"
+msgstr "Povezava Wi-Fi P2P"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8745
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8949
 msgid "WiMAX connection"
-msgstr "Povezava CDMA %d"
+msgstr "Povezava WiMAX"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8746
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8950
 msgid "Wired Ethernet"
-msgstr "Žična povezava %d"
+msgstr "Žična omrežna povezava"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8747
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8951
 msgid "WireGuard VPN settings"
 msgstr "Nastavitve WireGuard VPN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8748
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8952
 msgid "Wi-Fi connection"
-msgstr "Povezava Wi-Fi %d"
+msgstr "Povezava Wi-Fi"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8749
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8953
 msgid "Wi-Fi security settings"
 msgstr "Varnostne nastavitve omrežja Wi-Fi"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:8750
-#, fuzzy
+#: src/libnmc-setting/nm-meta-setting-desc.c:8954
 msgid "WPAN settings"
 msgstr "Nastavitve WPAN"
 
-#: src/libnmc-setting/nm-meta-setting-desc.c:9179
+#: src/libnmc-setting/nm-meta-setting-desc.c:9391
 msgid "name"
 msgstr "ime"
 
@@ -6770,12 +6640,12 @@ msgstr ""
 #: src/libnmc-setting/settings-docs.h.in:8
 #, fuzzy
 msgid ""
-"Whether or not slaves of this connection should be automatically brought up "
+"Whether or not ports of this connection should be automatically brought up "
 "when NetworkManager activates this connection. This only has a real effect "
-"for master connections. The properties \"autoconnect\", \"autoconnect-"
+"for controller connections. The properties \"autoconnect\", \"autoconnect-"
 "priority\" and \"autoconnect-retries\" are unrelated to this setting. The "
-"permitted values are: 0: leave slave connections untouched, 1: activate all "
-"the slave connections with this connection, -1: default. If -1 (default) is "
+"permitted values are: 0: leave port connections untouched, 1: activate all "
+"the port connections with this connection, -1: default. If -1 (default) is "
 "set, global connection.autoconnect-slaves is read to determine the real "
 "value. If it is default as well, this fallbacks to 0. Deprecated 1.46. Use "
 "\"autoconnect-ports\" instead, this is just an alias."
@@ -6791,7 +6661,6 @@ msgstr ""
 "»samodejna povezava-vrata«, to je samo vzdevek."
 
 #: src/libnmc-setting/settings-docs.h.in:9
-#, fuzzy
 msgid ""
 "Interface name of the controller device or UUID of the controller connection."
 msgstr "Ime vmesnika krmilne naprave ali UUID povezave krmilnika."
@@ -6874,10 +6743,56 @@ msgstr ""
 
 #: src/libnmc-setting/settings-docs.h.in:15
 #, fuzzy
+msgid ""
+"The property specifies a list of target IP addresses for pinging. When "
+"multiple targets are set, NetworkManager will start multiple ping processes "
+"in parallel. This property can only be set if connection.ip-ping-timeout is "
+"set. The ip-ping-timeout is used to delay the success of IP addressing until "
+"either the specified timeout (in seconds) is reached, or an target IP "
+"address replies to a ping. Configuring \"ip-ping-addresses\" may delay "
+"reaching the systemd's network-online.target due to waiting for the ping "
+"operations to complete or timeout."
+msgstr ""
+"Lastnost določa seznam ciljnih naslovov IP za ping. Ko je nastavljenih več "
+"ciljev, bo NetworkManager zagnal več procesov ping vzporedno. To lastnost je "
+"mogoče nastaviti le, če je nastavljena connection.ip-ping-timeout. Časovna "
+"omejitev ip-ping-time se uporablja za zakasnitev uspešnosti naslavljanja IP, "
+"dokler ni dosežena določena časovna omejitev (v sekundah) ali dokler ciljni "
+"naslov IP ne odgovori na ping. Konfiguriranje »ip-ping-addresses« lahko "
+"odloži doseganje network-online.target systemd zaradi čakanja na dokončanje "
+"operacij ping ali časovne omejitve."
+
+#: src/libnmc-setting/settings-docs.h.in:16
+#, fuzzy
+msgid ""
+"The property determines whether it is sufficient for any ping check to "
+"succeed among \"ip-ping-addresses\", or if all ping checks must succeed for "
+"\"ip-ping-addresses\"."
+msgstr ""
+"Lastnost določi, ali zadostuje, da je kateri koli ping test uspešen med »ip-"
+"ping-addresses« ali če morajo biti vsa preverjanja pinga uspešna za »ip-ping-"
+"addresses«."
+
+#: src/libnmc-setting/settings-docs.h.in:17
+#, fuzzy
+msgid ""
+"If greater than zero, delay success of IP addressing until either the "
+"specified timeout (in seconds) is reached, or a target IP address replies to "
+"a ping. The property specifies the timeout for the \"ip-ping-addresses\". "
+"This property is incompatible with \"gateway-ping-timeout\", you cannot set "
+"these two properties at the same time."
+msgstr ""
+"Če je večja od nič, odložite uspeh naslavljanja IP, dokler ni dosežena "
+"določena časovna omejitev (v sekundah) ali dokler ciljni naslov IP ne "
+"odgovori na ping. Lastnost določa časovno omejitev za »ip-ping-addresses«. "
+"Ta lastnost ni združljiva z »gateway-ping-timeout«, teh dveh lastnosti ne "
+"morete nastaviti hkrati."
+
+#: src/libnmc-setting/settings-docs.h.in:18
 msgid "Whether LLDP is enabled for the connection."
 msgstr "Ali je za povezavo omogočen protokol LLDP."
 
-#: src/libnmc-setting/settings-docs.h.in:16
+#: src/libnmc-setting/settings-docs.h.in:19
 #, fuzzy
 msgid ""
 "Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the "
@@ -6902,16 +6817,17 @@ msgstr ""
 "»da«). Ta funkcija zahteva vtičnik, ki podpira LLMNR. V nasprotnem primeru "
 "nastavitev nima učinka. Eden takih vtičnikov je dns-systemd-resolved."
 
-#: src/libnmc-setting/settings-docs.h.in:17
+#: src/libnmc-setting/settings-docs.h.in:20
 #, fuzzy
 msgid ""
-"Interface name of the master device or UUID of the master connection. "
-"Deprecated 1.46. Use \"controller\" instead, this is just an alias."
+"Interface name of the controller device or UUID of the controller "
+"connection. Deprecated 1.46. Use \"controller\" instead, this is just an "
+"alias."
 msgstr ""
 "Ime vmesnika glavne naprave ali UUID glavne povezave. Zastarelo 1.46. "
 "Namesto tega uporabite »krmilnik«, to je samo vzdevek."
 
-#: src/libnmc-setting/settings-docs.h.in:18
+#: src/libnmc-setting/settings-docs.h.in:21
 #, fuzzy
 msgid ""
 "Whether mDNS is enabled for the connection. The permitted values are: \"yes"
@@ -6934,7 +6850,7 @@ msgstr ""
 "podprti vtičnik DNS systemd-resolved. Za systemd-resolved je privzeto "
 "nastavitev mogoče konfigurirati z nastavitvijo MulticastDNS= v resolved.conf."
 
-#: src/libnmc-setting/settings-docs.h.in:19
+#: src/libnmc-setting/settings-docs.h.in:22
 #, fuzzy
 msgid ""
 "Whether the connection is metered. When updating this property on a "
@@ -6943,7 +6859,7 @@ msgstr ""
 "Ali je povezava z omejenim prenosom podatkov. Ko posodobite to lastnost za "
 "trenutno aktivirano povezavo, sprememba začne veljati takoj."
 
-#: src/libnmc-setting/settings-docs.h.in:20
+#: src/libnmc-setting/settings-docs.h.in:23
 #, fuzzy
 msgid ""
 "Whether to configure MPTCP endpoints and the address flags. If MPTCP is "
@@ -7012,7 +6928,7 @@ msgstr ""
 "naslove IPv4 na vmesniku, NetworkManager sprosti strogo filtriranje povratne "
 "poti (1) na ohlapno nastavitev (2)."
 
-#: src/libnmc-setting/settings-docs.h.in:21
+#: src/libnmc-setting/settings-docs.h.in:24
 #, fuzzy
 msgid ""
 "If configured, set to a Manufacturer Usage Description (MUD) URL that points "
@@ -7031,7 +6947,7 @@ msgstr ""
 "privzeta nastavitev globalne povezave. Če še vedno ni določeno, je končna "
 "privzeta vrednost »none«."
 
-#: src/libnmc-setting/settings-docs.h.in:22
+#: src/libnmc-setting/settings-docs.h.in:25
 #, fuzzy
 msgid ""
 "Specifies whether the profile can be active multiple times at a particular "
@@ -7040,7 +6956,7 @@ msgstr ""
 "Določa, ali je profil lahko aktiven večkrat v določenem trenutku. Vrednost "
 "je vrste NMConnectionMultiConnect."
 
-#: src/libnmc-setting/settings-docs.h.in:23
+#: src/libnmc-setting/settings-docs.h.in:26
 #, fuzzy
 msgid ""
 "An array of strings defining what access a given user has to this "
@@ -7067,7 +6983,7 @@ msgstr ""
 "je treba prezreti in so rezervirane za prihodnjo uporabo.  Vse [vrsta], [id] "
 "in [rezervirano] morajo biti veljavne UTF-8."
 
-#: src/libnmc-setting/settings-docs.h.in:24
+#: src/libnmc-setting/settings-docs.h.in:27
 #, fuzzy
 msgid ""
 "Setting name of the device type of this port's controller connection (eg, "
@@ -7076,12 +6992,11 @@ msgstr ""
 "Nastavitev imena vrste naprave povezave krmilnika teh vrat (npr. »Bond«) ali "
 "NULL, če ta povezava ni vrata."
 
-#: src/libnmc-setting/settings-docs.h.in:25
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:28
 msgid "This property is deprecated and has no meaning."
 msgstr "Ta lastnost je zastarela in nima nobenega pomena."
 
-#: src/libnmc-setting/settings-docs.h.in:26
+#: src/libnmc-setting/settings-docs.h.in:29
 #, fuzzy
 msgid ""
 "List of connection UUIDs that should be activated when the base connection "
@@ -7090,18 +7005,18 @@ msgstr ""
 "Seznam UUID-jev povezave, ki jih je treba aktivirati, ko je aktivirana "
 "osnovna povezava. Trenutno so podprte samo povezave VPN."
 
-#: src/libnmc-setting/settings-docs.h.in:27
+#: src/libnmc-setting/settings-docs.h.in:30
 #, fuzzy
 msgid ""
-"Setting name of the device type of this slave's master connection (eg, \"bond"
-"\"), or NULL if this connection is not a slave. Deprecated 1.46. Use \"port-"
-"type\" instead, this is just an alias."
+"Setting name of the device type of this port's controller connection (eg, "
+"\"bond\"), or NULL if this connection is not a port. Deprecated 1.46. Use "
+"\"port-type\" instead, this is just an alias."
 msgstr ""
 "Nastavitev imena vrste naprave glavne povezave tega slave (npr. »bond«) ali "
 "NULL, če ta povezava ni podrejena. Zastarelo 1.46. Namesto tega uporabite "
 "\"port-type\", to je samo vzdevek."
 
-#: src/libnmc-setting/settings-docs.h.in:28
+#: src/libnmc-setting/settings-docs.h.in:31
 #, fuzzy
 msgid ""
 "This represents the identity of the connection used for various purposes. It "
@@ -7172,7 +7087,7 @@ msgstr ""
 "vrednost še vedno ni nastavljena, je privzeta »default${CONNECTION}« in "
 "ustvarite edinstven ID za vsak profil povezave."
 
-#: src/libnmc-setting/settings-docs.h.in:29
+#: src/libnmc-setting/settings-docs.h.in:32
 #, fuzzy
 msgid ""
 "The time, in seconds since the Unix Epoch, that the connection was last "
@@ -7187,7 +7102,7 @@ msgstr ""
 "žig. Nepremičnina je namenjena samo branju (spremembe te lastnosti ne bodo "
 "ohranjene)."
 
-#: src/libnmc-setting/settings-docs.h.in:30
+#: src/libnmc-setting/settings-docs.h.in:33
 #, fuzzy
 msgid ""
 "Base type of the connection. For hardware-dependent connections, should "
@@ -7202,7 +7117,7 @@ msgstr ""
 "ki niso odvisne od strojne opreme, kot je VPN ali kako drugače, pa mora "
 "vsebovati ime nastavitve te vrste nastavitve (tj. »vpn« ali »bridge« itd.)."
 
-#: src/libnmc-setting/settings-docs.h.in:31
+#: src/libnmc-setting/settings-docs.h.in:34
 #, fuzzy
 msgid ""
 "The connection.uuid is the real identifier of a profile. It cannot change "
@@ -7217,7 +7132,7 @@ msgstr ""
 "spremeniti, razen v načinu brez povezave. V tem primeru lahko posebne "
 "vrednosti »new«, »generate« in »« ustvarijo nov naključni UUID."
 
-#: src/libnmc-setting/settings-docs.h.in:32
+#: src/libnmc-setting/settings-docs.h.in:35
 #, fuzzy
 msgid ""
 "Time in milliseconds to wait for connection to be considered activated. The "
@@ -7229,7 +7144,7 @@ msgstr ""
 "po predhodnem dogodku dispečerja. Vrednost 0 pomeni, da ni čakalnega časa. "
 "Privzeta vrednost je -1, ki ima trenutno enak pomen kot brez čakalnega časa."
 
-#: src/libnmc-setting/settings-docs.h.in:33
+#: src/libnmc-setting/settings-docs.h.in:36
 #, fuzzy
 msgid ""
 "Timeout in milliseconds to wait for device at startup. During boot, devices "
@@ -7248,7 +7163,7 @@ msgstr ""
 "pomeni, da ni čakalnega časa. Privzeta vrednost je -1, ki ima trenutno enak "
 "pomen kot brez čakalnega časa."
 
-#: src/libnmc-setting/settings-docs.h.in:34
+#: src/libnmc-setting/settings-docs.h.in:37
 #, fuzzy
 msgid ""
 "The trust level of a the connection.  Free form case-insensitive string (for "
@@ -7263,7 +7178,7 @@ msgstr ""
 "kot ga določa požarni zid. Ko posodobite to lastnost za trenutno aktivirano "
 "povezavo, sprememba začne veljati takoj."
 
-#: src/libnmc-setting/settings-docs.h.in:35
+#: src/libnmc-setting/settings-docs.h.in:38
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
@@ -7272,7 +7187,7 @@ msgstr ""
 "Če je navedeno, določa ime nadrejenega vmesnika ali UUID nadrejene povezave, "
 "iz katerega naj se ustvari ta vmesnik 6LowPAN."
 
-#: src/libnmc-setting/settings-docs.h.in:36
+#: src/libnmc-setting/settings-docs.h.in:39
 #, fuzzy
 msgid ""
 "List of strings to be matched against the altSubjectName of the certificate "
@@ -7283,7 +7198,7 @@ msgstr ""
 "strežnik za preverjanje pristnosti. Če je seznam prazen, se preverjanje "
 "parametra altSubjectName strežnikovega potrdila ne izvede."
 
-#: src/libnmc-setting/settings-docs.h.in:37
+#: src/libnmc-setting/settings-docs.h.in:40
 #, fuzzy
 msgid ""
 "Anonymous identity string for EAP authentication methods.  Used as the "
@@ -7294,7 +7209,7 @@ msgstr ""
 "kot nešifrirana identiteta z vrstami EAP, ki podpirajo različne tunelirane "
 "identitete, kot je EAP-TTLS."
 
-#: src/libnmc-setting/settings-docs.h.in:38
+#: src/libnmc-setting/settings-docs.h.in:41
 #, fuzzy
 msgid ""
 "A timeout for the authentication. Zero means the global default; if the "
@@ -7304,7 +7219,7 @@ msgstr ""
 "vrednost; Če globalna privzeta nastavitev ni nastavljena, je časovna "
 "omejitev preverjanja pristnosti 25 sekund."
 
-#: src/libnmc-setting/settings-docs.h.in:39
+#: src/libnmc-setting/settings-docs.h.in:42
 #, fuzzy
 msgid ""
 "Contains the path to the CA certificate if used by the EAP method specified "
@@ -7320,7 +7235,7 @@ msgstr ""
 "Upoštevajte, da bo omogočanje 802-1x.system-ca-certs preglasilo to "
 "nastavitev za uporabo vgrajene poti, če vgrajena pot ni imenik."
 
-#: src/libnmc-setting/settings-docs.h.in:40
+#: src/libnmc-setting/settings-docs.h.in:43
 #, fuzzy
 msgid ""
 "The password used to access the CA certificate stored in \"ca-cert\" "
@@ -7331,13 +7246,13 @@ msgstr ""
 "cert«. Smiselno je le, če je potrdilo shranjeno v žetonu PKCS#11, ki zahteva "
 "prijavo."
 
-#: src/libnmc-setting/settings-docs.h.in:41
+#: src/libnmc-setting/settings-docs.h.in:44
 #, fuzzy
 msgid "Flags indicating how to handle the \"ca-cert-password\" property."
 msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »ca-cert-password«."
 
-#: src/libnmc-setting/settings-docs.h.in:42
+#: src/libnmc-setting/settings-docs.h.in:45
 #, fuzzy
 msgid ""
 "UTF-8 encoded path to a directory containing PEM or DER formatted "
@@ -7351,7 +7266,7 @@ msgstr ""
 "cert«. Če je omogočen NMSetting8021x:system-ca-certs in je vgrajena pot CA "
 "obstoječi imenik, se ta nastavitev prezre."
 
-#: src/libnmc-setting/settings-docs.h.in:43
+#: src/libnmc-setting/settings-docs.h.in:46
 #, fuzzy
 msgid ""
 "Contains the path to the client certificate if used by the EAP method "
@@ -7360,7 +7275,7 @@ msgstr ""
 "Vsebuje pot do odjemalskega potrdila, če ga uporablja metoda EAP, določena v "
 "lastnosti 802-1x.eap."
 
-#: src/libnmc-setting/settings-docs.h.in:44
+#: src/libnmc-setting/settings-docs.h.in:47
 #, fuzzy
 msgid ""
 "The password used to access the client certificate stored in \"client-cert\" "
@@ -7371,13 +7286,13 @@ msgstr ""
 "lastnosti »client-cert«. Smiselno je le, če je potrdilo shranjeno v žetonu "
 "PKCS#11, ki zahteva prijavo."
 
-#: src/libnmc-setting/settings-docs.h.in:45
+#: src/libnmc-setting/settings-docs.h.in:48
 #, fuzzy
 msgid "Flags indicating how to handle the \"client-cert-password\" property."
 msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »client-cert-password«."
 
-#: src/libnmc-setting/settings-docs.h.in:46
+#: src/libnmc-setting/settings-docs.h.in:49
 #, fuzzy
 msgid ""
 "Constraint for server domain name. If set, this list of FQDNs is used as a "
@@ -7394,7 +7309,7 @@ msgstr ""
 "ta omejitev ujema z SubjectName CN z isto primerjavo. Več veljavnih FQDN-jev "
 "je mogoče posredovati kot seznam, ločen z »;«."
 
-#: src/libnmc-setting/settings-docs.h.in:47
+#: src/libnmc-setting/settings-docs.h.in:50
 #, fuzzy
 msgid ""
 "Constraint for server domain name. If set, this FQDN is used as a suffix "
@@ -7412,7 +7327,7 @@ msgstr ""
 "Od različice 1.24 se lahko več veljavnih FQDN-jev posreduje kot seznam, "
 "ločen z »;«."
 
-#: src/libnmc-setting/settings-docs.h.in:48
+#: src/libnmc-setting/settings-docs.h.in:51
 #, fuzzy
 msgid ""
 "The allowed EAP method to be used when authenticating to the network with "
@@ -7427,7 +7342,7 @@ msgstr ""
 "konfiguracijo z uporabo lastnosti te nastavitve; Za dovoljene kombinacije "
 "glejte wpa_supplicant dokumentacijo."
 
-#: src/libnmc-setting/settings-docs.h.in:49
+#: src/libnmc-setting/settings-docs.h.in:52
 #, fuzzy
 msgid ""
 "Identity string for EAP authentication methods.  Often the user's user or "
@@ -7436,7 +7351,7 @@ msgstr ""
 "Niz identitete za načine preverjanja pristnosti EAP.  Pogosto uporabniško "
 "ali uporabniško ime uporabnika."
 
-#: src/libnmc-setting/settings-docs.h.in:50
+#: src/libnmc-setting/settings-docs.h.in:53
 #, fuzzy
 msgid ""
 "Define openssl_ciphers for wpa_supplicant. Openssl sometimes moves ciphers "
@@ -7449,7 +7364,7 @@ msgstr ""
 "spremenile nekatere distribucije Linuxa) včasih preprečuje povezavo s "
 "starimi strežniki, ki ne podpirajo novih protokolov."
 
-#: src/libnmc-setting/settings-docs.h.in:51
+#: src/libnmc-setting/settings-docs.h.in:54
 #, fuzzy
 msgid ""
 "Whether the 802.1X authentication is optional. If TRUE, the activation will "
@@ -7463,12 +7378,12 @@ msgstr ""
 "povezave. Če je nastavljena na FALSE, se lahko aktiviranje nadaljuje šele po "
 "uspešnem preverjanju pristnosti."
 
-#: src/libnmc-setting/settings-docs.h.in:52
+#: src/libnmc-setting/settings-docs.h.in:55
 #, fuzzy
 msgid "UTF-8 encoded file path containing PAC for EAP-FAST."
 msgstr "Pot datoteke kodirane z UTF-8, ki vsebuje PAC za EAP-FAST."
 
-#: src/libnmc-setting/settings-docs.h.in:53
+#: src/libnmc-setting/settings-docs.h.in:56
 #, fuzzy
 msgid ""
 "UTF-8 encoded password used for EAP authentication methods. If both the "
@@ -7479,16 +7394,16 @@ msgstr ""
 "EAP. Če sta določeni lastnosti »geslo« in »geslo surovo«, je zaželeno "
 "»geslo«."
 
-#: src/libnmc-setting/settings-docs.h.in:54
-#: src/libnmc-setting/settings-docs.h.in:86
-#: src/libnmc-setting/settings-docs.h.in:128
-#: src/libnmc-setting/settings-docs.h.in:156
-#: src/libnmc-setting/settings-docs.h.in:308
+#: src/libnmc-setting/settings-docs.h.in:57
+#: src/libnmc-setting/settings-docs.h.in:89
+#: src/libnmc-setting/settings-docs.h.in:131
+#: src/libnmc-setting/settings-docs.h.in:168
+#: src/libnmc-setting/settings-docs.h.in:337
 #, fuzzy
 msgid "Flags indicating how to handle the \"password\" property."
 msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »geslo«."
 
-#: src/libnmc-setting/settings-docs.h.in:55
+#: src/libnmc-setting/settings-docs.h.in:58
 #, fuzzy
 msgid ""
 "Password used for EAP authentication methods, given as a byte array to allow "
@@ -7500,12 +7415,12 @@ msgstr ""
 "polje, ki omogoča uporabo gesel v drugih kodiranjih kot UTF-8. Če sta "
 "določeni lastnosti »geslo« in »geslo surovo«, je zaželeno »geslo«."
 
-#: src/libnmc-setting/settings-docs.h.in:56
+#: src/libnmc-setting/settings-docs.h.in:59
 #, fuzzy
 msgid "Flags indicating how to handle the \"password-raw\" property."
 msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »geslo-surovo«."
 
-#: src/libnmc-setting/settings-docs.h.in:57
+#: src/libnmc-setting/settings-docs.h.in:60
 #, fuzzy
 msgid ""
 "Specifies authentication flags to use in \"phase 1\" outer authentication "
@@ -7523,7 +7438,7 @@ msgstr ""
 "preslikane v nastavitve tls_disable_tlsv1_x in tls_disable_time_checks. Za "
 "več podrobnosti si oglejte dokumentacijo wpa_supplicant."
 
-#: src/libnmc-setting/settings-docs.h.in:58
+#: src/libnmc-setting/settings-docs.h.in:61
 #, fuzzy
 msgid ""
 "Enables or disables in-line provisioning of EAP-FAST credentials when FAST "
@@ -7541,7 +7456,7 @@ msgstr ""
 "preverjanja pristnosti).  Za več podrobnosti si oglejte dokumentacijo "
 "wpa_supplicant."
 
-#: src/libnmc-setting/settings-docs.h.in:59
+#: src/libnmc-setting/settings-docs.h.in:62
 #, fuzzy
 msgid ""
 "Forces use of the new PEAP label during key derivation.  Some RADIUS servers "
@@ -7554,7 +7469,7 @@ msgstr ""
 "protokolom PEAPv1.  Nastavite na »1«, da vsilite uporabo nove oznake PEAP.  "
 "Za več podrobnosti si oglejte dokumentacijo wpa_supplicant."
 
-#: src/libnmc-setting/settings-docs.h.in:60
+#: src/libnmc-setting/settings-docs.h.in:63
 #, fuzzy
 msgid ""
 "Forces which PEAP version is used when PEAP is set as the EAP method in the "
@@ -7570,7 +7485,7 @@ msgstr ""
 "različico PEAP.  Če želite to narediti, lahko to lastnost nastavite na »0« "
 "ali »1«, da vsilite določeno različico PEAP."
 
-#: src/libnmc-setting/settings-docs.h.in:61
+#: src/libnmc-setting/settings-docs.h.in:64
 #, fuzzy
 msgid ""
 "List of strings to be matched against the altSubjectName of the certificate "
@@ -7583,7 +7498,7 @@ msgstr ""
 "»faze 2«. Če je seznam prazen, se preverjanje parametra altSubjectName "
 "strežnikovega potrdila ne izvede."
 
-#: src/libnmc-setting/settings-docs.h.in:62
+#: src/libnmc-setting/settings-docs.h.in:65
 #, fuzzy
 msgid ""
 "Specifies the allowed \"phase 2\" inner authentication method when an EAP "
@@ -7606,7 +7521,7 @@ msgstr ""
 "dokumentacijo wpa_supplicant. Možnosti »phase2-auth« in »phase2-autheap« ni "
 "mogoče določiti."
 
-#: src/libnmc-setting/settings-docs.h.in:63
+#: src/libnmc-setting/settings-docs.h.in:66
 #, fuzzy
 msgid ""
 "Specifies the allowed \"phase 2\" inner EAP-based authentication method when "
@@ -7622,7 +7537,7 @@ msgstr ""
 "posebne parametre za uspešno preverjanje pristnosti; Za več podrobnosti si "
 "oglejte dokumentacijo wpa_supplicant."
 
-#: src/libnmc-setting/settings-docs.h.in:64
+#: src/libnmc-setting/settings-docs.h.in:67
 #, fuzzy
 msgid ""
 "Contains the path to the \"phase 2\" CA certificate if used by the EAP "
@@ -7639,7 +7554,7 @@ msgstr ""
 "system-ca-certs preglasilo to nastavitev za uporabo vgrajene poti, če "
 "vgrajena pot ni imenik."
 
-#: src/libnmc-setting/settings-docs.h.in:65
+#: src/libnmc-setting/settings-docs.h.in:68
 #, fuzzy
 msgid ""
 "The password used to access the \"phase2\" CA certificate stored in \"phase2-"
@@ -7650,7 +7565,7 @@ msgstr ""
 "lastnosti »phase2-ca-cert«. Smiselno je le, če je potrdilo shranjeno v "
 "žetonu PKCS#11, ki zahteva prijavo."
 
-#: src/libnmc-setting/settings-docs.h.in:66
+#: src/libnmc-setting/settings-docs.h.in:69
 #, fuzzy
 msgid ""
 "Flags indicating how to handle the \"phase2-ca-cert-password\" property."
@@ -7658,7 +7573,7 @@ msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »phase2-ca-cert-"
 "password«."
 
-#: src/libnmc-setting/settings-docs.h.in:67
+#: src/libnmc-setting/settings-docs.h.in:70
 #, fuzzy
 msgid ""
 "UTF-8 encoded path to a directory containing PEM or DER formatted "
@@ -7672,7 +7587,7 @@ msgstr ""
 "\"phase2-ca-cert\". Če je omogočen NMSetting8021x:system-ca-certs in je "
 "vgrajena pot CA obstoječi imenik, se ta nastavitev prezre."
 
-#: src/libnmc-setting/settings-docs.h.in:68
+#: src/libnmc-setting/settings-docs.h.in:71
 #, fuzzy
 msgid ""
 "Contains the path to the \"phase 2\" client certificate if used by the EAP "
@@ -7682,7 +7597,7 @@ msgstr ""
 "Vsebuje pot do odjemalskega potrdila »faze 2«, če ga uporablja metoda EAP, "
 "določena v lastnostih 802-1x.phase2-auth ali 802-1x.phase2-autheap."
 
-#: src/libnmc-setting/settings-docs.h.in:69
+#: src/libnmc-setting/settings-docs.h.in:72
 #, fuzzy
 msgid ""
 "The password used to access the \"phase2\" client certificate stored in "
@@ -7693,7 +7608,7 @@ msgstr ""
 "v lastnosti »phase2-client-cert«. Smiselno je le, če je potrdilo shranjeno v "
 "žetonu PKCS#11, ki zahteva prijavo."
 
-#: src/libnmc-setting/settings-docs.h.in:70
+#: src/libnmc-setting/settings-docs.h.in:73
 #, fuzzy
 msgid ""
 "Flags indicating how to handle the \"phase2-client-cert-password\" property."
@@ -7701,7 +7616,7 @@ msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »phase2-client-cert-"
 "password«."
 
-#: src/libnmc-setting/settings-docs.h.in:71
+#: src/libnmc-setting/settings-docs.h.in:74
 #, fuzzy
 msgid ""
 "Constraint for server domain name. If set, this list of FQDNs is used as a "
@@ -7719,7 +7634,7 @@ msgstr ""
 "SubjectName CN z isto primerjavo. Več veljavnih FQDN-jev je mogoče "
 "posredovati kot seznam, ločen z »;«."
 
-#: src/libnmc-setting/settings-docs.h.in:72
+#: src/libnmc-setting/settings-docs.h.in:75
 #, fuzzy
 msgid ""
 "Constraint for server domain name. If set, this FQDN is used as a suffix "
@@ -7738,7 +7653,7 @@ msgstr ""
 "SubjectName CN z uporabo iste primerjave ujemanja pripone. Od različice 1.24 "
 "se lahko več veljavnih FQDN-jev posreduje kot seznam, ločen z »;«."
 
-#: src/libnmc-setting/settings-docs.h.in:73
+#: src/libnmc-setting/settings-docs.h.in:76
 #, fuzzy
 msgid ""
 "The path to the \"phase 2\" inner private key when the 802-1x.phase2-auth or "
@@ -7747,7 +7662,7 @@ msgstr ""
 "Pot do notranjega zasebnega ključa »faza 2«, ko je lastnost 802-1x.phase2-"
 "auth ali 802-1x.phase2-autheap nastavljena na »tls«."
 
-#: src/libnmc-setting/settings-docs.h.in:74
+#: src/libnmc-setting/settings-docs.h.in:77
 #, fuzzy
 msgid ""
 "The password used to decrypt the \"phase 2\" private key specified in the "
@@ -7758,7 +7673,7 @@ msgstr ""
 "v lastnosti 802-1x.phase2-private-key. To običajno uporabljajo tajni agenti, "
 "ne neposredno uporabniki."
 
-#: src/libnmc-setting/settings-docs.h.in:75
+#: src/libnmc-setting/settings-docs.h.in:78
 #, fuzzy
 msgid ""
 "Flags indicating how to handle the \"phase2-private-key-password\" property."
@@ -7766,7 +7681,7 @@ msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »phase2-private-key-"
 "password«."
 
-#: src/libnmc-setting/settings-docs.h.in:76
+#: src/libnmc-setting/settings-docs.h.in:79
 #, fuzzy
 msgid ""
 "Substring to be matched against the subject of the certificate presented by "
@@ -7781,25 +7696,24 @@ msgstr ""
 "preverjanje pristnosti. Ta lastnost zagotavlja malo varnosti, če sploh, in "
 "je ne smete uporabljati."
 
-#: src/libnmc-setting/settings-docs.h.in:77
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:80
 msgid "PIN used for EAP authentication methods."
-msgstr "Koda PIN, ki se uporablja za metode preverjanja pristnosti EAP."
+msgstr "Koda PIN, uporabljena za načine preverjanja pristnosti EAP."
 
-#: src/libnmc-setting/settings-docs.h.in:78
-#: src/libnmc-setting/settings-docs.h.in:158
+#: src/libnmc-setting/settings-docs.h.in:81
+#: src/libnmc-setting/settings-docs.h.in:170
 #, fuzzy
 msgid "Flags indicating how to handle the \"pin\" property."
 msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »pin«."
 
-#: src/libnmc-setting/settings-docs.h.in:79
+#: src/libnmc-setting/settings-docs.h.in:82
 #, fuzzy
 msgid ""
 "The path to the private key when the 802-1.eap property is set to \"tls\"."
 msgstr ""
 "Pot do zasebnega ključa, ko je lastnost 802-1.eap nastavljena na »tls«."
 
-#: src/libnmc-setting/settings-docs.h.in:80
+#: src/libnmc-setting/settings-docs.h.in:83
 #, fuzzy
 msgid ""
 "The password used to decrypt the private key specified in the 802-1x.private-"
@@ -7809,13 +7723,13 @@ msgstr ""
 "802-1x.private-key. To običajno uporabljajo tajni agenti, ne neposredno "
 "uporabniki."
 
-#: src/libnmc-setting/settings-docs.h.in:81
+#: src/libnmc-setting/settings-docs.h.in:84
 #, fuzzy
 msgid "Flags indicating how to handle the \"private-key-password\" property."
 msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »zasebni ključ-geslo«."
 
-#: src/libnmc-setting/settings-docs.h.in:82
+#: src/libnmc-setting/settings-docs.h.in:85
 #, fuzzy
 msgid ""
 "Substring to be matched against the subject of the certificate presented by "
@@ -7828,7 +7742,7 @@ msgstr ""
 "zadeve potrdila strežnika za preverjanje pristnosti. Ta lastnost zagotavlja "
 "malo varnosti, če sploh, in je ne smete uporabljati."
 
-#: src/libnmc-setting/settings-docs.h.in:83
+#: src/libnmc-setting/settings-docs.h.in:86
 #, fuzzy
 msgid ""
 "When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" properties using "
@@ -7848,43 +7762,37 @@ msgstr ""
 "potrdil CA), preglasi lastnosti »ca-cert« in »phase2-ca-cert« (nastavi "
 "možnosti ca_cert/ca_cert2 za wpa_supplicant)."
 
-#: src/libnmc-setting/settings-docs.h.in:84
+#: src/libnmc-setting/settings-docs.h.in:87
 #, fuzzy
 msgid "Encapsulation of ADSL connection.  Can be \"vcmux\" or \"llc\"."
 msgstr "Enkapsulacija ADSL povezave.  Lahko je \"vcmux\" ali \"llc\"."
 
-#: src/libnmc-setting/settings-docs.h.in:85
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:88
 msgid "Password used to authenticate with the ADSL service."
-msgstr "Geslo, ki se uporablja za preverjanje pristnosti s storitvijo ADSL."
+msgstr "Geslo, uporabljeno za preverjanje pristnosti s storitvijo ADSL."
 
-#: src/libnmc-setting/settings-docs.h.in:87
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:90
 msgid "ADSL connection protocol.  Can be \"pppoa\", \"pppoe\" or \"ipoatm\"."
-msgstr "Protokol povezave ADSL.  Lahko je \"pppoa\", \"pppoe\" ali \"ipoatm\"."
+msgstr "Protokol povezave ADSL.  Lahko je »pppoa«, »pppoe« ali »ipoatm«."
 
-#: src/libnmc-setting/settings-docs.h.in:88
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:91
 msgid "Username used to authenticate with the ADSL service."
 msgstr ""
-"Uporabniško ime, ki se uporablja za preverjanje pristnosti s storitvijo ADSL."
+"Uporabniško ime, uporabljeno za preverjanje pristnosti s storitvijo ADSL."
 
-#: src/libnmc-setting/settings-docs.h.in:89
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:92
 msgid "VCI of ADSL connection"
-msgstr "VCI ADSL povezave"
+msgstr "VCI povezave ADSL"
 
-#: src/libnmc-setting/settings-docs.h.in:90
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:93
 msgid "VPI of ADSL connection"
-msgstr "VPI ADSL povezave"
+msgstr "VPI povezave ADSL"
 
-#: src/libnmc-setting/settings-docs.h.in:91
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:94
 msgid "The Bluetooth address of the device."
-msgstr "Naslov Bluetooth naprave."
+msgstr "Naslov Bluetooth za napravo."
 
-#: src/libnmc-setting/settings-docs.h.in:92
+#: src/libnmc-setting/settings-docs.h.in:95
 #, fuzzy
 msgid ""
 "Either \"dun\" for Dial-Up Networking connections or \"panu\" for Personal "
@@ -7893,7 +7801,7 @@ msgstr ""
 "»dun« za klicne omrežne povezave ali »panu« za povezave osebnega omrežja z "
 "napravami, ki podpirajo profil NAP."
 
-#: src/libnmc-setting/settings-docs.h.in:93
+#: src/libnmc-setting/settings-docs.h.in:96
 #, fuzzy
 msgid ""
 "Dictionary of key/value pairs of bonding options.  Both keys and values must "
@@ -7904,18 +7812,17 @@ msgstr ""
 "morajo biti nizi. Imena možnosti morajo vsebovati samo alfanumerične znake "
 "(npr. [a-zA-Z0-9])."
 
-#: src/libnmc-setting/settings-docs.h.in:94
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:97
 msgid "The Ethernet MAC address aging time, in seconds."
-msgstr "Čas staranja naslova Ethernet MAC, v sekundah"
+msgstr "Čas staranja naslova Ethernet MAC, v sekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:95
+#: src/libnmc-setting/settings-docs.h.in:98
 #, fuzzy
 msgid "The Spanning Tree Protocol (STP) forwarding delay, in seconds."
 msgstr ""
 "Zakasnitev posredovanja protokola STP (Spanning Tree Protocol) v sekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:96
+#: src/libnmc-setting/settings-docs.h.in:99
 #, fuzzy
 msgid ""
 "If specified, The MAC address of the multicast group this bridge uses for "
@@ -7929,7 +7836,7 @@ msgstr ""
 "čemer je X v [0, 4..F]. Če ni določeno, je privzeta vrednost 01:80:"
 "C2:00:00:00."
 
-#: src/libnmc-setting/settings-docs.h.in:97
+#: src/libnmc-setting/settings-docs.h.in:100
 #, fuzzy
 msgid ""
 "A mask of group addresses to forward. Usually, group addresses in the range "
@@ -7945,12 +7852,12 @@ msgstr ""
 "imeti nastavljenih bitov 0, 1 ali 2, ker se uporabljajo za STP, MAC premor "
 "okvirjev in LACP."
 
-#: src/libnmc-setting/settings-docs.h.in:98
+#: src/libnmc-setting/settings-docs.h.in:101
 #, fuzzy
 msgid "The Spanning Tree Protocol (STP) hello time, in seconds."
 msgstr "Protokol Spanning Tree Protocol (STP) pozdravi čas v sekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:99
+#: src/libnmc-setting/settings-docs.h.in:102
 #, fuzzy
 msgid ""
 "If specified, the MAC address of bridge. When creating a new bridge, this "
@@ -7965,20 +7872,20 @@ msgstr ""
 "Upoštevajte, da nastavitev »ethernet.cloned-mac-address« vseeno prepiše "
 "naslov MAC mostu pozneje, medtem ko aktivirate most."
 
-#: src/libnmc-setting/settings-docs.h.in:100
+#: src/libnmc-setting/settings-docs.h.in:103
 #, fuzzy
 msgid "The Spanning Tree Protocol (STP) maximum message age, in seconds."
 msgstr ""
 "Največja starost sporočila protokola STP (Spanning Tree Protocol) v sekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:101
+#: src/libnmc-setting/settings-docs.h.in:104
 #, fuzzy
 msgid "Set maximum size of multicast hash table (value must be a power of 2)."
 msgstr ""
 "Nastavite največjo velikost razpršilne tabele za večoddajanje (vrednost mora "
 "biti potenca 2)."
 
-#: src/libnmc-setting/settings-docs.h.in:102
+#: src/libnmc-setting/settings-docs.h.in:105
 #, fuzzy
 msgid ""
 "Set the number of queries the bridge will send before stopping forwarding a "
@@ -7987,7 +7894,7 @@ msgstr ""
 "Nastavite število poizvedb, ki jih bo most poslal, preden prenehate "
 "posredovati skupino za več oddaj po prejemu sporočila »zapusti«."
 
-#: src/libnmc-setting/settings-docs.h.in:103
+#: src/libnmc-setting/settings-docs.h.in:106
 #, fuzzy
 msgid ""
 "Set interval (in deciseconds) between queries to find remaining members of a "
@@ -7996,7 +7903,7 @@ msgstr ""
 "Nastavite interval (v decisekundah) med poizvedbami, da poiščete preostale "
 "člane skupine po prejemu sporočila »zapusti«."
 
-#: src/libnmc-setting/settings-docs.h.in:104
+#: src/libnmc-setting/settings-docs.h.in:107
 #, fuzzy
 msgid ""
 "Set delay (in deciseconds) after which the bridge will leave a group, if no "
@@ -8005,7 +7912,7 @@ msgstr ""
 "Nastavite zakasnitev (v decisekundah), po kateri bo most zapustil skupino, "
 "če ne prejmete poročil o članstvu za to skupino."
 
-#: src/libnmc-setting/settings-docs.h.in:105
+#: src/libnmc-setting/settings-docs.h.in:108
 #, fuzzy
 msgid ""
 "Enable or disable sending of multicast queries by the bridge. If not "
@@ -8014,7 +7921,7 @@ msgstr ""
 "Omogočite ali onemogočite pošiljanje poizvedb za večoddajanje prek mostu. Če "
 "ni navedeno, je možnost onemogočena."
 
-#: src/libnmc-setting/settings-docs.h.in:106
+#: src/libnmc-setting/settings-docs.h.in:109
 #, fuzzy
 msgid ""
 "If no queries are seen after this delay (in deciseconds) has passed, the "
@@ -8023,7 +7930,7 @@ msgstr ""
 "Če po preteku te zakasnitve (v decisekundah) ni nobenih poizvedb, bo most "
 "začel pošiljati svoje poizvedbe."
 
-#: src/libnmc-setting/settings-docs.h.in:107
+#: src/libnmc-setting/settings-docs.h.in:110
 #, fuzzy
 msgid ""
 "Interval (in deciseconds) between queries sent by the bridge after the end "
@@ -8032,7 +7939,7 @@ msgstr ""
 "Interval (v decisekundah) med poizvedbami, ki jih pošlje most po koncu "
 "zagonske faze."
 
-#: src/libnmc-setting/settings-docs.h.in:108
+#: src/libnmc-setting/settings-docs.h.in:111
 #, fuzzy
 msgid ""
 "Set the Max Response Time/Max Response Delay (in deciseconds) for IGMP/MLD "
@@ -8041,7 +7948,7 @@ msgstr ""
 "Nastavite najdaljši odzivni čas/največjo zakasnitev odziva (v decisekundah) "
 "za poizvedbe IGMP/MLD, ki jih pošlje most."
 
-#: src/libnmc-setting/settings-docs.h.in:109
+#: src/libnmc-setting/settings-docs.h.in:112
 #, fuzzy
 msgid ""
 "If enabled the bridge's own IP address is used as the source address for "
@@ -8050,7 +7957,7 @@ msgstr ""
 "Če je omogočeno, se kot izvorni naslov za poizvedbe IGMP uporabi lastni "
 "naslov IP mostu, sicer se uporabi privzeta vrednost 0.0.0.0."
 
-#: src/libnmc-setting/settings-docs.h.in:110
+#: src/libnmc-setting/settings-docs.h.in:113
 #, fuzzy
 msgid ""
 "Sets bridge's multicast router. Multicast-snooping must be enabled for this "
@@ -8063,7 +7970,7 @@ msgstr ""
 "'auto', 'disabled', 'enabled', ki jim jedro dodeli številke 1, 0 in 2. Če ni "
 "navedeno, je privzeta vrednost »samodejno« (1)."
 
-#: src/libnmc-setting/settings-docs.h.in:111
+#: src/libnmc-setting/settings-docs.h.in:114
 msgid ""
 "Controls whether IGMP snooping is enabled for this bridge. Note that if "
 "snooping was automatically disabled due to hash collisions, the system may "
@@ -8073,14 +7980,12 @@ msgstr ""
 "vohunjenje samodejno onemogočeno zaradi trkov razpršitve, lahko sistem "
 "zavrne omogočanje funkcije, dokler trki niso razrešeni."
 
-#: src/libnmc-setting/settings-docs.h.in:112
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:115
 msgid "Set the number of IGMP queries to send during startup phase."
 msgstr ""
 "Nastavite število poizvedb IGMP, ki jih želite poslati med fazo zagona."
 
-#: src/libnmc-setting/settings-docs.h.in:113
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:116
 msgid ""
 "Sets the time (in deciseconds) between queries sent out at startup to "
 "determine membership information."
@@ -8088,25 +7993,23 @@ msgstr ""
 "Nastavi čas (v decisekundah) med poizvedbami, poslanimi ob zagonu, da določi "
 "podatke o članstvu."
 
-#: src/libnmc-setting/settings-docs.h.in:114
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:117
 msgid ""
 "Sets the Spanning Tree Protocol (STP) priority for this bridge.  Lower "
 "values are \"better\"; the lowest priority bridge will be elected the root "
 "bridge."
 msgstr ""
 "Nastavi prioriteto protokola STP (Spanning Tree Protocol) za ta most.  Nižje "
-"vrednosti so \"boljše\"; Most z najnižjo prioriteto bo izvoljen za Root "
-"Bridge."
+"vrednosti so »boljše«; most z najnižjo prednostjo bo izvoljen za korenski "
+"most."
 
-#: src/libnmc-setting/settings-docs.h.in:115
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:118
 msgid ""
 "Controls whether Spanning Tree Protocol (STP) is enabled for this bridge."
 msgstr ""
-"Nadzira, ali je za ta most omogočen protokol STP (Spanning Tree Protocol)"
+"Nadzira, ali je za ta most omogočen protokol STP (Spanning Tree Protocol)."
 
-#: src/libnmc-setting/settings-docs.h.in:116
+#: src/libnmc-setting/settings-docs.h.in:119
 #, fuzzy
 msgid ""
 "The default PVID for the ports of the bridge, that is the VLAN id assigned "
@@ -8115,12 +8018,12 @@ msgstr ""
 "Privzeti PVID za vrata mostu, to je ID VLAN, dodeljen dohodnim neoznačenim "
 "okvirjem."
 
-#: src/libnmc-setting/settings-docs.h.in:117
+#: src/libnmc-setting/settings-docs.h.in:120
 #, fuzzy
 msgid "Control whether VLAN filtering is enabled on the bridge."
 msgstr "Nadzirajte, ali je na mostu omogočeno filtriranje VLAN."
 
-#: src/libnmc-setting/settings-docs.h.in:118
+#: src/libnmc-setting/settings-docs.h.in:121
 #, fuzzy
 msgid ""
 "If specified, the protocol used for VLAN filtering. Supported values are: "
@@ -8130,12 +8033,12 @@ msgstr ""
 "vrednosti so: »802.1Q«, »802.1ad«. Če ni navedeno, je privzeta vrednost "
 "»802.1Q«."
 
-#: src/libnmc-setting/settings-docs.h.in:119
+#: src/libnmc-setting/settings-docs.h.in:122
 #, fuzzy
 msgid "Controls whether per-VLAN stats accounting is enabled."
 msgstr "Nadzoruje, ali je omogočeno računovodstvo statistike na VLAN."
 
-#: src/libnmc-setting/settings-docs.h.in:120
+#: src/libnmc-setting/settings-docs.h.in:123
 #, fuzzy
 msgid ""
 "Array of bridge VLAN objects. In addition to the VLANs specified here, the "
@@ -8151,7 +8054,7 @@ msgstr ""
 "[neoznačeno] [, $vid [pvid] [neoznačeno]]... kjer je $vid en id med 1 in "
 "4094 ali obseg, ki je predstavljen kot par ID-jev, ločenih s pomišljajem."
 
-#: src/libnmc-setting/settings-docs.h.in:121
+#: src/libnmc-setting/settings-docs.h.in:124
 #, fuzzy
 msgid ""
 "Enables or disables \"hairpin mode\" for the port, which allows frames to be "
@@ -8160,19 +8063,19 @@ msgstr ""
 "Omogoči ali onemogoči »način ostrine« za vrata, ki omogoča, da se okvirji "
 "pošljejo nazaj skozi vrata, na katerih je bil okvir sprejet."
 
-#: src/libnmc-setting/settings-docs.h.in:122
+#: src/libnmc-setting/settings-docs.h.in:125
 #, fuzzy
 msgid ""
 "The Spanning Tree Protocol (STP) port cost for destinations via this port."
 msgstr "Stroški vrat Spanning Tree Protocol (STP) za cilje prek teh vrat."
 
-#: src/libnmc-setting/settings-docs.h.in:123
+#: src/libnmc-setting/settings-docs.h.in:126
 #, fuzzy
 msgid "The Spanning Tree Protocol (STP) priority of this bridge port."
 msgstr ""
 "Prednostna naloga protokola STP (Spanning Tree Protocol) tega mostnega vrata."
 
-#: src/libnmc-setting/settings-docs.h.in:124
+#: src/libnmc-setting/settings-docs.h.in:127
 #, fuzzy
 msgid ""
 "Array of bridge VLAN objects. In addition to the VLANs specified here, the "
@@ -8189,9 +8092,9 @@ msgstr ""
 "med 1 in 4094 ali obseg, ki je predstavljen kot par ID-jev, ločenih s "
 "pomišljajem."
 
-#: src/libnmc-setting/settings-docs.h.in:125
-#: src/libnmc-setting/settings-docs.h.in:152
-#: src/libnmc-setting/settings-docs.h.in:163
+#: src/libnmc-setting/settings-docs.h.in:128
+#: src/libnmc-setting/settings-docs.h.in:164
+#: src/libnmc-setting/settings-docs.h.in:179
 #, fuzzy
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
@@ -8200,7 +8103,7 @@ msgstr ""
 "Če ni nič, prenašajte samo pakete določene velikosti ali manjše, pri čemer "
 "razbijte večje pakete v več okvirjev."
 
-#: src/libnmc-setting/settings-docs.h.in:126
+#: src/libnmc-setting/settings-docs.h.in:129
 #, fuzzy
 msgid ""
 "The number to dial to establish the connection to the CDMA-based mobile "
@@ -8211,8 +8114,8 @@ msgstr ""
 "širokopasovnim omrežjem, ki temelji na CDMA, če obstaja.  Če ni določeno, se "
 "po potrebi uporabi privzeta številka (#777)."
 
-#: src/libnmc-setting/settings-docs.h.in:127
-#: src/libnmc-setting/settings-docs.h.in:155
+#: src/libnmc-setting/settings-docs.h.in:130
+#: src/libnmc-setting/settings-docs.h.in:167
 #, fuzzy
 msgid ""
 "The password used to authenticate with the network, if required.  Many "
@@ -8223,8 +8126,8 @@ msgstr ""
 "Mnogi ponudniki ne zahtevajo gesla ali sprejmejo gesla.  Če pa je potrebno "
 "geslo, je navedeno tukaj."
 
-#: src/libnmc-setting/settings-docs.h.in:129
-#: src/libnmc-setting/settings-docs.h.in:161
+#: src/libnmc-setting/settings-docs.h.in:132
+#: src/libnmc-setting/settings-docs.h.in:173
 #, fuzzy
 msgid ""
 "The username used to authenticate with the network, if required.  Many "
@@ -8236,7 +8139,7 @@ msgstr ""
 "nobenega uporabniškega imena.  Če pa je potrebno uporabniško ime, je "
 "navedeno tukaj."
 
-#: src/libnmc-setting/settings-docs.h.in:130
+#: src/libnmc-setting/settings-docs.h.in:133
 #, fuzzy
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB FCoE application.  Flags may be "
@@ -8246,7 +8149,7 @@ msgstr ""
 "Določa NMSettingDcbFlags za program DCB FCoE.  Zastavice so lahko poljubna "
 "kombinacija »omogoči« (0x1), »oglaševanje« (0x2) in »pripravljen« (0x4)."
 
-#: src/libnmc-setting/settings-docs.h.in:131
+#: src/libnmc-setting/settings-docs.h.in:134
 #, fuzzy
 msgid ""
 "The FCoE controller mode; either \"fabric\" or \"vn2vn\". Since 1.34, NULL "
@@ -8257,7 +8160,7 @@ msgstr ""
 "privzeta vrednost NULL in pomeni »tkanina«. Pred različico 1.34 je bila NULL "
 "zavrnjena kot neveljavna, privzeta vrednost pa je bila »FABRIC«."
 
-#: src/libnmc-setting/settings-docs.h.in:132
+#: src/libnmc-setting/settings-docs.h.in:135
 #, fuzzy
 msgid ""
 "The highest User Priority (0 - 7) which FCoE frames should use, or -1 for "
@@ -8268,7 +8171,7 @@ msgstr ""
 "FCoE, ali -1 za privzeto prioriteto.  Uporablja se samo, če lastnost »app-"
 "fcoe-flags« vključuje zastavico »enable« (0x1)."
 
-#: src/libnmc-setting/settings-docs.h.in:133
+#: src/libnmc-setting/settings-docs.h.in:136
 #, fuzzy
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB FIP application.  Flags may be "
@@ -8278,7 +8181,7 @@ msgstr ""
 "Določa NMSettingDcbFlags za program DCB FIP.  Zastavice so lahko poljubna "
 "kombinacija »omogoči« (0x1), »oglaševanje« (0x2) in »pripravljen« (0x4)."
 
-#: src/libnmc-setting/settings-docs.h.in:134
+#: src/libnmc-setting/settings-docs.h.in:137
 #, fuzzy
 msgid ""
 "The highest User Priority (0 - 7) which FIP frames should use, or -1 for "
@@ -8289,7 +8192,7 @@ msgstr ""
 "FIP, ali -1 za privzeto prioriteto.  Uporablja se samo, če lastnost »app-fip-"
 "flags« vključuje zastavico »enable« (0x1)."
 
-#: src/libnmc-setting/settings-docs.h.in:135
+#: src/libnmc-setting/settings-docs.h.in:138
 #, fuzzy
 msgid ""
 "Specifies the NMSettingDcbFlags for the DCB iSCSI application.  Flags may be "
@@ -8299,7 +8202,7 @@ msgstr ""
 "Določa NMSettingDcbFlags za program DCB iSCSI.  Zastavice so lahko poljubna "
 "kombinacija »omogoči« (0x1), »oglaševanje« (0x2) in »pripravljen« (0x4)."
 
-#: src/libnmc-setting/settings-docs.h.in:136
+#: src/libnmc-setting/settings-docs.h.in:139
 #, fuzzy
 msgid ""
 "The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for "
@@ -8310,7 +8213,7 @@ msgstr ""
 "iSCSI, ali -1 za privzeto prioriteto. Uporablja se samo, če lastnost »app-"
 "iscsi-flags« vključuje zastavico »enable« (0x1)."
 
-#: src/libnmc-setting/settings-docs.h.in:137
+#: src/libnmc-setting/settings-docs.h.in:140
 #, fuzzy
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
@@ -8325,7 +8228,7 @@ msgstr ""
 "odstotkov za prednostne naloge, ki pripadajo isti skupini, mora znašati 100 "
 "odstotkov."
 
-#: src/libnmc-setting/settings-docs.h.in:138
+#: src/libnmc-setting/settings-docs.h.in:141
 #, fuzzy
 msgid ""
 "An array of 8 boolean values, where the array index corresponds to the User "
@@ -8336,7 +8239,7 @@ msgstr ""
 "prioriteti (0 - 7) in vrednost označuje, ali naj ustrezna prioriteta prenese "
 "prioriteto ali ne."
 
-#: src/libnmc-setting/settings-docs.h.in:139
+#: src/libnmc-setting/settings-docs.h.in:142
 #, fuzzy
 msgid ""
 "Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags "
@@ -8347,7 +8250,7 @@ msgstr ""
 "so lahko poljubna kombinacija »omogoči« (0x1), »oglaševanje« (0x2) in "
 "»pripravljen« (0x4)."
 
-#: src/libnmc-setting/settings-docs.h.in:140
+#: src/libnmc-setting/settings-docs.h.in:143
 #, fuzzy
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the Priority "
@@ -8360,7 +8263,7 @@ msgstr ""
 "dodeljene tej skupini.  Dovoljene vrednosti so od 0 do 100, vsota vseh "
 "vrednosti pa mora znašati 100 odstotkov."
 
-#: src/libnmc-setting/settings-docs.h.in:141
+#: src/libnmc-setting/settings-docs.h.in:144
 #, fuzzy
 msgid ""
 "Specifies the NMSettingDcbFlags for DCB Priority Groups.  Flags may be any "
@@ -8370,7 +8273,7 @@ msgstr ""
 "poljubna kombinacija »omogoči« (0x1), »oglaševanje« (0x2) in "
 "»pripravljen« (0x4)."
 
-#: src/libnmc-setting/settings-docs.h.in:142
+#: src/libnmc-setting/settings-docs.h.in:145
 #, fuzzy
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
@@ -8381,7 +8284,7 @@ msgstr ""
 "uporabnika (0 - 7), vrednost pa označuje ID prednostne skupine.  Dovoljene "
 "vrednosti ID-ja prednostne skupine so 0–7 ali 15 za skupino brez omejitev."
 
-#: src/libnmc-setting/settings-docs.h.in:143
+#: src/libnmc-setting/settings-docs.h.in:146
 #, fuzzy
 msgid ""
 "An array of 8 boolean values, where the array index corresponds to the User "
@@ -8392,7 +8295,7 @@ msgstr ""
 "prioriteti (0 - 7) in vrednost označuje, ali lahko prioriteta uporablja vso "
 "pasovno širino, dodeljeno dodeljeni skupini."
 
-#: src/libnmc-setting/settings-docs.h.in:144
+#: src/libnmc-setting/settings-docs.h.in:147
 #, fuzzy
 msgid ""
 "An array of 8 uint values, where the array index corresponds to the User "
@@ -8403,7 +8306,7 @@ msgstr ""
 "prioriteti (0 - 7), vrednost pa označuje prometni razred (0 - 7), na "
 "katerega je preslikana prednost."
 
-#: src/libnmc-setting/settings-docs.h.in:145
+#: src/libnmc-setting/settings-docs.h.in:148
 #, fuzzy
 msgid ""
 "Name of the device handler that will be invoked to add and delete the device "
@@ -8423,7 +8326,7 @@ msgstr ""
 "pomeni, da jo je mogoče aktivirati brez obstoječe naprave; Naprava bo "
 "ustvarjena ob začetku povezave s klicem upravljavca naprave."
 
-#: src/libnmc-setting/settings-docs.h.in:146
+#: src/libnmc-setting/settings-docs.h.in:149
 #, fuzzy
 msgid ""
 "The GPRS Access Point Name specifying the APN used when establishing a data "
@@ -8447,7 +8350,7 @@ msgstr ""
 "lahko eksplicitno nastavljena na prazen niz, da to preprečite in ne "
 "uporabljate APN."
 
-#: src/libnmc-setting/settings-docs.h.in:147
+#: src/libnmc-setting/settings-docs.h.in:150
 #, fuzzy
 msgid ""
 "When TRUE, the settings such as APN, username, or password will default to "
@@ -8458,7 +8361,7 @@ msgstr ""
 "postavljene na vrednosti, ki se ujemajo z omrežjem, v katerega se bo modem "
 "registriral v zbirki podatkov ponudnika mobilnih širokopasovnih povezav."
 
-#: src/libnmc-setting/settings-docs.h.in:148
+#: src/libnmc-setting/settings-docs.h.in:151
 #, fuzzy
 msgid ""
 "The device unique identifier (as given by the WWAN management service) which "
@@ -8469,7 +8372,7 @@ msgstr ""
 "katerega velja ta povezava.  Če je na voljo, bo povezava veljala samo za "
 "določeno napravo."
 
-#: src/libnmc-setting/settings-docs.h.in:149
+#: src/libnmc-setting/settings-docs.h.in:152
 #, fuzzy
 msgid ""
 "When TRUE, only connections to the home network will be allowed. Connections "
@@ -8478,7 +8381,7 @@ msgstr ""
 "Če je TRUE, bodo dovoljene samo povezave z domačim omrežjem. Povezave z "
 "gostujočimi omrežji ne bodo vzpostavljene."
 
-#: src/libnmc-setting/settings-docs.h.in:150
+#: src/libnmc-setting/settings-docs.h.in:153
 #, fuzzy
 msgid ""
 "For LTE modems, this sets the APN for the initial EPS bearer that is set up "
@@ -8489,7 +8392,7 @@ msgstr ""
 "povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
 "bearer-configure TRUE."
 
-#: src/libnmc-setting/settings-docs.h.in:151
+#: src/libnmc-setting/settings-docs.h.in:154
 #, fuzzy
 msgid ""
 "For LTE modems, this setting determines whether the initial EPS bearer shall "
@@ -8500,7 +8403,99 @@ msgstr ""
 "konfigurirati začetni nosilec EPS.  Sklepa se o TRUE, če je nastavljena "
 "začetna vrednost eps-bearer-apn."
 
-#: src/libnmc-setting/settings-docs.h.in:153
+#: src/libnmc-setting/settings-docs.h.in:155
+#, fuzzy
+msgid ""
+"For LTE modems, this sets NOAUTH authentication method for the initial EPS "
+"bearer that is set up when attaching to the network. If TRUE, do not require "
+"the other side to authenticate itself to the client. If FALSE, require "
+"authentication from the remote side.  In almost all cases, this should be "
+"TRUE."
+msgstr ""
+"Če je TRUE, ne zahtevajte, da se druga stran (običajno strežnik PPP) preveri "
+"pristnost pri odjemalcu.  Če je FALSE, zahtevajte preverjanje pristnosti z "
+"oddaljene strani.  V skoraj vseh primerih bi to moralo biti RES."
+
+#: src/libnmc-setting/settings-docs.h.in:156
+#, fuzzy
+msgid ""
+"For LTE modems, this sets the password for the initial EPS bearer that is "
+"set up when attaching to the network.  Setting this parameter implies "
+"initial-eps-bearer-configure to be TRUE."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:157
+#, fuzzy
+msgid ""
+"Flags indicating how to handle the \"initial-eps-bearer-password\" property."
+msgstr ""
+"Zastavice, ki označujejo, kako ravnati z lastnostjo »preskočiti geslo«."
+
+#: src/libnmc-setting/settings-docs.h.in:158
+#, fuzzy
+msgid ""
+"For LTE modems, this disables CHAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:159
+#, fuzzy
+msgid ""
+"For LTE modems, this disables EAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:160
+#, fuzzy
+msgid ""
+"For LTE modems, this disables MSCHAP authentication method for the initial "
+"EPS bearer that is set up when attaching to the network."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:161
+#, fuzzy
+msgid ""
+"For LTE modems, this disables MSCHAPV2 authentication method for the initial "
+"EPS bearer that is set up when attaching to the network."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:162
+#, fuzzy
+msgid ""
+"For LTE modems, this disables PAP authentication method for the initial EPS "
+"bearer that is set up when attaching to the network."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:163
+#, fuzzy
+msgid ""
+"For LTE modems, this sets the username for the initial EPS bearer that is "
+"set up when attaching to the network.  Setting this parameter implies "
+"initial-eps-bearer-configure to be TRUE."
+msgstr ""
+"Za modeme LTE nastavite APN za začetnega nosilca EPS, ki je nastavljen pri "
+"povezovanju z omrežjem.  Nastavitev tega parametra pomeni, da je initial-eps-"
+"bearer-configure TRUE."
+
+#: src/libnmc-setting/settings-docs.h.in:165
 #, fuzzy
 msgid ""
 "The Network ID (GSM LAI format, ie MCC-MNC) to force specific network "
@@ -8515,7 +8510,7 @@ msgstr ""
 "uporabite za zagotovitev, da naprava ne bo gostovala, ko neposredni nadzor "
 "naprave z gostovanjem sicer ni mogoč."
 
-#: src/libnmc-setting/settings-docs.h.in:154
+#: src/libnmc-setting/settings-docs.h.in:166
 #, fuzzy
 msgid ""
 "Legacy setting that used to help establishing PPP data sessions for GSM-"
@@ -8524,7 +8519,7 @@ msgstr ""
 "Podedovana nastavitev, ki je pomagala vzpostaviti podatkovne seje PPP za "
 "modeme, ki temeljijo na GSM."
 
-#: src/libnmc-setting/settings-docs.h.in:157
+#: src/libnmc-setting/settings-docs.h.in:169
 #, fuzzy
 msgid ""
 "If the SIM is locked with a PIN it must be unlocked before any other "
@@ -8535,7 +8530,7 @@ msgstr ""
 "zahtevajo kakršne koli druge operacije.  Tukaj določite PIN, da omogočite "
 "delovanje naprave."
 
-#: src/libnmc-setting/settings-docs.h.in:159
+#: src/libnmc-setting/settings-docs.h.in:171
 #, fuzzy
 msgid ""
 "The SIM card unique identifier (as given by the WWAN management service) "
@@ -8548,7 +8543,7 @@ msgstr ""
 "veljala za vse naprave, ki jih dovoljuje tudi »ID-naprava«, ki vsebuje "
 "kartico SIM, ki ustreza danemu identifikatorju."
 
-#: src/libnmc-setting/settings-docs.h.in:160
+#: src/libnmc-setting/settings-docs.h.in:172
 #, fuzzy
 msgid ""
 "A MCC/MNC string like \"310260\" or \"21601\" identifying the specific "
@@ -8561,7 +8556,28 @@ msgstr ""
 "zagotovljena, bo veljala za vsako napravo, ki jo dovoljujeta tudi »device-"
 "id« in »sim-id«, ki vsebuje kartico SIM, ki jo zagotavlja določen operater."
 
-#: src/libnmc-setting/settings-docs.h.in:162
+#: src/libnmc-setting/settings-docs.h.in:174
+#, fuzzy
+msgid "The last byte of supervision address."
+msgstr "Zadnji bajt nadzornega naslova."
+
+#: src/libnmc-setting/settings-docs.h.in:175
+#, fuzzy
+msgid "The port1 interface name of the HSR. This property is mandatory."
+msgstr "Ime vmesnika vrat1 za HSR. Ta nastanitev je obvezna."
+
+#: src/libnmc-setting/settings-docs.h.in:176
+#, fuzzy
+msgid "The port2 interface name of the HSR. This property is mandatory."
+msgstr "Ime vmesnika port2 HSR. Ta nastanitev je obvezna."
+
+#: src/libnmc-setting/settings-docs.h.in:177
+#, fuzzy
+msgid "The protocol used by the interface, whether it is PRP or HSR."
+msgstr ""
+"Protokol, ki ga uporablja vmesnik, ne glede na to, ali gre za PRP ali HSR."
+
+#: src/libnmc-setting/settings-docs.h.in:178
 #, fuzzy
 msgid ""
 "If specified, this connection will only apply to the IPoIB device whose "
@@ -8572,7 +8588,7 @@ msgstr ""
 "naslov MAC se ujema. Ta lastnost ne spremeni naslova MAC naprave (npr. "
 "ponarejanje MAC)."
 
-#: src/libnmc-setting/settings-docs.h.in:164
+#: src/libnmc-setting/settings-docs.h.in:180
 #, fuzzy
 msgid ""
 "The InfiniBand p-key to use for this device. A value of -1 means to use the "
@@ -8595,7 +8611,7 @@ msgstr ""
 "članstva, čeprav ime vmesnika tega ne odraža. Običajno bi uporabnik želel "
 "konfigurirati p-ključ polnega članstva s 0x8000 zastavico."
 
-#: src/libnmc-setting/settings-docs.h.in:165
+#: src/libnmc-setting/settings-docs.h.in:181
 #, fuzzy
 msgid ""
 "The interface name of the parent device of this device. Normally NULL, but "
@@ -8606,13 +8622,13 @@ msgstr ""
 "nastavljena lastnost »p_key«, morate določiti osnovno napravo tako, da "
 "nastavite to lastnost ali »mac-address«."
 
-#: src/libnmc-setting/settings-docs.h.in:166
+#: src/libnmc-setting/settings-docs.h.in:182
 #, fuzzy
 msgid ""
 "The IP-over-InfiniBand transport mode. Either \"datagram\" or \"connected\"."
 msgstr "Način prenosa IP-over-InfiniBand. Bodisi »datagram« ali »povezano«."
 
-#: src/libnmc-setting/settings-docs.h.in:167
+#: src/libnmc-setting/settings-docs.h.in:183
 #, fuzzy
 msgid ""
 "A list of IPv4 addresses and their prefix length. Multiple addresses can be "
@@ -8625,8 +8641,8 @@ msgstr ""
 "navedeni v padajoči prioriteti, kar pomeni, da bo prvi naslov primarni "
 "naslov."
 
-#: src/libnmc-setting/settings-docs.h.in:168
-#: src/libnmc-setting/settings-docs.h.in:200
+#: src/libnmc-setting/settings-docs.h.in:184
+#: src/libnmc-setting/settings-docs.h.in:221
 #, fuzzy
 msgid ""
 "VPN connections will default to add the route automatically unless this "
@@ -8638,8 +8654,8 @@ msgstr ""
 "nastavljena na FALSE. Za druge vrste povezav dodajanje takšne samodejne poti "
 "trenutno ni podprto, nastavitev na TRUE pa nima učinka."
 
-#: src/libnmc-setting/settings-docs.h.in:169
-#: src/libnmc-setting/settings-docs.h.in:201
+#: src/libnmc-setting/settings-docs.h.in:185
+#: src/libnmc-setting/settings-docs.h.in:222
 #, fuzzy
 msgid ""
 "Maximum timeout in milliseconds used to check for the presence of duplicate "
@@ -8663,7 +8679,7 @@ msgstr ""
 "dejansko trajanje lahko med polovico in polnim časom, določenim v tej "
 "lastnosti."
 
-#: src/libnmc-setting/settings-docs.h.in:170
+#: src/libnmc-setting/settings-docs.h.in:186
 #, fuzzy
 msgid ""
 "A string sent to the DHCP server to identify the local machine which the "
@@ -8722,8 +8738,8 @@ msgstr ""
 "uporabiti enega iz svoje konfiguracijske datoteke, če je prisoten, ali "
 "drugače ne bo poslal nobenega ID-ja odjemalca."
 
-#: src/libnmc-setting/settings-docs.h.in:171
-#: src/libnmc-setting/settings-docs.h.in:202
+#: src/libnmc-setting/settings-docs.h.in:187
+#: src/libnmc-setting/settings-docs.h.in:223
 #, fuzzy
 msgid ""
 "Specifies the value for the DSCP field (traffic class) of the IP header. "
@@ -8738,7 +8754,7 @@ msgstr ""
 "»CS4« in »CS6«. Lastnost je trenutno veljavna samo za IPv4 in jo podpira "
 "samo »notranji« vtičnik DHCP."
 
-#: src/libnmc-setting/settings-docs.h.in:172
+#: src/libnmc-setting/settings-docs.h.in:188
 #, fuzzy
 msgid ""
 "If the \"dhcp-send-hostname\" property is TRUE, then the specified FQDN will "
@@ -8749,8 +8765,8 @@ msgstr ""
 "DHCP ob pridobitvi zakupa. Ta lastnost in »dhcp-hostname« se medsebojno "
 "izključujeta in ju ni mogoče nastaviti hkrati."
 
-#: src/libnmc-setting/settings-docs.h.in:173
-#: src/libnmc-setting/settings-docs.h.in:204
+#: src/libnmc-setting/settings-docs.h.in:189
+#: src/libnmc-setting/settings-docs.h.in:225
 #, fuzzy
 msgid ""
 "If the \"dhcp-send-hostname\" property is TRUE, then the specified name will "
@@ -8761,8 +8777,8 @@ msgstr ""
 "DHCP ob pridobitvi zakupa. Ta lastnost in »dhcp-fqdn« se medsebojno "
 "izključujeta in ju ni mogoče nastaviti hkrati."
 
-#: src/libnmc-setting/settings-docs.h.in:174
-#: src/libnmc-setting/settings-docs.h.in:205
+#: src/libnmc-setting/settings-docs.h.in:190
+#: src/libnmc-setting/settings-docs.h.in:226
 #, fuzzy
 msgid ""
 "Flags for the DHCP hostname and FQDN. Currently, this property only includes "
@@ -8790,8 +8806,8 @@ msgstr ""
 "privzeta vrednost. Če ta vrednost ni nastavljena ali tudi »none« (0x0), se v "
 "zahteve DHCP pošljejo standardne zastavice FQDN, opisane zgoraj."
 
-#: src/libnmc-setting/settings-docs.h.in:175
-#: src/libnmc-setting/settings-docs.h.in:206
+#: src/libnmc-setting/settings-docs.h.in:191
+#: src/libnmc-setting/settings-docs.h.in:227
 #, fuzzy
 msgid ""
 "A string containing the \"Identity Association Identifier\" (IAID) used by "
@@ -8830,8 +8846,33 @@ msgstr ""
 "uporabljeni DHCPv6 IAID za trenutno aktiviran vmesnik je izpostavljen v "
 "informacijah o najemu naprave."
 
-#: src/libnmc-setting/settings-docs.h.in:176
-#: src/libnmc-setting/settings-docs.h.in:208
+#: src/libnmc-setting/settings-docs.h.in:192
+#, fuzzy
+msgid ""
+"Controls the \"IPv6-Only Preferred\" DHCPv4 option (RFC 8925). When set to "
+"\"yes\" (1), the host adds the option to the parameter request list; if the "
+"DHCP server sends the option back, the host stops the DHCP client for the "
+"time interval specified in the option. Enable this feature if the host "
+"supports an IPv6-only mode, i.e. either all applications are IPv6-only "
+"capable or there is a form of 464XLAT deployed. When set to \"default"
+"\" (-1), the actual value is looked up in the global configuration; if not "
+"specified, it defaults to \"no\" (0). If the connection has IPv6 method set "
+"to \"disabled\", this property does not have effect and the \"IPv6-Only "
+"Preferred\" option is always disabled."
+msgstr ""
+"Nadzira možnost DHCPv4 »Prednostno samo IPv6« (RFC 8925). Ko je nastavljen "
+"na »da« (1), gostitelj doda možnost na seznam zahtev za parametre; če "
+"strežnik DHCP pošlje možnost nazaj, gostitelj ustavi odjemalca DHCP za "
+"časovni interval, ki je določen v možnosti. Omogočite to funkcijo, če "
+"gostitelj podpira način samo za IPv6, tj. Ali vse aplikacije podpirajo samo "
+"IPv6 ali pa je uvedena oblika 464XLAT. Če je nastavljena na »privzeto« (-1), "
+"se dejanska vrednost poišče v globalni konfiguraciji; Če ni določeno, je "
+"privzeto »ne« (0). Če je v povezavi metoda IPv6 nastavljena na "
+"»onemogočeno«, ta lastnost ne učinkuje in možnost »Prednostno samo IPv6« je "
+"vedno onemogočena."
+
+#: src/libnmc-setting/settings-docs.h.in:193
+#: src/libnmc-setting/settings-docs.h.in:229
 #, fuzzy
 msgid ""
 "Array of servers from which DHCP offers must be rejected. This property is "
@@ -8846,15 +8887,33 @@ msgstr ""
 "sledita poševnica in dolžina predpone (npr. »192.168.122.0/24«). Ta lastnost "
 "trenutno ni implementirana za DHCPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:177
-#: src/libnmc-setting/settings-docs.h.in:209
+#: src/libnmc-setting/settings-docs.h.in:194
+#: src/libnmc-setting/settings-docs.h.in:230
+#, fuzzy
+msgid ""
+"Since 1.52 this property is deprecated and is only used as fallback value "
+"for dhcp-send-hostname if it's set to 'default'. This is only done to avoid "
+"breaking existing configurations, the new property should be used from now "
+"on."
+msgstr ""
+"Od različice 1.52 je ta lastnost zastarela in se uporablja samo kot "
+"nadomestna vrednost za dhcp-send-hostname, če je nastavljena na "
+"»default« (privzeto). To je storjeno le, da se izognemo okvari obstoječih "
+"prilagoditev, od zdaj naprej je treba uporabljati novo lastnost."
+
+#: src/libnmc-setting/settings-docs.h.in:195
+#: src/libnmc-setting/settings-docs.h.in:231
 #, fuzzy
 msgid ""
 "If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some "
 "DHCP servers use this hostname to update DNS databases, essentially "
-"providing a static hostname for the computer.  If the \"dhcp-hostname\" "
-"property is NULL and this property is TRUE, the current persistent hostname "
-"of the computer is sent."
+"providing a static hostname for the computer.  If the dhcp-hostname property "
+"is NULL and this property is TRUE, the current persistent hostname of the "
+"computer is sent. The default value is default (-1). In this case the global "
+"value from NetworkManager configuration is looked up. If it's not set, the "
+"value from dhcp-send-hostname-deprecated, which defaults to TRUE, is used "
+"for backwards compatibility. In the future this will change and, in absence "
+"of a global default, it will always fallback to TRUE."
 msgstr ""
 "Če je TRUE, je ime gostitelja poslano strežniku DHCP ob pridobitvi zakupa. "
 "Nekateri strežniki DHCP uporabljajo to ime gostitelja za posodabljanje zbirk "
@@ -8862,8 +8921,8 @@ msgstr ""
 "računalnik.  Če je lastnost »dhcp-hostname« NULL in je ta lastnost TRUE, je "
 "poslano trenutno trajno ime gostitelja računalnika."
 
-#: src/libnmc-setting/settings-docs.h.in:178
-#: src/libnmc-setting/settings-docs.h.in:210
+#: src/libnmc-setting/settings-docs.h.in:196
+#: src/libnmc-setting/settings-docs.h.in:232
 #, fuzzy
 msgid ""
 "Whether the DHCP client will send RELEASE message when bringing the "
@@ -8876,8 +8935,8 @@ msgstr ""
 "poišče globalna vrednost iz konfiguracije programa NetworkManager, če ni "
 "nastavljena, se šteje za FALSE."
 
-#: src/libnmc-setting/settings-docs.h.in:179
-#: src/libnmc-setting/settings-docs.h.in:211
+#: src/libnmc-setting/settings-docs.h.in:197
+#: src/libnmc-setting/settings-docs.h.in:233
 #, fuzzy
 msgid ""
 "A timeout for a DHCP transaction in seconds. If zero (the default), a "
@@ -8890,7 +8949,7 @@ msgstr ""
 "se uporabi časovna omejitev za določeno napravo (običajno 45 sekund). "
 "Nastavite na 2147483647 (MAXINT32) za neskončnost."
 
-#: src/libnmc-setting/settings-docs.h.in:180
+#: src/libnmc-setting/settings-docs.h.in:198
 #, fuzzy
 msgid ""
 "The Vendor Class Identifier DHCP option (60). Special characters in the data "
@@ -8905,19 +8964,24 @@ msgstr ""
 "določena (privzeta), se poišče privzeta nastavitev globalne povezave. Če še "
 "vedno ni določeno, možnost DHCP ni poslana strežniku."
 
-#: src/libnmc-setting/settings-docs.h.in:181
-#: src/libnmc-setting/settings-docs.h.in:212
+#: src/libnmc-setting/settings-docs.h.in:199
+#: src/libnmc-setting/settings-docs.h.in:234
 #, fuzzy
 msgid ""
-"Array of IP addresses of DNS servers. For DoT (DNS over TLS), the SNI server "
-"name can be specified by appending \"#example.com\" to the IP address of the "
-"DNS server. This currently only has effect when using systemd-resolved."
+"Array of DNS servers. Each server can be specified either as a plain IP "
+"address (optionally followed by a \"#\" and the SNI server name for DNS over "
+"TLS) or with a URI syntax. When it is specified as an URI, the following "
+"forms are supported: dns+udp://ADDRESS[:PORT], dns+tls://ADDRESS[:PORT]"
+"[SERVERNAME] . When using the URI syntax, IPv6 addresses must be enclosed in "
+"square brackets ('[', ']')."
 msgstr ""
-"Niz naslovov IP strežnikov DNS. Za DoT (DNS over TLS) lahko ime strežnika "
-"SNI določite tako, da naslovu IP strežnika DNS dodate »#example.com«. To ima "
-"trenutno učinek le, če uporabljate systemd-resolved."
+"Niz strežnikov DNS. Vsak strežnik lahko določite kot navaden naslov IP (po "
+"želji mu sledi »#« in ime strežnika SNI za DNS prek TLS) ali s sintakso URI. "
+"Če je določen kot URI, so podprti naslednji obrazci: dns+udp://ADDRESS[:P "
+"ORT], dns+tls://ADDRESS[:P ORT][SERVERNAME] . Pri uporabi sintakse URI "
+"morajo biti naslovi IPv6 v oglatih oklepajih (»[', ']')."
 
-#: src/libnmc-setting/settings-docs.h.in:182
+#: src/libnmc-setting/settings-docs.h.in:200
 #, fuzzy
 msgid ""
 "DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The "
@@ -8950,8 +9014,8 @@ msgstr ""
 "NetworkManager.conf), se samodejno dodata \"edns0\" in \"trust-ad\". "
 "Veljavni »ipv4.dns-options« in »ipv6.dns-options« se združita."
 
-#: src/libnmc-setting/settings-docs.h.in:183
-#: src/libnmc-setting/settings-docs.h.in:214
+#: src/libnmc-setting/settings-docs.h.in:201
+#: src/libnmc-setting/settings-docs.h.in:236
 #, fuzzy
 msgid ""
 "DNS servers priority. The relative priority for DNS servers specified by "
@@ -9028,8 +9092,8 @@ msgstr ""
 "uhajanju DNS s pravilno konfiguracijo prioritet DNS in iskalnih domen, tako "
 "da so konfigurirani samo imenski strežniki želenega vmesnika."
 
-#: src/libnmc-setting/settings-docs.h.in:184
-#: src/libnmc-setting/settings-docs.h.in:215
+#: src/libnmc-setting/settings-docs.h.in:202
+#: src/libnmc-setting/settings-docs.h.in:237
 #, fuzzy
 msgid ""
 "List of DNS search domains. Domains starting with a tilde ('~') are "
@@ -9058,8 +9122,8 @@ msgstr ""
 "nastavitvijo »ignore-auto-dns«. Upoštevajte, da če ni konfigurirano nobeno "
 "iskanje DNS, bo nadomestna možnost izpeljana iz domene iz DHCP (možnost 15)."
 
-#: src/libnmc-setting/settings-docs.h.in:185
-#: src/libnmc-setting/settings-docs.h.in:216
+#: src/libnmc-setting/settings-docs.h.in:203
+#: src/libnmc-setting/settings-docs.h.in:238
 #, fuzzy
 msgid ""
 "The gateway associated with this configuration. This is only meaningful if "
@@ -9080,8 +9144,8 @@ msgstr ""
 "za vmesnike WireGuard, zato ga običajno ne bi smeli nastaviti v tem primeru. "
 "Glejte »ip4-auto-default-route«."
 
-#: src/libnmc-setting/settings-docs.h.in:186
-#: src/libnmc-setting/settings-docs.h.in:217
+#: src/libnmc-setting/settings-docs.h.in:204
+#: src/libnmc-setting/settings-docs.h.in:239
 #, fuzzy
 msgid ""
 "When \"method\" is set to \"auto\" and this property to TRUE, automatically "
@@ -9094,8 +9158,8 @@ msgstr ""
 "samo imenski strežniki in iskalne domene, določene v lastnostih »dns« in "
 "»dns-search«, če obstajajo."
 
-#: src/libnmc-setting/settings-docs.h.in:187
-#: src/libnmc-setting/settings-docs.h.in:218
+#: src/libnmc-setting/settings-docs.h.in:205
+#: src/libnmc-setting/settings-docs.h.in:240
 #, fuzzy
 msgid ""
 "When \"method\" is set to \"auto\" and this property to TRUE, automatically "
@@ -9106,7 +9170,7 @@ msgstr ""
 "samodejno konfigurirane poti prezrejo in uporabijo se samo poti, določene v "
 "lastnosti »routes«, če obstajajo."
 
-#: src/libnmc-setting/settings-docs.h.in:188
+#: src/libnmc-setting/settings-docs.h.in:206
 #, fuzzy
 msgid ""
 "Enable and disable the IPv4 link-local configuration independently of the "
@@ -9116,7 +9180,8 @@ msgid ""
 "is dependent on \"ipv4.method\". When set to \"default\", it honors the "
 "global connection default, before falling back to \"auto\". Note that if "
 "\"ipv4.method\" is \"disabled\", then link local addressing is always "
-"disabled too. The default is \"default\"."
+"disabled too. The default is \"default\". Since 1.52, when set to \"fallback"
+"\", a link-local address is obtained if no other IPv4 address is set."
 msgstr ""
 "Omogočite in onemogočite lokalno konfiguracijo povezave IPv4 neodvisno od "
 "konfiguracije ipv4.method. To omogoča, da se poleg drugih naslovov, kot so "
@@ -9127,8 +9192,8 @@ msgstr ""
 "»samodejno«. Upoštevajte, da če je »ipv4.method« »onemogočen«, je tudi "
 "lokalno naslavljanje povezave vedno onemogočeno. Privzeto je »privzeto«."
 
-#: src/libnmc-setting/settings-docs.h.in:189
-#: src/libnmc-setting/settings-docs.h.in:220
+#: src/libnmc-setting/settings-docs.h.in:207
+#: src/libnmc-setting/settings-docs.h.in:242
 #, fuzzy
 msgid ""
 "If TRUE, allow overall network configuration to proceed even if the "
@@ -9146,13 +9211,13 @@ msgstr ""
 "NMSettingIP4Config omogoča, da je celotna konfiguracija omrežja uspešna, če "
 "konfiguracija IPv4 ne uspe, vendar je konfiguracija IPv6 uspešno dokončana."
 
-#: src/libnmc-setting/settings-docs.h.in:190
+#: src/libnmc-setting/settings-docs.h.in:208
 #, fuzzy
 msgid "The IPv4 connection method."
 msgstr "povezava je odstranjena"
 
-#: src/libnmc-setting/settings-docs.h.in:191
-#: src/libnmc-setting/settings-docs.h.in:223
+#: src/libnmc-setting/settings-docs.h.in:209
+#: src/libnmc-setting/settings-docs.h.in:245
 #, fuzzy
 msgid ""
 "If TRUE, this connection will never be the default connection for this IP "
@@ -9161,8 +9226,8 @@ msgstr ""
 "Če je TRUE, ta povezava nikoli ne bo privzeta povezava za to vrsto IP-ja, "
 "kar pomeni, da ji NetworkManager nikoli ne bo dodelil privzete poti."
 
-#: src/libnmc-setting/settings-docs.h.in:192
-#: src/libnmc-setting/settings-docs.h.in:225
+#: src/libnmc-setting/settings-docs.h.in:210
+#: src/libnmc-setting/settings-docs.h.in:247
 #, fuzzy
 msgid ""
 "Connections will default to keep the autogenerated priority 0 local rule "
@@ -9171,8 +9236,8 @@ msgstr ""
 "Povezave bodo privzeto ohranile samodejno ustvarjeno lokalno pravilo s "
 "prednostjo 0, razen če je ta nastavitev nastavljena na TRUE."
 
-#: src/libnmc-setting/settings-docs.h.in:193
-#: src/libnmc-setting/settings-docs.h.in:226
+#: src/libnmc-setting/settings-docs.h.in:211
+#: src/libnmc-setting/settings-docs.h.in:248
 #, fuzzy
 msgid ""
 "The minimum time interval in milliseconds for which dynamic IP configuration "
@@ -9199,8 +9264,8 @@ msgstr ""
 "omejitve, -1 pomeni privzeto vrednost (bodisi konfiguracija ipvx.required-"
 "timeout override ali nič)."
 
-#: src/libnmc-setting/settings-docs.h.in:194
-#: src/libnmc-setting/settings-docs.h.in:227
+#: src/libnmc-setting/settings-docs.h.in:212
+#: src/libnmc-setting/settings-docs.h.in:249
 #, fuzzy
 msgid ""
 "The default metric for routes that don't explicitly specify a metric. The "
@@ -9220,8 +9285,8 @@ msgstr ""
 "lastnosti na nič pomeni nastavitev na 1024. Za IPv4 je nič običajna vrednost "
 "za metriko."
 
-#: src/libnmc-setting/settings-docs.h.in:195
-#: src/libnmc-setting/settings-docs.h.in:228
+#: src/libnmc-setting/settings-docs.h.in:213
+#: src/libnmc-setting/settings-docs.h.in:250
 #, fuzzy
 msgid ""
 "Enable policy routing (source routing) and set the routing table used when "
@@ -9253,7 +9318,27 @@ msgstr ""
 "ohraniti združljivost za nazaj za uporabnike, ki upravljajo usmerjevalne "
 "tabele zunaj upravitelja omrežja."
 
-#: src/libnmc-setting/settings-docs.h.in:196
+#: src/libnmc-setting/settings-docs.h.in:214
+#: src/libnmc-setting/settings-docs.h.in:251
+#, fuzzy
+msgid ""
+"Whether to add routes for DNS servers. When enabled, NetworkManager adds a "
+"route for each DNS server that is associated with this connection either "
+"statically (defined in the connection profile) or dynamically (for example, "
+"retrieved via DHCP). The route guarantees that the DNS server is reached via "
+"this interface. When set to \"default\" (-1), the value from global "
+"configuration is used; if no global default is defined, this feature is "
+"disabled."
+msgstr ""
+"Ali želite dodati poti za strežnike DNS. Ko je omogočeno, NetworkManager "
+"doda pot za vsak strežnik DNS, ki je povezan s to povezavo, bodisi statično "
+"(določeno v profilu povezave) ali dinamično (na primer pridobljeno prek "
+"DHCP). Pot zagotavlja, da je strežnik DNS dosežen prek tega vmesnika. Če je "
+"nastavljena na »privzeto« (-1), se uporabi vrednost iz globalne "
+"konfiguracije; Če ni določena nobena globalna privzeta nastavitev, je ta "
+"funkcija onemogočena."
+
+#: src/libnmc-setting/settings-docs.h.in:215
 #, fuzzy
 msgid ""
 "A list of IPv4 destination addresses, prefix length, optional IPv4 next hop "
@@ -9266,13 +9351,55 @@ msgstr ""
 "\"ip[/prefix] [naslednji skok] [metrika] [atribut=val]... [,ip[/"
 "predpona]...]\". Na primer \"192.0.2.0/24 10.1.1.1 77, 198.51.100.0/24\"."
 
-#: src/libnmc-setting/settings-docs.h.in:197
-#: src/libnmc-setting/settings-docs.h.in:230
+#: src/libnmc-setting/settings-docs.h.in:216
+#: src/libnmc-setting/settings-docs.h.in:253
 #, fuzzy
 msgid "A comma separated list of routing rules for policy routing."
 msgstr "Seznam pravil usmerjanja za usmerjanje, ločen z vejico."
 
-#: src/libnmc-setting/settings-docs.h.in:198
+#: src/libnmc-setting/settings-docs.h.in:217
+#: src/libnmc-setting/settings-docs.h.in:254
+#, fuzzy
+msgid ""
+"This option allows you to specify a custom DHCP lease time for the shared "
+"connection method in seconds. The value should be either a number between "
+"120 and 31536000 (one year) If this option is not specified, 3600 (one hour) "
+"is used. Special values are 0 for default value of 1 hour and 2147483647 "
+"(MAXINT32) for infinite lease time."
+msgstr ""
+"S to možnostjo lahko določite čas zakupa DHCP po meri za način povezave v "
+"skupni rabi v sekundah. Vrednost mora biti število med 120 in 31536000 (eno "
+"leto) Če ta možnost ni določena, se uporabi 3600 (ena ura). Posebne "
+"vrednosti so 0 za privzeto vrednost 1 ure in 2147483647 (MAXINT32) za "
+"neskončni čas najema."
+
+#: src/libnmc-setting/settings-docs.h.in:218
+#: src/libnmc-setting/settings-docs.h.in:255
+#, fuzzy
+msgid ""
+"This option allows you to specify a custom DHCP range for the shared "
+"connection method. The value is expected to be in `<START_ADDRESS>,"
+"<END_ADDRESS>` format. The range should be part of network set by ipv4."
+"address option and it should not contain network address or broadcast "
+"address. If this option is not specified, the DHCP range will be "
+"automatically determined based on the interface address. The range will be "
+"selected to be adjacent to the interface address, either before or after it, "
+"with the larger possible range being preferred. The range will be adjusted "
+"to fill the available address space, except for networks with a prefix "
+"length greater than 24, which will be treated as if they have a prefix "
+"length of 24."
+msgstr ""
+"S to možnostjo lahko določite obseg DHCP po meri za način povezave v skupni "
+"rabi. Pričakuje se, da bo vrednost v obliki »<START_ADDRESS>,<END_ADDRESS>«. "
+"Obseg mora biti del omrežja, ki ga nastavi možnost ipv4.address, in ne sme "
+"vsebovati omrežnega naslova ali naslova oddajanja. Če ta možnost ni "
+"določena, bo obseg DHCP samodejno določen na podlagi naslova vmesnika. Obseg "
+"bo izbran tako, da bo sosednji naslovu vmesnika, pred ali za njim, pri čemer "
+"bo zaželen večji možni razpon. Obseg bo prilagojen tako, da zapolni "
+"razpoložljivi naslovni prostor, razen za omrežja z dolžino predpone, večjo "
+"od 24, ki bodo obravnavana, kot da imajo dolžino predpone 24."
+
+#: src/libnmc-setting/settings-docs.h.in:219
 #, fuzzy
 msgid ""
 "Configure method for creating the IPv6 interface identifier of addresses "
@@ -9326,7 +9453,7 @@ msgstr ""
 "zasebnosti, ki jih konfigurira lastnost »ip6-privacy«, in ne vpliva na "
 "začasne naslove, konfigurirane s to možnostjo."
 
-#: src/libnmc-setting/settings-docs.h.in:199
+#: src/libnmc-setting/settings-docs.h.in:220
 #, fuzzy
 msgid ""
 "A list of IPv6 addresses and their prefix length. Multiple addresses can be "
@@ -9341,7 +9468,7 @@ msgstr ""
 "bo prvi naslov primarni naslov. To lahko spremeni izbiro izvornega naslova "
 "IPv6 (RFC 6724, razdelek 5)."
 
-#: src/libnmc-setting/settings-docs.h.in:203
+#: src/libnmc-setting/settings-docs.h.in:224
 #, fuzzy
 msgid ""
 "A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp "
@@ -9395,7 +9522,7 @@ msgstr ""
 "uporabi globalna vrednost, ki je na voljo za »ipv6.dhcp-duid«. Če globalna "
 "vrednost ni navedena, se predpostavi privzeta vrednost »zakup«."
 
-#: src/libnmc-setting/settings-docs.h.in:207
+#: src/libnmc-setting/settings-docs.h.in:228
 #, fuzzy
 msgid ""
 "A IPv6 address followed by a slash and a prefix length. If set, the value is "
@@ -9409,7 +9536,7 @@ msgstr ""
 "predpone brez predpone, nastavite naslovni del na ničelni naslov (na primer "
 "»::/60«)."
 
-#: src/libnmc-setting/settings-docs.h.in:213
+#: src/libnmc-setting/settings-docs.h.in:235
 #, fuzzy
 msgid ""
 "DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The "
@@ -9444,7 +9571,7 @@ msgstr ""
 "se samodejno dodata \"edns0\" in \"trust-ad\". Veljavni »ipv4.dns-options« "
 "in »ipv6.dns-options« se združita."
 
-#: src/libnmc-setting/settings-docs.h.in:219
+#: src/libnmc-setting/settings-docs.h.in:241
 #, fuzzy
 msgid ""
 "Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941.  If "
@@ -9474,12 +9601,12 @@ msgstr ""
 "»stabilne zasebnosti« lastnosti »addr-gen-mode« kot še en način za "
 "izogibanje sledenju gostiteljev z naslovi IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:221
+#: src/libnmc-setting/settings-docs.h.in:243
 #, fuzzy
 msgid "The IPv6 connection method."
 msgstr "povezava je odstranjena"
 
-#: src/libnmc-setting/settings-docs.h.in:222
+#: src/libnmc-setting/settings-docs.h.in:244
 #, fuzzy
 msgid ""
 "Maximum transmission unit size, in bytes. If zero (the default), the MTU is "
@@ -9492,7 +9619,7 @@ msgstr ""
 "povezovalni plasti. Če je večji od MTU na povezovalni plasti ali večji od "
 "nič, vendar manjši od najmanjšega MTU IPv6 1280, ta vrednost nima učinka."
 
-#: src/libnmc-setting/settings-docs.h.in:224
+#: src/libnmc-setting/settings-docs.h.in:246
 #, fuzzy
 msgid ""
 "A timeout for waiting Router Advertisements in seconds. If zero (the "
@@ -9505,12 +9632,12 @@ msgstr ""
 "vedno ni določeno, je časovna omejitev odvisna od nastavitev sysctl naprave. "
 "Nastavite na 2147483647 (MAXINT32) za neskončnost."
 
-#: src/libnmc-setting/settings-docs.h.in:229
+#: src/libnmc-setting/settings-docs.h.in:252
 #, fuzzy
 msgid "Array of IP routes."
 msgstr "Niz poti IP."
 
-#: src/libnmc-setting/settings-docs.h.in:231
+#: src/libnmc-setting/settings-docs.h.in:256
 #, fuzzy
 msgid ""
 "The preferred lifetime of autogenerated temporary addresses, in seconds. "
@@ -9525,7 +9652,7 @@ msgstr ""
 "Če tudi ni določena ali je nastavljena na »0«, se nadomestno prebere »/proc/"
 "sys/net/ipv6/conf/default/temp_prefered_lft«."
 
-#: src/libnmc-setting/settings-docs.h.in:232
+#: src/libnmc-setting/settings-docs.h.in:257
 #, fuzzy
 msgid ""
 "The valid lifetime of autogenerated temporary addresses, in seconds. Having "
@@ -9540,7 +9667,7 @@ msgstr ""
 "tudi ni določena ali je nastavljena na »0«, nadomestno preberite »/proc/sys/"
 "net/ipv6/conf/default/temp_valid_lft«."
 
-#: src/libnmc-setting/settings-docs.h.in:233
+#: src/libnmc-setting/settings-docs.h.in:258
 #, fuzzy
 msgid ""
 "Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 "
@@ -9555,7 +9682,7 @@ msgstr ""
 "naslova strojne opreme. To velja samo za naslove iz samodejne konfiguracije "
 "brez stanja in ne za lokalne naslove povezave IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:234
+#: src/libnmc-setting/settings-docs.h.in:259
 #, fuzzy
 msgid ""
 "How many additional levels of encapsulation are permitted to be prepended to "
@@ -9566,7 +9693,7 @@ msgstr ""
 "lastnost velja samo za tunele IPv6. Če želite onemogočiti to možnost, "
 "dodajte 0x1 (ip6-ign-encap-limit) v zastavice ip-tunnel."
 
-#: src/libnmc-setting/settings-docs.h.in:235
+#: src/libnmc-setting/settings-docs.h.in:260
 #, fuzzy
 msgid ""
 "Tunnel flags. Currently, the following values are supported: 0x1 (ip6-ign-"
@@ -9579,7 +9706,7 @@ msgstr ""
 "(ip6-mip6-dev), 0x10 (ip6-rcv-dscp-copy) in 0x20 (ip6-use-orig-fwmark). "
 "Veljajo samo za tunele IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:236
+#: src/libnmc-setting/settings-docs.h.in:261
 #, fuzzy
 msgid ""
 "The flow label to assign to tunnel packets. This property applies only to "
@@ -9588,7 +9715,7 @@ msgstr ""
 "Oznaka poteka, ki jo želite dodeliti paketom tunela. Ta lastnost velja samo "
 "za tunele IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:237
+#: src/libnmc-setting/settings-docs.h.in:262
 #, fuzzy
 msgid ""
 "The fwmark value to assign to tunnel packets. This property can be set to a "
@@ -9597,7 +9724,7 @@ msgstr ""
 "Vrednost fwmark, ki jo je treba dodeliti paketom tunela. To lastnost lahko "
 "nastavite na vrednost, ki ni ničelna, samo v predorih VTI in VTI6."
 
-#: src/libnmc-setting/settings-docs.h.in:238
+#: src/libnmc-setting/settings-docs.h.in:263
 #, fuzzy
 msgid ""
 "The key used for tunnel input packets; the property is valid only for "
@@ -9607,7 +9734,7 @@ msgstr ""
 "določene načine tunela (GRE, IP6GRE). Če je prazen, se ne uporabi noben "
 "ključ."
 
-#: src/libnmc-setting/settings-docs.h.in:239
+#: src/libnmc-setting/settings-docs.h.in:264
 #, fuzzy
 msgid ""
 "The local endpoint of the tunnel; the value can be empty, otherwise it must "
@@ -9616,7 +9743,7 @@ msgstr ""
 "Lokalna končna točka predora; vrednost je lahko prazna, sicer mora vsebovati "
 "naslov IPv4 ali IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:240
+#: src/libnmc-setting/settings-docs.h.in:265
 #, fuzzy
 msgid ""
 "The tunneling mode. Valid values: ipip (1), gre (2), sit (3), isatap (4), "
@@ -9627,7 +9754,7 @@ msgstr ""
 "(4), vti (5), ip6ip6 (6), ipip6 (7), ip6gre (8), vti6 (9), gretap (10) in "
 "ip6gretap (11)"
 
-#: src/libnmc-setting/settings-docs.h.in:241
+#: src/libnmc-setting/settings-docs.h.in:266
 #, fuzzy
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
@@ -9636,7 +9763,7 @@ msgstr ""
 "Če ni nič, prenašajte samo pakete določene velikosti ali manjše, večje "
 "pakete pa razdelite na več fragmentov."
 
-#: src/libnmc-setting/settings-docs.h.in:242
+#: src/libnmc-setting/settings-docs.h.in:267
 #, fuzzy
 msgid ""
 "The key used for tunnel output packets; the property is valid only for "
@@ -9646,7 +9773,7 @@ msgstr ""
 "za določene načine tunela (GRE, IP6GRE). Če je prazen, se ne uporabi noben "
 "ključ."
 
-#: src/libnmc-setting/settings-docs.h.in:243
+#: src/libnmc-setting/settings-docs.h.in:268
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID the "
@@ -9657,12 +9784,12 @@ msgstr ""
 "na katerega bo nova naprava vezana, tako da bodo tunelirani paketi usmerjeni "
 "samo prek tega vmesnika."
 
-#: src/libnmc-setting/settings-docs.h.in:244
+#: src/libnmc-setting/settings-docs.h.in:269
 #, fuzzy
 msgid "Whether to enable Path MTU Discovery on this tunnel."
 msgstr "Ali želite omogočiti odkrivanje MTU poti v tem tunelu."
 
-#: src/libnmc-setting/settings-docs.h.in:245
+#: src/libnmc-setting/settings-docs.h.in:270
 #, fuzzy
 msgid ""
 "The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 "
@@ -9670,7 +9797,7 @@ msgid ""
 msgstr ""
 "Oddaljena končna točka predora; vrednost mora vsebovati naslov IPv4 ali IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:246
+#: src/libnmc-setting/settings-docs.h.in:271
 #, fuzzy
 msgid ""
 "The type of service (IPv4) or traffic class (IPv6) field to be set on "
@@ -9679,7 +9806,7 @@ msgstr ""
 "Polje »Vrsta storitve (IPv4) ali »Prometni razred« (IPv6), ki ga je treba "
 "nastaviti za pakete s tuneliranim tunelom."
 
-#: src/libnmc-setting/settings-docs.h.in:247
+#: src/libnmc-setting/settings-docs.h.in:272
 #, fuzzy
 msgid ""
 "The TTL to assign to tunneled packets. 0 is a special value meaning that "
@@ -9688,12 +9815,40 @@ msgstr ""
 "Življenjska doba, ki jo želite dodeliti tuneliranim paketom. 0 je posebna "
 "vrednost, kar pomeni, da paketi podedujejo vrednost življenjske dobe."
 
-#: src/libnmc-setting/settings-docs.h.in:248
+#: src/libnmc-setting/settings-docs.h.in:273
+#, fuzzy
+msgid "The IPVLAN mode. Valid values: l2 (1), l3 (2), l3s (3)"
+msgstr "Način IPVLAN. Veljavne vrednosti: l2 (1), l3 (2), l3s (3)"
+
+#: src/libnmc-setting/settings-docs.h.in:274
+#, fuzzy
+msgid ""
+"If given, specifies the parent interface name or parent connection UUID from "
+"which this IPVLAN interface should be created. If this property is not "
+"specified, the connection must contain an \"802-3-ethernet\" setting with a "
+"\"mac-address\" property."
+msgstr ""
+"Če je navedeno, določa ime nadrejenega vmesnika ali UUID nadrejene povezave, "
+"iz katerega naj se ustvari ta vmesnik VLAN.  Če ta lastnost ni določena, "
+"mora povezava vsebovati nastavitev »802-3-ethernet« z lastnostjo »mac-"
+"address«."
+
+#: src/libnmc-setting/settings-docs.h.in:275
+#, fuzzy
+msgid "Whether the interface should be put in private mode."
+msgstr "Ali je treba vmesnik postaviti v promiskuitetni način."
+
+#: src/libnmc-setting/settings-docs.h.in:276
+#, fuzzy
+msgid "Whether the interface should be put in VEPA mode."
+msgstr "Ali je treba vmesnik postaviti v promiskuitetni način."
+
+#: src/libnmc-setting/settings-docs.h.in:277
 #, fuzzy
 msgid "Whether the transmitted traffic must be encrypted."
 msgstr "Ali mora biti preneseni promet šifriran"
 
-#: src/libnmc-setting/settings-docs.h.in:249
+#: src/libnmc-setting/settings-docs.h.in:278
 #, fuzzy
 msgid ""
 "The pre-shared CAK (Connectivity Association Key) for MACsec Key Agreement. "
@@ -9702,12 +9857,12 @@ msgstr ""
 "CAK (ključ za povezovanje povezljivosti) za sporazum o ključu MACsec. Mora "
 "biti niz 32 šestnajstiških znakov."
 
-#: src/libnmc-setting/settings-docs.h.in:250
+#: src/libnmc-setting/settings-docs.h.in:279
 #, fuzzy
 msgid "Flags indicating how to handle the \"mka-cak\" property."
 msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »mka-cak«."
 
-#: src/libnmc-setting/settings-docs.h.in:251
+#: src/libnmc-setting/settings-docs.h.in:280
 #, fuzzy
 msgid ""
 "The pre-shared CKN (Connectivity-association Key Name) for MACsec Key "
@@ -9718,7 +9873,7 @@ msgstr ""
 "ključu MACsec. Mora biti niz šestnajstiških znakov s sodo dolžino med 2 in "
 "64."
 
-#: src/libnmc-setting/settings-docs.h.in:252
+#: src/libnmc-setting/settings-docs.h.in:281
 #, fuzzy
 msgid ""
 "Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key "
@@ -9727,7 +9882,7 @@ msgstr ""
 "Določa, kako se pridobi CAK (Connectivity Association Key) za MKA (MACsec "
 "Key Agreement)."
 
-#: src/libnmc-setting/settings-docs.h.in:253
+#: src/libnmc-setting/settings-docs.h.in:282
 #, fuzzy
 msgid ""
 "Specifies the MACsec offload mode. \"off\" (0) disables MACsec offload. \"phy"
@@ -9744,7 +9899,7 @@ msgstr ""
 "nobena globalna privzeta nastavitev, je vgrajena privzeta nastavitev "
 "»IZKLOPLJENO« (0)."
 
-#: src/libnmc-setting/settings-docs.h.in:254
+#: src/libnmc-setting/settings-docs.h.in:283
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
@@ -9757,14 +9912,14 @@ msgstr ""
 "mora povezava vsebovati nastavitev »802-3-ethernet« z lastnostjo »mac-"
 "address«."
 
-#: src/libnmc-setting/settings-docs.h.in:255
+#: src/libnmc-setting/settings-docs.h.in:284
 #, fuzzy
 msgid ""
 "The port component of the SCI (Secure Channel Identifier), between 1 and "
 "65534."
 msgstr "Komponenta vrat SCI (identifikator varnega kanala), med 1 in 65534."
 
-#: src/libnmc-setting/settings-docs.h.in:256
+#: src/libnmc-setting/settings-docs.h.in:285
 #, fuzzy
 msgid ""
 "Specifies whether the SCI (Secure Channel Identifier) is included in every "
@@ -9772,12 +9927,12 @@ msgid ""
 msgstr ""
 "Določa, ali je SCI (identifikator varnega kanala) vključen v vsak paket."
 
-#: src/libnmc-setting/settings-docs.h.in:257
+#: src/libnmc-setting/settings-docs.h.in:286
 #, fuzzy
 msgid "Specifies the validation mode for incoming frames."
 msgstr "Določa način preverjanja veljavnosti za dohodne okvirje"
 
-#: src/libnmc-setting/settings-docs.h.in:258
+#: src/libnmc-setting/settings-docs.h.in:287
 #, fuzzy
 msgid ""
 "The macvlan mode, which specifies the communication mechanism between "
@@ -9786,7 +9941,7 @@ msgstr ""
 "Način macvlan, ki določa komunikacijski mehanizem med več macvlani na isti "
 "nižji napravi."
 
-#: src/libnmc-setting/settings-docs.h.in:259
+#: src/libnmc-setting/settings-docs.h.in:288
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
@@ -9799,17 +9954,17 @@ msgstr ""
 "mora povezava vsebovati nastavitev »802-3-ethernet« z lastnostjo »mac-"
 "address«."
 
-#: src/libnmc-setting/settings-docs.h.in:260
+#: src/libnmc-setting/settings-docs.h.in:289
 #, fuzzy
 msgid "Whether the interface should be put in promiscuous mode."
 msgstr "Ali je treba vmesnik postaviti v promiskuitetni način."
 
-#: src/libnmc-setting/settings-docs.h.in:261
+#: src/libnmc-setting/settings-docs.h.in:290
 #, fuzzy
 msgid "Whether the interface should be a MACVTAP."
 msgstr "Ali naj bo vmesnik MACVTAP."
 
-#: src/libnmc-setting/settings-docs.h.in:262
+#: src/libnmc-setting/settings-docs.h.in:291
 #, fuzzy
 msgid ""
 "A list of driver names to match. Each element is a shell wildcard pattern. "
@@ -9821,7 +9976,7 @@ msgstr ""
 "znaka lupine. Glej NMSettingMatch:interface-name za uporabo posebnih znakov "
 "'|', '&', '!' in '\\' za izbirne in obvezne ujemanja in obrnitev vzorca."
 
-#: src/libnmc-setting/settings-docs.h.in:263
+#: src/libnmc-setting/settings-docs.h.in:292
 #, fuzzy
 msgid ""
 "A list of interface names to match. Each element is a shell wildcard "
@@ -9851,7 +10006,7 @@ msgstr ""
 "uporabite poševnico, da se izognete začetku vzorca. Na primer, \"&\\!a\" je "
 "obvezno ujemanje za dobesedno \"!a\"."
 
-#: src/libnmc-setting/settings-docs.h.in:264
+#: src/libnmc-setting/settings-docs.h.in:293
 #, fuzzy
 msgid ""
 "A list of kernel command line arguments to match. This may be used to check "
@@ -9874,7 +10029,7 @@ msgstr ""
 "NMSettingMatch:interface-name za uporabo posebnih znakov '|', '&', '!' in "
 "'\\' za izbirne in obvezne ujemanja in obrnitev ujemanja."
 
-#: src/libnmc-setting/settings-docs.h.in:265
+#: src/libnmc-setting/settings-docs.h.in:294
 #, fuzzy
 msgid ""
 "A list of paths to match against the ID_PATH udev property of devices. "
@@ -9900,13 +10055,13 @@ msgstr ""
 "znaka lupine. Glej NMSettingMatch:interface-name za uporabo posebnih znakov "
 "'|', '&', '!' in '\\' za izbirne in obvezne ujemanja in obrnitev vzorca."
 
-#: src/libnmc-setting/settings-docs.h.in:266
+#: src/libnmc-setting/settings-docs.h.in:295
 #, fuzzy
 msgid "Channel on which the mesh network to join is located."
 msgstr ""
 "Kanal, na katerem se nahaja mrežno omrežje, ki se mu je treba pridružiti."
 
-#: src/libnmc-setting/settings-docs.h.in:267
+#: src/libnmc-setting/settings-docs.h.in:296
 #, fuzzy
 msgid ""
 "Anycast DHCP MAC address used when requesting an IP address via DHCP. The "
@@ -9917,42 +10072,39 @@ msgstr ""
 "Določen uporabljeni naslov za oddajanje določi, kateri razred strežnika DHCP "
 "odgovori na zahtevo. To trenutno izvaja samo vtičnik DHCP dhclient."
 
-#: src/libnmc-setting/settings-docs.h.in:268
+#: src/libnmc-setting/settings-docs.h.in:297
 #, fuzzy
 msgid "SSID of the mesh network to join."
 msgstr "SSID mrežnega omrežja, ki se mu želite pridružiti."
 
-#: src/libnmc-setting/settings-docs.h.in:269
+#: src/libnmc-setting/settings-docs.h.in:298
 #, fuzzy
 msgid "The data path type. One of \"system\", \"netdev\" or empty."
 msgstr "Vrsta podatkovne poti. Eden od \"sistem\", \"netdev\" ali prazen."
 
-#: src/libnmc-setting/settings-docs.h.in:270
+#: src/libnmc-setting/settings-docs.h.in:299
 #, fuzzy
 msgid "The bridge failure mode. One of \"secure\", \"standalone\" or empty."
 msgstr "Način okvare mostu. Eden od \"varnih\", \"samostojnih\" ali praznih."
 
-#: src/libnmc-setting/settings-docs.h.in:271
+#: src/libnmc-setting/settings-docs.h.in:300
 #, fuzzy
 msgid "Enable or disable multicast snooping."
-msgstr "Omogoči ali onemogoči sistemske omrežne povezave"
+msgstr "Omogočite ali onemogočite vohljanje z več oddajami."
 
-#: src/libnmc-setting/settings-docs.h.in:272
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:301
 msgid "Enable or disable RSTP."
-msgstr "Omogoči ali onemogoči naprave Wi-Fi"
+msgstr "Omogočite ali onemogočite RSTP."
 
-#: src/libnmc-setting/settings-docs.h.in:273
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:302
 msgid "Enable or disable STP."
-msgstr "Omogoči ali onemogoči naprave Wi-Fi"
+msgstr "Omogočite ali onemogočite STP."
 
-#: src/libnmc-setting/settings-docs.h.in:274
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:303
 msgid "Open vSwitch DPDK device arguments."
 msgstr "Odprite argumente naprave vSwitch DPDK."
 
-#: src/libnmc-setting/settings-docs.h.in:275
+#: src/libnmc-setting/settings-docs.h.in:304
 #, fuzzy
 msgid ""
 "Open vSwitch DPDK number of rx queues. Defaults to zero which means to leave "
@@ -9962,7 +10114,7 @@ msgstr ""
 "da parameter v OVS ostane nedoločen in učinkovito konfigurira eno čakalno "
 "vrsto."
 
-#: src/libnmc-setting/settings-docs.h.in:276
+#: src/libnmc-setting/settings-docs.h.in:305
 #, fuzzy
 msgid ""
 "The rx queue size (number of rx descriptors) for DPDK ports. Must be zero or "
@@ -9975,7 +10127,7 @@ msgstr ""
 "kar pomeni, da parameter v OVS ostane nedoločen in učinkovito konfigurira "
 "2048 deskriptorjev."
 
-#: src/libnmc-setting/settings-docs.h.in:277
+#: src/libnmc-setting/settings-docs.h.in:306
 #, fuzzy
 msgid ""
 "The tx queue size (number of tx descriptors) for DPDK ports. Must be zero or "
@@ -9988,7 +10140,7 @@ msgstr ""
 "kar pomeni, da parameter v OVS ostane nedoločen in učinkovito konfigurira "
 "2048 deskriptorjev."
 
-#: src/libnmc-setting/settings-docs.h.in:278
+#: src/libnmc-setting/settings-docs.h.in:307
 #, fuzzy
 msgid ""
 "Open vSwitch openflow port number. Defaults to zero which means that port "
@@ -10003,7 +10155,7 @@ msgstr ""
 "preostalim omrežjem. Stikala OpenFlow se med seboj logično povezujejo prek "
 "svojih vrat OpenFlow."
 
-#: src/libnmc-setting/settings-docs.h.in:279
+#: src/libnmc-setting/settings-docs.h.in:308
 #, fuzzy
 msgid ""
 "The interface type. Either \"internal\", \"system\", \"patch\", \"dpdk\", or "
@@ -10012,7 +10164,7 @@ msgstr ""
 "Vrsta vmesnika. Ali \"notranji\", \"sistem\", \"popravek\", \"dpdk\" ali "
 "prazen."
 
-#: src/libnmc-setting/settings-docs.h.in:280
+#: src/libnmc-setting/settings-docs.h.in:309
 #, fuzzy
 msgid ""
 "Specifies the name of the interface for the other side of the patch. The "
@@ -10021,12 +10173,12 @@ msgstr ""
 "Določa ime vmesnika za drugo stran popravka. Popravek na drugi strani mora "
 "tudi nastaviti ta vmesnik kot enakovreden."
 
-#: src/libnmc-setting/settings-docs.h.in:281
+#: src/libnmc-setting/settings-docs.h.in:310
 #, fuzzy
 msgid "The time port must be inactive in order to be considered down."
 msgstr "Časovna vrata morajo biti neaktivna, da se štejejo za navzdol."
 
-#: src/libnmc-setting/settings-docs.h.in:282
+#: src/libnmc-setting/settings-docs.h.in:311
 #, fuzzy
 msgid ""
 "Bonding mode. One of \"active-backup\", \"balance-slb\", or \"balance-tcp\"."
@@ -10034,22 +10186,20 @@ msgstr ""
 "Način lepljenja. Ena od \"active-backup\", \"balance-slb\" ali \"balance-tcp"
 "\"."
 
-#: src/libnmc-setting/settings-docs.h.in:283
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:312
 msgid "The time port must be active before it starts forwarding traffic."
-msgstr "Časovna vrata morajo biti aktivna, preden začnejo preusmerjati promet."
+msgstr "Časovna vrata morajo biti dejavna, preden začnejo preusmerjati promet."
 
-#: src/libnmc-setting/settings-docs.h.in:284
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:313
 msgid "LACP mode. One of \"active\", \"off\", or \"passive\"."
-msgstr "Način LACP. Eden od \"aktivnih\", \"izklopljenih\" ali \"pasivnih\"."
+msgstr ""
+"Način LACP. Ena izmed naslednjih vrednosti: »active«, »off« in »passive«."
 
-#: src/libnmc-setting/settings-docs.h.in:285
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:314
 msgid "The VLAN tag in the range 0-4095."
 msgstr "Oznaka VLAN v območju 0-4095."
 
-#: src/libnmc-setting/settings-docs.h.in:286
+#: src/libnmc-setting/settings-docs.h.in:315
 #, fuzzy
 msgid ""
 "A list of VLAN ranges that this port trunks. The property is valid only for "
@@ -10060,7 +10210,7 @@ msgstr ""
 "vrata z načinom »trunk«, »native-tagged« ali »native-untagged port«. Če je "
 "prazen, vrata premaknejo vse VLAN-ove."
 
-#: src/libnmc-setting/settings-docs.h.in:287
+#: src/libnmc-setting/settings-docs.h.in:316
 #, fuzzy
 msgid ""
 "The VLAN mode. One of \"access\", \"native-tagged\", \"native-untagged\", "
@@ -10069,7 +10219,7 @@ msgstr ""
 "Način VLAN. Eden od »dostop«, »izvorno-označen«, »izvorno-neoznačen«, "
 "»prtljažnik«, »dot1q-tunnel« ali unset."
 
-#: src/libnmc-setting/settings-docs.h.in:288
+#: src/libnmc-setting/settings-docs.h.in:317
 #, fuzzy
 msgid ""
 "If non-zero, instruct pppd to set the serial port to the specified "
@@ -10080,7 +10230,7 @@ msgstr ""
 "prenosa.  Ta vrednost mora biti običajno enaka 0, da samodejno izberete "
 "hitrost."
 
-#: src/libnmc-setting/settings-docs.h.in:289
+#: src/libnmc-setting/settings-docs.h.in:318
 #, fuzzy
 msgid ""
 "If TRUE, specify that pppd should set the serial port to use hardware flow "
@@ -10091,7 +10241,7 @@ msgstr ""
 "strojnega nadzora pretoka s signali RTS in CTS.  Ta vrednost mora biti "
 "običajno nastavljena na FALSE."
 
-#: src/libnmc-setting/settings-docs.h.in:290
+#: src/libnmc-setting/settings-docs.h.in:319
 #, fuzzy
 msgid ""
 "If non-zero, instruct pppd to presume the connection to the peer has failed "
@@ -10104,7 +10254,7 @@ msgstr ""
 "Lastnost »lcp-echo-interval« mora biti prav tako nastavljena na vrednost, ki "
 "ni nič, če je uporabljena ta lastnost."
 
-#: src/libnmc-setting/settings-docs.h.in:291
+#: src/libnmc-setting/settings-docs.h.in:320
 #, fuzzy
 msgid ""
 "If non-zero, instruct pppd to send an LCP echo-request frame to the peer "
@@ -10117,7 +10267,7 @@ msgstr ""
 "PPP odzvali na zahteve odmeva, nekateri pa ne, in tega ni mogoče samodejno "
 "zaznati."
 
-#: src/libnmc-setting/settings-docs.h.in:292
+#: src/libnmc-setting/settings-docs.h.in:321
 #, fuzzy
 msgid ""
 "If TRUE, stateful MPPE is used.  See pppd documentation for more information "
@@ -10126,7 +10276,7 @@ msgstr ""
 "Če je TRUE, se uporabi stateful MPPE.  Za več informacij o stanju MPPE "
 "glejte dokumentacijo pppd."
 
-#: src/libnmc-setting/settings-docs.h.in:293
+#: src/libnmc-setting/settings-docs.h.in:322
 #, fuzzy
 msgid ""
 "If non-zero, instruct pppd to request that the peer send packets no larger "
@@ -10136,7 +10286,7 @@ msgstr ""
 "Če ni nič, naročite pppd, da zahteva, da vrstnik pošlje pakete, ki niso "
 "večji od določene velikosti.  Če ni nič, mora biti MRU med 128 in 16384."
 
-#: src/libnmc-setting/settings-docs.h.in:294
+#: src/libnmc-setting/settings-docs.h.in:323
 #, fuzzy
 msgid ""
 "If non-zero, instruct pppd to send packets no larger than the specified size."
@@ -10144,12 +10294,11 @@ msgstr ""
 "Če ni nič, naročite pppd, da pošlje pakete, ki niso večji od določene "
 "velikosti."
 
-#: src/libnmc-setting/settings-docs.h.in:295
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:324
 msgid "If TRUE, Van Jacobsen TCP header compression will not be requested."
-msgstr "Če je TRUE, stiskanje glave Van Jacobsen TCP ne bo zahtevano."
+msgstr "Če je TRUE, stiskanje glave TCP Van Jacobsen ne bo zahtevano."
 
-#: src/libnmc-setting/settings-docs.h.in:296
+#: src/libnmc-setting/settings-docs.h.in:325
 #, fuzzy
 msgid ""
 "If TRUE, do not require the other side (usually the PPP server) to "
@@ -10160,42 +10309,35 @@ msgstr ""
 "pristnost pri odjemalcu.  Če je FALSE, zahtevajte preverjanje pristnosti z "
 "oddaljene strani.  V skoraj vseh primerih bi to moralo biti RES."
 
-#: src/libnmc-setting/settings-docs.h.in:297
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:326
 msgid "If TRUE, BSD compression will not be requested."
 msgstr "Če je TRUE, stiskanje BSD ne bo zahtevano."
 
-#: src/libnmc-setting/settings-docs.h.in:298
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:327
 msgid "If TRUE, \"deflate\" compression will not be requested."
 msgstr "Če je TRUE, stiskanje »deflate« ne bo zahtevano."
 
-#: src/libnmc-setting/settings-docs.h.in:299
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:328
 msgid "If TRUE, the CHAP authentication method will not be used."
 msgstr "Če je TRUE, način preverjanja pristnosti CHAP ne bo uporabljen."
 
-#: src/libnmc-setting/settings-docs.h.in:300
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:329
 msgid "If TRUE, the EAP authentication method will not be used."
 msgstr "Če je TRUE, način preverjanja pristnosti EAP ne bo uporabljen."
 
-#: src/libnmc-setting/settings-docs.h.in:301
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:330
 msgid "If TRUE, the MSCHAP authentication method will not be used."
 msgstr "Če je TRUE, način preverjanja pristnosti MSCHAP ne bo uporabljen."
 
-#: src/libnmc-setting/settings-docs.h.in:302
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:331
 msgid "If TRUE, the MSCHAPv2 authentication method will not be used."
 msgstr "Če je TRUE, način preverjanja pristnosti MSCHAPv2 ne bo uporabljen."
 
-#: src/libnmc-setting/settings-docs.h.in:303
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:332
 msgid "If TRUE, the PAP authentication method will not be used."
 msgstr "Če je TRUE, način preverjanja pristnosti PAP ne bo uporabljen."
 
-#: src/libnmc-setting/settings-docs.h.in:304
+#: src/libnmc-setting/settings-docs.h.in:333
 #, fuzzy
 msgid ""
 "If TRUE, MPPE (Microsoft Point-to-Point Encryption) will be required for the "
@@ -10207,7 +10349,7 @@ msgstr ""
 "seja ne bo uspela.  Upoštevajte, da se MPPE ne uporablja za mobilne "
 "širokopasovne povezave."
 
-#: src/libnmc-setting/settings-docs.h.in:305
+#: src/libnmc-setting/settings-docs.h.in:334
 #, fuzzy
 msgid ""
 "If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required "
@@ -10218,7 +10360,7 @@ msgstr ""
 "šifriranje od točke do točke), lastnost »require-mppe« pa mora biti prav "
 "tako nastavljena na TRUE.  Če 128-bitni MPPE ni na voljo, seja ne bo uspela."
 
-#: src/libnmc-setting/settings-docs.h.in:306
+#: src/libnmc-setting/settings-docs.h.in:335
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name on which this PPPoE connection "
@@ -10230,11 +10372,11 @@ msgstr ""
 "ta povezava PPPoE.  Če ta lastnost ni določena, se povezava aktivira na "
 "vmesniku, določenem v »interface-name« NMSettingConnection."
 
-#: src/libnmc-setting/settings-docs.h.in:307
+#: src/libnmc-setting/settings-docs.h.in:336
 msgid "Password used to authenticate with the PPPoE service."
 msgstr "Geslo, ki se uporablja za preverjanje pristnosti s storitvijo PPPoE."
 
-#: src/libnmc-setting/settings-docs.h.in:309
+#: src/libnmc-setting/settings-docs.h.in:338
 #, fuzzy
 msgid ""
 "If specified, instruct PPPoE to only initiate sessions with access "
@@ -10247,23 +10389,23 @@ msgstr ""
 "to pustiti prazno.  Zahteva se le, če obstaja več koncentratorjev dostopa "
 "ali če je znano, da je potrebna določena storitev."
 
-#: src/libnmc-setting/settings-docs.h.in:310
+#: src/libnmc-setting/settings-docs.h.in:339
 msgid "Username used to authenticate with the PPPoE service."
 msgstr ""
 "Uporabniško ime, ki se uporablja za preverjanje pristnosti s storitvijo "
 "PPPoE."
 
-#: src/libnmc-setting/settings-docs.h.in:311
+#: src/libnmc-setting/settings-docs.h.in:340
 #, fuzzy
 msgid "Whether the proxy configuration is for browser only."
 msgstr "Ali je konfiguracija strežnika proxy samo za brskalnik."
 
-#: src/libnmc-setting/settings-docs.h.in:312
+#: src/libnmc-setting/settings-docs.h.in:341
 #, fuzzy
 msgid "Method for proxy configuration, Default is \"none\" (0)"
 msgstr "Metoda za konfiguracijo proxyja, privzeta vrednost je »none« (0)"
 
-#: src/libnmc-setting/settings-docs.h.in:313
+#: src/libnmc-setting/settings-docs.h.in:342
 #, fuzzy
 msgid ""
 "The PAC script. In the profile this must be an UTF-8 encoded javascript code "
@@ -10278,12 +10420,12 @@ msgstr ""
 "in nastavil skript. Predponi \"file://\" in \"js://\" sta podprti za izrecno "
 "razlikovanje med obema."
 
-#: src/libnmc-setting/settings-docs.h.in:314
+#: src/libnmc-setting/settings-docs.h.in:343
 #, fuzzy
 msgid "PAC URL for obtaining PAC file."
 msgstr "URL PAC za pridobitev datoteke PAC."
 
-#: src/libnmc-setting/settings-docs.h.in:315
+#: src/libnmc-setting/settings-docs.h.in:344
 #, fuzzy
 msgid ""
 "Speed to use for communication over the serial port.  Note that this value "
@@ -10294,22 +10436,21 @@ msgstr ""
 "običajno ne vpliva na modeme za mobilno širokopasovno povezavo, saj običajno "
 "prezrejo nastavitve hitrosti in uporabljajo najvišjo razpoložljivo hitrost."
 
-#: src/libnmc-setting/settings-docs.h.in:316
+#: src/libnmc-setting/settings-docs.h.in:345
 #, fuzzy
 msgid "Byte-width of the serial communication. The 8 in \"8n1\" for example."
 msgstr "Bajt-širina serijske komunikacije. 8 v \"8n1\" na primer."
 
-#: src/libnmc-setting/settings-docs.h.in:317
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:346
 msgid "Parity setting of the serial port."
 msgstr "Nastavitev paritete serijskih vrat."
 
-#: src/libnmc-setting/settings-docs.h.in:318
+#: src/libnmc-setting/settings-docs.h.in:347
 #, fuzzy
 msgid "Time to delay between each byte sent to the modem, in microseconds."
 msgstr "Čas zakasnitve med vsakim bajtom, poslanim modemu, v mikrosekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:319
+#: src/libnmc-setting/settings-docs.h.in:348
 #, fuzzy
 msgid ""
 "Number of stop bits for communication on the serial port.  Either 1 or 2. "
@@ -10318,7 +10459,7 @@ msgstr ""
 "Število stop bitov za komunikacijo na serijskih vratih.  Bodisi 1 ali 2. Na "
 "primer 1 v \"8n1\"."
 
-#: src/libnmc-setting/settings-docs.h.in:320
+#: src/libnmc-setting/settings-docs.h.in:349
 #, fuzzy
 msgid ""
 "Whether to autoprobe virtual functions by a compatible driver. If set to "
@@ -10337,7 +10478,7 @@ msgstr ""
 "»privzeto« (-1), se uporabi globalna privzeta vrednost; v primeru, da "
 "globalna privzeta vrednost ni določena, se domneva, da je »resnična« (1)."
 
-#: src/libnmc-setting/settings-docs.h.in:321
+#: src/libnmc-setting/settings-docs.h.in:350
 #, fuzzy
 msgid ""
 "Select the eswitch encapsulation support. Currently it's only supported for "
@@ -10350,7 +10491,7 @@ msgstr ""
 "kot PF. Če je nastavljena na »preserve« (-1) (privzeto), NetworkManager ne "
 "bo spremenil načina eswitch encap-mode."
 
-#: src/libnmc-setting/settings-docs.h.in:322
+#: src/libnmc-setting/settings-docs.h.in:351
 #, fuzzy
 msgid ""
 "Select the eswitch inline-mode of the device. Some HWs need the VF driver to "
@@ -10367,7 +10508,7 @@ msgstr ""
 "nastavljena na »ohrani« (-1) (privzeto), NetworkManager ne bo spremenil "
 "načina vključenega stikala eswitch."
 
-#: src/libnmc-setting/settings-docs.h.in:323
+#: src/libnmc-setting/settings-docs.h.in:352
 #, fuzzy
 msgid ""
 "Select the eswitch mode of the device. Currently it's only supported for PCI "
@@ -10380,7 +10521,7 @@ msgstr ""
 "nastavljena na »ohrani« (-1) (privzeto), NetworkManager ne bo spremenil "
 "načina eswitch."
 
-#: src/libnmc-setting/settings-docs.h.in:324
+#: src/libnmc-setting/settings-docs.h.in:353
 #, fuzzy
 msgid ""
 "The total number of virtual functions to create. Note that when the sriov "
@@ -10395,7 +10536,7 @@ msgstr ""
 "deaktivaciji. Če želite preprečiti kakršne koli spremembe parametrov SR-IOV, "
 "povezavi ne dodajajte nastavitve sriov."
 
-#: src/libnmc-setting/settings-docs.h.in:325
+#: src/libnmc-setting/settings-docs.h.in:354
 #, fuzzy
 msgid ""
 "Array of virtual function descriptors. Each VF descriptor is a dictionary "
@@ -10419,7 +10560,7 @@ msgstr ""
 "ločen s podpičjem, kjer ima vsak deskriptor obliko »ID[. PREDNOSTNA NALOGA[. "
 "PROTO]]\". PROTO je lahko 'q' za 802.1Q (privzeto) ali 'ad' za 802.1ad."
 
-#: src/libnmc-setting/settings-docs.h.in:326
+#: src/libnmc-setting/settings-docs.h.in:355
 #, fuzzy
 msgid ""
 "Array of TC queueing disciplines. When the \"tc\" setting is present, qdiscs "
@@ -10436,7 +10577,7 @@ msgstr ""
 "\"tc\" ni prisotna, se NetworkManager ne dotakne qdiskov, ki so prisotni na "
 "vmesniku."
 
-#: src/libnmc-setting/settings-docs.h.in:327
+#: src/libnmc-setting/settings-docs.h.in:356
 #, fuzzy
 msgid ""
 "Array of TC traffic filters. When the \"tc\" setting is present, filters "
@@ -10449,7 +10590,7 @@ msgstr ""
 "odstrani vse filtre. Če nastavitev »tc« ni na voljo, se NetworkManager ne "
 "dotakne filtrov, ki so prisotni v vmesniku."
 
-#: src/libnmc-setting/settings-docs.h.in:328
+#: src/libnmc-setting/settings-docs.h.in:357
 #, fuzzy
 msgid ""
 "The JSON configuration for the team network interface.  The property should "
@@ -10462,8 +10603,8 @@ msgstr ""
 "vrednost posreduje neposredno skupini. Če ni določeno, se uporabi privzeta "
 "konfiguracija.  Za podrobnosti o formatu glejte man teamd.conf."
 
-#: src/libnmc-setting/settings-docs.h.in:329
-#: src/libnmc-setting/settings-docs.h.in:347
+#: src/libnmc-setting/settings-docs.h.in:358
+#: src/libnmc-setting/settings-docs.h.in:376
 #, fuzzy
 msgid ""
 "Link watchers configuration for the connection: each link watcher is defined "
@@ -10484,27 +10625,23 @@ msgstr ""
 "nsna_ping in 'source-host', 'validate-active', 'validate-inactive', 'send-"
 "always'. Za več podrobnosti glejte teamd.conf man."
 
-#: src/libnmc-setting/settings-docs.h.in:330
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:359
 msgid "Corresponds to the teamd mcast_rejoin.count."
-msgstr "Ustreza skupinskemu mcast_rejoin.štetju."
+msgstr "Ustreza teamd mcast_rejoin.count."
 
-#: src/libnmc-setting/settings-docs.h.in:331
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:360
 msgid "Corresponds to the teamd mcast_rejoin.interval."
-msgstr "Ustreza združenemu mcast_rejoin.intervalu."
+msgstr "Ustreza teamd mcast_rejoin.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:332
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:361
 msgid "Corresponds to the teamd notify_peers.count."
-msgstr "Ustreza skupinskemu notify_peers.štetju."
+msgstr "Ustreza teamd notify_peers.count."
 
-#: src/libnmc-setting/settings-docs.h.in:333
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:362
 msgid "Corresponds to the teamd notify_peers.interval."
-msgstr "Ustreza skupinskemu notify_peers.intervalu."
+msgstr "Ustreza teamd notify_peers.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:334
+#: src/libnmc-setting/settings-docs.h.in:363
 #, fuzzy
 msgid ""
 "Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", "
@@ -10513,52 +10650,44 @@ msgstr ""
 "Ustreza skupinski runner.name. Dovoljene vrednosti so: »roundrobin«, "
 "»broadcast«, »activebackup«, »loadbalance«, »lacp«, »random«."
 
-#: src/libnmc-setting/settings-docs.h.in:335
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:364
 msgid "Corresponds to the teamd runner.active."
-msgstr "Ustreza skupini runner.active."
+msgstr "Ustreza teamd runner.active."
 
-#: src/libnmc-setting/settings-docs.h.in:336
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:365
 msgid "Corresponds to the teamd runner.agg_select_policy."
-msgstr "Ustreza skupinski runner.agg_select_policy."
+msgstr "Ustreza teamd runner.agg_select_policy."
 
-#: src/libnmc-setting/settings-docs.h.in:337
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:366
 msgid "Corresponds to the teamd runner.fast_rate."
-msgstr "Ustreza skupinski runner.fast_rate."
+msgstr "Ustreza teamd runner.fast_rate."
 
-#: src/libnmc-setting/settings-docs.h.in:338
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:367
 msgid "Corresponds to the teamd runner.hwaddr_policy."
-msgstr "Ustreza skupinski runner.hwaddr_policy."
+msgstr "Ustreza teamd runner.hwaddr_policy."
 
-#: src/libnmc-setting/settings-docs.h.in:339
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:368
 msgid "Corresponds to the teamd runner.min_ports."
-msgstr "Ustreza ekipnemu runner.min_ports."
+msgstr "Ustreza teamd runner.min_ports."
 
-#: src/libnmc-setting/settings-docs.h.in:340
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:369
 msgid "Corresponds to the teamd runner.sys_prio."
-msgstr "Ustreza skupini runner.sys_prio."
+msgstr "Ustreza teamd runner.sys_prio."
 
-#: src/libnmc-setting/settings-docs.h.in:341
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:370
 msgid "Corresponds to the teamd runner.tx_balancer.name."
-msgstr "Ustreza skupinskemu runner.tx_balancer.imenu."
+msgstr "Ustreza teamd runner.tx_balancer.name."
 
-#: src/libnmc-setting/settings-docs.h.in:342
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:371
 msgid "Corresponds to the teamd runner.tx_balancer.interval."
-msgstr "Ustreza združenemu runner.tx_balancer.intervalu."
+msgstr "Ustreza teamd runner.tx_balancer.interval."
 
-#: src/libnmc-setting/settings-docs.h.in:343
+#: src/libnmc-setting/settings-docs.h.in:372
 #, fuzzy
 msgid "Corresponds to the teamd runner.tx_hash."
 msgstr "Ustreza skupinski runner.tx_hash."
 
-#: src/libnmc-setting/settings-docs.h.in:344
+#: src/libnmc-setting/settings-docs.h.in:373
 #, fuzzy
 msgid ""
 "The JSON configuration for the team port. The property should contain raw "
@@ -10571,22 +10700,19 @@ msgstr ""
 "neposredno skupini. Če ni določeno, se uporabi privzeta konfiguracija. Za "
 "podrobnosti o formatu glejte man teamd.conf."
 
-#: src/libnmc-setting/settings-docs.h.in:345
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:374
 msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_key."
-msgstr "Ustreza združenim pristaniščem. PORTIFNAME.lacp_key."
+msgstr "Ustreza teamd ports.PORTIFNAME.lacp_key."
 
-#: src/libnmc-setting/settings-docs.h.in:346
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:375
 msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_prio."
-msgstr "Ustreza združenim pristaniščem. PORTIFNAME.lacp_prio."
+msgstr "Ustreza teamd ports.PORTIFNAME.lacp_prio."
 
-#: src/libnmc-setting/settings-docs.h.in:348
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:377
 msgid "Corresponds to the teamd ports.PORTIFNAME.prio."
-msgstr "Ustreza združenim pristaniščem. PORTIFNAME.prio."
+msgstr "Ustreza teamd ports.PORTIFNAME.prio."
 
-#: src/libnmc-setting/settings-docs.h.in:349
+#: src/libnmc-setting/settings-docs.h.in:378
 #, fuzzy
 msgid ""
 "Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the "
@@ -10595,12 +10721,12 @@ msgstr ""
 "Ustreza združenim pristaniščem. PORTIFNAME.queue_id. Če je nastavljena na "
 "-1, pomeni, da je parameter preskočen iz konfiguracije json."
 
-#: src/libnmc-setting/settings-docs.h.in:350
+#: src/libnmc-setting/settings-docs.h.in:379
 #, fuzzy
 msgid "Corresponds to the teamd ports.PORTIFNAME.sticky."
 msgstr "Ustreza združenim pristaniščem. PORTIFNAME.sticky."
 
-#: src/libnmc-setting/settings-docs.h.in:351
+#: src/libnmc-setting/settings-docs.h.in:380
 #, fuzzy
 msgid ""
 "The group ID which will own the device. If set to NULL everyone will be able "
@@ -10609,7 +10735,7 @@ msgstr ""
 "ID skupine, ki bo lastnik naprave. Če je nastavljena na NULL, bodo lahko "
 "napravo uporabljali vsi."
 
-#: src/libnmc-setting/settings-docs.h.in:352
+#: src/libnmc-setting/settings-docs.h.in:381
 #, fuzzy
 msgid ""
 "The operating mode of the virtual device. Allowed values are \"tun\" (1) to "
@@ -10620,7 +10746,7 @@ msgstr ""
 "ustvarjanje naprave plasti 3 in »tap« (2) za ustvarjanje plasti 2, podobne "
 "Ethernetu."
 
-#: src/libnmc-setting/settings-docs.h.in:353
+#: src/libnmc-setting/settings-docs.h.in:382
 #, fuzzy
 msgid ""
 "If the property is set to TRUE, the interface will support multiple file "
@@ -10631,7 +10757,7 @@ msgstr ""
 "datotek (čakalnih vrst) za vzporedno pošiljanje ali prejemanje paketov. V "
 "nasprotnem primeru bo vmesnik podpiral samo eno čakalno vrsto."
 
-#: src/libnmc-setting/settings-docs.h.in:354
+#: src/libnmc-setting/settings-docs.h.in:383
 #, fuzzy
 msgid ""
 "The user ID which will own the device. If set to NULL everyone will be able "
@@ -10640,7 +10766,7 @@ msgstr ""
 "ID uporabnika, ki bo lastnik naprave. Če je nastavljena na NULL, bodo lahko "
 "napravo uporabljali vsi."
 
-#: src/libnmc-setting/settings-docs.h.in:355
+#: src/libnmc-setting/settings-docs.h.in:384
 #, fuzzy
 msgid ""
 "If TRUE the interface will prepend a 4 byte header describing the physical "
@@ -10649,7 +10775,7 @@ msgstr ""
 "Če je TRUE, bo vmesnik paketom dodal 4-bajtno glavo, ki opisuje fizični "
 "vmesnik."
 
-#: src/libnmc-setting/settings-docs.h.in:356
+#: src/libnmc-setting/settings-docs.h.in:385
 #, fuzzy
 msgid ""
 "If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network "
@@ -10657,7 +10783,7 @@ msgid ""
 msgstr ""
 "Če je TRUE, bo IFF_VNET_HDR paketov tunela vseboval glavo omrežja virtio."
 
-#: src/libnmc-setting/settings-docs.h.in:357
+#: src/libnmc-setting/settings-docs.h.in:386
 #, fuzzy
 msgid ""
 "A dictionary of key/value pairs with user data. This data is ignored by "
@@ -10670,7 +10796,7 @@ msgstr ""
 "podpirajo samo strogo obliko ascii, vendar so vrednosti lahko poljubni nizi "
 "UTF8 do določene dolžine."
 
-#: src/libnmc-setting/settings-docs.h.in:358
+#: src/libnmc-setting/settings-docs.h.in:387
 #, fuzzy
 msgid ""
 "For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p "
@@ -10681,13 +10807,13 @@ msgstr ""
 "prednostne naloge 802.1p.  Preslikava je podana v obliki \"from:to\", kjer "
 "sta \"from\" in \"to\" cela števila brez znaka, tj. \"7:3\"."
 
-#: src/libnmc-setting/settings-docs.h.in:359
+#: src/libnmc-setting/settings-docs.h.in:388
 #, fuzzy
 msgid ""
 "One or more flags which control the behavior and features of the VLAN "
 "interface.  Flags include \"reorder-headers\" (0x1) (reordering of output "
 "packet headers), \"gvrp\" (0x2) (use of the GVRP protocol), and \"loose-"
-"binding\" (0x4) (loose binding of the interface to its master device's "
+"binding\" (0x4) (loose binding of the interface to its controller device's "
 "operating state). \"mvrp\" (0x8) (use of the MVRP protocol). The default "
 "value of this property is NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. "
 "To preserve backward compatibility, the default-value in the D-Bus API "
@@ -10702,7 +10828,7 @@ msgstr ""
 "združljivost za nazaj, je privzeta vrednost v API-ju D-Bus še vedno 0, "
 "manjkajoča lastnost v D-Bus pa se še vedno šteje za 0."
 
-#: src/libnmc-setting/settings-docs.h.in:360
+#: src/libnmc-setting/settings-docs.h.in:389
 #, fuzzy
 msgid ""
 "The VLAN identifier that the interface created by this connection should be "
@@ -10711,7 +10837,7 @@ msgstr ""
 "Identifikator VLAN, ki ga je treba dodeliti vmesniku, ustvarjenemu s to "
 "povezavo. Veljaven razpon je od 0 do 4094, brez rezerviranega ID-ja 4095."
 
-#: src/libnmc-setting/settings-docs.h.in:361
+#: src/libnmc-setting/settings-docs.h.in:390
 #, fuzzy
 msgid ""
 "For incoming packets, a list of mappings from 802.1p priorities to Linux SKB "
@@ -10722,7 +10848,7 @@ msgstr ""
 "Linux SKB.  Preslikava je podana v obliki \"from:to\", kjer sta \"from\" in "
 "\"to\" cela števila brez znaka, tj. \"7:3\"."
 
-#: src/libnmc-setting/settings-docs.h.in:362
+#: src/libnmc-setting/settings-docs.h.in:391
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID from "
@@ -10735,7 +10861,7 @@ msgstr ""
 "mora povezava vsebovati nastavitev »802-3-ethernet« z lastnostjo »mac-"
 "address«."
 
-#: src/libnmc-setting/settings-docs.h.in:363
+#: src/libnmc-setting/settings-docs.h.in:392
 #, fuzzy
 msgid ""
 "Specifies the VLAN protocol to use for encapsulation. Supported values are: "
@@ -10744,7 +10870,7 @@ msgstr ""
 "Določa protokol VLAN, ki se uporablja za enkapsulacijo. Podprte vrednosti "
 "so: »802.1Q«, »802.1ad«. Če ni navedeno, je privzeta vrednost »802.1Q«."
 
-#: src/libnmc-setting/settings-docs.h.in:364
+#: src/libnmc-setting/settings-docs.h.in:393
 #, fuzzy
 msgid ""
 "Dictionary of key/value pairs of VPN plugin specific data.  Both keys and "
@@ -10753,7 +10879,7 @@ msgstr ""
 "Slovar parov ključ / vrednost podatkov, specifičnih za vtičnik VPN.  Ključi "
 "in vrednosti morajo biti nizi."
 
-#: src/libnmc-setting/settings-docs.h.in:365
+#: src/libnmc-setting/settings-docs.h.in:394
 #, fuzzy
 msgid ""
 "If the VPN service supports persistence, and this property is TRUE, the VPN "
@@ -10764,7 +10890,7 @@ msgstr ""
 "ostati povezan med spremembami povezav in izpadi, dokler se povezava izrecno "
 "ne prekine."
 
-#: src/libnmc-setting/settings-docs.h.in:366
+#: src/libnmc-setting/settings-docs.h.in:395
 #, fuzzy
 msgid ""
 "Dictionary of key/value pairs of VPN plugin specific secrets like passwords "
@@ -10773,7 +10899,7 @@ msgstr ""
 "Slovar parov ključ/vrednost posebnih skrivnosti vtičnikov VPN, kot so gesla "
 "ali zasebni ključi.  Ključi in vrednosti morajo biti nizi."
 
-#: src/libnmc-setting/settings-docs.h.in:367
+#: src/libnmc-setting/settings-docs.h.in:396
 #, fuzzy
 msgid ""
 "D-Bus service name of the VPN plugin that this setting uses to connect to "
@@ -10783,7 +10909,7 @@ msgstr ""
 "vzpostavljanje povezave z omrežjem.  tj. org.freedesktop.NetworkManager.vpnc "
 "za vtičnik vpnc."
 
-#: src/libnmc-setting/settings-docs.h.in:368
+#: src/libnmc-setting/settings-docs.h.in:397
 #, fuzzy
 msgid ""
 "Timeout for the VPN service to establish the connection. Some services may "
@@ -10797,7 +10923,7 @@ msgstr ""
 "konfiguracijski datoteki). Vrednosti, večje od nič, pomenijo časovno "
 "omejitev v sekundah."
 
-#: src/libnmc-setting/settings-docs.h.in:369
+#: src/libnmc-setting/settings-docs.h.in:398
 #, fuzzy
 msgid ""
 "If the VPN connection requires a user name for authentication, that name "
@@ -10813,18 +10939,18 @@ msgstr ""
 "prazno.  Če je ta lastnost prazna, bo NetworkManager samodejno vnesel "
 "uporabniško ime uporabnika, ki je zahteval povezavo VPN."
 
-#: src/libnmc-setting/settings-docs.h.in:370
+#: src/libnmc-setting/settings-docs.h.in:399
 #, fuzzy
 msgid "The routing table for this VRF."
 msgstr "Usmerjevalna tabela za ta VRF."
 
-#: src/libnmc-setting/settings-docs.h.in:371
+#: src/libnmc-setting/settings-docs.h.in:400
 #, fuzzy
 msgid "Specifies the lifetime in seconds of FDB entries learnt by the kernel."
 msgstr ""
 "Določa življenjsko dobo vnosov FDB v sekundah, ki jih je naučilo jedro."
 
-#: src/libnmc-setting/settings-docs.h.in:372
+#: src/libnmc-setting/settings-docs.h.in:401
 #, fuzzy
 msgid ""
 "Specifies the UDP destination port to communicate to the remote VXLAN tunnel "
@@ -10833,7 +10959,7 @@ msgstr ""
 "Določa ciljna vrata UDP za komunikacijo z oddaljeno končno točko tunela "
 "VXLAN."
 
-#: src/libnmc-setting/settings-docs.h.in:373
+#: src/libnmc-setting/settings-docs.h.in:402
 #, fuzzy
 msgid ""
 "Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use."
@@ -10841,17 +10967,17 @@ msgstr ""
 "Določa identifikator omrežja VXLAN (ali identifikator segmenta VXLAN), ki ga "
 "želite uporabiti."
 
-#: src/libnmc-setting/settings-docs.h.in:374
+#: src/libnmc-setting/settings-docs.h.in:403
 #, fuzzy
 msgid "Specifies whether netlink LL ADDR miss notifications are generated."
 msgstr "Določa, ali se ustvarijo zgrešena obvestila netlink LL ADDR."
 
-#: src/libnmc-setting/settings-docs.h.in:375
+#: src/libnmc-setting/settings-docs.h.in:404
 #, fuzzy
 msgid "Specifies whether netlink IP ADDR miss notifications are generated."
 msgstr "Določa, ali se ustvarijo zgrešena obvestila netlink IP ADDR."
 
-#: src/libnmc-setting/settings-docs.h.in:376
+#: src/libnmc-setting/settings-docs.h.in:405
 #, fuzzy
 msgid ""
 "Specifies whether unknown source link layer addresses and IP addresses are "
@@ -10860,7 +10986,7 @@ msgstr ""
 "Določa, ali se v zbirko podatkov za posredovanje naprav VXLAN vnesejo "
 "neznani naslovi plasti izvorne povezave in naslovi IP."
 
-#: src/libnmc-setting/settings-docs.h.in:377
+#: src/libnmc-setting/settings-docs.h.in:406
 #, fuzzy
 msgid ""
 "Specifies the maximum number of FDB entries. A value of zero means that the "
@@ -10869,25 +10995,25 @@ msgstr ""
 "Določa največje število vnosov FDB. Vrednost nič pomeni, da bo jedro "
 "shranilo neomejeno število vnosov."
 
-#: src/libnmc-setting/settings-docs.h.in:378
+#: src/libnmc-setting/settings-docs.h.in:407
 #, fuzzy
 msgid "If given, specifies the source IP address to use in outgoing packets."
 msgstr ""
 "Če je navedeno, določa izvorni naslov IP, ki se uporablja v odhodnih paketih."
 
-#: src/libnmc-setting/settings-docs.h.in:379
+#: src/libnmc-setting/settings-docs.h.in:408
 #, fuzzy
 msgid ""
 "If given, specifies the parent interface name or parent connection UUID."
 msgstr ""
 "Če je navedeno, določa ime nadrejenega vmesnika ali UUID nadrejene povezave."
 
-#: src/libnmc-setting/settings-docs.h.in:380
+#: src/libnmc-setting/settings-docs.h.in:409
 #, fuzzy
 msgid "Specifies whether ARP proxy is turned on."
 msgstr "Določa, ali je strežnik proxy ARP vklopljen."
 
-#: src/libnmc-setting/settings-docs.h.in:381
+#: src/libnmc-setting/settings-docs.h.in:410
 #, fuzzy
 msgid ""
 "Specifies the unicast destination IP address to use in outgoing packets when "
@@ -10899,12 +11025,12 @@ msgstr ""
 "posredovanje naprav VXLAN ali naslov IP za večoddajanje, ki se mu želite "
 "pridružiti."
 
-#: src/libnmc-setting/settings-docs.h.in:382
+#: src/libnmc-setting/settings-docs.h.in:411
 #, fuzzy
 msgid "Specifies whether route short circuit is turned on."
 msgstr "Določa, ali je vklopljen kratek stik na poti."
 
-#: src/libnmc-setting/settings-docs.h.in:383
+#: src/libnmc-setting/settings-docs.h.in:412
 #, fuzzy
 msgid ""
 "Specifies the maximum UDP source port to communicate to the remote VXLAN "
@@ -10913,7 +11039,7 @@ msgstr ""
 "Določa največja izvorna vrata UDP za komunikacijo z oddaljeno končno točko "
 "tunela VXLAN."
 
-#: src/libnmc-setting/settings-docs.h.in:384
+#: src/libnmc-setting/settings-docs.h.in:413
 #, fuzzy
 msgid ""
 "Specifies the minimum UDP source port to communicate to the remote VXLAN "
@@ -10922,17 +11048,16 @@ msgstr ""
 "Določa najmanjša izvorna vrata UDP za komunikacijo z oddaljeno končno točko "
 "tunela VXLAN."
 
-#: src/libnmc-setting/settings-docs.h.in:385
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:414
 msgid "Specifies the TOS value to use in outgoing packets."
 msgstr "Določa vrednost TOS, ki se uporablja v odhodnih paketih."
 
-#: src/libnmc-setting/settings-docs.h.in:386
+#: src/libnmc-setting/settings-docs.h.in:415
 #, fuzzy
 msgid "Specifies the time-to-live value to use in outgoing packets."
 msgstr "Določa vrednost časa življenja, ki se uporabi v odhodnih paketih."
 
-#: src/libnmc-setting/settings-docs.h.in:387
+#: src/libnmc-setting/settings-docs.h.in:416
 #, fuzzy
 msgid ""
 "The P2P device that should be connected to. Currently, this is the only way "
@@ -10941,7 +11066,7 @@ msgstr ""
 "Naprava P2P, s katero je treba priključiti. Trenutno je to edini način za "
 "ustvarjanje skupine ali pridružitev skupini."
 
-#: src/libnmc-setting/settings-docs.h.in:388
+#: src/libnmc-setting/settings-docs.h.in:417
 #, fuzzy
 msgid ""
 "The Wi-Fi Display (WFD) Information Elements (IEs) to set. Wi-Fi Display "
@@ -10956,7 +11081,7 @@ msgstr ""
 "vzpostavitev povezave. Ta nastavitev je uporabna le pri implementaciji "
 "odjemalca Wi-Fi Display."
 
-#: src/libnmc-setting/settings-docs.h.in:389
+#: src/libnmc-setting/settings-docs.h.in:418
 #, fuzzy
 msgid ""
 "Flags indicating which mode of WPS is to be used. There's little point in "
@@ -10967,7 +11092,7 @@ msgstr ""
 "nastavitve ni smiselno spreminjati, saj bo NetworkManager samodejno določil "
 "najboljši način za uporabo."
 
-#: src/libnmc-setting/settings-docs.h.in:390
+#: src/libnmc-setting/settings-docs.h.in:419
 #, fuzzy
 msgid ""
 "If specified, this connection will only apply to the WiMAX device whose MAC "
@@ -10978,7 +11103,7 @@ msgstr ""
 "MAC se ujema. Ta lastnost ne spremeni naslova MAC naprave (znano kot lažno "
 "predstavljanje naslovov MAC)."
 
-#: src/libnmc-setting/settings-docs.h.in:391
+#: src/libnmc-setting/settings-docs.h.in:420
 #, fuzzy
 msgid ""
 "Network Service Provider (NSP) name of the WiMAX network this connection "
@@ -10987,7 +11112,7 @@ msgstr ""
 "Ime ponudnika omrežnih storitev (NSP) omrežja WiMAX, ki ga mora uporabljati "
 "ta povezava."
 
-#: src/libnmc-setting/settings-docs.h.in:392
+#: src/libnmc-setting/settings-docs.h.in:421
 #, fuzzy
 msgid ""
 "When TRUE, setup the interface to accept packets for all MAC addresses. This "
@@ -10999,7 +11124,7 @@ msgstr ""
 "tem omogočite zastavico vmesnika jedra IFF_PROMISC. Če je FALSE, vmesnik "
 "sprejme samo pakete s ciljnim naslovom vmesnika mac ali oddajanjem."
 
-#: src/libnmc-setting/settings-docs.h.in:393
+#: src/libnmc-setting/settings-docs.h.in:422
 #, fuzzy
 msgid ""
 "When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" "
@@ -11018,7 +11143,7 @@ msgstr ""
 "je treba nastaviti FALSE, lastnosti »speed« in »duplex« ali pa bo "
 "konfiguracija povezave preskočena."
 
-#: src/libnmc-setting/settings-docs.h.in:394
+#: src/libnmc-setting/settings-docs.h.in:423
 #, fuzzy
 msgid ""
 "If specified, request that the device use this MAC address instead. This is "
@@ -11049,7 +11174,7 @@ msgstr ""
 "morda uporabljajo drugačno privzeto vrednost). Na D-Bus je to polje izraženo "
 "kot »dodeljeni-mac-naslov« ali zastareli »klonirani-mac-naslov«."
 
-#: src/libnmc-setting/settings-docs.h.in:395
+#: src/libnmc-setting/settings-docs.h.in:424
 #, fuzzy
 msgid ""
 "When a value is set, either \"half\" or \"full\", configures the device to "
@@ -11076,8 +11201,8 @@ msgstr ""
 "Nastavitev mora biti skupaj z lastnostjo »speed«, če je določena. Preden "
 "določite dvostranski način, se prepričajte, da ga vaša naprava podpira."
 
-#: src/libnmc-setting/settings-docs.h.in:396
-#: src/libnmc-setting/settings-docs.h.in:422
+#: src/libnmc-setting/settings-docs.h.in:425
+#: src/libnmc-setting/settings-docs.h.in:451
 #, fuzzy
 msgid ""
 "With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all "
@@ -11127,7 +11252,7 @@ msgstr ""
 "02:00:00:00:00:00« bo ustvaril popolnoma kodiran naslov MAC, ki se naključno "
 "upravlja lokalno ali globalno."
 
-#: src/libnmc-setting/settings-docs.h.in:397
+#: src/libnmc-setting/settings-docs.h.in:426
 #, fuzzy
 msgid ""
 "If specified, this connection will only apply to the Ethernet device whose "
@@ -11138,8 +11263,8 @@ msgstr ""
 "trajni naslov MAC se ujema. Ta lastnost ne spremeni naslova MAC naprave "
 "(npr. ponarejanje MAC)."
 
-#: src/libnmc-setting/settings-docs.h.in:398
-#: src/libnmc-setting/settings-docs.h.in:399
+#: src/libnmc-setting/settings-docs.h.in:427
+#: src/libnmc-setting/settings-docs.h.in:428
 #, fuzzy
 msgid ""
 "If specified, this connection will never apply to the Ethernet device whose "
@@ -11151,9 +11276,9 @@ msgstr ""
 "standardnem zapisu s šestnajstkimi številkami in dvopičji "
 "(00:11:22:33:44:55)."
 
-#: src/libnmc-setting/settings-docs.h.in:400
 #: src/libnmc-setting/settings-docs.h.in:429
-#: src/libnmc-setting/settings-docs.h.in:475
+#: src/libnmc-setting/settings-docs.h.in:458
+#: src/libnmc-setting/settings-docs.h.in:500
 #, fuzzy
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
@@ -11162,7 +11287,7 @@ msgstr ""
 "Če ni nič, prenašajte samo pakete določene velikosti ali manjše, pri čemer "
 "razbijte večje pakete v več ethernetnih okvirjev."
 
-#: src/libnmc-setting/settings-docs.h.in:401
+#: src/libnmc-setting/settings-docs.h.in:430
 #, fuzzy
 msgid ""
 "Specific port type to use if the device supports multiple attachment "
@@ -11175,7 +11300,7 @@ msgstr ""
 "priključne enote), \"bnc\" (Thin Ethernet) ali \"mii\" (vmesnik, neodvisen "
 "od medija). Če naprava podpira samo eno vrsto vrat, se ta nastavitev prezre."
 
-#: src/libnmc-setting/settings-docs.h.in:402
+#: src/libnmc-setting/settings-docs.h.in:431
 #, fuzzy
 msgid ""
 "s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing "
@@ -11185,7 +11310,7 @@ msgstr ""
 "predstavlja različne vrste navideznih omrežnih naprav, ki so na voljo v "
 "sistemih S390."
 
-#: src/libnmc-setting/settings-docs.h.in:403
+#: src/libnmc-setting/settings-docs.h.in:432
 #, fuzzy
 msgid ""
 "Dictionary of key/value pairs of s390-specific device options.  Both keys "
@@ -11202,7 +11327,7 @@ msgstr ""
 "počne ničesar s temi informacijami. Vendar pa s390utils pošlje pravilo udev, "
 "ki razčleni te informacije in jih uporabi za vmesnik."
 
-#: src/libnmc-setting/settings-docs.h.in:404
+#: src/libnmc-setting/settings-docs.h.in:433
 #, fuzzy
 msgid ""
 "Identifies specific subchannels that this network device uses for "
@@ -11219,7 +11344,7 @@ msgstr ""
 "mora vsebovati natanko 3 nize, vsak niz pa je lahko sestavljen samo iz "
 "šestnajstiških znakov in znaka pike (.)."
 
-#: src/libnmc-setting/settings-docs.h.in:405
+#: src/libnmc-setting/settings-docs.h.in:434
 #, fuzzy
 msgid ""
 "When a value greater than 0 is set, configures the device to use the "
@@ -11246,7 +11371,7 @@ msgstr ""
 "ga je treba skupaj z lastnostjo »duplex«, če ni nič. Preden določite "
 "vrednost hitrosti, se prepričajte, da jo vaša naprava podpira."
 
-#: src/libnmc-setting/settings-docs.h.in:406
+#: src/libnmc-setting/settings-docs.h.in:435
 #, fuzzy
 msgid ""
 "The NMSettingWiredWakeOnLan options to enable. Not all devices support all "
@@ -11262,7 +11387,7 @@ msgstr ""
 "nastavitev) in »ignore« (0x8000) (za onemogočanje upravljanja funkcije Wake-"
 "on-LAN v programu NetworkManager)."
 
-#: src/libnmc-setting/settings-docs.h.in:407
+#: src/libnmc-setting/settings-docs.h.in:436
 #, fuzzy
 msgid ""
 "If specified, the password used with magic-packet-based Wake-on-LAN, "
@@ -11273,7 +11398,7 @@ msgstr ""
 "čarobnih paketih, predstavljeno kot ethernetni naslov MAC.  Če je NULL, "
 "geslo ne bo potrebno."
 
-#: src/libnmc-setting/settings-docs.h.in:408
+#: src/libnmc-setting/settings-docs.h.in:437
 #, fuzzy
 msgid ""
 "The use of fwmark is optional and is by default off. Setting it to 0 "
@@ -11286,7 +11411,7 @@ msgstr ""
 "pakete. Upoštevajte, da »ip4-auto-default-route« ali »ip6-auto-default-"
 "route« omogočeno, pomeni, da samodejno izberete fwmark."
 
-#: src/libnmc-setting/settings-docs.h.in:409
+#: src/libnmc-setting/settings-docs.h.in:438
 #, fuzzy
 msgid ""
 "Whether to enable special handling of the IPv4 default route. If enabled, "
@@ -11319,12 +11444,12 @@ msgstr ""
 "tega običajno ni treba izrecno omogočiti. Lahko pa ga onemogočite, če želite "
 "konfigurirati lastno usmerjanje in pravila."
 
-#: src/libnmc-setting/settings-docs.h.in:410
+#: src/libnmc-setting/settings-docs.h.in:439
 #, fuzzy
 msgid "Like ip4-auto-default-route, but for the IPv6 default route."
 msgstr "Kot ip4-auto-default-route, vendar za privzeto pot IPv6."
 
-#: src/libnmc-setting/settings-docs.h.in:411
+#: src/libnmc-setting/settings-docs.h.in:440
 #, fuzzy
 msgid ""
 "The listen-port. If listen-port is not specified, the port will be chosen "
@@ -11333,7 +11458,7 @@ msgstr ""
 "Vrata za poslušanje. Če listen-port ni določen, bodo vrata izbrana "
 "naključno, ko se vmesnik prikaže."
 
-#: src/libnmc-setting/settings-docs.h.in:412
+#: src/libnmc-setting/settings-docs.h.in:441
 #, fuzzy
 msgid ""
 "If non-zero, only transmit packets of the specified size or smaller, "
@@ -11346,7 +11471,7 @@ msgstr ""
 "Upoštevajte, da v nasprotju z nastavitvijo MTU wg-quick to ne upošteva "
 "trenutnih poti v času aktivacije."
 
-#: src/libnmc-setting/settings-docs.h.in:413
+#: src/libnmc-setting/settings-docs.h.in:442
 #, fuzzy
 msgid ""
 "Whether to automatically add routes for the AllowedIPs ranges of the peers. "
@@ -11369,17 +11494,15 @@ msgstr ""
 "default ali ipv6.never-default profila, pot enakovrednika za tega "
 "enakovrednika ne bo dodana samodejno."
 
-#: src/libnmc-setting/settings-docs.h.in:414
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:443
 msgid "The 256 bit private-key in base64 encoding."
-msgstr "256-bitni zasebni ključ, kodiranju z base64"
+msgstr "256-bitni zasebni ključ, v kodiranju z base64"
 
-#: src/libnmc-setting/settings-docs.h.in:415
-#, fuzzy
+#: src/libnmc-setting/settings-docs.h.in:444
 msgid "Flags indicating how to handle the \"private-key\" property."
-msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »zasebni ključ«."
+msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »private-key«."
 
-#: src/libnmc-setting/settings-docs.h.in:416
+#: src/libnmc-setting/settings-docs.h.in:445
 #, fuzzy
 msgid ""
 "Configures AP isolation, which prevents communication between wireless "
@@ -11404,7 +11527,7 @@ msgstr ""
 "je nastavljena na »privzeto« (-1), se uporabi globalna privzeta vrednost; Če "
 "globalno privzeto stanje ni določeno, se domneva, da je »napačno« (0)."
 
-#: src/libnmc-setting/settings-docs.h.in:417
+#: src/libnmc-setting/settings-docs.h.in:446
 #, fuzzy
 msgid ""
 "802.11 frequency band of the network.  One of \"a\" for 5GHz 802.11a or \"bg"
@@ -11421,7 +11544,7 @@ msgstr ""
 "od določenih zmogljivosti gonilnika in morda ne bo delovala z vsemi "
 "gonilniki."
 
-#: src/libnmc-setting/settings-docs.h.in:418
+#: src/libnmc-setting/settings-docs.h.in:447
 #, fuzzy
 msgid ""
 "If specified, directs the device to only associate with the given access "
@@ -11439,7 +11562,7 @@ msgstr ""
 "onemogočili skeniranje v ozadju. To je lahko koristno, če obstaja samo ena "
 "dostopna točka za SSID."
 
-#: src/libnmc-setting/settings-docs.h.in:419
+#: src/libnmc-setting/settings-docs.h.in:448
 #, fuzzy
 msgid ""
 "Wireless channel to use for the Wi-Fi connection.  The device will only join "
@@ -11452,7 +11575,7 @@ msgstr ""
 "kanalov med pasovi prekrivajo, ta lastnost zahteva tudi nastavitev lastnosti "
 "»pas«."
 
-#: src/libnmc-setting/settings-docs.h.in:420
+#: src/libnmc-setting/settings-docs.h.in:449
 #, fuzzy
 msgid ""
 "Specifies width of the wireless channel in Access Point (AP) mode. When set "
@@ -11471,7 +11594,7 @@ msgstr ""
 "vrednost, ki se razlikuje od »samodejno« (0) samo, če je vmesnik "
 "konfiguriran v načinu AP."
 
-#: src/libnmc-setting/settings-docs.h.in:421
+#: src/libnmc-setting/settings-docs.h.in:450
 #, fuzzy
 msgid ""
 "If specified, request that the device use this MAC address instead. This is "
@@ -11504,7 +11627,7 @@ msgstr ""
 "morda uporabljajo drugačno privzeto vrednost). Na D-Bus je to polje izraženo "
 "kot »dodeljeni-mac-naslov« ali zastareli »klonirani-mac-naslov«."
 
-#: src/libnmc-setting/settings-docs.h.in:423
+#: src/libnmc-setting/settings-docs.h.in:452
 #, fuzzy
 msgid ""
 "If TRUE, indicates that the network is a non-broadcasting network that hides "
@@ -11527,7 +11650,7 @@ msgstr ""
 "zasebnosti za vas (v infrastrukturnem načinu) ali odjemalske postaje (v "
 "načinu AP), saj so eksplicitni pregledi sond jasno prepoznavni v zraku."
 
-#: src/libnmc-setting/settings-docs.h.in:424
+#: src/libnmc-setting/settings-docs.h.in:453
 #, fuzzy
 msgid ""
 "If specified, this connection will only apply to the Wi-Fi device whose "
@@ -11538,8 +11661,8 @@ msgstr ""
 "naslov MAC se ujema. Ta lastnost ne spremeni naslova MAC naprave (npr. "
 "ponarejanje MAC)."
 
-#: src/libnmc-setting/settings-docs.h.in:425
-#: src/libnmc-setting/settings-docs.h.in:426
+#: src/libnmc-setting/settings-docs.h.in:454
+#: src/libnmc-setting/settings-docs.h.in:455
 #, fuzzy
 msgid ""
 "A list of permanent MAC addresses of Wi-Fi devices to which this connection "
@@ -11550,7 +11673,7 @@ msgstr ""
 "smela veljati.  Vsak naslov MAC mora biti naveden v standardnem zapisu "
 "šestnajstih števk in dvopičja (npr. »00:11:22:33:44:55«)."
 
-#: src/libnmc-setting/settings-docs.h.in:427
+#: src/libnmc-setting/settings-docs.h.in:456
 #, fuzzy
 msgid ""
 "One of \"default\" (0) (never randomize unless the user has set a global "
@@ -11563,7 +11686,7 @@ msgstr ""
 "naključno naključjenje), \"nikoli\" (1) (nikoli ne naključno naključno "
 "namesti naslova MAC) ali \"vedno\" (2) (vedno naključno izberite naslov MAC)."
 
-#: src/libnmc-setting/settings-docs.h.in:428
+#: src/libnmc-setting/settings-docs.h.in:457
 #, fuzzy
 msgid ""
 "Wi-Fi network mode; one of \"infrastructure\", \"mesh\", \"adhoc\" or \"ap"
@@ -11572,7 +11695,7 @@ msgstr ""
 "Način omrežja Wi-Fi; eden od \"infrastrukture\", \"mreže\", \"adhoc\" ali "
 "\"ap\".  Če je prazno, se predpostavlja infrastruktura."
 
-#: src/libnmc-setting/settings-docs.h.in:430
+#: src/libnmc-setting/settings-docs.h.in:459
 #, fuzzy
 msgid ""
 "One of \"disable\" (2) (disable Wi-Fi power saving), \"enable\" (3) (enable "
@@ -11585,13 +11708,13 @@ msgstr ""
 "dotikajte se trenutno konfigurirne nastavitve) ali »privzeto« (0) (uporabite "
 "globalno konfigurirano vrednost). Vse druge vrednosti so pridržane."
 
-#: src/libnmc-setting/settings-docs.h.in:431
-#: src/libnmc-setting/settings-docs.h.in:434
+#: src/libnmc-setting/settings-docs.h.in:460
+#: src/libnmc-setting/settings-docs.h.in:463
 #, fuzzy
 msgid "This property is not implemented and has no effect."
 msgstr "Ta lastnost se ne izvaja in nima učinka."
 
-#: src/libnmc-setting/settings-docs.h.in:432
+#: src/libnmc-setting/settings-docs.h.in:461
 #, fuzzy
 msgid ""
 "A list of BSSIDs (each BSSID formatted as a MAC address like "
@@ -11612,12 +11735,12 @@ msgstr ""
 "vidne BSSID-je in jim interno sledi v datoteki »/var/lib/NetworkManager/seen-"
 "bssids«."
 
-#: src/libnmc-setting/settings-docs.h.in:433
+#: src/libnmc-setting/settings-docs.h.in:462
 #, fuzzy
 msgid "SSID of the Wi-Fi network. Must be specified."
 msgstr "SSID omrežja Wi-Fi. Treba je določiti."
 
-#: src/libnmc-setting/settings-docs.h.in:435
+#: src/libnmc-setting/settings-docs.h.in:464
 #, fuzzy
 msgid ""
 "The NMSettingWirelessWakeOnWLan options to enable. Not all devices support "
@@ -11636,7 +11759,7 @@ msgstr ""
 "nastavitev) in »ignore« (0x8000) (za onemogočanje upravljanja Wake-on-LAN v "
 "NetworkManagerju)."
 
-#: src/libnmc-setting/settings-docs.h.in:436
+#: src/libnmc-setting/settings-docs.h.in:465
 #, fuzzy
 msgid ""
 "When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the "
@@ -11652,7 +11775,7 @@ msgstr ""
 "\" in auth-alg = \"leap\") je treba določiti lastnosti \"leap-username\" in "
 "\"leap-password\"."
 
-#: src/libnmc-setting/settings-docs.h.in:437
+#: src/libnmc-setting/settings-docs.h.in:466
 #, fuzzy
 msgid ""
 "Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the "
@@ -11670,7 +11793,7 @@ msgstr ""
 "nastavljena nobena globalna privzeta nastavitev, bo sistem FILS izbirno "
 "omogočen."
 
-#: src/libnmc-setting/settings-docs.h.in:438
+#: src/libnmc-setting/settings-docs.h.in:467
 #, fuzzy
 msgid ""
 "A list of group/broadcast encryption algorithms which prevents connections "
@@ -11683,7 +11806,7 @@ msgstr ""
 "največjo združljivost pustite to lastnost prazno.  Vsak element seznama je "
 "lahko eden od »wep40«, »wep104«, »tkip« ali »ccmp«."
 
-#: src/libnmc-setting/settings-docs.h.in:439
+#: src/libnmc-setting/settings-docs.h.in:468
 #, fuzzy
 msgid ""
 "Key management used for the connection. One of \"none\" (WEP or no password "
@@ -11700,7 +11823,7 @@ msgstr ""
 "WPA3 enterprise). Ta lastnost mora biti nastavljena za vsako povezavo Wi-Fi, "
 "ki uporablja varnost."
 
-#: src/libnmc-setting/settings-docs.h.in:440
+#: src/libnmc-setting/settings-docs.h.in:469
 #, fuzzy
 msgid ""
 "The login password for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
@@ -11709,13 +11832,13 @@ msgstr ""
 "Geslo za prijavo za podedovane povezave LEAP (tj. key-mgmt = »ieee8021x« in "
 "auth-alg = »leap«)."
 
-#: src/libnmc-setting/settings-docs.h.in:441
+#: src/libnmc-setting/settings-docs.h.in:470
 #, fuzzy
 msgid "Flags indicating how to handle the \"leap-password\" property."
 msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostjo »preskočiti geslo«."
 
-#: src/libnmc-setting/settings-docs.h.in:442
+#: src/libnmc-setting/settings-docs.h.in:471
 #, fuzzy
 msgid ""
 "The login username for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" "
@@ -11724,7 +11847,7 @@ msgstr ""
 "Uporabniško ime za prijavo za podedovane povezave LEAP (tj. key-mgmt = "
 "\"ieee8021x\" in auth-alg = \"leap\")."
 
-#: src/libnmc-setting/settings-docs.h.in:443
+#: src/libnmc-setting/settings-docs.h.in:472
 #, fuzzy
 msgid ""
 "A list of pairwise encryption algorithms which prevents connections to Wi-Fi "
@@ -11737,7 +11860,7 @@ msgstr ""
 "združljivost pustite to lastnost prazno.  Vsak element seznama je lahko eden "
 "od elementov »tkip« ali »ccmp«."
 
-#: src/libnmc-setting/settings-docs.h.in:444
+#: src/libnmc-setting/settings-docs.h.in:473
 #, fuzzy
 msgid ""
 "Indicates whether Protected Management Frames (802.11w) must be enabled for "
@@ -11754,7 +11877,7 @@ msgstr ""
 "ne uspe, če ni podprta).  Če je nastavljena na »privzeto« (0) in ni "
 "nastavljena nobena globalna privzeta nastavitev, bo PMF izbirno omogočen."
 
-#: src/libnmc-setting/settings-docs.h.in:445
+#: src/libnmc-setting/settings-docs.h.in:474
 #, fuzzy
 msgid ""
 "List of strings specifying the allowed WPA protocol versions to use. Each "
@@ -11765,7 +11888,7 @@ msgstr ""
 "uporabiti. Vsak element je lahko en »wpa« (dovoli WPA) ali »rsn« (dovoli "
 "WPA2/RSN).  Če ni navedeno, so dovoljene povezave WPA in RSN."
 
-#: src/libnmc-setting/settings-docs.h.in:446
+#: src/libnmc-setting/settings-docs.h.in:475
 #, fuzzy
 msgid ""
 "Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII "
@@ -11779,12 +11902,12 @@ msgstr ""
 "dejanski ključ, ali ključ v obliki 64 šestnajstiških znakov. Omrežja WPA3-"
 "Personal uporabljajo geslo poljubne dolžine za preverjanje pristnosti SAE."
 
-#: src/libnmc-setting/settings-docs.h.in:447
+#: src/libnmc-setting/settings-docs.h.in:476
 #, fuzzy
 msgid "Flags indicating how to handle the \"psk\" property."
 msgstr "Zastavice, ki označujejo, kako ravnati z lastnostjo »psk«."
 
-#: src/libnmc-setting/settings-docs.h.in:448
+#: src/libnmc-setting/settings-docs.h.in:477
 #, fuzzy
 msgid ""
 "Flags indicating how to handle the \"wep-key0\", \"wep-key1\", \"wep-key2\", "
@@ -11793,7 +11916,7 @@ msgstr ""
 "Zastavice, ki označujejo, kako ravnati z lastnostmi »wep-key0«, »wep-key1«, "
 "»wep-key2« in »wep-key3«."
 
-#: src/libnmc-setting/settings-docs.h.in:449
+#: src/libnmc-setting/settings-docs.h.in:478
 #, fuzzy
 msgid ""
 "Controls the interpretation of WEP keys.  Allowed values are \"key\" (1), in "
@@ -11807,7 +11930,7 @@ msgstr ""
 "geslo ASCII; ali »geslo« (2), v tem primeru je geslo na voljo kot niz in bo "
 "razpršeno z uporabo de facto metode MD5, da se izpelje dejanski ključ WEP."
 
-#: src/libnmc-setting/settings-docs.h.in:450
+#: src/libnmc-setting/settings-docs.h.in:479
 #, fuzzy
 msgid ""
 "Index 0 WEP key.  This is the WEP key used in most networks.  See the \"wep-"
@@ -11816,7 +11939,7 @@ msgstr ""
 "Tipka WEP indeksa 0.  To je ključ WEP, ki se uporablja v večini omrežij.  "
 "Oglejte si lastnost »wep-key-type« za opis interpretacije tega ključa."
 
-#: src/libnmc-setting/settings-docs.h.in:451
+#: src/libnmc-setting/settings-docs.h.in:480
 #, fuzzy
 msgid ""
 "Index 1 WEP key.  This WEP index is not used by most networks.  See the "
@@ -11825,7 +11948,7 @@ msgstr ""
 "Indeks 1 Ključ WEP.  Tega indeksa WEP ne uporablja večina omrežij.  Oglejte "
 "si lastnost »wep-key-type« za opis interpretacije tega ključa."
 
-#: src/libnmc-setting/settings-docs.h.in:452
+#: src/libnmc-setting/settings-docs.h.in:481
 #, fuzzy
 msgid ""
 "Index 2 WEP key.  This WEP index is not used by most networks.  See the "
@@ -11834,7 +11957,7 @@ msgstr ""
 "Indeks 2 Ključ WEP.  Tega indeksa WEP ne uporablja večina omrežij.  Oglejte "
 "si lastnost »wep-key-type« za opis interpretacije tega ključa."
 
-#: src/libnmc-setting/settings-docs.h.in:453
+#: src/libnmc-setting/settings-docs.h.in:482
 #, fuzzy
 msgid ""
 "Index 3 WEP key.  This WEP index is not used by most networks.  See the "
@@ -11843,7 +11966,7 @@ msgstr ""
 "Indeks 3 Ključ WEP.  Tega indeksa WEP ne uporablja večina omrežij.  Oglejte "
 "si lastnost »wep-key-type« za opis interpretacije tega ključa."
 
-#: src/libnmc-setting/settings-docs.h.in:454
+#: src/libnmc-setting/settings-docs.h.in:483
 #, fuzzy
 msgid ""
 "When static WEP is used (ie, key-mgmt = \"none\") and a non-default WEP key "
@@ -11857,7 +11980,7 @@ msgstr ""
 "potrošniške dostopne točke (kot je Linksys WRT54G) oštevilčijo tipke od 1 do "
 "4."
 
-#: src/libnmc-setting/settings-docs.h.in:455
+#: src/libnmc-setting/settings-docs.h.in:484
 #, fuzzy
 msgid ""
 "Flags indicating which mode of WPS is to be used if any. There's little "
@@ -11871,7 +11994,7 @@ msgstr ""
 "ugotovil, ali je mogoče začeti vpis WPS iz zmogljivosti dostopne točke. WPS "
 "lahko onemogočite tako, da to lastnost nastavite na vrednost 1."
 
-#: src/libnmc-setting/settings-docs.h.in:456
+#: src/libnmc-setting/settings-docs.h.in:485
 #, fuzzy
 msgid ""
 "IEEE 802.15.4 channel. A positive integer or -1, meaning \"do not set, use "
@@ -11880,7 +12003,7 @@ msgstr ""
 "Kanal IEEE 802.15.4. Pozitivno celo število ali -1, kar pomeni »ne nastavi, "
 "uporabi tisto, na kar je naprava že nastavljena«."
 
-#: src/libnmc-setting/settings-docs.h.in:457
+#: src/libnmc-setting/settings-docs.h.in:486
 #, fuzzy
 msgid ""
 "If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) "
@@ -11889,7 +12012,7 @@ msgstr ""
 "Če je določeno, bo ta povezava veljala le za napravo MAC plasti IEEE "
 "802.15.4 (WPAN), katere stalni naslov MAC se ujema."
 
-#: src/libnmc-setting/settings-docs.h.in:458
+#: src/libnmc-setting/settings-docs.h.in:487
 #, fuzzy
 msgid ""
 "IEEE 802.15.4 channel page. A positive integer or -1, meaning \"do not set, "
@@ -11898,17 +12021,17 @@ msgstr ""
 "Stran kanala IEEE 802.15.4. Pozitivno celo število ali -1, kar pomeni »ne "
 "nastavi, uporabi tisto, na kar je naprava že nastavljena«."
 
-#: src/libnmc-setting/settings-docs.h.in:459
+#: src/libnmc-setting/settings-docs.h.in:488
 #, fuzzy
 msgid "IEEE 802.15.4 Personal Area Network (PAN) identifier."
 msgstr "IEEE 802.15.4 Identifikator osebnega omrežja (PAN)."
 
-#: src/libnmc-setting/settings-docs.h.in:460
+#: src/libnmc-setting/settings-docs.h.in:489
 #, fuzzy
 msgid "Short IEEE 802.15.4 address to be used within a restricted environment."
 msgstr "Kratek naslov IEEE 802.15.4 za uporabo v omejenem okolju."
 
-#: src/libnmc-setting/settings-docs.h.in:461
+#: src/libnmc-setting/settings-docs.h.in:490
 #, fuzzy
 msgid ""
 "The port priority for bond active port re-selection during failover. A "
@@ -11921,7 +12044,7 @@ msgstr ""
 "najvišjo prednost. Ta možnost je združljiva samo z načini active-backup, "
 "balance-tlb in balance-alb."
 
-#: src/libnmc-setting/settings-docs.h.in:462
+#: src/libnmc-setting/settings-docs.h.in:491
 #, fuzzy
 msgid ""
 "The queue ID of this bond port. The maximum value of queue ID is the number "
@@ -11930,7 +12053,7 @@ msgstr ""
 "ID čakalne vrste teh vrat obveznice. Največja vrednost ID-ja čakalne vrste "
 "je število čakalnih vrst, ki so trenutno aktivne v napravi."
 
-#: src/libnmc-setting/settings-docs.h.in:463
+#: src/libnmc-setting/settings-docs.h.in:492
 #, fuzzy
 msgid ""
 "Whether the system hostname can be determined from DHCP on this connection. "
@@ -11943,7 +12066,7 @@ msgstr ""
 "konfiguracije. Če lastnost nima vrednosti v globalni konfiguraciji, "
 "NetworkManager predpostavi, da je vrednost »true« (1)."
 
-#: src/libnmc-setting/settings-docs.h.in:464
+#: src/libnmc-setting/settings-docs.h.in:493
 #, fuzzy
 msgid ""
 "Whether the system hostname can be determined from reverse DNS lookup of "
@@ -11956,7 +12079,7 @@ msgstr ""
 "iz globalne konfiguracije. Če lastnost nima vrednosti v globalni "
 "konfiguraciji, NetworkManager predpostavi, da je vrednost »true« (1)."
 
-#: src/libnmc-setting/settings-docs.h.in:465
+#: src/libnmc-setting/settings-docs.h.in:494
 #, fuzzy
 msgid ""
 "If set to \"true\" (1), NetworkManager attempts to get the hostname via "
@@ -11975,7 +12098,7 @@ msgstr ""
 "vrednost iz globalne konfiguracije. Če lastnost nima vrednosti v globalni "
 "konfiguraciji, NetworkManager predpostavi, da je vrednost »false« (0)."
 
-#: src/libnmc-setting/settings-docs.h.in:466
+#: src/libnmc-setting/settings-docs.h.in:495
 #, fuzzy
 msgid ""
 "The relative priority of this connection to determine the system hostname. A "
@@ -12000,28 +12123,7 @@ msgstr ""
 "določitev imena gostitelja uporabljene samo povezave z najnižjo prioritetno "
 "vrednostjo."
 
-#: src/libnmc-setting/settings-docs.h.in:467
-#, fuzzy
-msgid "The last byte of supervision address."
-msgstr "Zadnji bajt nadzornega naslova."
-
-#: src/libnmc-setting/settings-docs.h.in:468
-#, fuzzy
-msgid "The port1 interface name of the HSR. This property is mandatory."
-msgstr "Ime vmesnika vrat1 za HSR. Ta nastanitev je obvezna."
-
-#: src/libnmc-setting/settings-docs.h.in:469
-#, fuzzy
-msgid "The port2 interface name of the HSR. This property is mandatory."
-msgstr "Ime vmesnika port2 HSR. Ta nastanitev je obvezna."
-
-#: src/libnmc-setting/settings-docs.h.in:470
-#, fuzzy
-msgid "The protocol used by the interface, whether it is PRP or HSR."
-msgstr ""
-"Protokol, ki ga uporablja vmesnik, ne glede na to, ali gre za PRP ali HSR."
-
-#: src/libnmc-setting/settings-docs.h.in:471
+#: src/libnmc-setting/settings-docs.h.in:496
 #, fuzzy
 msgid ""
 "The maximum size of a packet built by the Generic Receive Offload stack for "
@@ -12032,7 +12134,7 @@ msgstr ""
 "to napravo. Vrednost mora biti med 0 in 4294967295. Če je nastavljena na -1, "
 "se obstoječa vrednost ohrani."
 
-#: src/libnmc-setting/settings-docs.h.in:472
+#: src/libnmc-setting/settings-docs.h.in:497
 #, fuzzy
 msgid ""
 "The maximum segments of a Generic Segment Offload packet the device should "
@@ -12043,7 +12145,7 @@ msgstr ""
 "naprava sprejeti. Vrednost mora biti med 0 in 4294967295. Če je nastavljena "
 "na -1, se obstoječa vrednost ohrani."
 
-#: src/libnmc-setting/settings-docs.h.in:473
+#: src/libnmc-setting/settings-docs.h.in:498
 #, fuzzy
 msgid ""
 "The maximum size of a Generic Segment Offload packet the device should "
@@ -12054,7 +12156,7 @@ msgstr ""
 "sprejeti. Vrednost mora biti med 0 in 4294967295. Če je nastavljena na -1, "
 "se obstoječa vrednost ohrani."
 
-#: src/libnmc-setting/settings-docs.h.in:474
+#: src/libnmc-setting/settings-docs.h.in:499
 #, fuzzy
 msgid ""
 "The size of the transmit queue for the device, in number of packets. The "
@@ -12065,12 +12167,12 @@ msgstr ""
 "biti med 0 in 4294967295. Če je nastavljena na -1, se obstoječa vrednost "
 "ohrani."
 
-#: src/libnmc-setting/settings-docs.h.in:476
+#: src/libnmc-setting/settings-docs.h.in:501
 #, fuzzy
 msgid "A dictionary of key/value pairs with external-ids for OVS."
 msgstr "Slovar parov ključ/vrednost z zunanjimi ID-ji za OVS."
 
-#: src/libnmc-setting/settings-docs.h.in:477
+#: src/libnmc-setting/settings-docs.h.in:502
 #, fuzzy
 msgid ""
 "A dictionary of key/value pairs with other_config settings for OVS. See also "
@@ -12081,7 +12183,7 @@ msgstr ""
 "»other_config« v priročniku »ovs-vswitchd.conf.db« za tipke, ki jih podpira "
 "OVS."
 
-#: src/libnmc-setting/settings-docs.h.in:478
+#: src/libnmc-setting/settings-docs.h.in:503
 #, fuzzy
 msgid ""
 "This property specifies the peer interface name of the veth. This property "
@@ -12095,7 +12197,7 @@ msgstr ""
 #: src/nmtui/nmtui.c:115
 #, fuzzy
 msgid "OK"
-msgstr "V redu"
+msgstr "V REDU"
 
 #: src/libnmt-newt/nmt-newt-utils.c:412 src/libnmt-newt/nmt-newt-utils.c:459
 #, c-format
@@ -12129,7 +12231,7 @@ msgstr "Napaka: ni mogoče ustvariti predmeta NMClient."
 #: src/nm-online/nm-online.c:210
 #, fuzzy, c-format
 msgid "Error: Could not create NMClient object: %s\n"
-msgstr "Napaka: ni mogoče ustvariti predmeta NMClient."
+msgstr "Napaka: ni mogoče ustvariti predmeta NMClient: %s."
 
 #: src/nm-online/nm-online.c:236
 msgid "Don't print anything"
@@ -12237,7 +12339,7 @@ msgstr "nmcli se je uspešno registriral kot tajni agent NetworkManagerja.\n"
 #: src/nmcli/agent.c:143
 #, fuzzy
 msgid "Error: secret agent initialization failed"
-msgstr "Začenjanje modema spodletelo"
+msgstr "Napaka: inicializacija tajnega agenta ni uspela"
 
 #: src/nmcli/agent.c:151
 #, fuzzy
@@ -12250,14 +12352,14 @@ msgid "Error: polkit agent initialization failed: %s"
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
 #: src/nmcli/common.c:362 src/nmcli/common.c:363 src/nmcli/common.c:393
-#: src/nmcli/common.c:394 src/nmcli/connections.c:1768
+#: src/nmcli/common.c:394 src/nmcli/connections.c:1769
 msgid "GROUP"
 msgstr "SKUPINA"
 
 #: src/nmcli/common.c:654
-#, fuzzy, c-format
+#, c-format
 msgid "Error: openconnect failed: %s\n"
-msgstr "Napaka: brisanje povezave ni uspelo: %s"
+msgstr "Napaka: openconnect ni uspel: %s\n"
 
 #: src/nmcli/common.c:719
 #, fuzzy, c-format
@@ -12269,12 +12371,11 @@ msgstr ""
 "vprašati brez možnosti '--ask'.\n"
 
 #: src/nmcli/common.c:1249
-#, fuzzy, c-format
+#, c-format
 msgid "Error: Could not create NMClient object: %s."
-msgstr "Napaka: ni mogoče ustvariti predmeta NMClient."
+msgstr "Napaka: ni mogoče ustvariti predmeta NMClient: %s."
 
 #: src/nmcli/common.c:1381
-#, fuzzy
 msgid "Error: command doesn't support --offline mode."
 msgstr "Napaka: ukaz ne podpira načina --offline."
 
@@ -12289,33 +12390,28 @@ msgstr ""
 "Napaka: argument '%s' ni razumljen. Namesto tega poskusite predati --pomoč."
 
 #: src/nmcli/common.c:1535
-#, fuzzy
 msgid "Error: missing argument. Try passing --help."
-msgstr "Napaka: manjkajoči argument. Poskusite predati --pomoč."
+msgstr "Napaka: manjkajoči argument. Poskusite podati parameter --help."
 
 #: src/nmcli/common.c:1600
-#, fuzzy
 msgid "access denied"
-msgstr "Dostop je zavrnjen."
+msgstr "dostop je zavrnjen"
 
 #: src/nmcli/common.c:1602
-#, fuzzy
 msgid "NetworkManager is not running"
-msgstr "NetworkManager ni zagnan ..."
+msgstr "NetworkManager se ne izvaja"
 
 #: src/nmcli/common.c:1612
 msgid "none"
 msgstr "brez"
 
 #: src/nmcli/common.c:1613
-#, fuzzy
 msgid "portal"
-msgstr "Portal"
+msgstr "portal"
 
 #: src/nmcli/common.c:1614
-#, fuzzy
 msgid "limited"
-msgstr "Omejeno z "
+msgstr "omejeno"
 
 #: src/nmcli/common.c:1615
 msgid "full"
@@ -12323,30 +12419,25 @@ msgstr "polno"
 
 #. define some prompts for connection editor
 #: src/nmcli/connections.c:61
-#, fuzzy
 msgid "Setting name? "
-msgstr "Ime nastavitve"
+msgstr "Ime nastavitve?"
 
 #: src/nmcli/connections.c:62
-#, fuzzy
 msgid "Property name? "
-msgstr "Ime lastnosti"
+msgstr "Ime lastnosti?"
 
 #: src/nmcli/connections.c:63
-#, fuzzy
 msgid "Enter connection type: "
-msgstr "poskus povezave je časovno potekel"
+msgstr "Vnesite vrsto povezave: "
 
 #. define some other prompts
 #: src/nmcli/connections.c:67
-#, fuzzy
 msgid "Connection (name, UUID, or path): "
-msgstr "VPN povezovanje (priprava)"
+msgstr "Povezava (ime, UUID ali pot): "
 
 #: src/nmcli/connections.c:68
-#, fuzzy
 msgid "VPN connection (name, UUID, or path): "
-msgstr "VPN povezovanje (priprava)"
+msgstr "Povezava VPN (ime, UUID ali pot): "
 
 #: src/nmcli/connections.c:69
 #, fuzzy
@@ -12369,7 +12460,7 @@ msgstr "aktivirano"
 #: src/nmcli/connections.c:83
 #, fuzzy
 msgid "deactivated"
-msgstr "Neaktivirano"
+msgstr "Račun je deaktiviran."
 
 #: src/nmcli/connections.c:90
 msgid "VPN connecting (prepare)"
@@ -12434,7 +12525,7 @@ msgid ""
 "\n"
 "  down [id | uuid | path | apath] <ID> ...\n"
 "\n"
-"  add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- "
+"  add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS PORT_OPTIONS IP_OPTIONS [-- "
 "([+|-]<setting>.<property> <value>)+]\n"
 "\n"
 "  modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> "
@@ -12618,12 +12709,12 @@ msgstr ""
 "\n"
 "</ID>"
 
-#: src/nmcli/connections.c:1199
+#: src/nmcli/connections.c:1200
 #, fuzzy
 msgid ""
 "Usage: nmcli connection add { ARGUMENTS | help }\n"
 "\n"
-"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS "
+"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS PORT_OPTIONS IP_OPTIONS "
 "[-- ([+|-]<setting>.<property> <value>)+]\n"
 "\n"
 "  COMMON_OPTIONS:\n"
@@ -12632,8 +12723,9 @@ msgid ""
 "                  [con-name <connection name>]\n"
 "                  [autoconnect yes|no]\n"
 "                  [save yes|no]\n"
-"                  [master <master (ifname, or connection UUID or name)>]\n"
-"                  [slave-type <master connection type>]\n"
+"                  [controller <controller (ifname, or connection UUID or "
+"name)>]\n"
+"                  [port-type <controller connection type>]\n"
 "\n"
 "  TYPE_SPECIFIC_OPTIONS:\n"
 "    ethernet:     [mac <MAC address>]\n"
@@ -12690,12 +12782,14 @@ msgid ""
 "                  [arp-ip-target <num>]\n"
 "                  [lacp-rate slow (0) | fast (1)]\n"
 "\n"
-"    bond-slave:   master <master (ifname, or connection UUID or name)>\n"
+"    bond-slave:   controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [queue-id <0-65535>]\n"
 "\n"
 "    team:         [config <file>|<raw JSON data>]\n"
 "\n"
-"    team-slave:   master <master (ifname, or connection UUID or name)>\n"
+"    team-slave:   controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [config <file>|<raw JSON data>]\n"
 "\n"
 "    bridge:       [stp yes|no]\n"
@@ -12707,7 +12801,8 @@ msgid ""
 "                  [multicast-snooping yes|no]\n"
 "                  [mac <MAC address>]\n"
 "\n"
-"    bridge-slave: master <master (ifname, or connection UUID or name)>\n"
+"    bridge-slave: controller <controller (ifname, or connection UUID or "
+"name)>\n"
 "                  [priority <0-63>]\n"
 "                  [path-cost <1-65535>]\n"
 "                  [hairpin yes|no]\n"
@@ -12765,7 +12860,7 @@ msgid ""
 "    6lowpan:      dev <parent device (connection UUID, ifname, or MAC)>\n"
 "    dummy:\n"
 "\n"
-"  SLAVE_OPTIONS:\n"
+"  PORT_OPTIONS:\n"
 "    bridge:       [priority <0-63>]\n"
 "                  [path-cost <1-65535>]\n"
 "                  [hairpin yes|no]\n"
@@ -12831,7 +12926,7 @@ msgstr ""
 "address> ] [gw4<IPv4 gateway> ] [ip6<IPv6 address> ] [gw6<IPv6 gateway> ]\n"
 "\n"
 
-#: src/nmcli/connections.c:1329
+#: src/nmcli/connections.c:1330
 #, fuzzy
 msgid ""
 "Usage: nmcli connection modify { ARGUMENTS | help }\n"
@@ -12889,7 +12984,7 @@ msgstr ""
 "\n"
 "</setting></value></property></setting></ID>"
 
-#: src/nmcli/connections.c:1357
+#: src/nmcli/connections.c:1358
 #, fuzzy
 msgid ""
 "Usage: nmcli connection clone { ARGUMENTS | help }\n"
@@ -12912,7 +13007,7 @@ msgstr ""
 "\n"
 "</new></ID></new></ID>"
 
-#: src/nmcli/connections.c:1369
+#: src/nmcli/connections.c:1370
 #, fuzzy
 msgid ""
 "Usage: nmcli connection edit { ARGUMENTS | help }\n"
@@ -12940,7 +13035,7 @@ msgstr ""
 "\n"
 "</new></new></ID>"
 
-#: src/nmcli/connections.c:1384
+#: src/nmcli/connections.c:1385
 #, fuzzy
 msgid ""
 "Usage: nmcli connection delete { ARGUMENTS | help }\n"
@@ -12960,7 +13055,7 @@ msgstr ""
 "\n"
 "</ID>"
 
-#: src/nmcli/connections.c:1395
+#: src/nmcli/connections.c:1396
 #, fuzzy
 msgid ""
 "Usage: nmcli connection monitor { ARGUMENTS | help }\n"
@@ -12982,7 +13077,7 @@ msgstr ""
 "\n"
 "</ID>"
 
-#: src/nmcli/connections.c:1407
+#: src/nmcli/connections.c:1408
 #, fuzzy
 msgid ""
 "Usage: nmcli connection reload { help }\n"
@@ -12995,7 +13090,7 @@ msgstr ""
 "Znova naložite vse datoteke za povezavo z diska.\n"
 "\n"
 
-#: src/nmcli/connections.c:1416
+#: src/nmcli/connections.c:1417
 #, fuzzy
 msgid ""
 "Usage: nmcli connection load { ARGUMENTS | help }\n"
@@ -13020,7 +13115,7 @@ msgstr ""
 "\n"
 "</filename></filename>"
 
-#: src/nmcli/connections.c:1429
+#: src/nmcli/connections.c:1430
 #, fuzzy
 msgid ""
 "Usage: nmcli connection import { ARGUMENTS | help }\n"
@@ -13045,7 +13140,7 @@ msgstr ""
 "\n"
 "</file></type>"
 
-#: src/nmcli/connections.c:1443
+#: src/nmcli/connections.c:1444
 #, fuzzy
 msgid ""
 "Usage: nmcli connection export { ARGUMENTS | help }\n"
@@ -13065,7 +13160,7 @@ msgstr ""
 "\n"
 "</output></ID>"
 
-#: src/nmcli/connections.c:1454
+#: src/nmcli/connections.c:1455
 #, fuzzy
 msgid ""
 "Usage: nmcli connection migrate { ARGUMENTS | help }\n"
@@ -13085,80 +13180,80 @@ msgstr ""
 "\n"
 "</ID></plugin>"
 
-#: src/nmcli/connections.c:1537
+#: src/nmcli/connections.c:1538
 #, c-format
 msgid "Error updating secrets for %s: %s\n"
 msgstr "Napaka pri posodabljanju skrivnosti za %s: %s\n"
 
-#: src/nmcli/connections.c:1588
+#: src/nmcli/connections.c:1589
 msgid "Connection profile details"
 msgstr "Podrobnosti profila povezave"
 
-#: src/nmcli/connections.c:1606 src/nmcli/connections.c:1713
+#: src/nmcli/connections.c:1607 src/nmcli/connections.c:1714
 #, fuzzy, c-format
 msgid "Error: 'connection show': %s"
 msgstr "Napaka: 'con list': %s"
 
-#: src/nmcli/connections.c:1695
+#: src/nmcli/connections.c:1696
 msgid "Active connection details"
 msgstr "Podrobnosti o aktivni povezavi"
 
-#: src/nmcli/connections.c:1825 src/nmcli/devices.c:1681
+#: src/nmcli/connections.c:1826 src/nmcli/devices.c:1681
 #: src/nmcli/devices.c:1698 src/nmcli/devices.c:1716 src/nmcli/devices.c:1735
 #: src/nmcli/devices.c:1799 src/nmcli/devices.c:1928
 msgid "NAME"
 msgstr "IME"
 
-#: src/nmcli/connections.c:1925
+#: src/nmcli/connections.c:1941
 #, c-format
 msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s"
 msgstr "neveljavno polje »%s«; Dovoljena polja: %s in %s ali %s.%s"
 
-#: src/nmcli/connections.c:1942 src/nmcli/connections.c:1953
+#: src/nmcli/connections.c:1958 src/nmcli/connections.c:1969
 #, fuzzy, c-format
 msgid "'%s' has to be alone"
-msgstr "polje '%s' mora biti samostojno."
+msgstr "polje »%s« mora biti samostojno."
 
-#: src/nmcli/connections.c:2209
+#: src/nmcli/connections.c:2225
 #, fuzzy, c-format
 msgid "incorrect string '%s' of '--order' option"
 msgstr "napačen niz '%s' možnosti '--order'"
 
-#: src/nmcli/connections.c:2233
+#: src/nmcli/connections.c:2249
 #, fuzzy, c-format
 msgid "incorrect item '%s' in '--order' option"
 msgstr "napačen element '%s' v možnosti '--order'"
 
-#: src/nmcli/connections.c:2278
+#: src/nmcli/connections.c:2294
 msgid "No connection specified"
 msgstr "Ni določene povezave"
 
-#: src/nmcli/connections.c:2291
+#: src/nmcli/connections.c:2307
 #, c-format
 msgid "%s argument is missing"
 msgstr "argument %s manjka"
 
-#: src/nmcli/connections.c:2312
+#: src/nmcli/connections.c:2328
 #, c-format
 msgid "unknown connection '%s'"
 msgstr "neznana povezava »%s«"
 
-#: src/nmcli/connections.c:2341
+#: src/nmcli/connections.c:2357
 msgid "'--order' argument is missing"
 msgstr "Argument »--order« manjka"
 
-#: src/nmcli/connections.c:2405
+#: src/nmcli/connections.c:2421
 msgid "NetworkManager active profiles"
 msgstr "Aktivni profili NetworkManager"
 
-#: src/nmcli/connections.c:2406
+#: src/nmcli/connections.c:2422
 msgid "NetworkManager connection profiles"
 msgstr "Profili povezav NetworkManager"
 
-#: src/nmcli/connections.c:2462 src/nmcli/connections.c:3189
-#: src/nmcli/connections.c:3201 src/nmcli/connections.c:3213
-#: src/nmcli/connections.c:3449 src/nmcli/connections.c:9703
-#: src/nmcli/connections.c:9722 src/nmcli/devices.c:3398
+#: src/nmcli/connections.c:2478 src/nmcli/connections.c:3199
+#: src/nmcli/connections.c:3211 src/nmcli/connections.c:3223
+#: src/nmcli/connections.c:3459 src/nmcli/connections.c:9731
+#: src/nmcli/connections.c:9750 src/nmcli/devices.c:3398
 #: src/nmcli/devices.c:3411 src/nmcli/devices.c:3423 src/nmcli/devices.c:3726
 #: src/nmcli/devices.c:3737 src/nmcli/devices.c:3756 src/nmcli/devices.c:3765
 #: src/nmcli/devices.c:3787 src/nmcli/devices.c:3798 src/nmcli/devices.c:3819
@@ -13170,14 +13265,14 @@ msgstr "Profili povezav NetworkManager"
 msgid "Error: %s argument is missing."
 msgstr "Napaka: manjka argument %s."
 
-#: src/nmcli/connections.c:2497
+#: src/nmcli/connections.c:2513
 #, c-format
 msgid "Error: %s - no such connection profile."
 msgstr "Napaka: %s - ni takšnega profila povezave."
 
-#: src/nmcli/connections.c:2589 src/nmcli/connections.c:3175
-#: src/nmcli/connections.c:3249 src/nmcli/connections.c:9207
-#: src/nmcli/connections.c:9291 src/nmcli/connections.c:9827
+#: src/nmcli/connections.c:2605 src/nmcli/connections.c:3185
+#: src/nmcli/connections.c:3259 src/nmcli/connections.c:9235
+#: src/nmcli/connections.c:9319 src/nmcli/connections.c:9855
 #: src/nmcli/devices.c:2028 src/nmcli/devices.c:2337 src/nmcli/devices.c:2504
 #: src/nmcli/devices.c:2630 src/nmcli/devices.c:2815 src/nmcli/devices.c:3598
 #: src/nmcli/devices.c:4549 src/nmcli/devices.c:5001 src/nmcli/general.c:1076
@@ -13185,82 +13280,82 @@ msgstr "Napaka: %s - ni takšnega profila povezave."
 msgid "Error: %s."
 msgstr "Napaka: %s."
 
-#: src/nmcli/connections.c:2687 src/nmcli/devices.c:4768
+#: src/nmcli/connections.c:2703 src/nmcli/devices.c:4768
 #, c-format
 msgid "no active connection on device '%s'"
 msgstr "ni dejavnih povezav na napravi »%s«"
 
-#: src/nmcli/connections.c:2695
+#: src/nmcli/connections.c:2711
 msgid "no active connection or device"
 msgstr "ni dejavne povezave ali naprave"
 
-#: src/nmcli/connections.c:2718
+#: src/nmcli/connections.c:2734
 #, c-format
 msgid "device '%s' not compatible with connection '%s': "
 msgstr "naprava »%s« ni združljiva s povezavo »%s«"
 
-#: src/nmcli/connections.c:2756
+#: src/nmcli/connections.c:2772
 #, c-format
 msgid "device '%s' not compatible with connection '%s'"
 msgstr "naprava »%s« ni združljiva s povezavo »%s«"
 
-#: src/nmcli/connections.c:2763
+#: src/nmcli/connections.c:2779
 #, c-format
 msgid "device '%s' not found for connection '%s'"
 msgstr "Naprava »%s« ni najdena za povezavo »%s«"
 
-#: src/nmcli/connections.c:2771
+#: src/nmcli/connections.c:2787
 #, c-format
 msgid "no device found for connection '%s'"
 msgstr "ni naprave za povezavo »%s«"
 
-#: src/nmcli/connections.c:2822
+#: src/nmcli/connections.c:2838
 #, c-format
 msgid "Hint: use '%s' to get more details."
 msgstr "Namig: za več podrobnosti uporabite »%s«."
 
-#: src/nmcli/connections.c:2840
+#: src/nmcli/connections.c:2856
 #, fuzzy, c-format
 msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n"
 msgstr "Povezava je uspešno vzpostavljena (dejavna pot vodila D-Bus: %s)\n"
 
-#: src/nmcli/connections.c:2844 src/nmcli/connections.c:2995
-#: src/nmcli/connections.c:7446
+#: src/nmcli/connections.c:2860 src/nmcli/connections.c:3011
+#: src/nmcli/connections.c:7474
 #, c-format
 msgid "Connection successfully activated (D-Bus active path: %s)\n"
 msgstr "Povezava je uspešno vzpostavljena (dejavna pot vodila D-Bus: %s)\n"
 
-#: src/nmcli/connections.c:2851 src/nmcli/connections.c:2974
+#: src/nmcli/connections.c:2867 src/nmcli/connections.c:2990
 #, c-format
 msgid "Error: Connection activation failed: %s"
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
-#: src/nmcli/connections.c:2887
+#: src/nmcli/connections.c:2903
 #, c-format
 msgid "Error: Timeout expired (%d seconds)"
 msgstr "Napaka: časovna omejitev je potekla (%d s)"
 
-#: src/nmcli/connections.c:3069
+#: src/nmcli/connections.c:3085
 #, c-format
 msgid "unknown device '%s'."
 msgstr "neznana naprava »%s«."
 
-#: src/nmcli/connections.c:3077
+#: src/nmcli/connections.c:3093
 #, fuzzy
 msgid "neither a valid connection nor device given"
 msgstr "ni dejavne povezave ali naprave"
 
-#: src/nmcli/connections.c:3092
+#: src/nmcli/connections.c:3108
 #, c-format
 msgid "invalid passwd-file '%s' at line %zd: %s"
 msgstr "neveljavna datoteka passwd-file »%s« v vrstici %zd: %s"
 
-#: src/nmcli/connections.c:3100
+#: src/nmcli/connections.c:3116
 #, c-format
 msgid "invalid passwd-file '%s': %s"
 msgstr "neveljavna datoteka passwd-file »%s«: %s"
 
-#: src/nmcli/connections.c:3223 src/nmcli/connections.c:9731
+#: src/nmcli/connections.c:3233 src/nmcli/connections.c:9759
 #: src/nmcli/devices.c:1985 src/nmcli/devices.c:2034 src/nmcli/devices.c:2510
 #: src/nmcli/devices.c:2703 src/nmcli/devices.c:2770 src/nmcli/devices.c:2970
 #: src/nmcli/devices.c:3458 src/nmcli/devices.c:3835 src/nmcli/devices.c:4446
@@ -13269,140 +13364,142 @@ msgstr "neveljavna datoteka passwd-file »%s«: %s"
 msgid "Error: invalid extra argument '%s'."
 msgstr "Napaka: neveljaven dodatni argument »%s«."
 
-#: src/nmcli/connections.c:3257
+#: src/nmcli/connections.c:3267
 msgid "preparing"
 msgstr "poteka pripravljanje …"
 
-#: src/nmcli/connections.c:3365
+#: src/nmcli/connections.c:3375
 #, c-format
 msgid "Connection '%s' (%s) successfully deleted.\n"
 msgstr "Povezava »%s« (%s) je bila uspešno izbrisana.\n"
 
-#: src/nmcli/connections.c:3381
+#: src/nmcli/connections.c:3391
 #, fuzzy, c-format
 msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n"
 msgstr "Povezava je uspešno vzpostavljena (dejavna pot vodila D-Bus: %s)\n"
 
-#: src/nmcli/connections.c:3430 src/nmcli/connections.c:9387
-#: src/nmcli/connections.c:9424 src/nmcli/connections.c:9613
+#: src/nmcli/connections.c:3440 src/nmcli/connections.c:9415
+#: src/nmcli/connections.c:9452 src/nmcli/connections.c:9641
 msgid "Error: No connection specified."
 msgstr "Napaka: Povezava ni določena."
 
-#: src/nmcli/connections.c:3462
+#: src/nmcli/connections.c:3472
 #, c-format
 msgid "Error: '%s' is not an active connection.\n"
 msgstr "Napaka: »%s« ni aktivna povezava.\n"
 
-#: src/nmcli/connections.c:3463
+#: src/nmcli/connections.c:3473
 msgid "Error: not all active connections found."
 msgstr "Napaka: niso bile najdene vse aktivne povezave."
 
-#: src/nmcli/connections.c:3471
+#: src/nmcli/connections.c:3481
 msgid "Error: no active connection provided."
 msgstr "Napaka: aktivna povezava ni zagotovljena."
 
-#: src/nmcli/connections.c:3503
+#: src/nmcli/connections.c:3513
 #, c-format
 msgid "Connection '%s' deactivation failed: %s\n"
 msgstr "Deaktivacija povezave »%s« ni uspela: %s\n"
 
-#: src/nmcli/connections.c:3984
-#, c-format
-msgid "Warning: master='%s' doesn't refer to any existing profile.\n"
+#: src/nmcli/connections.c:4002
+#, fuzzy, c-format
+#| msgid "Warning: master='%s' doesn't refer to any existing profile.\n"
+msgid "Warning: controller='%s' doesn't refer to any existing profile.\n"
 msgstr "Opozorilo: master='%s' se ne nanaša na noben obstoječi profil.\n"
 
-#: src/nmcli/connections.c:4364
+#: src/nmcli/connections.c:4383
 #, c-format
 msgid "Error: invalid property '%s': %s."
 msgstr "Napaka: neveljavna lastnost »%s«: %s."
 
-#: src/nmcli/connections.c:4382
+#: src/nmcli/connections.c:4401
 #, c-format
 msgid "Error: failed to modify %s.%s: %s."
 msgstr "Napaka: ni uspelo spremeniti %s.%s: %s."
 
-#: src/nmcli/connections.c:4383
+#: src/nmcli/connections.c:4402
 #, c-format
 msgid "Error: failed to remove a value from %s.%s: %s."
 msgstr "Napaka: vrednosti iz %s.%s ni bilo mogoče odstraniti: %s."
 
-#: src/nmcli/connections.c:4463
-#, c-format
-msgid "Error: invalid slave type; %s."
+#: src/nmcli/connections.c:4482
+#, fuzzy, c-format
+#| msgid "Error: invalid slave type; %s."
+msgid "Error: invalid port type; %s."
 msgstr "Napaka: neveljavna vrsta podrejenega; %s."
 
-#: src/nmcli/connections.c:4474
+#: src/nmcli/connections.c:4493
 #, c-format
 msgid "Error: invalid connection type; %s."
 msgstr "Napaka: neveljavna vrsta povezave; %s."
 
-#: src/nmcli/connections.c:4609
+#: src/nmcli/connections.c:4628
 #, c-format
 msgid "Error: bad connection type: %s"
 msgstr "Napaka: slaba vrsta povezave: %s"
 
-#: src/nmcli/connections.c:4685
+#: src/nmcli/connections.c:4704
 #, fuzzy
-msgid "Error: master is required"
+msgid "Error: controller is required"
 msgstr "Napaka: časovna omejitev %d sekund je potekla."
 
-#: src/nmcli/connections.c:4786
+#: src/nmcli/connections.c:4805
 #, fuzzy, c-format
 msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n"
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/nmcli/connections.c:4826
+#: src/nmcli/connections.c:4845
 #, fuzzy, c-format
 msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]."
 msgstr "Napaka: 'bt-type': '%s' ni veljavno; Uporabite [%s, %s, %s (%s), %s]."
 
-#: src/nmcli/connections.c:5180
+#: src/nmcli/connections.c:5199
 #, fuzzy, c-format
 msgid "Error: setting '%s' is mandatory and cannot be removed."
 msgstr "Napaka: naprave '%s' ni mogoče najti"
 
-#: src/nmcli/connections.c:5196
+#: src/nmcli/connections.c:5215
 #, fuzzy, c-format
 msgid "Error: value for '%s' is missing."
 msgstr "Napaka: polja za možnosti '%s' manjkajo."
 
-#: src/nmcli/connections.c:5247
+#: src/nmcli/connections.c:5266
 #, fuzzy
 msgid "Error: <setting>.<property> argument is missing."
 msgstr "Napaka: manjka argument %s."
 
-#: src/nmcli/connections.c:5289
+#: src/nmcli/connections.c:5308
 #, fuzzy
 msgid "Error: missing setting."
 msgstr "Napaka: manjka argument za možnost '%s'."
 
-#: src/nmcli/connections.c:5303
+#: src/nmcli/connections.c:5322
 #, fuzzy, c-format
 msgid "Error: invalid setting argument '%s'."
 msgstr "Napaka: neveljaven 'wwan' parameter: '%s'."
 
-#: src/nmcli/connections.c:5334
+#: src/nmcli/connections.c:5353
 #, fuzzy, c-format
 msgid "Error: invalid or not allowed setting '%s': %s."
 msgstr "Napaka: neveljaven 'wwan' parameter: '%s'."
 
-#: src/nmcli/connections.c:5393 src/nmcli/connections.c:5414
+#: src/nmcli/connections.c:5412 src/nmcli/connections.c:5433
 #, fuzzy, c-format
 msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)."
 msgstr "Napaka: '%s' ni veljaven argument za možnost '%s'."
 
-#: src/nmcli/connections.c:5438
+#: src/nmcli/connections.c:5457
 #, fuzzy, c-format
 msgid "Error: invalid <setting>.<property> '%s'."
 msgstr "Napaka: neveljaven 'wifi' parameter: '%s'."
 
-#: src/nmcli/connections.c:5472 src/nmcli/devices.c:2217
+#: src/nmcli/connections.c:5491 src/nmcli/devices.c:2217
 #, c-format
 msgid "Warning: %s.\n"
 msgstr "Opozorilo: %s.\n"
 
-#: src/nmcli/connections.c:5488
-#, fuzzy, c-format
+#: src/nmcli/connections.c:5507
+#, c-format
 msgid ""
 "Warning: There is another connection with the name '%1$s'. Reference the "
 "connection by its uuid '%2$s'\n"
@@ -13410,13 +13507,19 @@ msgid_plural ""
 "Warning: There are %3$u other connections with the name '%1$s'. Reference "
 "the connection by its uuid '%2$s'\n"
 msgstr[0] ""
-"Opozorilo: Obstaja še ena povezava z imenom \"%1$s\". Povezavo sklicujte na "
-"uuid '%2$s'\n"
+"Opozorilo: obstaja še %3$u drugih povezav z imenom »%1$s«. Na povezavo se "
+"sklicujte z njenim uuid »%2$s«\n"
 msgstr[1] ""
+"Opozorilo: obstaja še %3$u druga povezava z imenom »%1$s«. Na povezavo se "
+"sklicujte z njenim uuid »%2$s«\n"
 msgstr[2] ""
+"Opozorilo: obstajata še %3$u drugi povezavi z imenom »%1$s«. Na povezavo se "
+"sklicujte z njenim uuid »%2$s«\n"
 msgstr[3] ""
+"Opozorilo: obstajajo še %3$u druge povezave z imenom »%1$s«. Na povezavo se "
+"sklicujte z njenim uuid »%2$s«\n"
 
-#: src/nmcli/connections.c:5510 src/nmcli/connections.c:9239
+#: src/nmcli/connections.c:5529 src/nmcli/connections.c:9267
 #, c-format
 msgid "Error: Failed to add '%s' connection: %s"
 msgstr "Napaka: Dodajanje povezave »%s« ni uspelo: %s"
@@ -13430,12 +13533,12 @@ msgstr "Napaka: Dodajanje povezave »%s« ni uspelo: %s"
 #. *
 #. * This is true for many messages that the user might parse. But this one
 #. * seems in particular interesting for a user to parse.
-#: src/nmcli/connections.c:5527
+#: src/nmcli/connections.c:5546
 #, fuzzy, c-format
 msgid "Connection '%s' (%s) successfully added.\n"
 msgstr "Povezava '%s' (%s) je bila uspešno dodana.\n"
 
-#: src/nmcli/connections.c:5676
+#: src/nmcli/connections.c:5695
 #, fuzzy
 msgid ""
 "You can specify this option more than once. Press <Enter> when you're done.\n"
@@ -13444,32 +13547,32 @@ msgstr ""
 "</Enter>"
 
 #. Ask for optional arguments.
-#: src/nmcli/connections.c:5787
-#, fuzzy, c-format
+#: src/nmcli/connections.c:5806
+#, c-format
 msgid "There are %d optional settings for %s.\n"
-msgstr "Napaka: manjka argument za možnost '%s'."
+msgstr "Na voljo je %d izbirnih nastavitev za %s.\n"
 
-#: src/nmcli/connections.c:5789
-#, fuzzy, c-format
+#: src/nmcli/connections.c:5808
+#, c-format
 msgid "Do you want to provide them? %s"
 msgstr "Ali jih želite zagotoviti? %s"
 
-#: src/nmcli/connections.c:5929 src/nmcli/utils.c:280
-#, fuzzy, c-format
+#: src/nmcli/connections.c:5948 src/nmcli/utils.c:280
+#, c-format
 msgid "Error: value for '%s' argument is required."
-msgstr "Napaka: manjka argument '%s'"
+msgstr "Napaka: zahteva se vrednost argumenta »%s«."
 
-#: src/nmcli/connections.c:5936
+#: src/nmcli/connections.c:5955
 #, fuzzy, c-format
 msgid "Error: 'save': %s."
 msgstr "Napaka: 'nm status': %s"
 
-#: src/nmcli/connections.c:6024 src/nmcli/connections.c:6037
-#, fuzzy, c-format
+#: src/nmcli/connections.c:6043 src/nmcli/connections.c:6056
+#, c-format
 msgid "Error: '%s' argument is required."
-msgstr "Napaka: manjka argument '%s'"
+msgstr "Napaka: argument »%s« je obvezen."
 
-#: src/nmcli/connections.c:6994
+#: src/nmcli/connections.c:7022
 #, fuzzy, c-format
 msgid "['%s' setting values]\n"
 msgstr "[Nastavitvene vrednosti '%s']\n"
@@ -13477,7 +13580,7 @@ msgstr "[Nastavitvene vrednosti '%s']\n"
 #. TRANSLATORS: do not translate command names and keywords before ::
 #. *              However, you should translate terms enclosed in <>.
 #.
-#: src/nmcli/connections.c:7105
+#: src/nmcli/connections.c:7133
 #, fuzzy
 msgid ""
 "---[ Main menu ]---\n"
@@ -13513,7 +13616,7 @@ msgstr ""
 "prop></setting></value></prop></setting></prop></prop></setting></prop></"
 "setting>"
 
-#: src/nmcli/connections.c:7133
+#: src/nmcli/connections.c:7161
 #, fuzzy
 msgid ""
 "goto <setting>[.<prop>] | <prop>  :: enter setting/property for editing\n"
@@ -13534,7 +13637,7 @@ msgstr ""
 "          nmcli> goto ipv4.addresses\n"
 "</prop></prop></setting>"
 
-#: src/nmcli/connections.c:7141
+#: src/nmcli/connections.c:7169
 #, fuzzy
 msgid ""
 "remove <setting>[.<prop>]  :: remove setting or reset property value\n"
@@ -13556,7 +13659,7 @@ msgstr ""
 "          nmcli> odstrani eth.mtu\n"
 "</prop></setting>"
 
-#: src/nmcli/connections.c:7148
+#: src/nmcli/connections.c:7176
 #, fuzzy
 msgid ""
 "set [<setting>.<prop> <value>]  :: set property value\n"
@@ -13572,7 +13675,7 @@ msgstr ""
 "Primer: nmcli> nastavi con.id Moja povezava\n"
 "</value></prop></setting>"
 
-#: src/nmcli/connections.c:7153
+#: src/nmcli/connections.c:7181
 #, fuzzy
 msgid ""
 "add [<setting>.<prop> <value>]  :: add property value\n"
@@ -13588,7 +13691,7 @@ msgstr ""
 "Primer: nmcli> dodajte ipv4.addresses 192.168.1.1/24\n"
 "</value></prop></setting>"
 
-#: src/nmcli/connections.c:7158
+#: src/nmcli/connections.c:7186
 #, fuzzy
 msgid ""
 "describe [<setting>.<prop>]  :: describe property\n"
@@ -13602,7 +13705,7 @@ msgstr ""
 "ogledate vse nastavitve in lastnosti NM.\n"
 "</prop></setting>"
 
-#: src/nmcli/connections.c:7163
+#: src/nmcli/connections.c:7191
 #, fuzzy
 msgid ""
 "print [all]  :: print setting or connection values\n"
@@ -13617,7 +13720,7 @@ msgstr ""
 "\n"
 "Primer: nmcli ipv4> natisni vse\n"
 
-#: src/nmcli/connections.c:7169
+#: src/nmcli/connections.c:7197
 #, fuzzy
 msgid ""
 "verify [all | fix]  :: verify setting or connection validity\n"
@@ -13644,7 +13747,7 @@ msgstr ""
 "          nmcli> preveri popravek\n"
 "          Obveznica NMCLI> Preveri\n"
 
-#: src/nmcli/connections.c:7179
+#: src/nmcli/connections.c:7207
 #, fuzzy
 msgid ""
 "save [persistent|temporary]  :: save the connection\n"
@@ -13672,7 +13775,7 @@ msgstr ""
 "Ponovno zagnati. Če želite trajno povezavo v celoti odstraniti, se povezava\n"
 "Profil je treba izbrisati.\n"
 
-#: src/nmcli/connections.c:7190
+#: src/nmcli/connections.c:7218
 #, fuzzy
 msgid ""
 "activate [<ifname>] [/<ap>|<nsp>]  :: activate the connection\n"
@@ -13694,7 +13797,7 @@ msgstr ""
 "določeno)\n"
 "</ifname></nsp></ap></ifname></nsp></ap></ifname>"
 
-#: src/nmcli/connections.c:7198 src/nmcli/connections.c:7357
+#: src/nmcli/connections.c:7226 src/nmcli/connections.c:7385
 #, fuzzy
 msgid ""
 "back  :: go to upper menu level\n"
@@ -13703,14 +13806,14 @@ msgstr ""
 "nazaj :: pojdi na zgornjo raven menija\n"
 "\n"
 
-#: src/nmcli/connections.c:7201
+#: src/nmcli/connections.c:7229
 #, fuzzy
 msgid ""
 "help/? [<command>]  :: help for the nmcli commands\n"
 "\n"
 msgstr "pomoč/? [<command>] :: Pomoč za ukaze NMCLI</command>"
 
-#: src/nmcli/connections.c:7204
+#: src/nmcli/connections.c:7232
 #, fuzzy, c-format
 msgid ""
 "nmcli [<conf-option> <value>]  :: nmcli configuration\n"
@@ -13738,7 +13841,7 @@ msgstr ""
 "          nmcli> nmcli promptna barva 3\n"
 "</0-8></color></value></conf-option>"
 
-#: src/nmcli/connections.c:7226 src/nmcli/connections.c:7363
+#: src/nmcli/connections.c:7254 src/nmcli/connections.c:7391
 #, fuzzy
 msgid ""
 "quit  :: exit nmcli\n"
@@ -13751,8 +13854,8 @@ msgstr ""
 "Ta ukaz zapusti nmcli. Ko povezava, ki jo urejate, ni shranjena, je "
 "uporabnik pozvan, da potrdi dejanje.\n"
 
-#: src/nmcli/connections.c:7231 src/nmcli/connections.c:7368
-#: src/nmcli/connections.c:7760 src/nmcli/connections.c:8802
+#: src/nmcli/connections.c:7259 src/nmcli/connections.c:7396
+#: src/nmcli/connections.c:7788 src/nmcli/connections.c:8830
 #, fuzzy, c-format
 msgid "Unknown command: '%s'\n"
 msgstr ""
@@ -13762,7 +13865,7 @@ msgstr ""
 #. TRANSLATORS: do not translate command names and keywords before ::
 #. *              However, you should translate terms enclosed in <>.
 #.
-#: src/nmcli/connections.c:7296
+#: src/nmcli/connections.c:7324
 #, fuzzy
 msgid ""
 "---[ Property menu ]---\n"
@@ -13789,7 +13892,7 @@ msgstr ""
 "pomoč/?   [<command>] :: natisnite to pomoč ali opis ukaza\n"
 "Quit :: Izhod iz NMCLI</command></index></value></value>"
 
-#: src/nmcli/connections.c:7320
+#: src/nmcli/connections.c:7348
 #, fuzzy
 msgid ""
 "set [<value>]  :: set new value\n"
@@ -13801,7 +13904,7 @@ msgstr ""
 "Ta ukaz nabori za <value> to lastnost\n"
 "</value></value>"
 
-#: src/nmcli/connections.c:7324
+#: src/nmcli/connections.c:7352
 #, fuzzy
 msgid ""
 "add [<value>]  :: append new value to the property\n"
@@ -13817,7 +13920,7 @@ msgstr ""
 "\"set\").\n"
 "</value></value>"
 
-#: src/nmcli/connections.c:7330
+#: src/nmcli/connections.c:7358
 #, fuzzy
 msgid ""
 "change  :: change current value\n"
@@ -13828,7 +13931,7 @@ msgstr ""
 "\n"
 "Prikaže trenutno vrednost in omogoča njeno urejanje.\n"
 
-#: src/nmcli/connections.c:7335
+#: src/nmcli/connections.c:7363
 #, fuzzy
 msgid ""
 "remove [<value>|<index>|<option name>]  :: delete the value\n"
@@ -13861,7 +13964,7 @@ msgstr ""
 "          nmcli ipv4.dns> odstrani 2\n"
 "          nmcli bond.options> odstranite downdelay</index></value>"
 
-#: src/nmcli/connections.c:7346
+#: src/nmcli/connections.c:7374
 #, fuzzy
 msgid ""
 "describe  :: describe property\n"
@@ -13874,7 +13977,7 @@ msgstr ""
 "Prikaže opis nastanitve. Na strani priročnika nm-settings(5) si lahko "
 "ogledate vse nastavitve in lastnosti NM.\n"
 
-#: src/nmcli/connections.c:7351
+#: src/nmcli/connections.c:7379
 #, fuzzy
 msgid ""
 "print [property|setting|connection]  :: print property (setting, connection) "
@@ -13889,30 +13992,30 @@ msgstr ""
 "Prikaže vrednost lastnosti. Če navedete argument, lahko prikažete tudi "
 "vrednosti za celotno nastavitev ali povezavo.\n"
 
-#: src/nmcli/connections.c:7360
+#: src/nmcli/connections.c:7388
 #, fuzzy
 msgid ""
 "help/? [<command>]  :: help for nmcli commands\n"
 "\n"
 msgstr "pomoč/? [<command>] :: Pomoč za ukaze NMCLI</command>"
 
-#: src/nmcli/connections.c:7452
+#: src/nmcli/connections.c:7480
 #, fuzzy
 msgid "Error: Connection activation failed.\n"
-msgstr "Napaka: začenjanje povezave ni uspelo."
+msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
 #. TRANSLATORS: status line in nmcli connection editor
-#: src/nmcli/connections.c:7550
+#: src/nmcli/connections.c:7578
 #, fuzzy, c-format
 msgid "[ Type: %s | Name: %s | UUID: %s | Dirty: %s | Temp: %s ]\n"
 msgstr "[ Vrsta: %s | Ime: %s | UUID: %s | Umazano: %s | Temperatura: %s ]\n"
 
-#: src/nmcli/connections.c:7588
+#: src/nmcli/connections.c:7616
 #, fuzzy, c-format
 msgid "The connection is not saved. Do you really want to quit? %s"
 msgstr "Povezava ni shranjena. Ali res želite odnehati? %s"
 
-#: src/nmcli/connections.c:7632
+#: src/nmcli/connections.c:7660
 #, fuzzy
 msgid ""
 "The connection profile has been removed from another client. You may type "
@@ -13921,60 +14024,60 @@ msgstr ""
 "Profil povezave je bil odstranjen iz drugega odjemalca. V glavni meni lahko "
 "vnesete »shrani«, da ga obnovite.\n"
 
-#: src/nmcli/connections.c:7664 src/nmcli/connections.c:8060
-#: src/nmcli/connections.c:8133
+#: src/nmcli/connections.c:7692 src/nmcli/connections.c:8088
+#: src/nmcli/connections.c:8161
 #, c-format
 msgid "Allowed values for '%s' property: %s\n"
 msgstr "Dovoljene vrednosti za lastnost »%s«: %s\n"
 
-#: src/nmcli/connections.c:7666 src/nmcli/connections.c:8065
-#: src/nmcli/connections.c:8137
+#: src/nmcli/connections.c:7694 src/nmcli/connections.c:8093
+#: src/nmcli/connections.c:8165
 #, c-format
 msgid "Enter '%s' value: "
 msgstr "Vnesite vrednost »%s«: "
 
-#: src/nmcli/connections.c:7679 src/nmcli/connections.c:7698
-#: src/nmcli/connections.c:8073 src/nmcli/connections.c:8148
+#: src/nmcli/connections.c:7707 src/nmcli/connections.c:7726
+#: src/nmcli/connections.c:8101 src/nmcli/connections.c:8176
 #, c-format
 msgid "Error: failed to set '%s' property: %s\n"
 msgstr "Napaka: ni uspelo nastaviti lastnosti »%s«: %s\n"
 
-#: src/nmcli/connections.c:7690
+#: src/nmcli/connections.c:7718
 #, c-format
 msgid "Edit '%s' value: "
 msgstr "Uredite vrednost »%s«: "
 
-#: src/nmcli/connections.c:7713 src/nmcli/settings.c:443
+#: src/nmcli/connections.c:7741 src/nmcli/settings.c:443
 #, c-format
 msgid "Error: %s\n"
 msgstr "Napaka: %s\n"
 
-#: src/nmcli/connections.c:7732
+#: src/nmcli/connections.c:7760
 #, c-format
 msgid "Unknown command argument: '%s'\n"
 msgstr "Neznan argument ukaza: »%s«\n"
 
-#: src/nmcli/connections.c:7827
+#: src/nmcli/connections.c:7855
 #, c-format
 msgid "Available settings: %s\n"
 msgstr "Razpoložljive nastavitve: %s\n"
 
-#: src/nmcli/connections.c:7838
+#: src/nmcli/connections.c:7866
 #, c-format
 msgid "Error: invalid setting name; %s\n"
 msgstr "Napaka: neveljavno ime nastavitve; %s\n"
 
-#: src/nmcli/connections.c:7855
+#: src/nmcli/connections.c:7883
 #, c-format
 msgid "Available properties: %s\n"
 msgstr "Razpoložljive lastnosti: %s\n"
 
-#: src/nmcli/connections.c:7863
+#: src/nmcli/connections.c:7891
 #, c-format
 msgid "Error: property %s\n"
 msgstr "Napaka: lastnost %s\n"
 
-#: src/nmcli/connections.c:7908
+#: src/nmcli/connections.c:7936
 #, fuzzy, c-format
 msgid ""
 "Saving the connection with 'autoconnect=yes'. That might result in an "
@@ -13985,12 +14088,12 @@ msgstr ""
 "aktivacijo povezave.\n"
 "Ali še vedno želite prihraniti? %s"
 
-#: src/nmcli/connections.c:7994
+#: src/nmcli/connections.c:8022
 #, fuzzy, c-format
 msgid "You may edit the following settings: %s\n"
 msgstr "Uredite lahko naslednje nastavitve: %s\n"
 
-#: src/nmcli/connections.c:8022
+#: src/nmcli/connections.c:8050
 #, fuzzy
 msgid ""
 "The connection profile has been removed from another client. You may type "
@@ -13999,451 +14102,451 @@ msgstr ""
 "Profil povezave je bil odstranjen iz drugega odjemalca. Lahko vnesete "
 "»shrani«, da ga obnovite.\n"
 
-#: src/nmcli/connections.c:8079 src/nmcli/connections.c:8365
-#: src/nmcli/connections.c:8400
+#: src/nmcli/connections.c:8107 src/nmcli/connections.c:8393
+#: src/nmcli/connections.c:8428
 #, fuzzy, c-format
 msgid "Error: no setting selected; valid are [%s]\n"
 msgstr "Napaka: brisanje povezave ni uspelo: %s"
 
-#: src/nmcli/connections.c:8081
+#: src/nmcli/connections.c:8109
 #, fuzzy
 msgid "use 'goto <setting>' first, or 'set <setting>.<property>'\n"
 msgstr ""
 "Najprej uporabite \"goto<setting>\" ali \"nastavi<setting><property>\".\n"
 "</property></setting></setting>"
 
-#: src/nmcli/connections.c:8101 src/nmcli/connections.c:8281
-#: src/nmcli/connections.c:8389
+#: src/nmcli/connections.c:8129 src/nmcli/connections.c:8309
+#: src/nmcli/connections.c:8417
 #, fuzzy, c-format
 msgid "Error: invalid setting argument '%s'; valid are [%s]\n"
 msgstr ""
 "Napaka: neveljaven parameter 'sleep': '%s'; uporabite 'true' ali 'false'."
 
-#: src/nmcli/connections.c:8111
+#: src/nmcli/connections.c:8139
 #, fuzzy, c-format
 msgid "Error: missing setting for '%s' property\n"
 msgstr "Napaka: manjka argument za možnost '%s'."
 
-#: src/nmcli/connections.c:8118
+#: src/nmcli/connections.c:8146
 #, c-format
 msgid "Error: invalid property: %s\n"
 msgstr "Napaka: neveljavna lastnost: %s\n"
 
-#: src/nmcli/connections.c:8181
+#: src/nmcli/connections.c:8209
 #, c-format
 msgid "Error: unknown setting '%s'\n"
 msgstr "Napaka: neznana nastavitev »%s«\n"
 
-#: src/nmcli/connections.c:8207
+#: src/nmcli/connections.c:8235
 #, fuzzy, c-format
 msgid "You may edit the following properties: %s\n"
 msgstr "Urejate lahko naslednje lastnosti: %s\n"
 
-#: src/nmcli/connections.c:8253 src/nmcli/connections.c:8315
+#: src/nmcli/connections.c:8281 src/nmcli/connections.c:8343
 #, fuzzy, c-format
 msgid "Error: failed to remove value of '%s': %s\n"
-msgstr "Napaka: vrednosti »%s« ni bilo mogoče odstraniti: %s\n"
+msgstr "Napaka: vrednosti iz %s.%s ni bilo mogoče odstraniti: %s."
 
-#: src/nmcli/connections.c:8259
+#: src/nmcli/connections.c:8287
 #, fuzzy, c-format
 msgid "Error: no argument given; valid are [%s]\n"
 msgstr "Napaka: ni podan argument; veljavni so [%s]\n"
 
-#: src/nmcli/connections.c:8278
+#: src/nmcli/connections.c:8306
 #, fuzzy, c-format
 msgid "Setting '%s' is not present in the connection.\n"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/nmcli/connections.c:8341
+#: src/nmcli/connections.c:8369
 #, fuzzy, c-format
 msgid "Error: %s properties, nor it is a setting name.\n"
 msgstr "Napaka: %s lastnosti, niti ni ime nastavitve.\n"
 
-#: src/nmcli/connections.c:8368 src/nmcli/connections.c:8403
+#: src/nmcli/connections.c:8396 src/nmcli/connections.c:8431
 #, fuzzy
 msgid "use 'goto <setting>' first, or 'describe <setting>.<property>'\n"
 msgstr ""
 "najprej uporabite 'goto <setting>' ali 'opišite <setting>'.<property>\n"
 "</property></setting></setting>"
 
-#: src/nmcli/connections.c:8426
+#: src/nmcli/connections.c:8454
 #, fuzzy, c-format
 msgid "Error: invalid property: %s, neither a valid setting name.\n"
 msgstr "Napaka: neveljavna lastnost: %s, niti veljavno ime nastavitve.\n"
 
-#: src/nmcli/connections.c:8456
+#: src/nmcli/connections.c:8484
 #, fuzzy, c-format
 msgid "Error: unknown setting: '%s'\n"
-msgstr "Napaka: neznana povezava: %s."
+msgstr "Napaka: neznana nastavitev »%s«\n"
 
-#: src/nmcli/connections.c:8461
+#: src/nmcli/connections.c:8489
 #, fuzzy, c-format
 msgid "Error: '%s' setting not present in the connection\n"
 msgstr "Napaka: '%s' ni dejavna povezava."
 
-#: src/nmcli/connections.c:8493
+#: src/nmcli/connections.c:8521
 #, fuzzy, c-format
 msgid "Error: invalid property: %s%s\n"
-msgstr "Napaka: neveljaven 'wifi' parameter: '%s'."
+msgstr "Napaka: neveljavna lastnost »%s«: %s."
 
-#: src/nmcli/connections.c:8495
+#: src/nmcli/connections.c:8523
 #, fuzzy
 msgid ", neither a valid setting name"
 msgstr ", niti veljavno ime nastavitve"
 
-#: src/nmcli/connections.c:8511
+#: src/nmcli/connections.c:8539
 #, fuzzy, c-format
 msgid "Invalid verify option: %s\n"
 msgstr "Možnost preverjanja neveljavnosti: %s\n"
 
-#: src/nmcli/connections.c:8519
+#: src/nmcli/connections.c:8547
 #, c-format
 msgid "Verify setting '%s': %s\n"
 msgstr "Preveri nastavitev »%s«: %s\n"
 
-#: src/nmcli/connections.c:8534
+#: src/nmcli/connections.c:8562
 #, fuzzy, c-format
 msgid "Verify connection: %s\n"
 msgstr "Povezava VPN %d"
 
-#: src/nmcli/connections.c:8536
+#: src/nmcli/connections.c:8564
 #, fuzzy
 msgid "The error cannot be fixed automatically.\n"
 msgstr "Napake ni mogoče odpraviti samodejno.\n"
 
-#: src/nmcli/connections.c:8556
+#: src/nmcli/connections.c:8584
 #, fuzzy, c-format
 msgid "Error: invalid argument '%s'\n"
 msgstr "Napaka: neveljaven 'wifi' parameter: '%s'."
 
-#: src/nmcli/connections.c:8613
+#: src/nmcli/connections.c:8641
 #, fuzzy, c-format
 msgid "Error: Failed to save '%s' (%s) connection: %s\n"
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:8619
+#: src/nmcli/connections.c:8647
 #, fuzzy, c-format
 msgid "Error: Timeout saving '%s' (%s) connection\n"
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:8623
+#: src/nmcli/connections.c:8651
 #, fuzzy, c-format
 msgid "Connection '%s' (%s) successfully saved.\n"
 msgstr "Povezava »%s« (%s) je bila uspešno shranjena.\n"
 
-#: src/nmcli/connections.c:8624
+#: src/nmcli/connections.c:8652
 #, fuzzy, c-format
 msgid "Connection '%s' (%s) successfully updated.\n"
 msgstr "Povezava »%s« (%s) je bila uspešno posodobljena.\n"
 
-#: src/nmcli/connections.c:8658
+#: src/nmcli/connections.c:8686
 #, fuzzy, c-format
 msgid "Error: connection verification failed: %s\n"
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
-#: src/nmcli/connections.c:8659
+#: src/nmcli/connections.c:8687
 msgid "(unknown error)"
 msgstr "(neznana napaka)"
 
-#: src/nmcli/connections.c:8660
+#: src/nmcli/connections.c:8688
 #, fuzzy
 msgid "You may try running 'verify fix' to fix errors.\n"
 msgstr "Morda poskusite zagnati »preverjanje popravka«, da popravite napake.\n"
 
 #. TRANSLATORS: do not translate 'save', leave it as it is
-#: src/nmcli/connections.c:8683
+#: src/nmcli/connections.c:8711
 #, fuzzy
 msgid "Error: connection is not saved. Type 'save' first.\n"
 msgstr "Napaka: povezava ni shranjena. Najprej vnesite »shrani«.\n"
 
-#: src/nmcli/connections.c:8687
+#: src/nmcli/connections.c:8715
 #, fuzzy, c-format
 msgid "Error: connection is not valid: %s\n"
 msgstr "Napaka: brisanje povezave ni uspelo: %s"
 
-#: src/nmcli/connections.c:8703
+#: src/nmcli/connections.c:8731
 #, fuzzy, c-format
 msgid "Error: Cannot activate connection: %s.\n"
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:8712
+#: src/nmcli/connections.c:8740
 #, fuzzy, c-format
 msgid "Error: Failed to activate '%s' (%s) connection: %s\n"
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:8719
+#: src/nmcli/connections.c:8747
 #, fuzzy
 msgid "Monitoring connection activation (press any key to continue)\n"
 msgstr ""
 "Spremljanje aktiviranja povezave (za nadaljevanje pritisnite poljubno "
 "tipko)\n"
 
-#: src/nmcli/connections.c:8754
+#: src/nmcli/connections.c:8782
 #, fuzzy, c-format
 msgid "Error: status-line: %s\n"
 msgstr "Napaka: 'nm status': %s"
 
-#: src/nmcli/connections.c:8762
+#: src/nmcli/connections.c:8790
 #, fuzzy, c-format
 msgid "Error: save-confirmation: %s\n"
 msgstr "Napaka: 'con list': %s"
 
-#: src/nmcli/connections.c:8770
+#: src/nmcli/connections.c:8798
 #, fuzzy, c-format
 msgid "Error: show-secrets: %s\n"
 msgstr "Napaka: 'con status': %s"
 
-#: src/nmcli/connections.c:8778
+#: src/nmcli/connections.c:8806
 #, fuzzy
 msgid "Current nmcli configuration:\n"
 msgstr "Trenutna konfiguracija nmkli:\n"
 
-#: src/nmcli/connections.c:8786
+#: src/nmcli/connections.c:8814
 #, fuzzy, c-format
 msgid "Invalid configuration option '%s'; allowed [%s]\n"
 msgstr "Neveljavna možnost konfiguracije '%s'; dovoljeno [%s]\n"
 
-#: src/nmcli/connections.c:9018
+#: src/nmcli/connections.c:9046
 #, fuzzy
 msgid "Error: only one of 'id', 'filename', uuid, or 'path' can be provided."
 msgstr ""
 "Napaka: lahko navedete samo enega od »id«, »ime datoteke«, uuid ali »pot«."
 
-#: src/nmcli/connections.c:9033
+#: src/nmcli/connections.c:9061
 #, fuzzy, c-format
 msgid "Error: Unknown connection '%s'."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9050
+#: src/nmcli/connections.c:9078
 #, fuzzy, c-format
 msgid "Warning: editing existing connection '%s'; 'type' argument is ignored\n"
 msgstr ""
 "Opozorilo: urejanje obstoječe povezave '%s'; Argument »type« se prezre\n"
 
-#: src/nmcli/connections.c:9054
+#: src/nmcli/connections.c:9082
 #, fuzzy, c-format
 msgid ""
 "Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"
 msgstr ""
 "Opozorilo: urejanje obstoječe povezave '%s'; Argument 'con-name' je prezrt\n"
 
-#: src/nmcli/connections.c:9081
+#: src/nmcli/connections.c:9109
 #, fuzzy, c-format
 msgid "Valid connection types: %s\n"
 msgstr "Žična povezava %d"
 
-#: src/nmcli/connections.c:9083
+#: src/nmcli/connections.c:9111
 #, fuzzy, c-format
 msgid "Error: invalid connection type; %s\n"
-msgstr "Napaka: neznana povezava: %s."
+msgstr "Napaka: neveljavna vrsta povezave; %s."
 
-#: src/nmcli/connections.c:9122
+#: src/nmcli/connections.c:9150
 #, fuzzy
 msgid "===| nmcli interactive connection editor |==="
 msgstr "ni dejavne povezave ali naprave"
 
-#: src/nmcli/connections.c:9125
+#: src/nmcli/connections.c:9153
 #, fuzzy, c-format
 msgid "Editing existing '%s' connection: '%s'"
 msgstr "ni naprave za povezavo '%s'"
 
-#: src/nmcli/connections.c:9127
+#: src/nmcli/connections.c:9155
 #, fuzzy, c-format
 msgid "Adding a new '%s' connection"
 msgstr "Dejavne povezave"
 
 #. TRANSLATORS: do not translate 'help', leave it as it is
-#: src/nmcli/connections.c:9130
+#: src/nmcli/connections.c:9158
 #, fuzzy
 msgid "Type 'help' or '?' for available commands."
 msgstr "Vnesite »pomoč« ali »?« za razpoložljive ukaze."
 
 #. TRANSLATORS: do not translate 'print', leave it as it is
-#: src/nmcli/connections.c:9133
+#: src/nmcli/connections.c:9161
 #, fuzzy
 msgid "Type 'print' to show all the connection properties."
 msgstr "Vnesite »print«, da prikažete vse lastnosti povezave."
 
 #. TRANSLATORS: do not translate 'describe', leave it as it is
-#: src/nmcli/connections.c:9136
+#: src/nmcli/connections.c:9164
 #, fuzzy
 msgid "Type 'describe [<setting>.<prop>]' for detailed property description."
 msgstr ""
 "Za <setting><prop>podroben opis znamke</prop></setting> vnesite »opiši [.]«."
 
-#: src/nmcli/connections.c:9163
+#: src/nmcli/connections.c:9191
 #, fuzzy, c-format
 msgid "Error: Failed to modify connection '%s': %s"
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:9171
+#: src/nmcli/connections.c:9199
 #, fuzzy, c-format
 msgid "Connection '%s' (%s) successfully modified.\n"
 msgstr "Povezava '%s' (%s) je bila uspešno spremenjena.\n"
 
-#: src/nmcli/connections.c:9244
+#: src/nmcli/connections.c:9272
 #, fuzzy, c-format
 msgid "%s (%s) cloned as %s (%s).\n"
 msgstr "%s (%s) klonirana kot %s (%s).\n"
 
-#: src/nmcli/connections.c:9302
+#: src/nmcli/connections.c:9330
 #, fuzzy
 msgid "New connection name: "
 msgstr "Povezava z VPN je spodletela"
 
-#: src/nmcli/connections.c:9304
+#: src/nmcli/connections.c:9332
 #, fuzzy
 msgid "Error: <new name> argument is missing."
 msgstr "Napaka: manjka argument %s."
 
-#: src/nmcli/connections.c:9310 src/nmcli/connections.c:9838
+#: src/nmcli/connections.c:9338 src/nmcli/connections.c:9866
 #, fuzzy, c-format
 msgid "Error: unknown extra argument: '%s'."
 msgstr "Napaka: neznan parameter: %s"
 
-#: src/nmcli/connections.c:9344
+#: src/nmcli/connections.c:9372
 #, fuzzy
 msgid "Error: not all connections deleted."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9345
+#: src/nmcli/connections.c:9373
 #, fuzzy, c-format
 msgid "Error: Connection deletion failed: %s\n"
 msgstr "Napaka: brisanje povezave ni uspelo: %s"
 
-#: src/nmcli/connections.c:9400 src/nmcli/connections.c:9529
-#: src/nmcli/connections.c:9991
+#: src/nmcli/connections.c:9428 src/nmcli/connections.c:9557
+#: src/nmcli/connections.c:10019
 #, fuzzy, c-format
 msgid "Error: %s.\n"
-msgstr "Napaka: %s\n"
+msgstr "Napaka: %s."
 
-#: src/nmcli/connections.c:9401 src/nmcli/connections.c:9530
-#: src/nmcli/connections.c:9992
+#: src/nmcli/connections.c:9429 src/nmcli/connections.c:9558
+#: src/nmcli/connections.c:10020
 #, fuzzy
 msgid "Error: not all connections found."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9462
+#: src/nmcli/connections.c:9490
 #, fuzzy, c-format
 msgid "Error: cannot delete unknown connection(s): %s."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9470
+#: src/nmcli/connections.c:9498
 #, fuzzy, c-format
 msgid "%s: connection profile changed\n"
 msgstr "povezava je spodletela"
 
-#: src/nmcli/connections.c:9496
+#: src/nmcli/connections.c:9524
 #, fuzzy, c-format
 msgid "%s: connection profile created\n"
 msgstr "povezava je spodletela"
 
-#: src/nmcli/connections.c:9505
+#: src/nmcli/connections.c:9533
 #, fuzzy, c-format
 msgid "%s: connection profile removed\n"
 msgstr "povezava je odstranjena"
 
-#: src/nmcli/connections.c:9573
+#: src/nmcli/connections.c:9601
 #, fuzzy, c-format
 msgid "Error: failed to reload connections: %s."
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:9645
+#: src/nmcli/connections.c:9673
 #, fuzzy, c-format
 msgid "Error: failed to load connection: %s."
 msgstr ""
 "Napaka: dodajanje ali vzpostavljanje nove povezave je spodletelo: (%d) %s."
 
-#: src/nmcli/connections.c:9653
+#: src/nmcli/connections.c:9681
 #, fuzzy, c-format
 msgid "Could not load file '%s'\n"
 msgstr "Ni mogoče naložiti datoteke '%s'"
 
-#: src/nmcli/connections.c:9657
+#: src/nmcli/connections.c:9685
 #, fuzzy
 msgid "File to import: "
-msgstr "Izberi datoteko za uvoz"
+msgstr "Izbor datoteke za uvoz"
 
-#: src/nmcli/connections.c:9688
+#: src/nmcli/connections.c:9716
 #, fuzzy
 msgid "Error: No arguments provided."
 msgstr "Napaka: manjka argument %s."
 
-#: src/nmcli/connections.c:9743
+#: src/nmcli/connections.c:9771
 #, fuzzy
 msgid "Error: 'type' argument is required."
 msgstr "Napaka: manjka argument '%s'"
 
-#: src/nmcli/connections.c:9748
+#: src/nmcli/connections.c:9776
 #, fuzzy
 msgid "Error: 'file' argument is required."
 msgstr "Napaka: manjka argument '%s'"
 
-#: src/nmcli/connections.c:9758
+#: src/nmcli/connections.c:9786
 #, fuzzy, c-format
 msgid "Error: failed to find VPN plugin for %s."
 msgstr "Napaka: 'dev list': %s"
 
-#: src/nmcli/connections.c:9767 src/nmcli/connections.c:9859
+#: src/nmcli/connections.c:9795 src/nmcli/connections.c:9887
 #, fuzzy, c-format
 msgid "Error: failed to load VPN plugin: %s."
 msgstr "Napaka: vtičnik VPN ni uspel naložiti: %s."
 
-#: src/nmcli/connections.c:9778
+#: src/nmcli/connections.c:9806
 #, fuzzy, c-format
 msgid "Error: failed to import '%s': %s."
 msgstr "Napaka: neveljaven parameter 'wimax': '%s'."
 
-#: src/nmcli/connections.c:9844
+#: src/nmcli/connections.c:9872
 msgid "Output file name: "
 msgstr "Ime izhodne datoteke: "
 
-#: src/nmcli/connections.c:9849
+#: src/nmcli/connections.c:9877
 #, fuzzy
 msgid "Error: the connection is not VPN."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9873
+#: src/nmcli/connections.c:9901
 #, fuzzy, c-format
 msgid "Error: failed to create temporary file %s."
 msgstr "Napaka: ni uspelo ustvariti začasne %s datoteke."
 
-#: src/nmcli/connections.c:9883
+#: src/nmcli/connections.c:9911
 #, fuzzy, c-format
 msgid "Error: failed to export '%s': %s."
 msgstr "Napaka: 'dev status': %s"
 
-#: src/nmcli/connections.c:9897
+#: src/nmcli/connections.c:9925
 #, fuzzy, c-format
 msgid "Error: failed to read temporary file '%s': %s."
 msgstr "Napaka: ni bilo mogoče prebrati začasne datoteke '%s': %s."
 
-#: src/nmcli/connections.c:9921
+#: src/nmcli/connections.c:9949
 #, fuzzy
 msgid "Error: not all connections migrated."
 msgstr "Napaka: neznana povezava: %s."
 
-#: src/nmcli/connections.c:9922
+#: src/nmcli/connections.c:9950
 #, fuzzy, c-format
 msgid "Error: Connection migration failed: %s\n"
 msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 
-#: src/nmcli/connections.c:9926
+#: src/nmcli/connections.c:9954
 #, fuzzy, c-format
 msgid "Connection '%s' (%s) successfully migrated.\n"
 msgstr "Obvestilo: povezava naprave '%s' je uspešno prekinjena."
 
-#: src/nmcli/connections.c:9958
+#: src/nmcli/connections.c:9986
 #, fuzzy
 msgid "'--plugin' argument is missing"
 msgstr "Napaka: manjka argument '%s'"
 
-#: src/nmcli/connections.c:10054
+#: src/nmcli/connections.c:10082
 #, fuzzy, c-format
 msgid "Error: cannot migrate unknown connection(s): %s."
 msgstr "Napaka: neznana povezava: %s."
@@ -14469,7 +14572,7 @@ msgstr "<invisible> | %s</invisible>"
 #: src/nmcli/devices.c:375
 #, fuzzy
 msgid "<invisible>"
-msgstr "nevidno"
+msgstr "Nevidne plasti"
 
 #: src/nmcli/devices.c:482
 #, c-format
@@ -14962,7 +15065,7 @@ msgstr "Opozorilo: argument »%s« je podvojen.\n"
 #: src/nmcli/devices.c:1195
 #, fuzzy, c-format
 msgid "Error: Device '%s' not found.\n"
-msgstr "Napaka: naprave '%s' ni mogoče najti"
+msgstr "Napaka: naprave »%s« ni mogoče najti"
 
 #: src/nmcli/devices.c:1196 src/nmcli/devices.c:5239
 #, fuzzy
@@ -14977,7 +15080,7 @@ msgstr "Vmesnik ni določen"
 #: src/nmcli/devices.c:1246
 #, fuzzy, c-format
 msgid "Device '%s' not found"
-msgstr "Naprave »%s« ni mogoče najti"
+msgstr "Naprava »%s« ni najdena za povezavo »%s«"
 
 #: src/nmcli/devices.c:1362 src/nmcli/devices.c:1364
 #, c-format
@@ -15366,7 +15469,7 @@ msgstr "Napaka: začenjanje povezave ni uspelo: %s."
 msgid "Error: %s"
 msgstr "Napaka: %s"
 
-#: src/nmcli/devices.c:5220 src/nmcli/nmcli.c:888
+#: src/nmcli/devices.c:5220 src/nmcli/nmcli.c:890
 #, fuzzy, c-format
 msgid "Error: '%s' is not a valid timeout."
 msgstr "Napaka: »%s« ni veljavna časovna omejitev."
@@ -15407,7 +15510,7 @@ msgstr "v teku"
 #: src/nmcli/general.c:138
 #, fuzzy
 msgid "starting"
-msgstr "Začenjanje …"
+msgstr "Začenjanje"
 
 #: src/nmcli/general.c:138
 #, fuzzy
@@ -15417,7 +15520,7 @@ msgstr "Začeto"
 #: src/nmcli/general.c:151 src/nmcli/general.c:162
 #, fuzzy
 msgid "missing"
-msgstr "MANJKAJOČE: "
+msgstr "Manjkajoče"
 
 #: src/nmcli/general.c:187
 msgid "enabled"
@@ -15854,7 +15957,7 @@ msgstr "Napaka: ukaz 'con' '%s' ni veljaven."
 #: src/nmcli/general.c:1096
 #, fuzzy
 msgid "Networking"
-msgstr "Nastavitev omrežja v Plasma 5"
+msgstr "Omogoči ali onemogoči sistemske omrežne povezave"
 
 #. no argument, show all radio switches
 #: src/nmcli/general.c:1124
@@ -15882,7 +15985,9 @@ msgstr "Radijske stikalo WWAN"
 #: src/nmcli/general.c:1244
 #, fuzzy
 msgid "NetworkManager is running"
-msgstr "Program NetworkManager ni zagnan"
+msgstr ""
+"Prišlo je do napake, zato brezžičnega omrežja ni mogoče uporabljati.\n"
+"Podrobnosti o napaki: program NetworkManager ni zagnan."
 
 #: src/nmcli/general.c:1244
 #, fuzzy
@@ -15975,12 +16080,13 @@ msgstr "vrata"
 #: src/nmcli/general.c:1408
 #, fuzzy
 msgid "mtu"
-msgstr "MTU"
+msgstr "_MTU"
 
 #: src/nmcli/general.c:1429
 #, fuzzy
-msgid "master"
-msgstr "Glavni"
+#| msgid "Controller"
+msgid "controller"
+msgstr "Brez krmilnika"
 
 #: src/nmcli/general.c:1433 src/nmtui/nm-editor-utils.c:255
 #: src/nmtui/nmt-connect-connection-list.c:393
@@ -15998,9 +16104,9 @@ msgid "ip6 default"
 msgstr "IP6 privzeto"
 
 #: src/nmcli/general.c:1520
-#, fuzzy, c-format
+#, c-format
 msgid "%s VPN connection"
-msgstr "%s povezava VPN"
+msgstr "Povezava VPN %s"
 
 #: src/nmcli/general.c:1541
 #, fuzzy, c-format
@@ -16009,10 +16115,10 @@ msgid "%s: %s to %s"
 msgstr "%s (vključuje %s, %s, %s, %s in %s)"
 
 #: src/nmcli/general.c:1550
-#, fuzzy, c-format
+#, c-format
 msgctxt "nmcli-overview"
 msgid "%s: %s"
-msgstr "Stik: %s %s %s %s"
+msgstr "%s: %s"
 
 #: src/nmcli/general.c:1601
 #, fuzzy
@@ -16036,7 +16142,7 @@ msgstr ""
 msgid "Error: 'monitor' command '%s' is not valid."
 msgstr "Napaka: ukaz 'con' '%s' ni veljaven."
 
-#: src/nmcli/nmcli.c:244
+#: src/nmcli/nmcli.c:246
 #, fuzzy
 msgid ""
 "Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }\n"
@@ -16097,73 +16203,73 @@ msgstr ""
 "\n"
 "</seconds></field,...></field,...>"
 
-#: src/nmcli/nmcli.c:316
+#: src/nmcli/nmcli.c:318
 #, c-format
 msgid "Error: missing argument for '%s' option."
 msgstr "Napaka: manjka argument za možnost »%s«."
 
-#: src/nmcli/nmcli.c:633
+#: src/nmcli/nmcli.c:635
 #, fuzzy, c-format
 msgid "Unexpected end of file following '%s'\n"
 msgstr "Nepričakovan konec datoteke po »%s«\n"
 
-#: src/nmcli/nmcli.c:640
+#: src/nmcli/nmcli.c:642
 #, fuzzy, c-format
 msgid "Expected whitespace following '%s'\n"
 msgstr "Pričakovani presledki po »%s«\n"
 
-#: src/nmcli/nmcli.c:651
+#: src/nmcli/nmcli.c:653
 #, fuzzy, c-format
 msgid "Expected a value for '%s'\n"
 msgstr "Pričakovana je vrednost GdaBinary, pridobljena pa %s"
 
-#: src/nmcli/nmcli.c:667
+#: src/nmcli/nmcli.c:669
 #, fuzzy, c-format
 msgid "Expected a line break following '%s'\n"
 msgstr "Pričakovali so prelom vrstice po pesmi »%s«\n"
 
-#: src/nmcli/nmcli.c:795
+#: src/nmcli/nmcli.c:797
 msgid "Error: Option '--terse' is specified the second time."
 msgstr "Napaka: možnost »--terse« je podana dvakrat."
 
-#: src/nmcli/nmcli.c:801
+#: src/nmcli/nmcli.c:803
 msgid "Error: Option '--terse' is mutually exclusive with '--pretty'."
 msgstr "Napaka: možnosti »--terse« in »--pretty« se med seboj izključujeta."
 
-#: src/nmcli/nmcli.c:809
+#: src/nmcli/nmcli.c:811
 msgid "Error: Option '--pretty' is specified the second time."
 msgstr "Napaka: možnost »--pretty« je podana dvakrat."
 
-#: src/nmcli/nmcli.c:815
+#: src/nmcli/nmcli.c:817
 msgid "Error: Option '--pretty' is mutually exclusive with '--terse'."
 msgstr "Napaka: možnosti »--pretty« in »--tearse« se med seboj izključujeta."
 
-#: src/nmcli/nmcli.c:830
+#: src/nmcli/nmcli.c:832
 #, fuzzy, c-format
 msgid "Error: '%s' is not a valid argument for '%s' option."
 msgstr "Napaka: »%s« ni veljaven argument za možnost »%s«."
 
-#: src/nmcli/nmcli.c:847 src/nmcli/nmcli.c:862
+#: src/nmcli/nmcli.c:849 src/nmcli/nmcli.c:864
 #, c-format
 msgid "Error: '%s' is not valid argument for '%s' option."
 msgstr "Napaka: »%s« ni veljaven argument za možnost »%s«."
 
-#: src/nmcli/nmcli.c:895
+#: src/nmcli/nmcli.c:897
 #, c-format
 msgid "nmcli tool, version %s\n"
 msgstr "orodje nmcli, različica %s\n"
 
-#: src/nmcli/nmcli.c:904
+#: src/nmcli/nmcli.c:906
 #, c-format
 msgid "Error: Option '%s' is unknown, try 'nmcli -help'."
 msgstr "Napaka: možnost »%s« ni prepoznana, poskusite »nmcli -help«."
 
-#: src/nmcli/nmcli.c:962 src/nmcli/nmcli.c:971
+#: src/nmcli/nmcli.c:964 src/nmcli/nmcli.c:973
 #, fuzzy, c-format
 msgid "Error: nmcli terminated by signal %s (%d)"
 msgstr "Napaka: nmcli se konča s signalom %s (%d)"
 
-#: src/nmcli/nmcli.c:1038
+#: src/nmcli/nmcli.c:1040
 msgid "Success"
 msgstr "Uspešno zaključeno"
 
@@ -16229,24 +16335,26 @@ msgstr "Opozorilo: %s\n"
 #: src/nmcli/settings.c:440
 #, fuzzy, c-format
 msgid "Info: %s\n"
-msgstr "Podatki o vstavku %s že naloženi"
+msgstr ""
+"PODATKI:\n"
+"%s\n"
 
-#: src/nmcli/settings.c:549
+#: src/nmcli/settings.c:551
 #, fuzzy
 msgid "don't know how to get the property value"
 msgstr "Ne vem, kako dobiti vrednost nepremičnine"
 
-#: src/nmcli/settings.c:642
+#: src/nmcli/settings.c:647
 #, fuzzy
 msgid "the property can't be changed"
 msgstr "Nepremičnine ni mogoče spremeniti"
 
-#: src/nmcli/settings.c:720
+#: src/nmcli/settings.c:733
 #, fuzzy
 msgid "[NM property description]"
 msgstr "[Opis namestitve NM]"
 
-#: src/nmcli/settings.c:730
+#: src/nmcli/settings.c:743
 #, fuzzy
 msgid "[nmcli specific description]"
 msgstr "[Specifični opis NMCLI]"
@@ -16277,22 +16385,22 @@ msgstr "Napaka: 'dev wifi': %s; dovoljena polja: %s"
 msgid "failure to select field"
 msgstr "Izbor določenega APN je spodletel"
 
-#: src/nmcli/utils.c:1461
+#: src/nmcli/utils.c:1472
 #, fuzzy, c-format
 msgid "Failed to create pager pipe: %s\n"
 msgstr "Ni uspelo ustvariti cevi pagerja: %s\n"
 
-#: src/nmcli/utils.c:1475
+#: src/nmcli/utils.c:1486
 #, fuzzy, c-format
 msgid "Failed to fork pager: %s\n"
 msgstr "Ni uspelo razcepiti pagerja: %s\n"
 
-#: src/nmcli/utils.c:1519 src/nmcli/utils.c:1523
+#: src/nmcli/utils.c:1530 src/nmcli/utils.c:1534
 #, fuzzy, c-format
 msgid "Failed to duplicate pager pipe: %s\n"
 msgstr "Podvajanje cevi pagerja ni uspelo: %s\n"
 
-#: src/nmcli/utils.c:1838
+#: src/nmcli/utils.c:1849
 #, fuzzy, c-format
 msgid ""
 "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Restarting "
@@ -16306,12 +16414,12 @@ msgid "(unknown)"
 msgstr "(neznano)"
 
 #: src/nmcli/utils.h:351
-#, fuzzy, c-format
+#, c-format
 msgid "%lld (%s)"
 msgstr "%lld (%s)"
 
 #: src/nmcli/utils.h:358
-#, fuzzy, c-format
+#, c-format
 msgid "%lld - %s"
 msgstr "%lld - %s"
 
@@ -16321,9 +16429,9 @@ msgid "Ethernet connection %d"
 msgstr "Žična omrežna povezava ethernet %d"
 
 #: src/nmtui/nm-editor-utils.c:156
-#, fuzzy, c-format
+#, c-format
 msgid "Veth connection %d"
-msgstr "Povezava VPN %d"
+msgstr "Povezava Veth %d"
 
 #: src/nmtui/nm-editor-utils.c:164
 #, c-format
@@ -16341,9 +16449,8 @@ msgid "Mobile broadband connection %d"
 msgstr "Povezava vezi %d"
 
 #: src/nmtui/nm-editor-utils.c:187 src/nmtui/nmt-page-dsl.c:47
-#, fuzzy
 msgid "DSL"
-msgstr "Povezava DSL %d"
+msgstr "DSL"
 
 #: src/nmtui/nm-editor-utils.c:191
 #, c-format
@@ -16436,9 +16543,8 @@ msgid "Wpa_supplicant settings:"
 msgstr "neveljavno polje '%s'"
 
 #: src/nmtui/nmt-8021x-fields.c:333
-#, fuzzy
 msgid "Cipher string"
-msgstr "Niz šifer TLS"
+msgstr "Niz šifer"
 
 #: src/nmtui/nmt-8021x-fields.c:373 src/nmtui/nmt-8021x-fields.c:562
 msgid "Domain"
@@ -16446,15 +16552,13 @@ msgstr "Domena"
 
 #: src/nmtui/nmt-8021x-fields.c:381 src/nmtui/nmt-8021x-fields.c:472
 #: src/nmtui/nmt-8021x-fields.c:570
-#, fuzzy
 msgid "CA cert"
-msgstr "Certifikat CA"
+msgstr "Potrdilo CA"
 
 #: src/nmtui/nmt-8021x-fields.c:401 src/nmtui/nmt-8021x-fields.c:492
 #: src/nmtui/nmt-8021x-fields.c:590
-#, fuzzy
 msgid "CA cert password"
-msgstr "Pokaži geslo"
+msgstr "Geslo potrdila CA"
 
 #: src/nmtui/nmt-8021x-fields.c:404
 #, fuzzy
@@ -16490,7 +16594,6 @@ msgid "MSCHAPv2"
 msgstr "MSCHAPv2"
 
 #: src/nmtui/nmt-8021x-fields.c:457
-#, fuzzy
 msgid "MSCHAPv2 (no EAP)"
 msgstr "MSCHAPv2 (brez EAP)"
 
@@ -16512,9 +16615,8 @@ msgid "Anonymous identity"
 msgstr "Anonimna identiteta"
 
 #: src/nmtui/nmt-8021x-fields.c:508 src/nmtui/nmt-8021x-fields.c:614
-#, fuzzy
 msgid "Inner authentication"
-msgstr "povezovanje (zahteva overitev)"
+msgstr "Notranje preverjanje pristnosti"
 
 #: src/nmtui/nmt-8021x-fields.c:545 src/nmtui/nmt-page-ip4.c:28
 #: src/nmtui/nmt-page-ip6.c:28
@@ -16522,19 +16624,14 @@ msgid "Automatic"
 msgstr "Samodejno"
 
 #: src/nmtui/nmt-8021x-fields.c:546
-#, fuzzy
 msgid "Version 0"
-msgstr ""
-"Različica programa ChronoJump ({0}) je starejša od različice podatkovne "
-"zbirke."
+msgstr "Različica 0"
 
 #: src/nmtui/nmt-8021x-fields.c:547
-#, fuzzy
 msgid "Version 1"
-msgstr "Različica %1"
+msgstr "Različica 1"
 
 #: src/nmtui/nmt-8021x-fields.c:598
-#, fuzzy
 msgid "PEAP version"
 msgstr "Različica PEAP"
 
@@ -16621,12 +16718,10 @@ msgstr "Naprava"
 
 #. And finally the bottom widgets
 #: src/nmtui/nmt-editor.c:416
-#, fuzzy
 msgid "Automatically connect"
 msgstr "Samodejno poveži"
 
 #: src/nmtui/nmt-editor.c:424
-#, fuzzy
 msgid "Available to all users"
 msgstr "Na voljo vsem uporabnikom"
 
@@ -16655,7 +16750,6 @@ msgid "Round-robin"
 msgstr "Krožno dodeljevanje"
 
 #: src/nmtui/nmt-page-bond.c:83
-#, fuzzy
 msgid "Active Backup"
 msgstr "Dejavna varnostna kopija"
 
@@ -16696,9 +16790,8 @@ msgstr "VEZ"
 
 #: src/nmtui/nmt-page-bond.c:346 src/nmtui/nmt-page-bridge.c:63
 #: src/nmtui/nmt-page-team.c:126
-#, fuzzy
-msgid "Slaves"
-msgstr "Sužnji"
+msgid "Ports"
+msgstr "Vrata"
 
 #: src/nmtui/nmt-page-bond.c:356 src/nmtui/nmt-page-ip-tunnel.c:128
 #: src/nmtui/nmt-page-macsec.c:113 src/nmtui/nmt-page-wifi.c:224
@@ -16708,12 +16801,11 @@ msgstr "Način"
 #: src/nmtui/nmt-page-bond.c:361
 #, fuzzy
 msgid "Primary"
-msgstr "Glavna"
+msgstr "Osnovni"
 
 #: src/nmtui/nmt-page-bond.c:366
-#, fuzzy
 msgid "Link monitoring"
-msgstr "Nadzo_rovanje povezav"
+msgstr "Nadzorovanje povezav"
 
 #: src/nmtui/nmt-page-bond.c:371 src/nmtui/nmt-page-bond.c:377
 #: src/nmtui/nmt-page-bond.c:383 src/nmtui/nmt-page-bond.c:389
@@ -16722,30 +16814,26 @@ msgid "ms"
 msgstr "ms"
 
 #: src/nmtui/nmt-page-bond.c:372 src/nmtui/nmt-page-bond.c:390
-#, fuzzy
 msgid "Monitoring frequency"
-msgstr "_Pogostost nadzora"
+msgstr "Pogostost nadzora"
 
 #: src/nmtui/nmt-page-bond.c:378
-#, fuzzy
 msgid "Link up delay"
-msgstr "Zamik povezave navz_gor"
+msgstr "Zamik povezave navzgor"
 
 #: src/nmtui/nmt-page-bond.c:384
-#, fuzzy
 msgid "Link down delay"
-msgstr "Zamik povezave navz_dol"
+msgstr "Zamik povezave navzdol"
 
 #: src/nmtui/nmt-page-bond.c:395
-#, fuzzy
 msgid "ARP targets"
-msgstr "_Cilji ARP"
+msgstr "Cilji ARP"
 
 #: src/nmtui/nmt-page-bond.c:404 src/nmtui/nmt-page-ethernet.c:116
-#: src/nmtui/nmt-page-vlan.c:92 src/nmtui/nmt-page-wifi.c:387
-#, fuzzy
+#: src/nmtui/nmt-page-veth.c:72 src/nmtui/nmt-page-vlan.c:92
+#: src/nmtui/nmt-page-wifi.c:387
 msgid "Cloned MAC address"
-msgstr "_Kloniran naslov MAC"
+msgstr "Kloniran naslov MAC"
 
 #: src/nmtui/nmt-page-bridge-port.c:42
 #, fuzzy
@@ -16757,19 +16845,16 @@ msgid "Priority"
 msgstr "Prednost"
 
 #: src/nmtui/nmt-page-bridge-port.c:59
-#, fuzzy
 msgid "Path cost"
-msgstr "_Strošek poti"
+msgstr "Strošek poti"
 
 #: src/nmtui/nmt-page-bridge-port.c:61
-#, fuzzy
 msgid "Hairpin mode"
-msgstr "Način _lasnice"
+msgstr "Način lasnice"
 
 #: src/nmtui/nmt-page-bridge.c:59
-#, fuzzy
 msgid "BRIDGE"
-msgstr "Premosti"
+msgstr "MOST"
 
 #: src/nmtui/nmt-page-bridge.c:76 src/nmtui/nmt-page-bridge.c:119
 #: src/nmtui/nmt-page-bridge.c:133 src/nmtui/nmt-page-bridge.c:147
@@ -16777,28 +16862,23 @@ msgid "seconds"
 msgstr "sekund"
 
 #: src/nmtui/nmt-page-bridge.c:77
-#, fuzzy
 msgid "Aging time"
-msgstr "Čas _staranja"
+msgstr "Čas staranja"
 
 #: src/nmtui/nmt-page-bridge.c:87
-#, fuzzy
 msgid "Enable STP (Spanning Tree Protocol)"
-msgstr "Omogoči _STP (Spanning Tree Protocol)"
+msgstr "Omogoči STP (Spanning Tree Protocol)"
 
-#: src/nmtui/nmt-page-ethernet.c:107
-#, fuzzy
+#: src/nmtui/nmt-page-ethernet.c:107 src/nmtui/nmt-page-veth.c:63
 msgid "ETHERNET"
-msgstr "Eternet"
+msgstr "ETHERNET"
 
 #. 802.1X security
 #: src/nmtui/nmt-page-ethernet.c:129
-#, fuzzy
 msgid "802.1X SECURITY"
-msgstr "Varnost 802.1x"
+msgstr "VARNOST 802.1x"
 
 #: src/nmtui/nmt-page-ethernet.c:131
-#, fuzzy
 msgid "Enable 802.1X security"
 msgstr "Omogoči varnost 802.1X"
 
@@ -16811,14 +16891,12 @@ msgid "Connected"
 msgstr "Povezano"
 
 #: src/nmtui/nmt-page-infiniband.c:64
-#, fuzzy
 msgid "INFINIBAND"
-msgstr "InfiniBand"
+msgstr "INFINIBAND"
 
 #: src/nmtui/nmt-page-infiniband.c:73
-#, fuzzy
 msgid "Transport mode"
-msgstr "Način _prenosa"
+msgstr "Način prenosa"
 
 #. The order must match the NM_IP_TUNNEL_MODE_* enum
 #: src/nmtui/nmt-page-ip-tunnel.c:65
@@ -16897,23 +16975,21 @@ msgid "Shared"
 msgstr "Deljeno"
 
 #: src/nmtui/nmt-page-ip4.c:66 src/nmtui/nmt-page-ip6.c:67
-#, fuzzy
 msgid "(No custom routes)"
-msgstr "(Brez poti po meri)"
+msgstr "(brez poti po meri)"
 
 #: src/nmtui/nmt-page-ip4.c:69 src/nmtui/nmt-page-ip6.c:70
-#, fuzzy, c-format
+#, c-format
 msgid "One custom route"
 msgid_plural "%d custom routes"
-msgstr[0] "Ena pot po meri"
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
+msgstr[0] "%d poti po meri"
+msgstr[1] "%d pot po meri"
+msgstr[2] "%d poti po meri"
+msgstr[3] "%d poti po meri"
 
 #: src/nmtui/nmt-page-ip4.c:112
-#, fuzzy
 msgid "IPv4 CONFIGURATION"
-msgstr "KONFIGURACIJA IPv4"
+msgstr "PRILAGODITEV IPv4"
 
 #: src/nmtui/nmt-page-ip4.c:123 src/nmtui/nmt-page-ip6.c:124
 msgid "Addresses"
@@ -16924,7 +17000,6 @@ msgid "Gateway"
 msgstr "Prehod"
 
 #: src/nmtui/nmt-page-ip4.c:141 src/nmtui/nmt-page-ip6.c:142
-#, fuzzy
 msgid "DNS servers"
 msgstr "Strežniki DNS"
 
@@ -16934,27 +17009,22 @@ msgid "Search domains"
 msgstr "Iskalne domene"
 
 #: src/nmtui/nmt-page-ip4.c:165 src/nmtui/nmt-page-ip6.c:164
-#, fuzzy
 msgid "Routing"
-msgstr "Obdelaj kazalne tipke"
+msgstr "Usmerjanje"
 
 #: src/nmtui/nmt-page-ip4.c:167 src/nmtui/nmt-page-ip6.c:166
-#, fuzzy
 msgid "Never use this network for default route"
-msgstr "Nikoli ne uporabljajte tega omrežja za privzeto pot"
+msgstr "Nikoli ne uporablj tega omrežja za privzeto pot"
 
 #: src/nmtui/nmt-page-ip4.c:175 src/nmtui/nmt-page-ip6.c:174
-#, fuzzy
 msgid "Ignore automatically obtained routes"
 msgstr "Prezri samodejno pridobljene poti"
 
 #: src/nmtui/nmt-page-ip4.c:183 src/nmtui/nmt-page-ip6.c:182
-#, fuzzy
 msgid "Ignore automatically obtained DNS parameters"
 msgstr "Prezri samodejno pridobljene parametre DNS"
 
 #: src/nmtui/nmt-page-ip4.c:193
-#, fuzzy
 msgid "Require IPv4 addressing for this connection"
 msgstr "Zahtevaj naslavljanje IPv4 za to povezavo"
 
@@ -16963,14 +17033,12 @@ msgid "Ignore"
 msgstr "Prezri"
 
 #: src/nmtui/nmt-page-ip6.c:29
-#, fuzzy
 msgid "Automatic (DHCP-only)"
-msgstr "Samodejno, le DHCP"
+msgstr "Samodejno (le DHCP)"
 
 #: src/nmtui/nmt-page-ip6.c:113
-#, fuzzy
 msgid "IPv6 CONFIGURATION"
-msgstr "KONFIGURACIJA IPv6"
+msgstr "PRILAGODITEV IPv6"
 
 #: src/nmtui/nmt-page-ip6.c:192
 #, fuzzy
@@ -16998,12 +17066,10 @@ msgid "Parent device"
 msgstr "Nadrejena naprava"
 
 #: src/nmtui/nmt-page-macsec.c:129
-#, fuzzy
 msgid "CAK"
 msgstr "CAK"
 
 #: src/nmtui/nmt-page-macsec.c:132
-#, fuzzy
 msgid "CKN"
 msgstr "CKN"
 
@@ -17012,14 +17078,12 @@ msgid "Validation"
 msgstr "Potrjevanje veljavnosti"
 
 #: src/nmtui/nmt-page-macsec.c:177
-#, fuzzy
 msgid "Encrypt traffic"
-msgstr "Šifriranje prometa"
+msgstr "Šifriraj promet"
 
 #: src/nmtui/nmt-page-ppp.c:116
-#, fuzzy
 msgid "PPP CONFIGURATION"
-msgstr "KONFIGURACIJA PPP"
+msgstr "PRILAGODITEV PPP"
 
 #: src/nmtui/nmt-page-ppp.c:125
 #, fuzzy
@@ -17057,9 +17121,8 @@ msgid "Use TCP header compression"
 msgstr "Uporabi stiskanje _glave TCP"
 
 #: src/nmtui/nmt-page-ppp.c:247
-#, fuzzy
 msgid "Send PPP echo packets"
-msgstr "Pošlji pakete PPP _echo"
+msgstr "Pošlji pakete PPP echo"
 
 #: src/nmtui/nmt-page-team-port.c:72
 #, fuzzy
@@ -17067,15 +17130,18 @@ msgid "TEAM PORT"
 msgstr "Vrata skupine"
 
 #: src/nmtui/nmt-page-team-port.c:79 src/nmtui/nmt-page-team.c:136
-#, fuzzy
 msgid "JSON configuration"
-msgstr "Uredi prilagoditev _JSON"
+msgstr "Prilagoditev JSON"
 
 #: src/nmtui/nmt-page-team.c:119
 #, fuzzy
 msgid "TEAM"
 msgstr "Skupina"
 
+#: src/nmtui/nmt-page-veth.c:50
+msgid "VETH"
+msgstr "VETH"
+
 #: src/nmtui/nmt-page-vlan.c:82
 #, fuzzy
 msgid "VLAN id"
@@ -17087,14 +17153,13 @@ msgid "Client"
 msgstr "Odjemalec"
 
 #: src/nmtui/nmt-page-wifi.c:52
-#, fuzzy
 msgid "Access Point"
-msgstr "Brezžično povezan na %(access_point)s"
+msgstr "Dostopna točka"
 
 #: src/nmtui/nmt-page-wifi.c:53
 #, fuzzy
 msgid "Ad-Hoc Network"
-msgstr "Ad-Hoc"
+msgstr "Ad-hoc omrežje"
 
 #: src/nmtui/nmt-page-wifi.c:56
 msgctxt "Wi-Fi"
@@ -17150,10 +17215,9 @@ msgid "Dynamic WEP (802.1x)"
 msgstr "Dinamični WEP (802.1x)"
 
 #: src/nmtui/nmt-page-wifi.c:80
-#, fuzzy
 msgctxt "WEP key index"
 msgid "1 (Default)"
-msgstr "%1 (privzeto)"
+msgstr "1 (privzeto)"
 
 #: src/nmtui/nmt-page-wifi.c:81
 msgctxt "WEP key index"
@@ -17173,14 +17237,13 @@ msgstr "4"
 #: src/nmtui/nmt-page-wifi.c:86
 #, fuzzy
 msgid "Open System"
-msgstr "Sistem"
+msgstr "Odprt sistem"
 
 #: src/nmtui/nmt-page-wifi.c:87
 msgid "Shared Key"
 msgstr "Deljeni ključ"
 
 #: src/nmtui/nmt-page-wifi.c:203
-#, fuzzy
 msgid "WI-FI"
 msgstr "Wi-Fi"
 
@@ -17218,28 +17281,24 @@ msgid "Listen port"
 msgstr "_Vrata za prisluh"
 
 #: src/nmtui/nmt-page-wireguard.c:77
-#, fuzzy
 msgid "Fwmark"
-msgstr "_fwmark"
+msgstr "Fwmark"
 
 #: src/nmtui/nmt-page-wireguard.c:92
-#, fuzzy
 msgid "Add peer routes"
-msgstr "_Dodaj soležne poti"
+msgstr "Dodaj soležne poti"
 
 #: src/nmtui/nmt-page-wireguard.c:101
 msgid "Peers"
 msgstr "Soležniki"
 
 #: src/nmtui/nmt-password-fields.c:136
-#, fuzzy
 msgid "Store password for all users"
-msgstr "Shranjevanje gesla za vse uporabnike"
+msgstr "Shrani geslo za vse uporabnike"
 
 #: src/nmtui/nmt-password-fields.c:137
-#, fuzzy
 msgid "Store password only for this user"
-msgstr "Shranite geslo samo za tega uporabnika"
+msgstr "Shrani geslo samo za tega uporabnika"
 
 #: src/nmtui/nmt-password-fields.c:138
 #, fuzzy
@@ -17252,7 +17311,7 @@ msgstr "Pokaži geslo"
 
 #: src/nmtui/nmt-port-list.c:127
 #, fuzzy
-msgid "Select the type of slave connection you wish to add."
+msgid "Select the type of port connection you wish to add."
 msgstr "Izberite vrsto podrejene povezave, ki jo želite dodati."
 
 #: src/nmtui/nmt-route-table.c:169
@@ -17322,7 +17381,7 @@ msgstr ""
 #: src/nmtui/nmtui-connect.c:58
 #, fuzzy, c-format
 msgid "Error: openconnect failed: %s"
-msgstr "Napaka: brisanje povezave ni uspelo: %s"
+msgstr "Napaka: openconnect ni uspel: %s\n"
 
 #: src/nmtui/nmtui-connect.c:108
 #, fuzzy, c-format
diff --git a/src/contrib/nm-vpn-editor-plugin-call.h b/src/contrib/nm-vpn-editor-plugin-call.h
index 2f3eb074..2f6820af 100644
--- a/src/contrib/nm-vpn-editor-plugin-call.h
+++ b/src/contrib/nm-vpn-editor-plugin-call.h
@@ -11,7 +11,7 @@
  *
  * This uses the NMVpnEditorPluginVT and allows a user (nm-applet)
  * to directly communicate with a VPN plugin using API that is newer
- * then the current libnm version. That is, it allows to call to a VPN
+ * then the current libnm version. That is, it allows a user to call to a VPN
  * plugin bypassing libnm. */
 
 #include <NetworkManager.h>
diff --git a/src/core/NetworkManagerUtils.c b/src/core/NetworkManagerUtils.c
index 6c9e2f3d..32df3d6d 100644
--- a/src/core/NetworkManagerUtils.c
+++ b/src/core/NetworkManagerUtils.c
@@ -1509,7 +1509,6 @@ nm_utils_ip_route_attribute_to_platform(int                addr_family,
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_INITCWND, r->initcwnd, UINT32, uint32, 0);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_INITRWND, r->initrwnd, UINT32, uint32, 0);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_MTU, r->mtu, UINT32, uint32, 0);
-    GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_RTO_MIN, r->rto_min, UINT32, uint32, 0);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_QUICKACK, r->quickack, BOOLEAN, boolean, FALSE);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_LOCK_WINDOW, r->lock_window, BOOLEAN, boolean, FALSE);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_LOCK_CWND, r->lock_cwnd, BOOLEAN, boolean, FALSE);
@@ -1518,6 +1517,18 @@ nm_utils_ip_route_attribute_to_platform(int                addr_family,
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_LOCK_MTU, r->lock_mtu, BOOLEAN, boolean, FALSE);
     GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_LOCK_ADVMSS, r->lock_mss, BOOLEAN, boolean, FALSE);
 
+    {
+        GVariant *_variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_RTO_MIN);
+
+        if (_variant && g_variant_is_of_type(_variant, G_VARIANT_TYPE_UINT32)) {
+            r->rto_min     = g_variant_get_uint32(_variant);
+            r->rto_min_set = TRUE;
+        } else {
+            r->rto_min     = 0;
+            r->rto_min_set = FALSE;
+        }
+    }
+
     if ((variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_SRC))
         && g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
         if (inet_pton(addr_family, g_variant_get_string(variant, NULL), &addr) == 1) {
diff --git a/src/core/devices/nm-device-bond.c b/src/core/devices/nm-device-bond.c
index 53b32466..673d2361 100644
--- a/src/core/devices/nm-device-bond.c
+++ b/src/core/devices/nm-device-bond.c
@@ -137,13 +137,13 @@ _set_bond_attr(NMDevice *device, const char *attr, const char *value)
     return ret;
 }
 
-#define _set_bond_attr_take(device, attr, value)                            \
-    G_STMT_START                                                            \
-    {                                                                       \
-        gs_free char *_tmp = (value);                                       \
-                                                                            \
-        _set_bond_attr(device, NM_SETTING_BOND_OPTION_ARP_IP_TARGET, _tmp); \
-    }                                                                       \
+#define _set_bond_attr_take(device, attr, value) \
+    G_STMT_START                                 \
+    {                                            \
+        gs_free char *_tmp = (value);            \
+                                                 \
+        _set_bond_attr(device, attr, _tmp);      \
+    }                                            \
     G_STMT_END
 
 #define _set_bond_attr_printf(device, attr, fmt, ...) \
@@ -902,7 +902,7 @@ reapply_connection(NMDevice *device, NMConnection *con_old, NMConnection *con_ne
     mode  = _nm_setting_bond_mode_from_string(value);
     g_return_if_fail(mode != NM_BOND_MODE_UNKNOWN);
 
-    /* Below we set only the bond options that kernel allows to modify
+    /* Below we set only the bond options that the kernel allows modifying
      * while keeping the bond interface up */
 
     set_bond_arp_ip_targets(device, s_bond);
diff --git a/src/core/devices/nm-device-bridge.c b/src/core/devices/nm-device-bridge.c
index 7c34fde0..45cdd83f 100644
--- a/src/core/devices/nm-device-bridge.c
+++ b/src/core/devices/nm-device-bridge.c
@@ -735,6 +735,11 @@ merge_bridge_vlan_default_pvid(NMPlatformBridgeVlan *vlans, guint *num_vlans, gu
     gboolean              has_pvid = FALSE;
     guint                 i;
 
+    if (default_pvid == 0) {
+        /* default_pvid=0 means that the default PVID is disabled. No need to merge it. */
+        return vlans;
+    }
+
     for (i = 0; i < *num_vlans; i++) {
         if (vlans[i].pvid) {
             has_pvid = TRUE;
diff --git a/src/core/devices/nm-device-hsr.c b/src/core/devices/nm-device-hsr.c
index 8156fa77..59454ee3 100644
--- a/src/core/devices/nm-device-hsr.c
+++ b/src/core/devices/nm-device-hsr.c
@@ -94,8 +94,10 @@ update_properties(NMDevice *device)
     CHECK_PROPERTY_CHANGED(multicast_spec, PROP_MULTICAST_SPEC);
     CHECK_PROPERTY_CHANGED(prp, PROP_PRP);
 
-    if (!nm_ether_addr_equal(&priv->props.supervision_address, &props->supervision_address))
+    if (!nm_ether_addr_equal(&priv->props.supervision_address, &props->supervision_address)) {
+        priv->props.supervision_address = props->supervision_address;
         _notify(self, PROP_SUPERVISION_ADDRESS);
+    }
 
     g_object_thaw_notify((GObject *) device);
 }
diff --git a/src/core/devices/nm-device-tun.c b/src/core/devices/nm-device-tun.c
index faab86d0..b277c378 100644
--- a/src/core/devices/nm-device-tun.c
+++ b/src/core/devices/nm-device-tun.c
@@ -242,12 +242,14 @@ create_and_realize(NMDevice              *device,
         g_return_val_if_reached(FALSE);
     }
 
-    owner = _nm_utils_ascii_str_to_int64(nm_setting_tun_get_owner(s_tun), 10, 0, G_MAXINT32, -1);
+    owner =
+        _nm_utils_ascii_str_to_int64(nm_setting_tun_get_owner(s_tun), 10, 0, G_MAXUINT32 - 1, -1);
     if (owner != -1) {
         props.owner_valid = TRUE;
         props.owner       = owner;
     }
-    group = _nm_utils_ascii_str_to_int64(nm_setting_tun_get_group(s_tun), 10, 0, G_MAXINT32, -1);
+    group =
+        _nm_utils_ascii_str_to_int64(nm_setting_tun_get_group(s_tun), 10, 0, G_MAXUINT32 - 1, -1);
     if (group != -1) {
         props.group_valid = TRUE;
         props.group       = group;
@@ -278,7 +280,7 @@ _same_og(const char *str, gboolean og_valid, guint32 og_num)
 {
     gint64 v;
 
-    v = _nm_utils_ascii_str_to_int64(str, 10, 0, G_MAXINT32, -1);
+    v = _nm_utils_ascii_str_to_int64(str, 10, 0, G_MAXUINT32 - 1, -1);
     return (!og_valid && (v == (gint64) -1)) || (og_valid && (((guint32) v) == og_num));
 }
 
diff --git a/src/core/devices/nm-device-vrf.c b/src/core/devices/nm-device-vrf.c
index 7dfd6504..6d272a95 100644
--- a/src/core/devices/nm-device-vrf.c
+++ b/src/core/devices/nm-device-vrf.c
@@ -235,7 +235,7 @@ attach_port(NMDevice                  *device,
 
         _LOGI(LOGD_DEVICE, "attached VRF port %s", port_iface);
     } else
-        _LOGI(LOGD_BOND, "VRF port %s was attached", port_iface);
+        _LOGI(LOGD_DEVICE, "VRF port %s was attached", port_iface);
 
     return TRUE;
 }
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 2f2f25a5..f6057e52 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -779,6 +779,7 @@ typedef struct _NMDevicePrivate {
     char     *prop_ip_iface; /* IP interface D-Bus property */
     GList    *ping_operations;
     GSource  *ping_timeout;
+    bool      refresh_forwarding_done : 1;
 } NMDevicePrivate;
 
 G_DEFINE_ABSTRACT_TYPE(NMDevice, nm_device, NM_TYPE_DBUS_OBJECT)
@@ -880,6 +881,7 @@ static void device_ifindex_changed_cb(NMManager *manager, NMDevice *device_chang
 static gboolean device_link_changed(gpointer user_data);
 static gboolean _get_maybe_ipv6_disabled(NMDevice *self);
 static void     deactivate_ready(NMDevice *self, NMDeviceStateReason reason);
+static void     carrier_disconnected_action_cancel(NMDevice *self);
 
 /*****************************************************************************/
 
@@ -1414,6 +1416,26 @@ _prop_get_connection_mdns(NMDevice *self)
                                                        NM_SETTING_CONNECTION_MDNS_DEFAULT);
 }
 
+static gboolean
+_prop_get_sriov_preserve_on_down(NMDevice *self, NMSettingSriov *s_sriov)
+{
+    NMSriovPreserveOnDown preserve;
+
+    g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
+    g_return_val_if_fail(NM_IS_SETTING_SRIOV(s_sriov), FALSE);
+
+    preserve = nm_setting_sriov_get_preserve_on_down(s_sriov);
+    if (NM_IN_SET(preserve, NM_SRIOV_PRESERVE_ON_DOWN_NO, NM_SRIOV_PRESERVE_ON_DOWN_YES))
+        return preserve;
+
+    return nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
+                                                       NM_CON_DEFAULT("sriov.preserve-on-down"),
+                                                       self,
+                                                       NM_SRIOV_PRESERVE_ON_DOWN_NO,
+                                                       NM_SRIOV_PRESERVE_ON_DOWN_YES,
+                                                       NM_SRIOV_PRESERVE_ON_DOWN_NO);
+}
+
 static NMSettingConnectionLlmnr
 _prop_get_connection_llmnr(NMDevice *self)
 {
@@ -2109,6 +2131,33 @@ _prop_get_ipvx_dhcp_send_hostname(NMDevice *self, int addr_family)
     return send_hostname_v2;
 }
 
+NMSettingIPConfigForwarding
+nm_device_get_ipv4_forwarding(NMDevice *self)
+{
+    NMSettingIPConfig          *s_ip;
+    NMSettingIPConfigForwarding forwarding;
+
+    g_return_val_if_fail(NM_IS_DEVICE(self), NM_SETTING_IP_CONFIG_FORWARDING_AUTO);
+
+    s_ip = nm_device_get_applied_setting(self, NM_TYPE_SETTING_IP4_CONFIG);
+    if (s_ip)
+        forwarding = nm_setting_ip_config_get_forwarding(s_ip);
+    else
+        forwarding = NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT;
+
+    if (forwarding == NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT) {
+        forwarding =
+            nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
+                                                        NM_CON_DEFAULT("ipv4.forwarding"),
+                                                        self,
+                                                        NM_SETTING_IP_CONFIG_FORWARDING_NO,
+                                                        NM_SETTING_IP_CONFIG_FORWARDING_AUTO,
+                                                        NM_SETTING_IP_CONFIG_FORWARDING_AUTO);
+    }
+
+    return forwarding;
+}
+
 static gboolean
 _prop_get_connection_ip_ping_addresses_require_all(NMDevice *self, NMSettingConnection *s_con)
 {
@@ -2717,7 +2766,7 @@ _ethtool_features_set(NMDevice         *self,
     if (nm_setting_ethtool_init_features(s_ethtool, ethtool_state->requested) == 0)
         return;
 
-    features = nm_platform_ethtool_get_link_features(platform, ethtool_state->ifindex);
+    features = nm_platform_ethtool_get_features(platform, ethtool_state->ifindex);
     if (!features) {
         _LOGW(LOGD_DEVICE, "ethtool: failure setting offload features (cannot read features)");
         return;
@@ -2836,9 +2885,9 @@ _ethtool_coalesce_set(NMDevice         *self,
             continue;
 
         if (!has_old) {
-            if (!nm_platform_ethtool_get_link_coalesce(platform,
-                                                       ethtool_state->ifindex,
-                                                       &coalesce_old)) {
+            if (!nm_platform_ethtool_get_coalesce(platform,
+                                                  ethtool_state->ifindex,
+                                                  &coalesce_old)) {
                 _LOGW(LOGD_DEVICE, "ethtool: failure getting coalesce settings (cannot read)");
                 return;
             }
@@ -2917,7 +2966,7 @@ _ethtool_ring_set(NMDevice         *self,
         nm_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_UINT32));
 
         if (!has_old) {
-            if (!nm_platform_ethtool_get_link_ring(platform, ethtool_state->ifindex, &ring_old)) {
+            if (!nm_platform_ethtool_get_ring(platform, ethtool_state->ifindex, &ring_old)) {
                 _LOGW(LOGD_DEVICE,
                       "ethtool: failure setting ring options (cannot read existing setting)");
                 return;
@@ -3013,9 +3062,9 @@ _ethtool_channels_set(NMDevice         *self,
         nm_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_UINT32));
 
         if (!has_old) {
-            if (!nm_platform_ethtool_get_link_channels(platform,
-                                                       ethtool_state->ifindex,
-                                                       &channels_old)) {
+            if (!nm_platform_ethtool_get_channels(platform,
+                                                  ethtool_state->ifindex,
+                                                  &channels_old)) {
                 _LOGW(LOGD_DEVICE,
                       "ethtool: failure setting channels options (cannot read existing setting)");
                 return;
@@ -3132,7 +3181,7 @@ _ethtool_pause_set(NMDevice         *self,
         nm_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_BOOLEAN));
 
         if (!has_old) {
-            if (!nm_platform_ethtool_get_link_pause(platform, ethtool_state->ifindex, &pause_old)) {
+            if (!nm_platform_ethtool_get_pause(platform, ethtool_state->ifindex, &pause_old)) {
                 _LOGW(LOGD_DEVICE,
                       "ethtool: failure setting pause options (cannot read "
                       "existing setting)");
@@ -3218,7 +3267,7 @@ _ethtool_eee_set(NMDevice         *self,
         nm_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_BOOLEAN));
 
         if (!has_old) {
-            if (!nm_platform_ethtool_get_link_eee(platform, ethtool_state->ifindex, &eee_old)) {
+            if (!nm_platform_ethtool_get_eee(platform, ethtool_state->ifindex, &eee_old)) {
                 _LOGW(LOGD_DEVICE,
                       "ethtool: failure setting eee options (cannot read "
                       "existing setting)");
@@ -3729,7 +3778,7 @@ nm_device_assume_state_reset(NMDevice *self)
 
 /*****************************************************************************/
 
-static char *
+char *
 nm_device_sysctl_ip_conf_get(NMDevice *self, int addr_family, const char *property)
 {
     const char *ifname;
@@ -4993,6 +5042,10 @@ _set_ifindex(NMDevice *self, int ifindex, gboolean is_ip_ifindex)
 
     ip_ifindex_new = nm_device_get_ip_ifindex(self);
 
+    /* the ifindex changed; forget about any carrier change event for
+     * the previous ifindex */
+    carrier_disconnected_action_cancel(self);
+
     if (priv->l3cfg) {
         if (ip_ifindex_new <= 0 || ip_ifindex_new != nm_l3cfg_get_ifindex(priv->l3cfg)) {
             const NML3ConfigData *l3cd_old;
@@ -6584,11 +6637,15 @@ concheck_update_state(NMDevice           *self,
 
     _notify(self, IS_IPv4 ? PROP_IP4_CONNECTIVITY : PROP_IP6_CONNECTIVITY);
 
-    if (priv->state == NM_DEVICE_STATE_ACTIVATED && !nm_device_managed_type_is_external(self))
+    /* State change could've affected the route metrics (removed the penalty
+     * once FULL connectivity is reached), redo the L3 configuration. */
+    if (priv->state > NM_DEVICE_STATE_IP_CONFIG && priv->state < NM_DEVICE_STATE_DEACTIVATING
+        && !nm_device_managed_type_is_external(self)) {
         _dev_l3_register_l3cds(self, priv->l3cfg, TRUE, NM_TERNARY_DEFAULT);
+    }
 }
 
-static const char *
+const char *
 nm_device_get_effective_ip_config_method(NMDevice *self, int addr_family)
 {
     NMDeviceClass *klass;
@@ -7725,9 +7782,7 @@ device_link_changed(gpointer user_data)
          * tagged for carrier ignore) ensure that when the carrier appears we
          * renew DHCP leases and such.
          */
-        if (priv->state == NM_DEVICE_STATE_ACTIVATED) {
-            nm_device_update_dynamic_ip_setup(self, "interface got carrier");
-        }
+        nm_device_update_dynamic_ip_setup(self, "interface got carrier");
     }
 
     if (update_unmanaged_specs)
@@ -8974,7 +9029,7 @@ nm_device_port_notify_attach_as_port(NMDevice *self, gboolean success)
 
             priv->is_attached = TRUE;
 
-            _notify(priv->controller, PROP_CONTROLLER);
+            _notify(self, PROP_CONTROLLER);
 
             nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->controller)->ports_variant,
                              g_variant_unref);
@@ -9053,7 +9108,7 @@ nm_device_port_notify_release(NMDevice           *self,
 
     priv->is_attached = FALSE;
 
-    _notify(priv->controller, PROP_CONTROLLER);
+    _notify(self, PROP_CONTROLLER);
 
     nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->controller)->ports_variant, g_variant_unref);
     nm_gobject_notify_together(priv->controller, PROP_PORTS, PROP_SLAVES);
@@ -9521,7 +9576,7 @@ nm_device_generate_connection(NMDevice *self,
                  NM_SETTING_CONNECTION_ID,
                  ifname,
                  NM_SETTING_CONNECTION_AUTOCONNECT,
-                 FALSE,
+                 TRUE,
                  NM_SETTING_CONNECTION_INTERFACE_NAME,
                  ifname,
                  NM_SETTING_CONNECTION_TIMESTAMP,
@@ -11335,6 +11390,13 @@ _dev_ipdhcpx_notify(NMDhcpClient *client, const NMDhcpClientNotifyData *notify_d
     switch (notify_data->notify_type) {
     case NM_DHCP_CLIENT_NOTIFY_TYPE_PREFIX_DELEGATED:
         nm_assert(!IS_IPv4);
+        if (notify_data->prefix_delegated.prefix->plen == 0
+            || notify_data->prefix_delegated.prefix->plen > 64) {
+            _LOGW_ipdhcp(addr_family,
+                         "ignoring invalid prefix-delegation with length %u",
+                         notify_data->prefix_delegated.prefix->plen);
+            return;
+        }
         /* Just re-emit. The device just contributes the prefix to the
          * pool in NMPolicy, which decides about subnet allocation
          * on the shared devices. */
@@ -13073,6 +13135,13 @@ activate_stage3_ip_config_for_addr_family(NMDevice *self, int addr_family)
         goto out_devip;
 
     if (IS_IPv4) {
+        NMSettingIPConfigForwarding ipv4_forwarding = nm_device_get_ipv4_forwarding(self);
+
+        if (NM_IN_SET(ipv4_forwarding,
+                      NM_SETTING_IP_CONFIG_FORWARDING_NO,
+                      NM_SETTING_IP_CONFIG_FORWARDING_YES)) {
+            nm_device_sysctl_ip_conf_set(self, AF_INET, "forwarding", ipv4_forwarding ? "1" : "0");
+        }
         priv->ipll_data_4.v4.mode = _prop_get_ipv4_link_local(self);
         if (priv->ipll_data_4.v4.mode == NM_SETTING_IP4_LL_ENABLED)
             _dev_ipll4_start(self);
@@ -13369,7 +13438,8 @@ activate_stage3_ip_config(NMDevice *self)
              * IPv6LL if this is not an assumed connection, since assumed connections
              * will already have IPv6 set up.
              */
-            if (!nm_device_managed_type_is_external_or_assume(self))
+            if ((priv->state <= NM_DEVICE_STATE_IP_CONFIG || priv->ip_data_6.do_reapply)
+                && !nm_device_managed_type_is_external_or_assume(self))
                 _dev_addrgenmode6_set(self, NM_IN6_ADDR_GEN_MODE_NONE);
 
             /* Re-enable IPv6 on the interface */
@@ -13505,19 +13575,6 @@ _dev_ipshared4_init(NMDevice *self)
     }
 
     if (nm_platform_sysctl_get_int32(nm_device_get_platform(self),
-                                     NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/ip_forward"),
-                                     -1)
-        == 1) {
-        /* nothing to do. */
-    } else if (!nm_platform_sysctl_set(nm_device_get_platform(self),
-                                       NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/ip_forward"),
-                                       "1")) {
-        errsv = errno;
-        _LOGW_ipshared(AF_INET, "error enabling IPv4 forwarding: %s", nm_strerror_native(errsv));
-        return FALSE;
-    }
-
-    if (nm_platform_sysctl_get_int32(nm_device_get_platform(self),
                                      NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/ip_dynaddr"),
                                      -1)
         == 1) {
@@ -13994,13 +14051,18 @@ can_reapply_change(NMDevice   *self,
         goto out_fail;
     }
 
-    if (NM_IN_STRSET(setting_name,
-                     NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
-                     NM_SETTING_OVS_OTHER_CONFIG_SETTING_NAME)
-        && NM_DEVICE_GET_CLASS(self)->can_reapply_change_ovs_external_ids) {
-        /* TODO: this means, you cannot reapply changes to the external-ids for
-         * OVS system interfaces. */
-        return TRUE;
+    if (nm_streq(setting_name, NM_SETTING_BRIDGE_PORT_SETTING_NAME)) {
+        return nm_device_hash_check_invalid_keys(diffs,
+                                                 NM_SETTING_BRIDGE_PORT_SETTING_NAME,
+                                                 error,
+                                                 NM_SETTING_BRIDGE_PORT_VLANS);
+    }
+
+    if (nm_streq(setting_name, NM_SETTING_SRIOV_SETTING_NAME)) {
+        return nm_device_hash_check_invalid_keys(diffs,
+                                                 NM_SETTING_SRIOV_SETTING_NAME,
+                                                 error,
+                                                 NM_SETTING_SRIOV_PRESERVE_ON_DOWN);
     }
 
 out_fail:
@@ -16851,6 +16913,8 @@ _cleanup_generic_post(NMDevice *self, NMDeviceStateReason reason, CleanupType cl
     priv->v4_route_table_all_sync_before = FALSE;
     priv->v6_route_table_all_sync_before = FALSE;
 
+    priv->refresh_forwarding_done = FALSE;
+
     priv->mtu_force_set_done = FALSE;
 
     priv->needs_ip6_subnet = FALSE;
@@ -16896,6 +16960,7 @@ nm_device_cleanup(NMDevice *self, NMDeviceStateReason reason, CleanupType cleanu
     NMDevicePrivate *priv;
     NMDeviceClass   *klass = NM_DEVICE_GET_CLASS(self);
     int              ifindex;
+    gint32           default_forwarding_v4;
 
     g_return_if_fail(NM_IS_DEVICE(self));
 
@@ -16918,6 +16983,17 @@ nm_device_cleanup(NMDevice *self, NMDeviceStateReason reason, CleanupType cleanu
         nm_device_sysctl_ip_conf_set(self, AF_INET6, "use_tempaddr", "0");
     }
 
+    /* Restoring the device's forwarding to the sysctl default is necessary because
+     * `refresh_forwarding()` only updates forwarding on activated devices. */
+    default_forwarding_v4 = nm_platform_sysctl_get_int32(
+        nm_device_get_platform(self),
+        NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/conf/default/forwarding"),
+        0);
+    nm_device_sysctl_ip_conf_set(self,
+                                 AF_INET,
+                                 "forwarding",
+                                 default_forwarding_v4 == 1 ? "1" : "0");
+
     /* Call device type-specific deactivation */
     if (klass->deactivate)
         klass->deactivate(self);
@@ -17437,7 +17513,8 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
             }
 
             if (priv->ifindex > 0
-                && (s_sriov = nm_device_get_applied_setting(self, NM_TYPE_SETTING_SRIOV))) {
+                && (s_sriov = nm_device_get_applied_setting(self, NM_TYPE_SETTING_SRIOV))
+                && (!_prop_get_sriov_preserve_on_down(self, s_sriov))) {
                 priv->sriov_reset_pending++;
                 sriov_op_queue(self,
                                0,
@@ -17492,7 +17569,8 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
             nm_settings_connection_update_timestamp(sett_conn, (guint64) 0);
 
         if (priv->ifindex > 0
-            && (s_sriov = nm_device_get_applied_setting(self, NM_TYPE_SETTING_SRIOV))) {
+            && (s_sriov = nm_device_get_applied_setting(self, NM_TYPE_SETTING_SRIOV))
+            && (!_prop_get_sriov_preserve_on_down(self, s_sriov))) {
             priv->sriov_reset_pending++;
             sriov_op_queue(self,
                            0,
@@ -18613,7 +18691,7 @@ hostname_dns_lookup_callback(GObject *source, GAsyncResult *result, gpointer use
         gboolean valid;
 
         resolver->hostname = g_steal_pointer(&output);
-        valid              = nm_utils_validate_hostname(resolver->hostname);
+        valid              = nm_sd_dns_name_is_valid(resolver->hostname);
 
         _LOGD(LOGD_DNS,
               "hostname-from-dns: ipv%c resolver %s: lookup successful for %s, result %s%s%s%s",
@@ -18858,6 +18936,19 @@ nm_device_get_hostname_from_dns_lookup(NMDevice *self, int addr_family, gboolean
     return nm_assert_unreachable_val(NULL);
 }
 
+gboolean
+nm_device_get_refresh_forwarding_done(NMDevice *self)
+{
+    return NM_DEVICE_GET_PRIVATE(self)->refresh_forwarding_done;
+}
+
+void
+nm_device_set_refresh_forwarding_done(NMDevice *self, gboolean is_refresh_forwarding_done)
+{
+    NMDevicePrivate *priv         = NM_DEVICE_GET_PRIVATE(self);
+    priv->refresh_forwarding_done = is_refresh_forwarding_done;
+}
+
 /*****************************************************************************/
 
 static const char *
diff --git a/src/core/devices/nm-device.h b/src/core/devices/nm-device.h
index 9b051ab4..9a663c2a 100644
--- a/src/core/devices/nm-device.h
+++ b/src/core/devices/nm-device.h
@@ -209,8 +209,6 @@ typedef struct _NMDeviceClass {
 
     bool act_stage1_prepare_set_hwaddr_ethernet : 1;
 
-    bool can_reapply_change_ovs_external_ids : 1;
-
     bool allow_autoconnect_on_external : 1;
 
     NMRfkillType rfkill_type : 4;
@@ -854,4 +852,14 @@ void nm_routing_rules_sync(NMConnection *applied_connection,
                            NMDevice *self,
                            NMNetns  *netns);
 
+NMSettingIPConfigForwarding nm_device_get_ipv4_forwarding(NMDevice *self);
+
+const char *nm_device_get_effective_ip_config_method(NMDevice *self, int addr_family);
+
+char *nm_device_sysctl_ip_conf_get(NMDevice *self, int addr_family, const char *property);
+
+gboolean nm_device_get_refresh_forwarding_done(NMDevice *self);
+
+void nm_device_set_refresh_forwarding_done(NMDevice *self, gboolean is_refresh_forwarding_done);
+
 #endif /* __NETWORKMANAGER_DEVICE_H__ */
diff --git a/src/core/devices/nm-lldp-listener.c b/src/core/devices/nm-lldp-listener.c
index e08b379a..5c90911f 100644
--- a/src/core/devices/nm-lldp-listener.c
+++ b/src/core/devices/nm-lldp-listener.c
@@ -310,7 +310,7 @@ format_string(const guint8 *data, gsize len, gboolean allow_trim, char **out_to_
     if (len == 0)
         return NULL;
 
-    if (memchr(data, len, '\0'))
+    if (memchr(data, '\0', len))
         return NULL;
 
     return nm_utils_buf_utf8safe_escape(data,
diff --git a/src/core/devices/ovs/nm-device-ovs-bridge.c b/src/core/devices/ovs/nm-device-ovs-bridge.c
index c9b1f4c6..c9736eeb 100644
--- a/src/core/devices/ovs/nm-device-ovs-bridge.c
+++ b/src/core/devices/ovs/nm-device-ovs-bridge.c
@@ -162,6 +162,11 @@ can_reapply_change(NMDevice   *device,
                                                  NM_SETTING_OVS_BRIDGE_STP_ENABLE);
     }
 
+    if (NM_IN_STRSET(setting_name,
+                     NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+                     NM_SETTING_OVS_OTHER_CONFIG_SETTING_NAME))
+        return TRUE;
+
     return device_class->can_reapply_change(device, setting_name, s_old, s_new, diffs, error);
 }
 
@@ -194,16 +199,15 @@ nm_device_ovs_bridge_class_init(NMDeviceOvsBridgeClass *klass)
     device_class->connection_type_check_compatible = NM_SETTING_OVS_BRIDGE_SETTING_NAME;
     device_class->link_types                       = NM_DEVICE_DEFINE_LINK_TYPES();
 
-    device_class->is_controller                       = TRUE;
-    device_class->get_type_description                = get_type_description;
-    device_class->create_and_realize                  = create_and_realize;
-    device_class->unrealize                           = unrealize;
-    device_class->get_generic_capabilities            = get_generic_capabilities;
-    device_class->act_stage3_ip_config                = act_stage3_ip_config;
-    device_class->ready_for_ip_config                 = ready_for_ip_config;
-    device_class->attach_port                         = attach_port;
-    device_class->detach_port                         = detach_port;
-    device_class->can_reapply_change                  = can_reapply_change;
-    device_class->can_reapply_change_ovs_external_ids = TRUE;
-    device_class->reapply_connection                  = nm_device_ovs_reapply_connection;
+    device_class->is_controller            = TRUE;
+    device_class->get_type_description     = get_type_description;
+    device_class->create_and_realize       = create_and_realize;
+    device_class->unrealize                = unrealize;
+    device_class->get_generic_capabilities = get_generic_capabilities;
+    device_class->act_stage3_ip_config     = act_stage3_ip_config;
+    device_class->ready_for_ip_config      = ready_for_ip_config;
+    device_class->attach_port              = attach_port;
+    device_class->detach_port              = detach_port;
+    device_class->can_reapply_change       = can_reapply_change;
+    device_class->reapply_connection       = nm_device_ovs_reapply_connection;
 }
diff --git a/src/core/devices/ovs/nm-device-ovs-interface.c b/src/core/devices/ovs/nm-device-ovs-interface.c
index 512aa5c3..922ed345 100644
--- a/src/core/devices/ovs/nm-device-ovs-interface.c
+++ b/src/core/devices/ovs/nm-device-ovs-interface.c
@@ -16,6 +16,8 @@
 #include "nm-setting-ovs-bridge.h"
 #include "nm-setting-ovs-interface.h"
 #include "nm-setting-ovs-port.h"
+#include "nm-setting-ovs-external-ids.h"
+#include "nm-setting-ovs-other-config.h"
 
 #define _NMLOG_DEVICE_TYPE NMDeviceOvsInterface
 #include "devices/nm-device-logging.h"
@@ -631,6 +633,28 @@ can_update_from_platform_link(NMDevice *device, const NMPlatformLink *plink)
     return !plink || nm_device_get_state(device) != NM_DEVICE_STATE_DEACTIVATING;
 }
 
+static gboolean
+can_reapply_change(NMDevice   *device,
+                   const char *setting_name,
+                   NMSetting  *s_old,
+                   NMSetting  *s_new,
+                   GHashTable *diffs,
+                   GError    **error)
+{
+    NMDeviceClass *device_class = NM_DEVICE_CLASS(nm_device_ovs_interface_parent_class);
+
+    if (NM_IN_STRSET(setting_name,
+                     NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+                     NM_SETTING_OVS_OTHER_CONFIG_SETTING_NAME)) {
+        /* TODO: it's currently not possible to reapply those settings on OVS
+         * system interfaces because they have type != "ovs-interface" (e.g.
+         * "ethernet") */
+        return TRUE;
+    }
+
+    return device_class->can_reapply_change(device, setting_name, s_old, s_new, diffs, error);
+}
+
 /*****************************************************************************/
 
 static void
@@ -696,21 +720,21 @@ nm_device_ovs_interface_class_init(NMDeviceOvsInterfaceClass *klass)
     device_class->connection_type_check_compatible = NM_SETTING_OVS_INTERFACE_SETTING_NAME;
     device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_OPENVSWITCH);
 
-    device_class->can_auto_connect                    = can_auto_connect;
-    device_class->can_update_from_platform_link       = can_update_from_platform_link;
-    device_class->deactivate                          = deactivate;
-    device_class->deactivate_async                    = deactivate_async;
-    device_class->get_type_description                = get_type_description;
-    device_class->create_and_realize                  = create_and_realize;
-    device_class->get_generic_capabilities            = get_generic_capabilities;
-    device_class->is_available                        = is_available;
-    device_class->check_connection_compatible         = check_connection_compatible;
-    device_class->link_changed                        = link_changed;
-    device_class->act_stage3_ip_config                = act_stage3_ip_config;
-    device_class->ready_for_ip_config                 = ready_for_ip_config;
-    device_class->can_unmanaged_external_down         = can_unmanaged_external_down;
-    device_class->set_platform_mtu                    = set_platform_mtu;
-    device_class->get_configured_mtu                  = nm_device_get_configured_mtu_for_wired;
-    device_class->can_reapply_change_ovs_external_ids = TRUE;
-    device_class->reapply_connection                  = nm_device_ovs_reapply_connection;
+    device_class->can_auto_connect              = can_auto_connect;
+    device_class->can_update_from_platform_link = can_update_from_platform_link;
+    device_class->deactivate                    = deactivate;
+    device_class->deactivate_async              = deactivate_async;
+    device_class->get_type_description          = get_type_description;
+    device_class->create_and_realize            = create_and_realize;
+    device_class->get_generic_capabilities      = get_generic_capabilities;
+    device_class->is_available                  = is_available;
+    device_class->check_connection_compatible   = check_connection_compatible;
+    device_class->link_changed                  = link_changed;
+    device_class->act_stage3_ip_config          = act_stage3_ip_config;
+    device_class->ready_for_ip_config           = ready_for_ip_config;
+    device_class->can_unmanaged_external_down   = can_unmanaged_external_down;
+    device_class->set_platform_mtu              = set_platform_mtu;
+    device_class->get_configured_mtu            = nm_device_get_configured_mtu_for_wired;
+    device_class->can_reapply_change            = can_reapply_change;
+    device_class->reapply_connection            = nm_device_ovs_reapply_connection;
 }
diff --git a/src/core/devices/ovs/nm-device-ovs-port.c b/src/core/devices/ovs/nm-device-ovs-port.c
index e9928548..0e3ef92c 100644
--- a/src/core/devices/ovs/nm-device-ovs-port.c
+++ b/src/core/devices/ovs/nm-device-ovs-port.c
@@ -16,6 +16,8 @@
 #include "nm-setting-connection.h"
 #include "nm-setting-ovs-port.h"
 #include "nm-setting-ovs-interface.h"
+#include "nm-setting-ovs-external-ids.h"
+#include "nm-setting-ovs-other-config.h"
 #include "nm-setting-wired.h"
 
 #define _NMLOG_DEVICE_TYPE NMDeviceOvsPort
@@ -279,6 +281,11 @@ can_reapply_change(NMDevice   *device,
                                                  NM_SETTING_OVS_PORT_TRUNKS);
     }
 
+    if (NM_IN_STRSET(setting_name,
+                     NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+                     NM_SETTING_OVS_OTHER_CONFIG_SETTING_NAME))
+        return TRUE;
+
     return device_class->can_reapply_change(device, setting_name, s_old, s_new, diffs, error);
 }
 
@@ -311,15 +318,14 @@ nm_device_ovs_port_class_init(NMDeviceOvsPortClass *klass)
     device_class->connection_type_check_compatible = NM_SETTING_OVS_PORT_SETTING_NAME;
     device_class->link_types                       = NM_DEVICE_DEFINE_LINK_TYPES();
 
-    device_class->is_controller                       = TRUE;
-    device_class->get_type_description                = get_type_description;
-    device_class->create_and_realize                  = create_and_realize;
-    device_class->get_generic_capabilities            = get_generic_capabilities;
-    device_class->act_stage3_ip_config                = act_stage3_ip_config;
-    device_class->ready_for_ip_config                 = ready_for_ip_config;
-    device_class->attach_port                         = attach_port;
-    device_class->detach_port                         = detach_port;
-    device_class->can_reapply_change                  = can_reapply_change;
-    device_class->can_reapply_change_ovs_external_ids = TRUE;
-    device_class->reapply_connection                  = nm_device_ovs_reapply_connection;
+    device_class->is_controller            = TRUE;
+    device_class->get_type_description     = get_type_description;
+    device_class->create_and_realize       = create_and_realize;
+    device_class->get_generic_capabilities = get_generic_capabilities;
+    device_class->act_stage3_ip_config     = act_stage3_ip_config;
+    device_class->ready_for_ip_config      = ready_for_ip_config;
+    device_class->attach_port              = attach_port;
+    device_class->detach_port              = detach_port;
+    device_class->can_reapply_change       = can_reapply_change;
+    device_class->reapply_connection       = nm_device_ovs_reapply_connection;
 }
diff --git a/src/core/devices/ovs/nm-ovs-factory.c b/src/core/devices/ovs/nm-ovs-factory.c
index 2ca1a0b5..4084356f 100644
--- a/src/core/devices/ovs/nm-ovs-factory.c
+++ b/src/core/devices/ovs/nm-ovs-factory.c
@@ -75,9 +75,6 @@ new_device_from_type(const char *name, NMDeviceType device_type)
     const char *type_desc;
     NMLinkType  link_type = NM_LINK_TYPE_NONE;
 
-    if (nm_manager_get_device(NM_MANAGER_GET, name, device_type))
-        return NULL;
-
     if (device_type == NM_DEVICE_TYPE_OVS_INTERFACE) {
         type      = NM_TYPE_DEVICE_OVS_INTERFACE;
         type_desc = "Open vSwitch Interface";
@@ -89,6 +86,7 @@ new_device_from_type(const char *name, NMDeviceType device_type)
         type      = NM_TYPE_DEVICE_OVS_BRIDGE;
         type_desc = "Open vSwitch Bridge";
     } else {
+        _LOGT(name, NULL, "Unrecognized link type: %d", device_type);
         return NULL;
     }
 
@@ -125,6 +123,11 @@ ovsdb_device_added(NMOvsdb         *ovsdb,
         return;
     }
 
+    if (nm_manager_get_device(NM_MANAGER_GET, name, device_type)) {
+        _LOGT(name, NULL, "Device already registered with manager, skipping.");
+        return;
+    }
+
     device = new_device_from_type(name, device_type);
     if (!device)
         return;
@@ -288,23 +291,31 @@ create_device(NMDeviceFactory      *self,
 {
     NMDeviceType device_type     = NM_DEVICE_TYPE_UNKNOWN;
     const char  *connection_type = NULL;
+    const char  *connection_uuid = NULL;
 
     if (g_strcmp0(iface, "ovs-system") == 0) {
         *out_ignore = TRUE;
         return NULL;
     }
 
-    if (connection)
+    if (connection) {
         connection_type = nm_connection_get_connection_type(connection);
+        connection_uuid = nm_connection_get_uuid(connection);
+    }
 
-    if (plink)
+    if (plink) {
+        _LOGD(iface, connection_uuid, "creating OVS interface (from a platform link)");
         device_type = NM_DEVICE_TYPE_OVS_INTERFACE;
-    else if (g_strcmp0(connection_type, NM_SETTING_OVS_INTERFACE_SETTING_NAME) == 0)
+    } else if (nm_streq0(connection_type, NM_SETTING_OVS_INTERFACE_SETTING_NAME)) {
+        _LOGD(iface, connection_uuid, "creating OVS interface (from setting)");
         device_type = NM_DEVICE_TYPE_OVS_INTERFACE;
-    else if (g_strcmp0(connection_type, NM_SETTING_OVS_PORT_SETTING_NAME) == 0)
+    } else if (nm_streq0(connection_type, NM_SETTING_OVS_PORT_SETTING_NAME)) {
+        _LOGD(iface, connection_uuid, "creating OVS port (from setting)");
         device_type = NM_DEVICE_TYPE_OVS_PORT;
-    else if (g_strcmp0(connection_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME) == 0)
+    } else if (nm_streq0(connection_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME)) {
+        _LOGD(iface, connection_uuid, "creating OVS bridge (from setting)");
         device_type = NM_DEVICE_TYPE_OVS_BRIDGE;
+    }
 
     return new_device_from_type(iface, device_type);
 }
diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c
index 2dbc842a..164bfd35 100644
--- a/src/core/devices/ovs/nm-ovsdb.c
+++ b/src/core/devices/ovs/nm-ovsdb.c
@@ -900,15 +900,17 @@ _insert_interface(json_t       *params,
         s_ovs_patch = nm_connection_get_setting_ovs_patch(interface);
 
     if (s_ovs_dpdk) {
-        const char *devargs;
-        guint32     n_rxq;
-        guint32     n_rxq_desc;
-        guint32     n_txq_desc;
+        const char                  *devargs;
+        guint32                      n_rxq;
+        guint32                      n_rxq_desc;
+        guint32                      n_txq_desc;
+        NMSettingOvsDpdkLscInterrupt lsc_int;
 
         devargs    = nm_setting_ovs_dpdk_get_devargs(s_ovs_dpdk);
         n_rxq      = nm_setting_ovs_dpdk_get_n_rxq(s_ovs_dpdk);
         n_rxq_desc = nm_setting_ovs_dpdk_get_n_rxq_desc(s_ovs_dpdk);
         n_txq_desc = nm_setting_ovs_dpdk_get_n_txq_desc(s_ovs_dpdk);
+        lsc_int    = nm_setting_ovs_dpdk_get_lsc_interrupt(s_ovs_dpdk);
 
         dpdk_array = json_array();
 
@@ -930,6 +932,17 @@ _insert_interface(json_t       *params,
                 json_pack("[s,s]", "n_txq_desc", nm_sprintf_buf(sbuf, "%u", n_txq_desc)));
         }
 
+        switch (lsc_int) {
+        case NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE:
+            break;
+        case NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED:
+            json_array_append_new(dpdk_array, json_pack("[s,s]", "dpdk-lsc-interrupt", "true"));
+            break;
+        case NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED:
+            json_array_append_new(dpdk_array, json_pack("[s,s]", "dpdk-lsc-interrupt", "false"));
+            break;
+        }
+
         json_array_append_new(options, dpdk_array);
 
     } else if (s_ovs_patch) {
@@ -1374,88 +1387,113 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
     nm_auto_decref_json json_t *bridges     = NULL;
     nm_auto_decref_json json_t *new_bridges = NULL;
     gboolean                    bridges_changed;
-    gboolean                    ports_changed;
-    gboolean                    interfaces_changed;
-    int                         pi;
-    int                         ii;
 
     bridges         = json_array();
     new_bridges     = json_array();
     bridges_changed = FALSE;
 
+    /* Loop over all bridges */
     g_hash_table_iter_init(&iter, priv->bridges);
     while (g_hash_table_iter_next(&iter, (gpointer) &ovs_bridge, NULL)) {
-        nm_auto_decref_json json_t *ports     = NULL;
-        nm_auto_decref_json json_t *new_ports = NULL;
+        nm_auto_decref_json json_t *ports         = NULL;
+        nm_auto_decref_json json_t *new_ports     = NULL;
+        guint                       num_nm_ports  = 0;
+        gboolean                    ports_changed = FALSE;
+        int                         pi;
 
-        ports         = json_array();
-        new_ports     = json_array();
-        ports_changed = FALSE;
+        ports     = json_array();
+        new_ports = json_array();
 
+        /* Add the bridge UUID to the list of known bridges for the "expect" condition */
         json_array_append_new(bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
 
+        if (!ovs_bridge->connection_uuid) {
+            /* Externally created, don't touch it */
+            json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
+            continue;
+        }
+
+        /* Loop over all bridge's ports */
         for (pi = 0; pi < ovs_bridge->ports->len; pi++) {
-            nm_auto_decref_json json_t *interfaces     = NULL;
-            nm_auto_decref_json json_t *new_interfaces = NULL;
+            nm_auto_decref_json json_t *interfaces         = NULL;
+            nm_auto_decref_json json_t *new_interfaces     = NULL;
+            guint                       num_nm_interfaces  = 0;
+            gboolean                    interfaces_changed = FALSE;
+            int                         ii;
 
             interfaces     = json_array();
             new_interfaces = json_array();
             port_uuid      = g_ptr_array_index(ovs_bridge->ports, pi);
             ovs_port       = g_hash_table_lookup(priv->ports, &port_uuid);
 
+            /* Add the port UUID to the list of known bridge port for the "expect" condition */
             json_array_append_new(ports, json_pack("[s,s]", "uuid", port_uuid));
 
-            interfaces_changed = FALSE;
-
             if (!ovs_port) {
                 /* This would be a violation of ovsdb's reference integrity (a bug). */
                 _LOGW("Unknown port '%s' in bridge '%s'", port_uuid, ovs_bridge->bridge_uuid);
                 continue;
             }
 
+            /* Loop over all port's interfaces */
             for (ii = 0; ii < ovs_port->interfaces->len; ii++) {
                 interface_uuid = g_ptr_array_index(ovs_port->interfaces, ii);
                 ovs_interface  = g_hash_table_lookup(priv->interfaces, &interface_uuid);
 
+                /* Add the interface UUID to the list of known port interfaces for the "expect" condition */
                 json_array_append_new(interfaces, json_pack("[s,s]", "uuid", interface_uuid));
 
                 if (ovs_interface) {
                     if (nm_streq(ovs_interface->name, ifname)) {
-                        /* skip the interface */
+                        /* We are deleting this interface, don't count it */
                         interfaces_changed = TRUE;
                         continue;
                     }
+                    if (ovs_interface->connection_uuid)
+                        num_nm_interfaces++;
                 } else {
                     /* This would be a violation of ovsdb's reference integrity (a bug). */
                     _LOGW("Unknown interface '%s' in port '%s'", interface_uuid, port_uuid);
                 }
 
+                /* Add the interface to the list of new interfaces to set on the port */
                 json_array_append_new(new_interfaces, json_pack("[s,s]", "uuid", interface_uuid));
             }
 
-            if (json_array_size(new_interfaces) == 0) {
+            if (num_nm_interfaces == 0) {
+                /* The port no longer has any NM interface. Don't add it to "new_ports" and set
+                 * ports_changed=TRUE, so that it will be deleted. */
                 ports_changed = TRUE;
             } else {
                 if (interfaces_changed) {
+                    /* An interface needs to be deleted from this port */
                     _expect_port_interfaces(params, ovs_port->name, interfaces);
                     _set_port_interfaces(params, ovs_port->name, new_interfaces);
                 }
+                /* The port is still alive */
                 json_array_append_new(new_ports, json_pack("[s,s]", "uuid", port_uuid));
+                if (ovs_port->connection_uuid)
+                    num_nm_ports++;
             }
         }
 
-        if (json_array_size(new_ports) == 0) {
+        if (num_nm_ports == 0) {
+            /* The bridge no longer has any NM port. Don't add it to "new_bridges" and set
+             * bridges_changed=TRUE, so that it will be deleted. */
             bridges_changed = TRUE;
         } else {
             if (ports_changed) {
+                /* A port needs to be deleted from this bridge */
                 _expect_bridge_ports(params, ovs_bridge->name, ports);
                 _set_bridge_ports(params, ovs_bridge->name, new_ports);
             }
+            /* The bridge is still alive */
             json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
         }
     }
 
     if (bridges_changed) {
+        /* A port needs to be deleted from this bridge */
         _expect_ovs_bridges(params, priv->db_uuid, bridges);
         _set_ovs_bridges(params, priv->db_uuid, new_bridges);
     }
@@ -2211,7 +2249,7 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
                                            ovs_bridge->connection_uuid,
                                            ""),
                       (strtmp1 = _strdict_to_string(ovs_bridge->external_ids)),
-                      (strtmp2 = _strdict_to_string(ovs_bridge->external_ids)));
+                      (strtmp2 = _strdict_to_string(ovs_bridge->other_config)));
             }
         } else {
             gs_free char *strtmp1 = NULL;
diff --git a/src/core/dhcp/nm-dhcp-options.c b/src/core/dhcp/nm-dhcp-options.c
index ce03c607..30cfd8e6 100644
--- a/src/core/dhcp/nm-dhcp-options.c
+++ b/src/core/dhcp/nm-dhcp-options.c
@@ -68,7 +68,7 @@ const NMDhcpOption _nm_dhcp_option_dhcp4_options[] = {
     REQ(NM_DHCP_OPTION_DHCP4_ARP_CACHE_TIMEOUT, "arp_cache_timeout", FALSE),
     REQ(NM_DHCP_OPTION_DHCP4_IEEE802_3_ENCAPSULATION, "ieee802_3_encapsulation", FALSE),
     REQ(NM_DHCP_OPTION_DHCP4_DEFAULT_TCP_TTL, "default_tcp_ttl", FALSE),
-    REQ(NM_DHCP_OPTION_DHCP4_TCP_KEEPALIVE_INTERVAL, "tcp_keepalive_internal", FALSE),
+    REQ(NM_DHCP_OPTION_DHCP4_TCP_KEEPALIVE_INTERVAL, "tcp_keepalive_interval", FALSE),
     REQ(NM_DHCP_OPTION_DHCP4_TCP_KEEPALIVE_GARBAGE, "tcp_keepalive_garbage", FALSE),
     REQ(NM_DHCP_OPTION_DHCP4_VENDOR_SPECIFIC, "vendor_encapsulated_options", FALSE),
     REQ(NM_DHCP_OPTION_DHCP4_NETBIOS_NAMESERVER, "netbios_name_servers", FALSE),
diff --git a/src/core/dhcp/nm-dhcp-systemd.c b/src/core/dhcp/nm-dhcp-systemd.c
index e1761523..b570f7e5 100644
--- a/src/core/dhcp/nm-dhcp-systemd.c
+++ b/src/core/dhcp/nm-dhcp-systemd.c
@@ -395,7 +395,7 @@ ip6_start(NMDhcpClient *client, const struct in6_addr *ll_addr, GError **error)
     prefix_delegation = FALSE;
     if (client_config->v6.needed_prefixes > 0) {
         if (client_config->v6.needed_prefixes > 1) {
-            /* FIXME: systemd-networkd API only allows to request a
+            /* FIXME: systemd-networkd API only allows requesting a
              * single prefix */
             _LOGW("dhcp-client6: only one prefix request is supported");
         }
diff --git a/src/core/dhcp/nm-dhcp-utils.c b/src/core/dhcp/nm-dhcp-utils.c
index 15293fa3..949d8720 100644
--- a/src/core/dhcp/nm-dhcp-utils.c
+++ b/src/core/dhcp/nm-dhcp-utils.c
@@ -1224,7 +1224,7 @@ lease_option_print_domain_name(const uint8_t  *cache,
         }
         case 0xC0: /* back pointer */
         {
-            size_t offset = (c & 0x3F) << 16;
+            size_t offset = (c & 0x3F) << 8;
 
             /*
              * The offset is given as two bytes (in big endian), where the
diff --git a/src/core/dhcp/tests/test-dhcp-utils.c b/src/core/dhcp/tests/test-dhcp-utils.c
index b81523e1..de1be653 100644
--- a/src/core/dhcp/tests/test-dhcp-utils.c
+++ b/src/core/dhcp/tests/test-dhcp-utils.c
@@ -239,6 +239,76 @@ test_parse_search_list(void)
     g_assert_cmpint(g_strv_length(domains), ==, 1);
     g_assert_cmpstr(domains[0], ==, "okay");
     g_strfreev(domains);
+
+    /* Test that the message compression works when the offset uses both bytes */
+    data = (guint8[]) {
+        /* clang-format off */
+         /* offset 0 */
+         0x3e,
+        'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a',
+        'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a',
+        'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a',
+        'a','a','a','a','a','a','a','a','a','a','a','a','a','a',
+        0x00,
+        /* offset 0x40 */
+        0x3e,
+        'b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b',
+        'b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b',
+        'b','b','b','b','b','b','b','b','b','b','b','b','b','b','b','b',
+        'b','b','b','b','b','b','b','b','b','b','b','b','b','b',
+        0x00,
+        /* offset 0x80 */
+        0x3e,
+        'c','c','c','c','c','c','c','c','c','c','c','c','c','c','c','c',
+        'c','c','c','c','c','c','c','c','c','c','c','c','c','c','c','c',
+        'c','c','c','c','c','c','c','c','c','c','c','c','c','c','c','c',
+        'c','c','c','c','c','c','c','c','c','c','c','c','c','c',
+        0x00,
+        /* offset 0xc0 */
+        0x3e,
+        'd','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d',
+        'd','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d',
+        'd','d','d','d','d','d','d','d','d','d','d','d','d','d','d','d',
+        'd','d','d','d','d','d','d','d','d','d','d','d','d','d',
+        0x00,
+        /* offset 0x100 */
+        0x3e,
+        'e','e','e','e','e','e','e','e','e','e','e','e','e','e','e','e',
+        'e','e','e','e','e','e','e','e','e','e','e','e','e','e','e','e',
+        'e','e','e','e','e','e','e','e','e','e','e','e','e','e','e','e',
+        'e','e','e','e','e','e','e','e','e','e','e','e','e','e',
+        0x00,
+        /* offset 0x140 */
+        0x06, 'f','o','o','b','a','r', 0x03, 'c', 'o', 'm', 0x00,
+        0x04, 't', 'e', 's', 't', 0xc1, 0x40, /* back pointer to offset 0x140*/
+        /* clang-format on */
+    };
+
+    domains = nm_dhcp_lease_data_parse_search_list(data,
+                                                   0x153,
+                                                   "eth0",
+                                                   AF_INET,
+                                                   NM_DHCP_OPTION_DHCP4_DOMAIN_SEARCH_LIST);
+    g_assert(domains);
+    g_assert_cmpint(g_strv_length(domains), ==, 7);
+    g_assert_cmpstr(domains[0],
+                    ==,
+                    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+    g_assert_cmpstr(domains[1],
+                    ==,
+                    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
+    g_assert_cmpstr(domains[2],
+                    ==,
+                    "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");
+    g_assert_cmpstr(domains[3],
+                    ==,
+                    "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
+    g_assert_cmpstr(domains[4],
+                    ==,
+                    "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
+    g_assert_cmpstr(domains[5], ==, "foobar.com");
+    g_assert_cmpstr(domains[6], ==, "test.foobar.com");
+    g_strfreev(domains);
 }
 
 static void
diff --git a/src/core/dns/nm-dns-dnsconfd.c b/src/core/dns/nm-dns-dnsconfd.c
index c17fb9cf..3789caf8 100644
--- a/src/core/dns/nm-dns-dnsconfd.c
+++ b/src/core/dns/nm-dns-dnsconfd.c
@@ -368,7 +368,8 @@ server_builder_append_base(GVariantBuilder   *argument_builder,
                            const char        *address_string,
                            const char *const *routing_domains,
                            const char *const *search_domains,
-                           const char        *ca)
+                           const char        *ca,
+                           int                priority)
 {
     NMDnsServer dns_server;
     gsize       addr_size;
@@ -392,6 +393,12 @@ server_builder_append_base(GVariantBuilder   *argument_builder,
                               "{sv}",
                               "name",
                               g_variant_new("s", dns_server.servername));
+    if (dns_server.port != NM_DNS_PORT_UNDEFINED) {
+        g_variant_builder_add(argument_builder,
+                              "{sv}",
+                              "port",
+                              g_variant_new("i", dns_server.port));
+    }
     if (routing_domains) {
         g_variant_builder_add(argument_builder,
                               "{sv}",
@@ -407,6 +414,9 @@ server_builder_append_base(GVariantBuilder   *argument_builder,
     if (ca) {
         g_variant_builder_add(argument_builder, "{sv}", "ca", g_variant_new("s", ca));
     }
+    /* dnsconfd defines priority as bigger number equals bigger priority, while NM
+     * uses the exact opposite, thus use -priority */
+    g_variant_builder_add(argument_builder, "{sv}", "priority", g_variant_new("i", -priority));
     return TRUE;
 }
 
@@ -443,7 +453,8 @@ parse_global_config(const NMGlobalDnsConfig *global_config,
                                            servers[j],
                                            routing_domains,
                                            searches,
-                                           *ca)) {
+                                           *ca,
+                                           NM_DNS_PRIORITY_DEFAULT_NORMAL)) {
                 g_variant_builder_close(argument_builder);
             }
         }
@@ -560,7 +571,7 @@ dnsconfd_start_done(GObject *source_object, GAsyncResult *res, gpointer user_dat
         g_dbus_error_strip_remote_error(error);
         _LOGW("failed to start Dnsconfd %s", error->message);
     } else {
-        _LOGT("succesfully started Dnsconfd");
+        _LOGT("successfully started Dnsconfd");
     }
 
     /* No update maybe changed or state change, as this is handled by the name owner callbacks
@@ -628,6 +639,7 @@ parse_all_interface_config(GVariantBuilder *argument_builder,
     NMDnsConfigIPData *ip_data;
     const char *const *dns_server_strings;
     guint              nameserver_count;
+    int                priority;
     const char        *ifname;
     gboolean           explicit_default = is_default_interface_explicit(ip_data_lst_head);
 
@@ -648,6 +660,9 @@ parse_all_interface_config(GVariantBuilder *argument_builder,
 
         gather_interface_domains(ip_data, explicit_default, &routing_domains, &search_domains);
         get_networks(ip_data, &networks);
+        if (!nm_l3_config_data_get_dns_priority(ip_data->l3cd, ip_data->addr_family, &priority)) {
+            priority = NM_DNS_PRIORITY_DEFAULT_NORMAL;
+        }
 
         for (guint i = 0; i < nameserver_count; i++) {
             if (server_builder_append_base(argument_builder,
@@ -655,7 +670,8 @@ parse_all_interface_config(GVariantBuilder *argument_builder,
                                            dns_server_strings[i],
                                            routing_domains,
                                            search_domains,
-                                           ca)) {
+                                           ca,
+                                           priority)) {
                 server_builder_append_interface_info(argument_builder, ifname, networks);
             }
         }
diff --git a/src/core/ndisc/nm-lndp-ndisc.c b/src/core/ndisc/nm-lndp-ndisc.c
index 33e9ebf3..f0de2fd5 100644
--- a/src/core/ndisc/nm-lndp-ndisc.c
+++ b/src/core/ndisc/nm-lndp-ndisc.c
@@ -218,10 +218,22 @@ receive_ra(struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
 
         /* Address */
         if (r_plen == 64 && ndp_msg_opt_prefix_flag_auto_addr_conf(msg, offset)) {
-            const guint32 valid_time = ndp_msg_opt_prefix_valid_time(msg, offset);
-            const guint32 preferred_time =
-                NM_MIN(ndp_msg_opt_prefix_preferred_time(msg, offset), valid_time);
-            const NMNDiscAddress address = {
+            const guint32  valid_time     = ndp_msg_opt_prefix_valid_time(msg, offset);
+            const guint32  preferred_time = ndp_msg_opt_prefix_preferred_time(msg, offset);
+            NMNDiscAddress address;
+
+            /*
+             * RFC 4862 Section 5.5.3 states:
+             * c)  If the preferred lifetime is greater than the valid lifetime,
+             * silently ignore the Prefix Information option. A node MAY wish to
+             * log a system management error in this case.
+             */
+            if (preferred_time > valid_time) {
+                _LOGW("skipping PIO - preferred lifetime > valid lifetime");
+                continue;
+            }
+
+            address = (NMNDiscAddress) {
                 .address               = r_network,
                 .expiry_msec           = _nm_ndisc_lifetime_to_expiry(now_msec, valid_time),
                 .expiry_preferred_msec = _nm_ndisc_lifetime_to_expiry(now_msec, preferred_time),
diff --git a/src/core/ndisc/nm-ndisc.c b/src/core/ndisc/nm-ndisc.c
index ad2edd8d..1a2bf480 100644
--- a/src/core/ndisc/nm-ndisc.c
+++ b/src/core/ndisc/nm-ndisc.c
@@ -1490,7 +1490,7 @@ clean_addresses(NMNDisc *ndisc, gint64 now_msec, NMNDiscConfigMap *changed, gint
         g_array_set_size(rdata->addresses, j);
     }
 
-    if (_array_set_size_max(rdata->gateways, priv->config.max_addresses))
+    if (_array_set_size_max(rdata->addresses, priv->config.max_addresses))
         *changed |= NM_NDISC_CONFIG_ADDRESSES;
 }
 
@@ -1830,7 +1830,7 @@ _config_init(NMNDiscConfig *config, const NMNDiscConfig *src)
     nm_assert(config);
     g_return_if_fail(src);
 
-    /* we only allow to set @config if it was cleared (or is not yet initialized). */
+    /* we only allow one to set @config if it was cleared (or is not yet initialized). */
     nm_assert(!config->l3cfg);
     nm_assert(!config->ifname);
     nm_assert(!config->network_id);
diff --git a/src/core/nm-bond-manager.c b/src/core/nm-bond-manager.c
index 116cb737..abaab7d4 100644
--- a/src/core/nm-bond-manager.c
+++ b/src/core/nm-bond-manager.c
@@ -916,21 +916,21 @@ nm_bond_manager_send_arp(int                 bond_ifindex,
     if (announce_fdb) {
         /* if we are announcing the FDB we do a RARP, we don't set the
          * source/dest IPv4 address */
-        int                   ifindexes[] = {bridge_ifindex, bond_ifindex};
-        int                   i;
-        gs_free NMEtherAddr **fdb_addrs = NULL;
+        int                         ifindexes[] = {bridge_ifindex, bond_ifindex};
+        int                         i;
+        nm_auto_freev NMEtherAddr **fdb_addrs = NULL;
 
-        fdb_addrs = nm_linux_platform_get_link_fdb_table(platform, ifindexes, 2);
+        fdb_addrs = nm_linux_platform_get_bridge_fdb(platform, ifindexes, 2);
         /* we want to send a Reverse ARP (RARP) packet */
         data.op = htons(ARP_OP_RARP);
 
         i = 0;
         while (fdb_addrs[i] != NULL) {
             NMEtherAddr *tmp_hwaddr = fdb_addrs[i];
+
             memcpy(data.s_hw_addr, tmp_hwaddr, ETH_ALEN);
             memcpy(data.d_hw_addr, tmp_hwaddr, ETH_ALEN);
             memcpy(data.s_addr, tmp_hwaddr, ETH_ALEN);
-            g_free(tmp_hwaddr);
             if (sendto(sockfd, &data, sizeof(data), 0, (struct sockaddr *) &addr, sizeof(addr)) < 0)
                 return FALSE;
             i++;
diff --git a/src/core/nm-core-utils.c b/src/core/nm-core-utils.c
index 895a9917..d3c2eb21 100644
--- a/src/core/nm-core-utils.c
+++ b/src/core/nm-core-utils.c
@@ -4642,13 +4642,13 @@ get_max_rate_vht_80_ss3(int mcs)
     case 5:
         return 702000000;
     case 6:
-        return 0;
+        return 0; /* invalid */
     case 7:
         return 877500000;
     case 8:
-        return 105300000;
+        return 1053000000;
     case 9:
-        return 117000000;
+        return 1170000000;
     }
     return 0;
 }
@@ -4732,7 +4732,7 @@ get_max_rate_vht_160_ss3(int mcs)
     case 8:
         return 2106000000;
     case 9:
-        return 0;
+        return 0; /* invalid */
     }
     return 0;
 }
@@ -5417,7 +5417,7 @@ again:
     if ((g = g_atomic_int_get(&g_static)) == -1) {
         gid_t g2;
 
-        g2 = geteuid();
+        g2 = getegid();
         g  = g2;
         nm_assert(g == g2);
         nm_assert(g >= 0);
diff --git a/src/core/nm-l3-config-data.c b/src/core/nm-l3-config-data.c
index 70867ff7..20623145 100644
--- a/src/core/nm-l3-config-data.c
+++ b/src/core/nm-l3-config-data.c
@@ -1419,6 +1419,9 @@ _check_and_add_domain(GPtrArray **p_arr, const char *domain)
     if (domain[0] == '.' || strstr(domain, ".."))
         return FALSE;
 
+    if (!g_utf8_validate(domain, -1, NULL))
+        return FALSE;
+
     len = strlen(domain);
     if (domain[len - 1] == '.') {
         copy   = g_strndup(domain, len - 1);
diff --git a/src/core/nm-l3cfg.c b/src/core/nm-l3cfg.c
index a9aa506d..1797cd0f 100644
--- a/src/core/nm-l3cfg.c
+++ b/src/core/nm-l3cfg.c
@@ -2294,7 +2294,7 @@ _l3_acd_data_timeout_schedule(AcdData *acd_data, gint64 timeout_msec)
      * expect timeouts in certain states.
      *
      * That means, scheduling a timeout is only correct if we are in a certain
-     * state, which allows to handle timeouts. This assert checks for that to
+     * state, which allows one to handle timeouts. This assert checks for that to
      * ensure we don't call a timeout in an unexpected state. */
     nm_assert(NM_IN_SET(acd_data->info.state,
                         NM_L3_ACD_ADDR_STATE_PROBING,
@@ -2751,9 +2751,8 @@ handle_init:
                     goto handle_start_defending;
                 }
 
-                acd_data->probing_timestamp_msec = (*p_now_msec);
-                acd_data->probing_timeout_msec   = acd_timeout_msec;
-                log_reason                       = "retry probing on timeout";
+                acd_data->probing_timeout_msec = acd_timeout_msec;
+                log_reason                     = "retry probing on timeout";
                 goto handle_start_probing;
             }
 
@@ -3050,7 +3049,7 @@ handle_start_probing:
         if (!acd_data->nacd_probe) {
             _LOGT_acd(acd_data,
                       "probing currently %snot possible (timeout %u msec; %s, %s)",
-                      orig_state == NM_L3_ACD_ADDR_STATE_INIT ? "" : " still",
+                      orig_state == NM_L3_ACD_ADDR_STATE_INIT ? "" : "still ",
                       acd_data->probing_timeout_msec,
                       failure_reason,
                       log_reason);
diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c
index a861b2fe..fce37071 100644
--- a/src/core/nm-manager.c
+++ b/src/core/nm-manager.c
@@ -478,7 +478,9 @@ _version_info_get(void)
          * Each of the array's elements has 32 bits. This means that capabilities
          * with index 0-31 goes to element #1, with index 32-63 to element #2,
          * with index 64-95 to element #3 and so on. */
-        1 << NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE,
+        (1 << NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE)
+            | (1 << NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING)
+            | (1 << NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN),
     };
 
     return nm_g_variant_new_au(arr, G_N_ELEMENTS(arr));
@@ -4250,6 +4252,7 @@ add:
         case NM_LINK_TYPE_OLPC_MESH:
         case NM_LINK_TYPE_TEAM:
         case NM_LINK_TYPE_WIFI:
+        case NM_LINK_TYPE_OPENVSWITCH:
             _LOGI(LOGD_PLATFORM,
                   "(%s): '%s' plugin not available; creating generic device",
                   plink->name,
@@ -4689,16 +4692,10 @@ found_better:
         if (nm_g_hash_table_contains(exclude_devices, device))
             continue;
 
-        /* During startup, NM performs a cleanup of the ovsdb to remove previous entries.
-         * Before the device is suitable for the connection, it must have ovsdb->ready set
-         * to TRUE. Performing this check in all kind of interfaces is too agressive and leads
-         * to race conditions, e.g when a non-virtual bond port gets a carrier, preventing the
-         * device to be a good candidate for the connection. */
-        if (nm_device_get_device_type(device) == NM_DEVICE_TYPE_OVS_INTERFACE
-            && !nm_device_is_available(device,
-                                       for_user_request
-                                           ? NM_DEVICE_CHECK_DEV_AVAILABLE_FOR_USER_REQUEST
-                                           : NM_DEVICE_CHECK_DEV_AVAILABLE_NONE))
+        if (!nm_device_is_available(device,
+                                    for_user_request
+                                        ? NM_DEVICE_CHECK_DEV_AVAILABLE_FOR_USER_REQUEST
+                                        : NM_DEVICE_CHECK_DEV_AVAILABLE_NONE))
             continue;
 
         /* determine the priority of this device. Currently, this priority is independent
diff --git a/src/core/nm-netns.c b/src/core/nm-netns.c
index 57dbe9c5..f481bc36 100644
--- a/src/core/nm-netns.c
+++ b/src/core/nm-netns.c
@@ -75,7 +75,7 @@ typedef struct {
     /* Indexes the watcher handles. */
     GHashTable *watcher_idx;
 
-    /* An index of WatcherByTag. It allows to lookup watcher handles by tag.
+    /* An index of WatcherByTag. It allows one to lookup watcher handles by tag.
      * Handles without tag are not indexed. */
     GHashTable *watcher_by_tag_idx;
 
diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c
index 33073e4a..fbcee40d 100644
--- a/src/core/nm-policy.c
+++ b/src/core/nm-policy.c
@@ -18,6 +18,7 @@
 #include "NetworkManagerUtils.h"
 #include "devices/nm-device.h"
 #include "devices/nm-device-factory.h"
+#include "devices/nm-device-private.h"
 #include "dns/nm-dns-manager.h"
 #include "nm-act-request.h"
 #include "nm-auth-utils.h"
@@ -97,7 +98,6 @@ typedef struct {
     bool updating_dns : 1;
 
     GArray *ip6_prefix_delegations; /* pool of ip6 prefixes delegated to all devices */
-
 } NMPolicyPrivate;
 
 struct _NMPolicy {
@@ -155,17 +155,15 @@ static gboolean  hostname_retry_cb(gpointer user_data);
 
 typedef struct {
     NMPlatformIP6Address prefix;
-    NMDevice            *device;      /* The requesting ("uplink") device */
-    guint64              next_subnet; /* Cache of the next subnet number to be
-                                       * assigned from this prefix */
-    GHashTable          *subnets;     /* ifindex -> NMPlatformIP6Address */
+    NMDevice            *device;                   /* The requesting ("uplink") device */
+    GHashTable          *map_subnet_id_to_ifindex; /* (guint64 *) subnet_id -> int ifindex */
+    GHashTable          *map_ifindex_to_subnet; /* int ifindex -> (NMPlatformIP6Address *) prefix */
 } IP6PrefixDelegation;
 
 static void
-_clear_ip6_subnet(gpointer key, gpointer value, gpointer user_data)
+clear_ip6_subnet(int ifindex, NMPlatformIP6Address *subnet)
 {
-    NMPlatformIP6Address *subnet = value;
-    NMDevice *device = nm_manager_get_device_by_ifindex(NM_MANAGER_GET, GPOINTER_TO_INT(key));
+    NMDevice *device = nm_manager_get_device_by_ifindex(NM_MANAGER_GET, ifindex);
 
     if (device) {
         /* We can not remove a subnet we already started announcing.
@@ -177,6 +175,12 @@ _clear_ip6_subnet(gpointer key, gpointer value, gpointer user_data)
 }
 
 static void
+clear_ip6_subnet_entry(gpointer key, gpointer value, gpointer user_data)
+{
+    clear_ip6_subnet(GPOINTER_TO_INT(key), value);
+}
+
+static void
 clear_ip6_prefix_delegation(gpointer data)
 {
     IP6PrefixDelegation *delegation = data;
@@ -187,8 +191,9 @@ clear_ip6_prefix_delegation(gpointer data)
           nm_inet6_ntop(&delegation->prefix.address, sbuf),
           delegation->prefix.plen);
 
-    g_hash_table_foreach(delegation->subnets, _clear_ip6_subnet, NULL);
-    g_hash_table_destroy(delegation->subnets);
+    g_hash_table_foreach(delegation->map_ifindex_to_subnet, clear_ip6_subnet_entry, NULL);
+    g_hash_table_destroy(delegation->map_ifindex_to_subnet);
+    g_hash_table_destroy(delegation->map_subnet_id_to_ifindex);
 }
 
 static void
@@ -215,46 +220,112 @@ expire_ip6_delegations(NMPolicy *self)
 static gboolean
 ip6_subnet_from_delegation(IP6PrefixDelegation *delegation, NMDevice *device)
 {
-    NMPlatformIP6Address *subnet;
-    int                   ifindex = nm_device_get_ifindex(device);
-    char                  sbuf[NM_INET_ADDRSTRLEN];
-
-    subnet = g_hash_table_lookup(delegation->subnets, GINT_TO_POINTER(ifindex));
-    if (!subnet) {
-        /* Check for out-of-prefixes condition. */
-        if (delegation->next_subnet >= (1 << (64 - delegation->prefix.plen))) {
-            _LOGD(LOGD_IP6,
-                  "ipv6-pd: no more prefixes in %s/%d",
-                  nm_inet6_ntop(&delegation->prefix.address, sbuf),
-                  delegation->prefix.plen);
-            return FALSE;
+    NMPlatformIP6Address      *subnet;
+    int                        ifindex = nm_device_get_ifindex(device);
+    char                       sbuf[NM_INET_ADDRSTRLEN];
+    NMSettingPrefixDelegation *s_pd;
+    gint64                     wanted_subnet_id = -1;
+    guint64                    num_subnets;
+    guint64                    old_subnet_id;
+
+    nm_assert(delegation->prefix.plen > 0 && delegation->prefix.plen <= 64);
+
+    s_pd = nm_device_get_applied_setting(device, NM_TYPE_SETTING_PREFIX_DELEGATION);
+    if (s_pd) {
+        wanted_subnet_id = nm_setting_prefix_delegation_get_subnet_id(s_pd);
+    }
+
+    /* Try to use the cached subnet assigned to the interface */
+    subnet = g_hash_table_lookup(delegation->map_ifindex_to_subnet, GINT_TO_POINTER(ifindex));
+    if (subnet) {
+        old_subnet_id = nm_ip6_addr_get_subnet_id(&subnet->address, delegation->prefix.plen);
+        if (wanted_subnet_id != -1 && wanted_subnet_id != old_subnet_id) {
+            /* The device had a subnet assigned before, but now wants a
+             * different subnet-id. Release the old subnet and continue below
+             * to get a new one. */
+            clear_ip6_subnet(ifindex, subnet);
+            subnet = NULL;
+            g_hash_table_remove(delegation->map_ifindex_to_subnet, GINT_TO_POINTER(ifindex));
+            g_hash_table_remove(delegation->map_subnet_id_to_ifindex, &old_subnet_id);
+        } else {
+            goto subnet_found;
         }
+    }
 
-        /* Allocate a new subnet. */
-        subnet = g_slice_new0(NMPlatformIP6Address);
-        g_hash_table_insert(delegation->subnets, GINT_TO_POINTER(ifindex), subnet);
+    /* Check for out-of-prefixes condition */
+    num_subnets = 1 << (64 - delegation->prefix.plen);
+    if (nm_g_hash_table_size(delegation->map_subnet_id_to_ifindex) >= num_subnets) {
+        _LOGD(LOGD_IP6,
+              "ipv6-pd: no more prefixes in %s/%u",
+              nm_inet6_ntop(&delegation->prefix.address, sbuf),
+              delegation->prefix.plen);
+        return FALSE;
+    }
+
+    /* Try to honor the "prefix-delegation.subnet-id" property */
+    if (wanted_subnet_id >= 0) {
+        gpointer  value;
+        NMDevice *other_device;
+
+        if (g_hash_table_lookup_extended(delegation->map_subnet_id_to_ifindex,
+                                         &wanted_subnet_id,
+                                         NULL,
+                                         &value)) {
+            other_device = nm_manager_get_device_by_ifindex(NM_MANAGER_GET, GPOINTER_TO_INT(value));
+            _LOGW(LOGD_IP6,
+                  "ipv6-pd: subnet-id 0x%" G_GINT64_MODIFIER
+                  "x wanted by device %s is already in use by "
+                  "device %s (ifindex %d)",
+                  (guint64) wanted_subnet_id,
+                  nm_device_get_iface(device),
+                  other_device ? nm_device_get_ip_iface(other_device) : NULL,
+                  GPOINTER_TO_INT(value));
+            wanted_subnet_id = -1;
+        }
+    }
+
+    /* If we don't have a subnet-id yet, find the first one available */
+    if (wanted_subnet_id < 0) {
+        guint64 i;
 
-        subnet->plen = 64;
-        subnet->address.s6_addr32[0] =
-            delegation->prefix.address.s6_addr32[0] | htonl(delegation->next_subnet >> 32);
-        subnet->address.s6_addr32[1] =
-            delegation->prefix.address.s6_addr32[1] | htonl(delegation->next_subnet);
+        for (i = 0; i < num_subnets; i++) {
+            if (!g_hash_table_lookup_extended(delegation->map_subnet_id_to_ifindex,
+                                              &i,
+                                              NULL,
+                                              NULL)) {
+                wanted_subnet_id = (gint64) i;
+                break;
+            }
+        }
 
-        /* Out subnet pool management is pretty unsophisticated. We only add
-         * the subnets and index them by ifindex. That keeps the implementation
-         * simple and the dead entries make it easy to reuse the same subnet on
-         * subsequent activations. On the other hand they may waste the subnet
-         * space. */
-        delegation->next_subnet++;
+        if (wanted_subnet_id < 0) {
+            /* We already verified that there are available subnets, this should not happen */
+            return nm_assert_unreachable_val(FALSE);
+        }
     }
 
+    /* Allocate a new subnet */
+    subnet = g_slice_new0(NMPlatformIP6Address);
+    g_hash_table_insert(delegation->map_ifindex_to_subnet, GINT_TO_POINTER(ifindex), subnet);
+    g_hash_table_insert(delegation->map_subnet_id_to_ifindex,
+                        nm_memdup(&wanted_subnet_id, sizeof(guint64)),
+                        GINT_TO_POINTER(ifindex));
+
+    subnet->plen = 64;
+    subnet->address.s6_addr32[0] =
+        delegation->prefix.address.s6_addr32[0] | htonl(wanted_subnet_id >> 32);
+    subnet->address.s6_addr32[1] =
+        delegation->prefix.address.s6_addr32[1] | htonl(wanted_subnet_id);
+
+subnet_found:
     subnet->timestamp = delegation->prefix.timestamp;
     subnet->lifetime  = delegation->prefix.lifetime;
     subnet->preferred = delegation->prefix.preferred;
 
     _LOGD(LOGD_IP6,
-          "ipv6-pd: %s allocated from a /%d prefix on %s",
+          "ipv6-pd: %s/64 (subnet-id 0x%" G_GINT64_MODIFIER "x) allocated from a /%d prefix on %s",
           nm_inet6_ntop(&subnet->address, sbuf),
+          (guint64) wanted_subnet_id,
           delegation->prefix.plen,
           nm_device_get_iface(device));
 
@@ -345,8 +416,9 @@ device_ip6_prefix_delegated(NMDevice                   *device,
     if (i == priv->ip6_prefix_delegations->len) {
         /* Allocate a delegation for new prefix. */
         delegation = nm_g_array_append_new(priv->ip6_prefix_delegations, IP6PrefixDelegation);
-        delegation->subnets     = g_hash_table_new(nm_direct_hash, NULL);
-        delegation->next_subnet = 0;
+        delegation->map_subnet_id_to_ifindex =
+            g_hash_table_new_full(nm_puint64_hash, nm_puint64_equal, g_free, NULL);
+        delegation->map_ifindex_to_subnet = g_hash_table_new(nm_direct_hash, NULL);
     }
 
     delegation->device = device;
@@ -960,7 +1032,7 @@ update_system_hostname(NMPolicy *self, const char *msg, gboolean reset_retry_int
 
     /* Try a persistent hostname first */
     configured_hostname = nm_hostname_manager_get_static_hostname(priv->hostname_manager);
-    if (configured_hostname && nm_utils_is_specific_hostname(configured_hostname)) {
+    if (configured_hostname && nm_utils_is_not_empty_hostname(configured_hostname)) {
         _set_hostname(self, configured_hostname, "from system configuration", FALSE);
         priv->dhcp_hostname = FALSE;
         return;
@@ -2012,6 +2084,65 @@ unblock_autoconnect_for_ports_for_sett_conn(NMPolicy *self, NMSettingsConnection
 }
 
 static void
+refresh_forwarding(NMPolicy *self, NMDevice *device, gboolean is_activated_shared_device)
+{
+    NMActiveConnection *ac;
+    NMDevice           *tmp_device;
+    NMPolicyPrivate    *priv = NM_POLICY_GET_PRIVATE(self);
+    const CList        *tmp_lst;
+    gboolean            any_shared_active = false;
+    gint32              default_forwarding_v4;
+    const char         *new_value = NULL;
+
+    /* FIXME: This implementation is still inefficient because refresh_forwarding()
+     * is called every time a device goes up or down, requiring a full scan of all
+     * active connections to determine if any shared connection is active. */
+    nm_manager_for_each_active_connection (priv->manager, ac, tmp_lst) {
+        NMSettingIPConfig *s_ip;
+        NMDevice          *to_device = nm_active_connection_get_device(ac);
+
+        if (to_device) {
+            s_ip = nm_device_get_applied_setting(to_device, NM_TYPE_SETTING_IP4_CONFIG);
+            if (s_ip) {
+                if (nm_streq0(nm_device_get_effective_ip_config_method(to_device, AF_INET),
+                              NM_SETTING_IP4_CONFIG_METHOD_SHARED)) {
+                    any_shared_active = true;
+                    break;
+                }
+            }
+        }
+    }
+
+    default_forwarding_v4 = nm_platform_sysctl_get_int32(
+        NM_PLATFORM_GET,
+        NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/conf/default/forwarding"),
+        0);
+
+    new_value = any_shared_active ? "1" : (default_forwarding_v4 ? "1" : "0");
+
+    nm_manager_for_each_device (priv->manager, tmp_device, tmp_lst) {
+        NMDeviceState               state;
+        NMSettingIPConfigForwarding ipv4_forwarding;
+
+        state = nm_device_get_state(tmp_device);
+        if (state != NM_DEVICE_STATE_ACTIVATED)
+            continue;
+
+        ipv4_forwarding = nm_device_get_ipv4_forwarding(tmp_device);
+
+        if (ipv4_forwarding == NM_SETTING_IP_CONFIG_FORWARDING_AUTO
+            || (device == tmp_device && is_activated_shared_device)) {
+            gs_free char *sysctl_value = NULL;
+
+            sysctl_value = nm_device_sysctl_ip_conf_get(tmp_device, AF_INET, "forwarding");
+
+            if (!nm_streq0(sysctl_value, new_value))
+                nm_device_sysctl_ip_conf_set(tmp_device, AF_INET, "forwarding", new_value);
+        }
+    }
+}
+
+static void
 activate_port_or_children_connections(NMPolicy *self,
                                       NMDevice *device,
                                       gboolean  activate_children_connections_only)
@@ -2155,8 +2286,9 @@ device_state_changed(NMDevice           *device,
     NMPolicyPrivate      *priv = user_data;
     NMPolicy             *self = _PRIV_TO_SELF(priv);
     NMActiveConnection   *ac;
-    NMSettingsConnection *sett_conn = nm_device_get_settings_connection(device);
-    NMSettingConnection  *s_con     = NULL;
+    NMSettingsConnection *sett_conn                  = nm_device_get_settings_connection(device);
+    NMSettingConnection  *s_con                      = NULL;
+    gboolean              is_activated_shared_device = FALSE;
 
     switch (nm_device_state_reason_check(reason)) {
     case NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED:
@@ -2211,8 +2343,10 @@ device_state_changed(NMDevice           *device,
                 con_v = nm_settings_connection_get_last_secret_agent_version_id(sett_conn);
                 if (con_v == 0 || con_v == nm_agent_manager_get_agent_version_id(priv->agent_mgr)) {
                     _LOGD(LOGD_DEVICE,
-                          "block-autoconnect: connection '%s' now blocked from autoconnect due to "
-                          "no secrets",
+                          "block-autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT
+                          "] (%s) now blocked from "
+                          "autoconnect due to no secrets",
+                          NM_HASH_OBFUSCATE_PTR(sett_conn),
                           nm_settings_connection_get_id(sett_conn));
                     nm_settings_connection_autoconnect_blocked_reason_set(
                         sett_conn,
@@ -2230,10 +2364,10 @@ device_state_changed(NMDevice           *device,
                  * be marked as blocked when it fails with dependency-failed.
                  */
                 _LOGD(LOGD_DEVICE,
-                      "block-autoconnect: connection[%p] (%s) now blocked from autoconnect due to "
-                      "failed "
-                      "dependency",
-                      sett_conn,
+                      "block-autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT
+                      "] (%s) now blocked "
+                      "from autoconnect due to failed dependency",
+                      NM_HASH_OBFUSCATE_PTR(sett_conn),
                       nm_settings_connection_get_id(sett_conn));
                 nm_manager_devcon_autoconnect_blocked_reason_set(
                     priv->manager,
@@ -2255,20 +2389,25 @@ device_state_changed(NMDevice           *device,
                     /* blocked */
                 } else if (tries != NM_AUTOCONNECT_RETRIES_FOREVER) {
                     _LOGD(LOGD_DEVICE,
-                          "autoconnect: connection[%p] (%s): failed to autoconnect; %u tries left",
-                          sett_conn,
+                          "autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT "] (%s): failed to "
+                          "autoconnect; %u tries left",
+                          NM_HASH_OBFUSCATE_PTR(sett_conn),
                           nm_settings_connection_get_id(sett_conn),
                           tries - 1u);
                     _connection_autoconnect_retries_set(self, device, sett_conn, tries - 1u);
                 } else {
                     _LOGD(LOGD_DEVICE,
-                          "autoconnect: connection[%p] (%s) failed to autoconnect; infinite tries "
-                          "left",
-                          sett_conn,
+                          "autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT "] (%s) failed to "
+                          "autoconnect; infinite tries left",
+                          NM_HASH_OBFUSCATE_PTR(sett_conn),
                           nm_settings_connection_get_id(sett_conn));
                 }
             }
         }
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
     case NM_DEVICE_STATE_ACTIVATED:
         if (nm_device_get_device_type(device) == NM_DEVICE_TYPE_OVS_INTERFACE) {
@@ -2301,11 +2440,20 @@ device_state_changed(NMDevice           *device,
         update_system_hostname(self, "routing and dns", TRUE);
         nm_dns_manager_end_updates(priv->dns_manager, __func__);
 
+        is_activated_shared_device =
+            nm_streq0(nm_device_get_effective_ip_config_method(device, AF_INET),
+                      NM_SETTING_IP4_CONFIG_METHOD_SHARED);
+        refresh_forwarding(self, device, is_activated_shared_device);
+        nm_device_set_refresh_forwarding_done(device, FALSE);
         break;
     case NM_DEVICE_STATE_UNMANAGED:
     case NM_DEVICE_STATE_UNAVAILABLE:
         if (old_state > NM_DEVICE_STATE_DISCONNECTED)
             update_routing_and_dns(self, FALSE, device);
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
     case NM_DEVICE_STATE_DEACTIVATING:
         if (sett_conn) {
@@ -2341,6 +2489,10 @@ device_state_changed(NMDevice           *device,
             }
         }
         ip6_remove_device_prefix_delegations(self, device);
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
     case NM_DEVICE_STATE_DISCONNECTED:
         g_signal_handlers_disconnect_by_func(device, device_dns_lookup_done, self);
@@ -2357,6 +2509,10 @@ device_state_changed(NMDevice           *device,
 
         /* Device is now available for auto-activation */
         nm_policy_device_recheck_auto_activate_schedule(self, device);
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
 
     case NM_DEVICE_STATE_PREPARE:
@@ -2372,6 +2528,10 @@ device_state_changed(NMDevice           *device,
             g_object_weak_unref(G_OBJECT(ac), pending_ac_gone, self);
             g_object_unref(self);
         }
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
     case NM_DEVICE_STATE_IP_CONFIG:
         /* We must have secrets if we got here. */
@@ -2382,6 +2542,10 @@ device_state_changed(NMDevice           *device,
                 sett_conn,
                 NM_SETTINGS_AUTOCONNECT_BLOCKED_REASON_FAILED,
                 FALSE);
+        if (!nm_device_get_refresh_forwarding_done(device)) {
+            refresh_forwarding(self, device, FALSE);
+            nm_device_set_refresh_forwarding_done(device, TRUE);
+        }
         break;
     case NM_DEVICE_STATE_SECONDARIES:
         if (sett_conn)
diff --git a/src/core/platform/nm-fake-platform.c b/src/core/platform/nm-fake-platform.c
index 10c69f63..e0d51b70 100644
--- a/src/core/platform/nm-fake-platform.c
+++ b/src/core/platform/nm-fake-platform.c
@@ -117,7 +117,7 @@ ip6_address_delete(NMPlatform *platform, int ifindex, struct in6_addr addr, guin
         const int         _dirfd  = (dirfd);                                                     \
         const char *const _path   = (path);                                                      \
                                                                                                  \
-        g_assert(_path &&_path[0]);                                                              \
+        g_assert(_path && _path[0]);                                                             \
         g_assert(!strstr(_path, "/../"));                                                        \
         if (_dirfd < 0) {                                                                        \
             g_assert(!_pathid);                                                                  \
diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c
index 26f8b26b..91445b30 100644
--- a/src/core/platform/tests/test-common.c
+++ b/src/core/platform/tests/test-common.c
@@ -1356,7 +1356,7 @@ nmtstp_check_platform_full(NMPlatform *platform, guint32 obj_type_flags, gboolea
                     /* For IPv4, it also does not reliably always work. This may
                      * be a bug we want to fix. For now, ignore the check.
                      *
-                     * a) Kernel can wrongly allow to configure the same route twice.
+                     * a) Kernel can wrongly allow one to configure the same route twice.
                      * That means, the same route is visible in `ip route` output,
                      * meaning, it would be added twice to the platform cache.
                      * At least due to that problem, may the weak-id not be properly sorted.
@@ -1364,7 +1364,7 @@ nmtstp_check_platform_full(NMPlatform *platform, guint32 obj_type_flags, gboolea
                      * a bug of kernel allowing to configure the exact same route twice.
                      *
                      * b) See https://bugzilla.redhat.com/show_bug.cgi?id=2162315 which is
-                     * a bug where kernel does allow to configure single-hop routes that differ by
+                     * a bug where kernel does allow one to configure single-hop routes that differ by
                      * their next-hop weight, but on the netlink API those routes look the same.
                      *
                      * Due to a) and b), the platform cache may contain only one instance
diff --git a/src/core/platform/tests/test-link.c b/src/core/platform/tests/test-link.c
index 4cadfe4d..fab6bd2e 100644
--- a/src/core/platform/tests/test-link.c
+++ b/src/core/platform/tests/test-link.c
@@ -15,6 +15,7 @@
 #include "libnm-base/nm-ethtool-base.h"
 #include "libnm-platform/nmp-object.h"
 #include "libnm-platform/nmp-netns.h"
+#include "libnm-platform/nmp-ethtool-ioctl.h"
 #include "libnm-platform/nm-platform-utils.h"
 
 #include "test-common.h"
@@ -2725,6 +2726,66 @@ test_link_set_properties(void)
 /*****************************************************************************/
 
 static void
+test_link_get_bridge_fdb(void)
+{
+    const NMPlatformLink       *link;
+    nm_auto_freev NMEtherAddr **addrs = NULL;
+    int                         ifindex[2];
+    guint8                      expected[][6] = {
+        {0x00, 0x99, 0x00, 0x00, 0x00, 0x01},
+        {0x00, 0x99, 0x00, 0x00, 0x00, 0x02},
+        {0x00, 0x99, 0x00, 0x00, 0x00, 0x03},
+        {0x00, 0x99, 0x00, 0x00, 0x00, 0x05},
+    };
+    guint i;
+    guint j;
+
+    ifindex[0] =
+        nmtstp_link_bridge_add(NULL, -1, "br-test-1", &nm_platform_lnk_bridge_default)->ifindex;
+    ifindex[1] =
+        nmtstp_link_bridge_add(NULL, -1, "br-test-2", &nm_platform_lnk_bridge_default)->ifindex;
+
+    link = nmtstp_link_get(NULL, ifindex[0], "br-test-1");
+    g_assert(link);
+    link = nmtstp_link_get(NULL, ifindex[1], "br-test-2");
+    g_assert(link);
+
+    nmtstp_run_command_check("bridge fdb add dev br-test-1 00:99:00:00:00:01");
+    nmtstp_run_command_check("bridge fdb add dev br-test-1 00:99:00:00:00:02");
+    nmtstp_run_command_check("bridge fdb add dev br-test-1 00:99:00:00:00:03");
+    nmtstp_run_command_check("bridge fdb add dev br-test-2 00:99:00:00:00:01");
+    nmtstp_run_command_check("bridge fdb add dev br-test-2 00:99:00:00:00:05");
+
+    addrs = nm_linux_platform_get_bridge_fdb(NM_PLATFORM_GET, ifindex, 2);
+    g_assert(addrs);
+
+    /* Check for expected entries */
+    for (i = 0; i < G_N_ELEMENTS(expected); i++) {
+        gboolean found = FALSE;
+
+        for (j = 0; addrs[j]; j++) {
+            if (memcmp(addrs[j], expected[i], ETH_ALEN) == 0) {
+                found = TRUE;
+                break;
+            }
+        }
+        g_assert(found);
+    }
+
+    /* No dupes */
+    for (i = 0; addrs[i]; i++) {
+        for (j = i + 1; addrs[j]; j++) {
+            g_assert_cmpint(memcmp(addrs[i], addrs[j], ETH_ALEN), !=, 0);
+        }
+    }
+
+    nmtstp_link_delete(NULL, -1, ifindex[0], "br-test-1", TRUE);
+    nmtstp_link_delete(NULL, -1, ifindex[1], "br-test-2", TRUE);
+}
+
+/*****************************************************************************/
+
+static void
 test_create_many_links_do(guint n_devices)
 {
     gint64                 time, start_time = nm_utils_get_monotonic_timestamp_nsec();
@@ -3183,10 +3244,10 @@ test_netns_general(gpointer fixture, gconstpointer test_data)
      * Work around that and skip asserts that are known to fail. */
     ethtool_support = nmtstp_run_command("ethtool -i dummy1_ > /dev/null") == 0;
     if (ethtool_support) {
-        g_assert(nmp_utils_ethtool_get_driver_info(
+        g_assert(nmp_ethtool_ioctl_get_driver_info(
             nmtstp_link_get_typed(platform_1, 0, "dummy1_", NM_LINK_TYPE_DUMMY)->ifindex,
             &driver_info));
-        g_assert(nmp_utils_ethtool_get_driver_info(
+        g_assert(nmp_ethtool_ioctl_get_driver_info(
             nmtstp_link_get_typed(platform_1, 0, "dummy2a", NM_LINK_TYPE_DUMMY)->ifindex,
             &driver_info));
         g_assert_cmpint(nmtstp_run_command("ethtool -i dummy1_ > /dev/null"), ==, 0);
@@ -3197,10 +3258,10 @@ test_netns_general(gpointer fixture, gconstpointer test_data)
     g_assert(nm_platform_netns_push(platform_2, &netns_tmp));
 
     if (ethtool_support) {
-        g_assert(nmp_utils_ethtool_get_driver_info(
+        g_assert(nmp_ethtool_ioctl_get_driver_info(
             nmtstp_link_get_typed(platform_2, 0, "dummy1_", NM_LINK_TYPE_DUMMY)->ifindex,
             &driver_info));
-        g_assert(nmp_utils_ethtool_get_driver_info(
+        g_assert(nmp_ethtool_ioctl_get_driver_info(
             nmtstp_link_get_typed(platform_2, 0, "dummy2b", NM_LINK_TYPE_DUMMY)->ifindex,
             &driver_info));
         g_assert_cmpint(nmtstp_run_command("ethtool -i dummy1_ > /dev/null"), ==, 0);
@@ -4031,7 +4092,7 @@ test_ethtool_features_get(void)
 
         _LOGT(">>> ethtool-features-get RUN %u (do-set=%s", i_run, do_set ? "set" : "reset");
 
-        features = nmp_utils_ethtool_get_features(IFINDEX);
+        features = nmp_ethtool_ioctl_get_features(IFINDEX);
         g_ptr_array_add(gfree_keeper, features);
 
         ethtool_features_dump(features);
@@ -4044,7 +4105,7 @@ test_ethtool_features_get(void)
             features  = gfree_keeper->pdata[i_run * 2 - 1];
         }
 
-        nmp_utils_ethtool_set_features(IFINDEX, features, requested, do_set);
+        nmp_ethtool_ioctl_set_features(IFINDEX, features, requested, do_set);
     }
 }
 
@@ -4105,6 +4166,8 @@ _nmtstp_setup_tests(void)
         test_software_detect_add("/link/software/detect/wireguard/1", NM_LINK_TYPE_WIREGUARD, 1);
         test_software_detect_add("/link/software/detect/wireguard/2", NM_LINK_TYPE_WIREGUARD, 2);
 
+        g_test_add_func("/link/get-bridge-fdb", test_link_get_bridge_fdb);
+
         g_test_add_func("/link/software/vlan/set-xgress", test_vlan_set_xgress);
 
         g_test_add_func("/link/set-properties", test_link_set_properties);
diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c
index a05362f2..f8f7070b 100644
--- a/src/core/platform/tests/test-route.c
+++ b/src/core/platform/tests/test-route.c
@@ -640,22 +640,23 @@ test_ip4_route_options(gconstpointer test_data)
     switch (TEST_IDX) {
     case 1:
         rts_add[rts_n++] = ((NMPlatformIP4Route) {
-            .ifindex    = IFINDEX,
-            .rt_source  = NM_IP_CONFIG_SOURCE_USER,
-            .network    = nmtst_inet4_from_string("172.16.1.0"),
-            .plen       = 24,
-            .metric     = 20,
-            .tos        = 0x28,
-            .window     = 10000,
-            .cwnd       = 16,
-            .initcwnd   = 30,
-            .initrwnd   = 50,
-            .mtu        = 1350,
-            .lock_cwnd  = TRUE,
-            .mss        = 1300,
-            .quickack   = TRUE,
-            .rto_min    = 1000,
-            .n_nexthops = 1,
+            .ifindex     = IFINDEX,
+            .rt_source   = NM_IP_CONFIG_SOURCE_USER,
+            .network     = nmtst_inet4_from_string("172.16.1.0"),
+            .plen        = 24,
+            .metric      = 20,
+            .tos         = 0x28,
+            .window      = 10000,
+            .cwnd        = 16,
+            .initcwnd    = 30,
+            .initrwnd    = 50,
+            .mtu         = 1350,
+            .lock_cwnd   = TRUE,
+            .mss         = 1300,
+            .quickack    = TRUE,
+            .rto_min     = 1000,
+            .rto_min_set = TRUE,
+            .n_nexthops  = 1,
         });
         break;
     case 2:
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index d64052cb..1e2e2d92 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -1439,7 +1439,7 @@ next:;
                         : ""));
             break;
         case PARSE_LINE_TYPE_FLAG:
-            /* NOTE: the flag (for "onlink") only allows to explicitly set "TRUE".
+            /* NOTE: the flag (for "onlink") only allows setting "TRUE" explicitly.
              * There is no way to express an explicit "FALSE" setting
              * of this attribute, hence, the file format cannot encode
              * that configuration. */
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index 6e0411c6..39cbddc5 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -3769,7 +3769,7 @@ nms_ifcfg_rh_writer_write_connection(NMConnection                   *connection,
      *
      * FIXME: a much better solution might be, to re-read the connection only based
      * on the in-memory representation of what we collected above. But the reader
-     * does not yet allow to inject the configuration. */
+     * does not yet allow one to inject the configuration. */
     if (out_reread || out_reread_same) {
         gs_unref_object NMConnection *reread      = NULL;
         gboolean                      reread_same = FALSE;
diff --git a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index ea978a98..2f3035ef 100644
--- a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
@@ -255,8 +255,8 @@ _assert_expected_content(NMConnection *connection, const char *filename, const c
         GError        *_error           = NULL;                           \
         gboolean       _success;                                          \
                                                                           \
-        g_assert(_ifcfg_dir &&_ifcfg_dir[0]);                             \
-        g_assert(_filename &&_filename[0]);                               \
+        g_assert(_ifcfg_dir && _ifcfg_dir[0]);                            \
+        g_assert(_filename && _filename[0]);                              \
                                                                           \
         _success = nms_ifcfg_rh_writer_write_connection(_connection,      \
                                                         _ifcfg_dir,       \
@@ -9533,12 +9533,10 @@ test_svUnescape(void)
         .exp        = v_expected,    \
         .can_concat = !!v_expected,  \
     }
-#define V2(v_value, v_expected)                 \
-    {                                           \
-        .val                   = "" v_value "", \
-        .exp                   = v_expected,    \
-        .can_concat            = TRUE,          \
-        .needs_ascii_separator = TRUE,          \
+#define V2(v_value, v_expected)                                      \
+    {                                                                \
+        .val = "" v_value "", .exp = v_expected, .can_concat = TRUE, \
+        .needs_ascii_separator = TRUE,                               \
     }
     const UnescapeTestData data_full[] = {
         V1("", ""),
diff --git a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
index 6b6913c5..df5dfd40 100644
--- a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
+++ b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
@@ -61,7 +61,7 @@ check_ip_route(NMSettingIPConfig *config,
         gs_free_error GError *_error = NULL;                                              \
         NMConnection         *_connection;                                                \
                                                                                           \
-        g_assert(full_filename &&full_filename[0] == '/');                                \
+        g_assert(full_filename && full_filename[0] == '/');                               \
                                                                                           \
         _connection =                                                                     \
             nms_keyfile_reader_from_file(full_filename,                                   \
diff --git a/src/core/supplicant/nm-supplicant-interface.c b/src/core/supplicant/nm-supplicant-interface.c
index d5f56dcd..514b7c0d 100644
--- a/src/core/supplicant/nm-supplicant-interface.c
+++ b/src/core/supplicant/nm-supplicant-interface.c
@@ -3082,7 +3082,7 @@ _signal_handle(NMSupplicantInterface *self,
             const char           *status;
             const char           *parameter;
 
-            if (g_variant_is_of_type(parameters, G_VARIANT_TYPE("(ss)")))
+            if (!g_variant_is_of_type(parameters, G_VARIANT_TYPE("(ss)")))
                 return;
 
             g_variant_get(parameters, "(&s&s)", &status, &parameter);
diff --git a/src/libnm-client-impl/libnm.ver b/src/libnm-client-impl/libnm.ver
index faa872d7..ad05a4e2 100644
--- a/src/libnm-client-impl/libnm.ver
+++ b/src/libnm-client-impl/libnm.ver
@@ -1979,6 +1979,11 @@ global:
 	nm_sriov_eswitch_mode_get_type;
 } libnm_1_44_0;
 
+libnm_1_46_8 {
+	#nm_ethtool_optname_is_fec@libnm_1_46_8;
+	#nm_setting_ethtool_fec_mode_get_type@libnm_1_46_8;
+} libnm_1_46_0;
+
 libnm_1_48_0 {
 global:
 	nm_setting_connection_down_on_poweroff_get_type;
@@ -2003,12 +2008,22 @@ global:
 	nm_setting_802_1x_get_openssl_ciphers;
 } libnm_1_46_0;
 
+libnm_1_48_18 {
+	#nm_ethtool_optname_is_fec@libnm_1_48_18;
+	#nm_setting_ethtool_fec_mode_get_type@libnm_1_48_18;
+} libnm_1_48_0;
+
 libnm_1_50_0 {
 global:
 	nm_setting_wireless_channel_width_get_type;
 	nm_setting_wireless_get_channel_width;
 } libnm_1_48_0;
 
+libnm_1_50_4 {
+	#nm_ethtool_optname_is_fec@libnm_1_50_4;
+	#nm_setting_ethtool_fec_mode_get_type@libnm_1_50_4;
+} libnm_1_50_0;
+
 libnm_1_52_0 {
 global:
 	nm_device_ipvlan_get_mode;
@@ -2048,3 +2063,16 @@ global:
 	nm_setting_ethtool_fec_mode_get_type;
 	nm_ethtool_optname_is_fec;
 } libnm_1_50_0;
+
+libnm_1_54_0 {
+global:
+	nm_setting_ip_config_forwarding_get_type;
+	nm_setting_ip_config_get_forwarding;
+	nm_setting_ovs_dpdk_get_lsc_interrupt;
+	nm_setting_ovs_dpdk_lsc_interrupt_get_type;
+	nm_setting_prefix_delegation_get_subnet_id;
+	nm_setting_prefix_delegation_get_type;
+	nm_setting_prefix_delegation_new;
+	nm_setting_sriov_get_preserve_on_down;
+	nm_sriov_preserve_on_down_get_type;
+} libnm_1_52_0;
diff --git a/src/libnm-client-impl/meson.build b/src/libnm-client-impl/meson.build
index e50e8fbd..b4936629 100644
--- a/src/libnm-client-impl/meson.build
+++ b/src/libnm-client-impl/meson.build
@@ -209,7 +209,6 @@ if enable_introspection
         'LD_LIBRARY_PATH=' + ld_library_path,
         python_path,
         gen_gir_cmd,
-        '--lib-path', meson.current_build_dir(),
         '--gir', libnm_gir[0],
         '--output', '@OUTPUT@',
         '--target', name
diff --git a/src/libnm-client-impl/nm-client.c b/src/libnm-client-impl/nm-client.c
index fc30cd06..13343cbf 100644
--- a/src/libnm-client-impl/nm-client.c
+++ b/src/libnm-client-impl/nm-client.c
@@ -59,6 +59,7 @@
 #include "nm-object-private.h"
 #include "nm-remote-connection.h"
 #include "nm-utils.h"
+#include "nm-setting-ethtool.h"
 #include "nm-vpn-connection.h"
 
 /*****************************************************************************/
@@ -7684,7 +7685,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
         } else {
             NMClientInstanceFlags flags = v_uint;
 
-            /* After object construction, we only allow to toggle certain flags and
+            /* After object construction, we only allow one to toggle certain flags and
              * ignore all other flags. */
 
             if ((priv->instance_flags ^ flags)
@@ -8204,7 +8205,7 @@ const NMLDBusMetaIface _nml_dbus_meta_iface_nm_settings = NML_DBUS_META_IFACE_IN
             _priv.settings.connections,
             nm_remote_connection_get_type,
             .notify_changed_ao       = _property_ao_notify_changed_connections_cb,
-            .check_nmobj_visible_fcn = (gboolean(*)(GObject *)) nm_remote_connection_get_visible),
+            .check_nmobj_visible_fcn = (gboolean (*)(GObject *)) nm_remote_connection_get_visible),
         NML_DBUS_META_PROPERTY_INIT_S("Hostname",
                                       PROP_HOSTNAME,
                                       NMClient,
@@ -9314,3 +9315,27 @@ NM_BACKPORT_SYMBOL(libnm_1_30_8,
                    (address));
 
 NM_BACKPORT_SYMBOL(libnm_1_30_8, NMIPRoute *, nm_ip_route_dup, (NMIPRoute * route), (route));
+
+NM_BACKPORT_SYMBOL(libnm_1_46_8,
+                   gboolean,
+                   nm_ethtool_optname_is_fec,
+                   (const char *optname),
+                   (optname));
+
+NM_BACKPORT_SYMBOL(libnm_1_46_8, GType, nm_setting_ethtool_fec_mode_get_type, (void), ());
+
+NM_BACKPORT_SYMBOL(libnm_1_48_18,
+                   gboolean,
+                   nm_ethtool_optname_is_fec,
+                   (const char *optname),
+                   (optname));
+
+NM_BACKPORT_SYMBOL(libnm_1_48_18, GType, nm_setting_ethtool_fec_mode_get_type, (void), ());
+
+NM_BACKPORT_SYMBOL(libnm_1_50_4,
+                   gboolean,
+                   nm_ethtool_optname_is_fec,
+                   (const char *optname),
+                   (optname));
+
+NM_BACKPORT_SYMBOL(libnm_1_50_4, GType, nm_setting_ethtool_fec_mode_get_type, (void), ());
diff --git a/src/libnm-client-impl/nm-device.c b/src/libnm-client-impl/nm-device.c
index f9d7329b..1712efa5 100644
--- a/src/libnm-client-impl/nm-device.c
+++ b/src/libnm-client-impl/nm-device.c
@@ -2376,7 +2376,7 @@ nm_device_is_software(NMDevice *device)
  *   settings with or %NULL to reuse existing
  * @version_id: zero or the expected version id of the applied connection.
  *   If specified and the version id mismatches, the call fails without
- *   modification. This allows to catch concurrent accesses.
+ *   modification. This allows one to catch concurrent accesses.
  * @flags: always set this to zero
  * @cancellable: a #GCancellable, or %NULL
  * @error: location for a #GError, or %NULL
@@ -2430,7 +2430,7 @@ nm_device_reapply(NMDevice     *device,
  *   settings with or %NULL to reuse existing
  * @version_id: zero or the expected version id of the applied
  *   connection. If specified and the version id mismatches, the call
- *   fails without modification. This allows to catch concurrent
+ *   fails without modification. This allows one to catch concurrent
  *   accesses.
  * @flags: always set this to zero
  * @cancellable: a #GCancellable, or %NULL
diff --git a/src/libnm-client-public/NetworkManager.h b/src/libnm-client-public/NetworkManager.h
index 3608168f..9e9a4eb8 100644
--- a/src/libnm-client-public/NetworkManager.h
+++ b/src/libnm-client-public/NetworkManager.h
@@ -59,6 +59,7 @@
 #include "nm-setting-ovs-port.h"
 #include "nm-setting-ppp.h"
 #include "nm-setting-pppoe.h"
+#include "nm-setting-prefix-delegation.h"
 #include "nm-setting-proxy.h"
 #include "nm-setting-serial.h"
 #include "nm-setting-sriov.h"
diff --git a/src/libnm-client-public/nm-autoptr.h b/src/libnm-client-public/nm-autoptr.h
index 0f6e59c4..f4321ad3 100644
--- a/src/libnm-client-public/nm-autoptr.h
+++ b/src/libnm-client-public/nm-autoptr.h
@@ -104,6 +104,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingOvsPatch, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingOvsPort, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingPpp, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingPppoe, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingPrefixDelegation, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingProxy, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingSerial, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingSriov, g_object_unref)
diff --git a/src/libnm-client-test/nm-test-utils-impl.c b/src/libnm-client-test/nm-test-utils-impl.c
index 36d18c50..ce93548e 100644
--- a/src/libnm-client-test/nm-test-utils-impl.c
+++ b/src/libnm-client-test/nm-test-utils-impl.c
@@ -611,7 +611,7 @@ nmtstc_context_object_new_valist(GType       gtype,
         sync        = TRUE;
         inside_loop = FALSE;
     } else {
-        /* The caller allows to iterate the main context. On that point,
+        /* The caller allows one to iterate the main context. On that point,
          * we can both use the synchronous and the asynchronous initialization,
          * both should yield the same result. Choose one randomly. */
         sync        = nmtst_get_rand_bool();
diff --git a/src/libnm-core-aux-intern/nm-libnm-core-utils.c b/src/libnm-core-aux-intern/nm-libnm-core-utils.c
index 5e7b90a4..94aa42bc 100644
--- a/src/libnm-core-aux-intern/nm-libnm-core-utils.c
+++ b/src/libnm-core-aux-intern/nm-libnm-core-utils.c
@@ -749,9 +749,7 @@ nm_dns_uri_parse(int addr_family, const char *str, NMDnsServer *dns)
     if (!str)
         return FALSE;
 
-    *dns = (NMDnsServer) {
-        .port = -1,
-    };
+    *dns = (NMDnsServer) {0};
 
     if (NM_STR_HAS_PREFIX(str, "dns+tls://")) {
         dns->scheme = NM_DNS_URI_SCHEME_TLS;
@@ -816,8 +814,8 @@ nm_dns_uri_parse(int addr_family, const char *str, NMDnsServer *dns)
         end++;
         if (*end == ':') {
             end++;
-            dns->port = _nm_utils_ascii_str_to_int64(end, 10, 0, 65535, G_MAXINT32);
-            if (dns->port == G_MAXINT32)
+            dns->port = _nm_utils_ascii_str_to_int64(end, 10, 1, 65535, 0);
+            if (dns->port == 0)
                 return FALSE;
         }
     } else if (addr_family != AF_INET6) {
@@ -831,8 +829,8 @@ nm_dns_uri_parse(int addr_family, const char *str, NMDnsServer *dns)
         if (port) {
             addr = nm_strndup_a(100, addr_port, port - addr_port, &addr_heap);
             port++;
-            dns->port = _nm_utils_ascii_str_to_int64(port, 10, 0, 65535, G_MAXINT32);
-            if (dns->port == G_MAXINT32)
+            dns->port = _nm_utils_ascii_str_to_int64(port, 10, 1, 65535, 0);
+            if (dns->port == 0)
                 return FALSE;
         }
     } else {
@@ -885,7 +883,7 @@ nm_dns_uri_parse_plain(int addr_family, const char *str, char *out_addrstr, NMIP
         }
         return TRUE;
     case NM_DNS_URI_SCHEME_UDP:
-        if (dns.port != -1 && dns.port != 53)
+        if (dns.port != NM_DNS_PORT_UNDEFINED && dns.port != 53)
             return FALSE;
         if (dns.interface[0])
             return FALSE;
@@ -929,9 +927,9 @@ nm_dns_uri_normalize(int addr_family, const char *str, char **out_free)
 
     nm_inet_ntop(dns.addr_family, &dns.addr, addrstr);
 
-    if (dns.port != -1) {
-        nm_assert(dns.port >= 0 && dns.port <= 65535);
-        g_snprintf(portstr, sizeof(portstr), "%d", dns.port);
+    if (dns.port != NM_DNS_PORT_UNDEFINED) {
+        nm_assert(dns.port >= 1 && dns.port <= 65535);
+        g_snprintf(portstr, sizeof(portstr), "%" G_GUINT16_FORMAT, dns.port);
     }
 
     switch (dns.scheme) {
@@ -955,15 +953,15 @@ nm_dns_uri_normalize(int addr_family, const char *str, char **out_free)
             ret = g_strconcat(addrstr, "#", dns.servername, NULL);
         break;
     case NM_DNS_URI_SCHEME_UDP:
-        if (dns.interface[0] || dns.port != -1) {
+        if (dns.interface[0] || dns.port != NM_DNS_PORT_UNDEFINED) {
             ret = g_strdup_printf("dns+udp://%s%s%s%s%s%s%s",
                                   dns.addr_family == AF_INET6 ? "[" : "",
                                   addrstr,
                                   dns.interface[0] ? "%" : "",
                                   dns.interface[0] ? dns.interface : "",
                                   dns.addr_family == AF_INET6 ? "]" : "",
-                                  dns.port != -1 ? ":" : "",
-                                  dns.port != -1 ? portstr : "");
+                                  dns.port != NM_DNS_PORT_UNDEFINED ? ":" : "",
+                                  dns.port != NM_DNS_PORT_UNDEFINED ? portstr : "");
             break;
         }
         ret = g_strdup_printf("%s%s%s", addrstr, dns.servername ? "#" : "", dns.servername ?: "");
@@ -975,8 +973,8 @@ nm_dns_uri_normalize(int addr_family, const char *str, char **out_free)
                               dns.interface[0] ? "%%" : "",
                               dns.interface[0] ? dns.interface : "",
                               dns.addr_family == AF_INET6 ? "]" : "",
-                              dns.port != -1 ? ":" : "",
-                              dns.port != -1 ? portstr : "",
+                              dns.port != NM_DNS_PORT_UNDEFINED ? ":" : "",
+                              dns.port != NM_DNS_PORT_UNDEFINED ? portstr : "",
                               dns.servername ? "#" : "",
                               dns.servername ?: "");
         break;
diff --git a/src/libnm-core-aux-intern/nm-libnm-core-utils.h b/src/libnm-core-aux-intern/nm-libnm-core-utils.h
index 9d1637a2..eeb720d9 100644
--- a/src/libnm-core-aux-intern/nm-libnm-core-utils.h
+++ b/src/libnm-core-aux-intern/nm-libnm-core-utils.h
@@ -319,13 +319,15 @@ typedef enum {
     NM_DNS_URI_SCHEME_TLS,
 } NMDnsUriScheme;
 
+#define NM_DNS_PORT_UNDEFINED 0
+
 typedef struct {
     NMIPAddr       addr;
     const char    *servername;
     char           interface[NM_IFNAMSIZ];
     NMDnsUriScheme scheme;
     int            addr_family;
-    int            port;
+    guint16        port;
 } NMDnsServer;
 
 gboolean nm_dns_uri_parse(int addr_family, const char *str, NMDnsServer *out_dns);
diff --git a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in
index e0ce4ac4..c764f535 100644
--- a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in
+++ b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in
@@ -1712,6 +1712,10 @@
                   dbus-type="as"
                   gprop-type="GStrv"
                   />
+        <property name="forwarding"
+                  dbus-type="i"
+                  gprop-type="gint"
+                  />
         <property name="gateway"
                   dbus-type="s"
                   gprop-type="gchararray"
@@ -1867,6 +1871,10 @@
                   dbus-type="as"
                   gprop-type="GStrv"
                   />
+        <property name="forwarding"
+                  dbus-type="i"
+                  gprop-type="gint"
+                  />
         <property name="gateway"
                   dbus-type="s"
                   gprop-type="gchararray"
@@ -2120,6 +2128,10 @@
                   dbus-type="s"
                   gprop-type="gchararray"
                   />
+        <property name="lsc-interrupt"
+                  dbus-type="i"
+                  gprop-type="gint"
+                  />
         <property name="n-rxq"
                   dbus-type="u"
                   gprop-type="guint"
@@ -2303,6 +2315,14 @@
                   gprop-type="gchararray"
                   />
     </setting>
+    <setting name="prefix-delegation"
+             gtype="NMSettingPrefixDelegation"
+             >
+        <property name="subnet-id"
+                  dbus-type="x"
+                  gprop-type="gint64"
+                  />
+    </setting>
     <setting name="proxy"
              gtype="NMSettingProxy"
              >
@@ -2366,6 +2386,10 @@
                   dbus-type="i"
                   gprop-type="gint"
                   />
+        <property name="preserve-on-down"
+                  dbus-type="i"
+                  gprop-type="gint"
+                  />
         <property name="total-vfs"
                   dbus-type="u"
                   gprop-type="guint"
diff --git a/src/libnm-core-impl/meson.build b/src/libnm-core-impl/meson.build
index e068d6bd..610e2279 100644
--- a/src/libnm-core-impl/meson.build
+++ b/src/libnm-core-impl/meson.build
@@ -41,6 +41,7 @@ libnm_core_settings_sources = files(
   'nm-setting-ovs-port.c',
   'nm-setting-ppp.c',
   'nm-setting-pppoe.c',
+  'nm-setting-prefix-delegation.c',
   'nm-setting-proxy.c',
   'nm-setting-serial.c',
   'nm-setting-sriov.c',
diff --git a/src/libnm-core-impl/nm-connection.c b/src/libnm-core-impl/nm-connection.c
index 61a20a13..0fbadfb8 100644
--- a/src/libnm-core-impl/nm-connection.c
+++ b/src/libnm-core-impl/nm-connection.c
@@ -3359,6 +3359,8 @@ nm_connection_get_virtual_device_description(NMConnection *connection)
         display_type = _("TUN/TAP");
     else if (nm_streq(type, NM_SETTING_VETH_SETTING_NAME))
         display_type = _("Veth");
+    else if (nm_streq(type, NM_SETTING_LOOPBACK_SETTING_NAME))
+        display_type = _("Loopback");
 
     if (!iface || !display_type)
         return NULL;
diff --git a/src/libnm-core-impl/nm-keyfile.c b/src/libnm-core-impl/nm-keyfile.c
index e4559e3c..f8f735e9 100644
--- a/src/libnm-core-impl/nm-keyfile.c
+++ b/src/libnm-core-impl/nm-keyfile.c
@@ -1684,7 +1684,7 @@ nm_keyfile_detect_unqualified_path_scheme(const char   *base_dir,
         const char *const _bin     = (bin);                             \
         const gsize       _bin_len = (bin_len);                         \
                                                                         \
-        nm_assert(_bin &&_bin_len > 0);                                 \
+        nm_assert(_bin && _bin_len > 0);                                \
                                                                         \
         (_bin_len > NM_STRLEN(scheme) + 1 && _bin[_bin_len - 1] == '\0' \
          && memcmp(_bin, scheme, NM_STRLEN(scheme)) == 0);              \
diff --git a/src/libnm-core-impl/nm-meta-setting-base-impl.c b/src/libnm-core-impl/nm-meta-setting-base-impl.c
index b9dcf34f..52af9ad2 100644
--- a/src/libnm-core-impl/nm-meta-setting-base-impl.c
+++ b/src/libnm-core-impl/nm-meta-setting-base-impl.c
@@ -51,6 +51,7 @@
 #include "nm-setting-ovs-port.h"
 #include "nm-setting-ppp.h"
 #include "nm-setting-pppoe.h"
+#include "nm-setting-prefix-delegation.h"
 #include "nm-setting-proxy.h"
 #include "nm-setting-serial.h"
 #include "nm-setting-tc-config.h"
@@ -484,6 +485,13 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
             .setting_name      = NM_SETTING_PPP_SETTING_NAME,
             .get_setting_gtype = nm_setting_ppp_get_type,
         },
+    [NM_META_SETTING_TYPE_PREFIX_DELEGATION] =
+        {
+            .meta_type         = NM_META_SETTING_TYPE_PREFIX_DELEGATION,
+            .setting_priority  = NM_SETTING_PRIORITY_IP,
+            .setting_name      = NM_SETTING_PREFIX_DELEGATION_SETTING_NAME,
+            .get_setting_gtype = nm_setting_prefix_delegation_get_type,
+        },
     [NM_META_SETTING_TYPE_PROXY] =
         {
             .meta_type         = NM_META_SETTING_TYPE_PROXY,
@@ -698,6 +706,7 @@ const NMMetaSettingType nm_meta_setting_types_by_priority[] = {
     NM_META_SETTING_TYPE_HOSTNAME,
     NM_META_SETTING_TYPE_IP4_CONFIG,
     NM_META_SETTING_TYPE_IP6_CONFIG,
+    NM_META_SETTING_TYPE_PREFIX_DELEGATION,
     NM_META_SETTING_TYPE_PROXY,
     NM_META_SETTING_TYPE_TC_CONFIG,
 
diff --git a/src/libnm-core-impl/nm-setting-bond.c b/src/libnm-core-impl/nm-setting-bond.c
index 60ae0294..7204df48 100644
--- a/src/libnm-core-impl/nm-setting-bond.c
+++ b/src/libnm-core-impl/nm-setting-bond.c
@@ -1118,7 +1118,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
                     NM_CONNECTION_ERROR,
                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
                     _("'%s' option is only valid with mode '%s'"),
-                    NM_SETTING_BOND_OPTION_LACP_RATE,
+                    NM_SETTING_BOND_OPTION_LACP_ACTIVE,
                     "802.3ad");
         g_prefix_error(error, "%s.%s: ", NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS);
         return FALSE;
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 4a910c7f..4829dcdc 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -2533,7 +2533,7 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
      * NMSettingConnection:stable-id:
      *
      * This represents the identity of the connection used for various purposes.
-     * It allows to configure multiple profiles to share the identity. Also,
+     * It allows configuring multiple profiles to share the identity. Also,
      * the stable-id can contain placeholders that are substituted dynamically and
      * deterministically depending on the context.
      *
diff --git a/src/libnm-core-impl/nm-setting-infiniband.c b/src/libnm-core-impl/nm-setting-infiniband.c
index 24e5807a..b70247c1 100644
--- a/src/libnm-core-impl/nm-setting-infiniband.c
+++ b/src/libnm-core-impl/nm-setting-infiniband.c
@@ -212,6 +212,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
                                 NM_CONNECTION_ERROR_INVALID_PROPERTY,
                                 _("Must specify a P_Key if specifying parent"));
             g_prefix_error(error, "%s: ", NM_SETTING_INFINIBAND_PARENT);
+            return FALSE;
         }
     }
 
diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c
index 1ec97029..ad95eb1a 100644
--- a/src/libnm-core-impl/nm-setting-ip-config.c
+++ b/src/libnm-core-impl/nm-setting-ip-config.c
@@ -4009,7 +4009,8 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingIPConfig,
                              PROP_DHCP_SEND_RELEASE,
                              PROP_ROUTED_DNS,
                              PROP_SHARED_DHCP_RANGE,
-                             PROP_SHARED_DHCP_LEASE_TIME, );
+                             PROP_SHARED_DHCP_LEASE_TIME,
+                             PROP_FORWARDING, );
 
 G_DEFINE_ABSTRACT_TYPE(NMSettingIPConfig, nm_setting_ip_config, NM_TYPE_SETTING)
 
@@ -5559,6 +5560,22 @@ nm_setting_ip_config_get_shared_dhcp_lease_time(NMSettingIPConfig *setting)
     return NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->shared_dhcp_lease_time;
 }
 
+/**
+ * nm_setting_ip_config_get_forwarding:
+ * @setting: the #NMSettingIPConfig
+ *
+ * Returns: the #NMSettingIPConfig:forwarding property of the setting
+ *
+ * Since: 1.54
+ **/
+NMSettingIPConfigForwarding
+nm_setting_ip_config_get_forwarding(NMSettingIPConfig *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_IP_CONFIG(setting), NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT);
+
+    return NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->forwarding;
+}
+
 static gboolean
 verify_label(const char *label)
 {
@@ -6337,6 +6354,13 @@ _nm_sett_info_property_override_create_array_ip_config(int addr_family)
         .direct_offset =
             NM_STRUCT_OFFSET_ENSURE_TYPE(gint32, NMSettingIPConfigPrivate, shared_dhcp_lease_time));
 
+    _nm_properties_override_gobj(
+        properties_override,
+        obj_properties[PROP_FORWARDING],
+        &nm_sett_info_propert_type_direct_enum,
+        .direct_offset = NM_STRUCT_OFFSET_ENSURE_TYPE(int, NMSettingIPConfigPrivate, forwarding),
+        .direct_data.enum_gtype = NM_TYPE_SETTING_IP_CONFIG_FORWARDING);
+
     return properties_override;
 }
 
@@ -7120,6 +7144,33 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
                          NM_SETTING_IP_CONFIG_ROUTED_DNS_DEFAULT,
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
 
+    /**
+     * NMSettingIPConfig:forwarding:
+     *
+     * Whether to configure sysctl interface-specific forwarding. When enabled, the interface
+     * will act as a router to forward the packet from one interface to another. When set to
+     * %NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT, the value from global configuration is used;
+     * if no global default is defined, %NM_SETTING_IP_CONFIG_FORWARDING_AUTO will be used.
+     * The #NMSettingIPConfig:forwarding property is ignored when #NMSettingIPConfig:method
+     * is set to "shared", because forwarding is always enabled in this case.
+     * The accepted values are:
+     *   %NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT: use global default.
+     *   %NM_SETTING_IP_CONFIG_FORWARDING_NO: disabled.
+     *   %NM_SETTING_IP_CONFIG_FORWARDING_YES: enabled.
+     *   %NM_SETTING_IP_CONFIG_FORWARDING_AUTO: enable if any shared connection is active,
+     *        use kernel default otherwise.
+     *
+     * Since: 1.54
+     */
+    obj_properties[PROP_FORWARDING] =
+        g_param_spec_int(NM_SETTING_IP_CONFIG_FORWARDING,
+                         "",
+                         "",
+                         NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT,
+                         NM_SETTING_IP_CONFIG_FORWARDING_AUTO,
+                         NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT,
+                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+
     /**                                                  
      * NMSettingIPConfig:dhcp-send-hostname-v2:
      *
diff --git a/src/libnm-core-impl/nm-setting-ipvlan.c b/src/libnm-core-impl/nm-setting-ipvlan.c
index fafa37b6..0468e31f 100644
--- a/src/libnm-core-impl/nm-setting-ipvlan.c
+++ b/src/libnm-core-impl/nm-setting-ipvlan.c
@@ -156,6 +156,19 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
         }
     }
 
+    if (!NM_IN_SET(priv->mode,
+                   NM_SETTING_IPVLAN_MODE_L2,
+                   NM_SETTING_IPVLAN_MODE_L3,
+                   NM_SETTING_IPVLAN_MODE_L3S)) {
+        g_set_error(error,
+                    NM_CONNECTION_ERROR,
+                    NM_CONNECTION_ERROR_INVALID_PROPERTY,
+                    _("unsupported mode %u"),
+                    priv->mode);
+        g_prefix_error(error, "%s.%s: ", NM_SETTING_IPVLAN_SETTING_NAME, NM_SETTING_IPVLAN_MODE);
+        return FALSE;
+    }
+
     if (priv->private_flag && priv->vepa) {
         g_set_error(error,
                     NM_CONNECTION_ERROR,
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index 255283fc..dc743b15 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -309,9 +309,10 @@ nm_setting_match_clear_kernel_command_lines(NMSettingMatch *setting)
  * @setting: the #NMSettingMatch
  * @length: (out) (optional): the length of the returned interface names array.
  *
- * Returns all the interface names.
+ * Returns all the kernel command line arguments.
  *
- * Returns: (transfer none) (array length=length): the configured interface names.
+ * Returns: (transfer none) (array length=length): the configured kernel command
+ *    line arguments.
  *
  * Since: 1.26
  **/
@@ -344,7 +345,7 @@ nm_setting_match_get_num_drivers(NMSettingMatch *setting)
 /**
  * nm_setting_match_get_driver:
  * @setting: the #NMSettingMatch
- * @idx: index number of the DNS search domain to return
+ * @idx: index number of the driver to return
  *
  * Since 1.46, access at index "len" is allowed and returns NULL.
  *
@@ -443,7 +444,7 @@ nm_setting_match_clear_drivers(NMSettingMatch *setting)
 /**
  * nm_setting_match_get_drivers:
  * @setting: the #NMSettingMatch
- * @length: (out) (optional): the length of the returned interface names array.
+ * @length: (out) (optional): the length of the returned drivers array.
  *
  * Returns all the drivers.
  *
diff --git a/src/libnm-core-impl/nm-setting-ovs-dpdk.c b/src/libnm-core-impl/nm-setting-ovs-dpdk.c
index 53931f46..3f5cbe11 100644
--- a/src/libnm-core-impl/nm-setting-ovs-dpdk.c
+++ b/src/libnm-core-impl/nm-setting-ovs-dpdk.c
@@ -22,7 +22,11 @@
 
 /*****************************************************************************/
 
-NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_DEVARGS, PROP_N_RXQ, PROP_N_RXQ_DESC, PROP_N_TXQ_DESC, );
+NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_DEVARGS,
+                                  PROP_N_RXQ,
+                                  PROP_N_RXQ_DESC,
+                                  PROP_N_TXQ_DESC,
+                                  PROP_LSC_INTERRUPT, );
 
 /**
  * NMSettingOvsDpdk:
@@ -36,6 +40,7 @@ struct _NMSettingOvsDpdk {
     guint32 n_rxq;
     guint32 n_rxq_desc;
     guint32 n_txq_desc;
+    int     lsc_interrupt;
 };
 
 struct _NMSettingOvsDpdkClass {
@@ -110,6 +115,22 @@ nm_setting_ovs_dpdk_get_n_txq_desc(NMSettingOvsDpdk *self)
     return self->n_txq_desc;
 }
 
+/**
+ * nm_setting_ovs_dpdk_get_lsc_interrupt:
+ * @self: the #NMSettingOvsDpdk
+ *
+ * Returns: the #NMSettingOvsDpdk:lsc-interrupt property of the setting
+ *
+ * Since: 1.54
+ **/
+NMSettingOvsDpdkLscInterrupt
+nm_setting_ovs_dpdk_get_lsc_interrupt(NMSettingOvsDpdk *self)
+{
+    g_return_val_if_fail(NM_IS_SETTING_OVS_DPDK(self), NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE);
+
+    return self->lsc_interrupt;
+}
+
 /*****************************************************************************/
 
 static gboolean
@@ -257,6 +278,29 @@ nm_setting_ovs_dpdk_class_init(NMSettingOvsDpdkClass *klass)
                                               NMSettingOvsDpdk,
                                               n_txq_desc);
 
+    /**
+     * NMSettingOvsDpdk:lsc-interrupt:
+     *
+     * Configures the Link State Change (LSC) detection mode for the OVS DPDK interface.
+     * When set to %NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE, NetworkManager doesn't
+     * change the default value configured by Open vSwitch.
+     * %NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED enables interrupts.
+     * %NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED disables interrupts, thus setting the
+     * interface in poll mode.
+     *
+     * Since: 1.54
+     **/
+    _nm_setting_property_define_direct_enum(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_OVS_DPDK_LSC_INTERRUPT,
+                                            PROP_LSC_INTERRUPT,
+                                            NM_TYPE_SETTING_OVS_DPDK_LSC_INTERRUPT,
+                                            NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE,
+                                            NM_SETTING_PARAM_NONE,
+                                            NULL,
+                                            NMSettingOvsDpdk,
+                                            lsc_interrupt);
+
     g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 
     _nm_setting_class_commit(setting_class,
diff --git a/src/libnm-core-impl/nm-setting-ovs-external-ids.c b/src/libnm-core-impl/nm-setting-ovs-external-ids.c
index 9acdae6c..22448e68 100644
--- a/src/libnm-core-impl/nm-setting-ovs-external-ids.c
+++ b/src/libnm-core-impl/nm-setting-ovs-external-ids.c
@@ -20,7 +20,7 @@
  * SECTION:nm-setting-ovs-external-ids
  * @short_description: External-IDs for OVS database
  *
- * The #NMSettingOvsExternalIDs object is a #NMSetting subclass that allow to
+ * The #NMSettingOvsExternalIDs object is a #NMSetting subclass that allows one to
  * configure external ids for OVS.
  **/
 
diff --git a/src/libnm-core-impl/nm-setting-ovs-other-config.c b/src/libnm-core-impl/nm-setting-ovs-other-config.c
index 46d991d4..392fc46b 100644
--- a/src/libnm-core-impl/nm-setting-ovs-other-config.c
+++ b/src/libnm-core-impl/nm-setting-ovs-other-config.c
@@ -19,8 +19,8 @@
  * SECTION:nm-setting-ovs-other-config
  * @short_description: Other-config settings for OVS
  *
- * The #NMSettingOvsOtherConfig object is a #NMSetting subclass that allows to
- * configure other_config settings for OVS. See also "other_config" in the
+ * The #NMSettingOvsOtherConfig object is a #NMSetting subclass that specifies
+ * "other_config" settings for OVS. See also "other_config" in the
  * "ovs-vswitchd.conf.db" manual for the keys that OVS supports.
  **/
 
diff --git a/src/libnm-core-impl/nm-setting-prefix-delegation.c b/src/libnm-core-impl/nm-setting-prefix-delegation.c
new file mode 100644
index 00000000..100d3153
--- /dev/null
+++ b/src/libnm-core-impl/nm-setting-prefix-delegation.c
@@ -0,0 +1,118 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "libnm-core-impl/nm-default-libnm-core.h"
+
+#include "nm-setting-prefix-delegation.h"
+
+#include "nm-connection-private.h"
+#include "nm-setting-connection.h"
+#include "nm-setting-private.h"
+
+/**
+ * SECTION:nm-setting-prefix-delegation
+ * @short_description: Describes connection properties related to IPv6 prefix delegation
+ *
+ * The #NMSettingPrefixDelegation object is a #NMSetting subclass that describes the
+ * configuration of downstream interfaces using IPv6 prefix delegation.
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_SUBNET_ID, );
+
+/**
+ * NMSettingPrefixDelegation:
+ *
+ * IPv6 prefix delegation settings
+ *
+ * Since: 1.54
+ */
+struct _NMSettingPrefixDelegation {
+    NMSetting parent;
+    gint64    subnet_id;
+};
+
+struct _NMSettingPrefixDelegationClass {
+    NMSettingClass parent;
+};
+
+G_DEFINE_TYPE(NMSettingPrefixDelegation, nm_setting_prefix_delegation, NM_TYPE_SETTING)
+
+/*****************************************************************************/
+
+/**
+ * nm_setting_prefix_delegation_get_subnet_id:
+ * @setting: the #NMSettingPrefixDelegation
+ *
+ * Returns: the subnet ID for prefix delegation
+ *
+ * Since: 1.54
+ **/
+gint64
+nm_setting_prefix_delegation_get_subnet_id(NMSettingPrefixDelegation *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_PREFIX_DELEGATION(setting), 0);
+
+    return setting->subnet_id;
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_prefix_delegation_init(NMSettingPrefixDelegation *setting)
+{}
+
+/**
+ * nm_setting_prefix_delegation_new:
+ *
+ * Creates a new #NMSettingPrefixDelegation object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingPrefixDelegation object
+ *
+ * Since: 1.54
+ **/
+NMSetting *
+nm_setting_prefix_delegation_new(void)
+{
+    return g_object_new(NM_TYPE_SETTING_PREFIX_DELEGATION, NULL);
+}
+
+static void
+nm_setting_prefix_delegation_class_init(NMSettingPrefixDelegationClass *klass)
+{
+    GObjectClass   *object_class        = G_OBJECT_CLASS(klass);
+    NMSettingClass *setting_class       = NM_SETTING_CLASS(klass);
+    GArray         *properties_override = _nm_sett_info_property_override_create_array();
+
+    object_class->get_property = _nm_setting_property_get_property_direct;
+    object_class->set_property = _nm_setting_property_set_property_direct;
+
+    /**
+     * NMSettingPrefixDelegation:subnet-id:
+     *
+     * The subnet ID to use on the interface from the prefix delegation received via
+     * an upstream interface. Set to a value between 0 and 0xffffffff (2^32 - 1)
+     * to indicate a specific subnet ID; or set to -1 to automatically choose
+     * an available subnet ID.
+     *
+     * Since: 1.54
+     **/
+    _nm_setting_property_define_direct_int64(properties_override,
+                                             obj_properties,
+                                             NM_SETTING_PREFIX_DELEGATION_SUBNET_ID,
+                                             PROP_SUBNET_ID,
+                                             -1,
+                                             G_MAXUINT32,
+                                             -1,
+                                             NM_SETTING_PARAM_NONE,
+                                             NMSettingPrefixDelegation,
+                                             subnet_id);
+
+    g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+    _nm_setting_class_commit(setting_class,
+                             NM_META_SETTING_TYPE_PREFIX_DELEGATION,
+                             NULL,
+                             properties_override,
+                             0);
+}
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index ba838364..8ee770f4 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -193,6 +193,7 @@ typedef struct {
     int         replace_local_rule;
     int         dhcp_send_release;
     int         routed_dns;
+    int         forwarding;
     int         dhcp_send_hostname_v2;
     gint32      required_timeout;
     gint32      dad_timeout;
@@ -555,7 +556,7 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
  *
  *    _nm_setting_get_private(setting, sett_info, property_info->direct_offset)
  *
- * which allows to generically handle the property operations (like get, set, compare).
+ * which allows one to generically handle the property operations (like get, set, compare).
  */
 
 #define _nm_setting_property_define_direct_boolean(properties_override,                        \
diff --git a/src/libnm-core-impl/nm-setting-sriov.c b/src/libnm-core-impl/nm-setting-sriov.c
index 4dc61d82..d6be0ec1 100644
--- a/src/libnm-core-impl/nm-setting-sriov.c
+++ b/src/libnm-core-impl/nm-setting-sriov.c
@@ -22,6 +22,7 @@
 NM_GOBJECT_PROPERTIES_DEFINE(NMSettingSriov,
                              PROP_TOTAL_VFS,
                              PROP_VFS,
+                             PROP_PRESERVE_ON_DOWN,
                              PROP_AUTOPROBE_DRIVERS,
                              PROP_ESWITCH_MODE,
                              PROP_ESWITCH_INLINE_MODE,
@@ -39,6 +40,7 @@ struct _NMSettingSriov {
     GPtrArray *vfs;
     int        autoprobe_drivers;
     guint32    total_vfs;
+    int        preserve_on_down;
     int        eswitch_mode;
     int        eswitch_inline_mode;
     int        eswitch_encap_mode;
@@ -827,6 +829,22 @@ nm_setting_sriov_clear_vfs(NMSettingSriov *setting)
 }
 
 /**
+ * nm_setting_sriov_get_preserve_on_down:
+ * @setting: the #NMSettingSriov
+ *
+ * Returns: the value contained in the #NMSettingSriov:preserve-on-down property.
+ *
+ * Since: 1.54
+ */
+NMSriovPreserveOnDown
+nm_setting_sriov_get_preserve_on_down(NMSettingSriov *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_SRIOV(setting), NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT);
+
+    return setting->preserve_on_down;
+}
+
+/**
  * nm_setting_sriov_get_autoprobe_drivers:
  * @setting: the #NMSettingSriov
  *
@@ -1462,6 +1480,35 @@ nm_setting_sriov_class_init(NMSettingSriovClass *klass)
                                             NMSettingSriov,
                                             eswitch_encap_mode);
 
+    /**
+     * NMSettingSriov:preserve-on-down
+     *
+     * This controls whether NetworkManager preserves the SR-IOV parameters set on
+     * the device when the connection is deactivated, or whether it resets them to
+     * their default value. The SR-IOV parameters are those specified in this setting
+     * (the "sriov" setting), like the number of VFs to create, the eswitch
+     * configuration, etc.
+     *
+     * If set to %NM_SRIOV_PRESERVE_ON_DOWN_NO, NetworkManager resets the SR-IOV
+     * parameters when the connection is deactivated. When set to
+     * %NM_SRIOV_PRESERVE_ON_DOWN_YES, NetworkManager preserves those parameters
+     * on the device. If the value is %NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT, NetworkManager
+     * looks up a global default value in the configuration; in case no such value is
+     * defined, it uses %NM_SRIOV_PRESERVE_ON_DOWN_NO as fallback.
+     *
+     * Since: 1.54
+     */
+    _nm_setting_property_define_direct_enum(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_SRIOV_PRESERVE_ON_DOWN,
+                                            PROP_PRESERVE_ON_DOWN,
+                                            NM_TYPE_SRIOV_PRESERVE_ON_DOWN,
+                                            NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT,
+                                            NM_SETTING_PARAM_FUZZY_IGNORE,
+                                            NULL,
+                                            NMSettingSriov,
+                                            preserve_on_down);
+
     g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 
     _nm_setting_class_commit(setting_class,
diff --git a/src/libnm-core-impl/nm-setting-tun.c b/src/libnm-core-impl/nm-setting-tun.c
index 05460104..cac0f10b 100644
--- a/src/libnm-core-impl/nm-setting-tun.c
+++ b/src/libnm-core-impl/nm-setting-tun.c
@@ -166,7 +166,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
     }
 
     if (priv->owner) {
-        if (_nm_utils_ascii_str_to_int64(priv->owner, 10, 0, G_MAXINT32, -1) == -1) {
+        if (_nm_utils_ascii_str_to_int64(priv->owner, 10, 0, G_MAXUINT32 - 1, -1) == -1) {
             g_set_error(error,
                         NM_CONNECTION_ERROR,
                         NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -178,7 +178,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
     }
 
     if (priv->group) {
-        if (_nm_utils_ascii_str_to_int64(priv->group, 10, 0, G_MAXINT32, -1) == -1) {
+        if (_nm_utils_ascii_str_to_int64(priv->group, 10, 0, G_MAXUINT32 - 1, -1) == -1) {
             g_set_error(error,
                         NM_CONNECTION_ERROR,
                         NM_CONNECTION_ERROR_INVALID_PROPERTY,
diff --git a/src/libnm-core-impl/nm-setting-user.c b/src/libnm-core-impl/nm-setting-user.c
index 8c2a9942..69f73a8d 100644
--- a/src/libnm-core-impl/nm-setting-user.c
+++ b/src/libnm-core-impl/nm-setting-user.c
@@ -15,7 +15,7 @@
  * SECTION:nm-setting-user
  * @short_description: Describes user properties
  *
- * The #NMSettingUser object is a #NMSetting subclass that allow to attach
+ * The #NMSettingUser object is a #NMSetting subclass that allows one to attach
  * arbitrary user data to #NMConnection objects.
  **/
 
diff --git a/src/libnm-core-impl/nm-setting-wired.c b/src/libnm-core-impl/nm-setting-wired.c
index e02c0a06..b80d0142 100644
--- a/src/libnm-core-impl/nm-setting-wired.c
+++ b/src/libnm-core-impl/nm-setting-wired.c
@@ -1575,7 +1575,7 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
      *
      * With #NMSettingWired:cloned-mac-address setting "random" or "stable",
      * by default all bits of the MAC address are scrambled and a locally-administered,
-     * unicast MAC address is created. This property allows to specify that certain bits
+     * unicast MAC address is created. This property allows one to specify that certain bits
      * are fixed. Note that the least significant bit of the first MAC address will
      * always be unset to create a unicast MAC address.
      *
diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c
index be08fa8c..1c5486bf 100644
--- a/src/libnm-core-impl/nm-setting-wireless.c
+++ b/src/libnm-core-impl/nm-setting-wireless.c
@@ -1886,7 +1886,7 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
      *
      * With #NMSettingWireless:cloned-mac-address setting "random" or "stable",
      * by default all bits of the MAC address are scrambled and a locally-administered,
-     * unicast MAC address is created. This property allows to specify that certain bits
+     * unicast MAC address is created. This property allows one to specify that certain bits
      * are fixed. Note that the least significant bit of the first MAC address will
      * always be unset to create a unicast MAC address.
      *
diff --git a/src/libnm-core-impl/nm-utils.c b/src/libnm-core-impl/nm-utils.c
index 6528b5fb..6d5df98c 100644
--- a/src/libnm-core-impl/nm-utils.c
+++ b/src/libnm-core-impl/nm-utils.c
@@ -1345,7 +1345,7 @@ nm_utils_ip4_dns_from_variant(GVariant *value)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip4_dns_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip4_dns_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (type utf8): a %NULL-terminated array of IP address
@@ -1467,9 +1467,9 @@ nm_utils_ip4_addresses_from_variant(GVariant *value, char **out_gateway)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip4_addresses_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip4_addresses_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned. It also
- * allows to parse the address-labels at the same time than the addresses.
+ * allows one to parse the address-labels at the same time than the addresses.
  *
  * The labels need to be processed at the same time than the addresses, inside
  * this function, because if there are invalid addresses they are filtered out,
@@ -1648,7 +1648,7 @@ nm_utils_ip4_routes_from_variant(GVariant *value)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip4_routes_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip4_routes_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (element-type NMIPRoute): a newly allocated
@@ -1799,7 +1799,7 @@ nm_utils_ip6_dns_from_variant(GVariant *value)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip6_dns_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip6_dns_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (type utf8): a %NULL-terminated array of IP address
@@ -1942,7 +1942,7 @@ nm_utils_ip6_addresses_from_variant(GVariant *value, char **out_gateway)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip6_addresses_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip6_addresses_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (element-type NMIPAddress): a newly allocated
@@ -2124,7 +2124,7 @@ nm_utils_ip6_routes_from_variant(GVariant *value)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip6_routes_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip6_routes_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (element-type NMIPRoute): a newly allocated
@@ -2315,7 +2315,7 @@ nm_utils_ip_addresses_from_variant(GVariant *value, int family)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip_addresses_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip_addresses_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (element-type NMIPAddress): a newly allocated
@@ -2493,7 +2493,7 @@ nm_utils_ip_routes_from_variant(GVariant *value, int family)
  * @strict: whether to parse in strict mode or best-effort mode
  * @error: the error location
  *
- * Like #nm_utils_ip_routes_from_variant, but allows to parse in strict mode. In
+ * Like #nm_utils_ip_routes_from_variant, but allows one to parse in strict mode. In
  * strict mode, parsing is aborted on first error and %NULL is returned.
  *
  * Returns: (transfer full) (element-type NMIPRoute): a newly allocated
diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c
index d581fc79..43e73c3d 100644
--- a/src/libnm-core-impl/tests/test-general.c
+++ b/src/libnm-core-impl/tests/test-general.c
@@ -4099,6 +4099,7 @@ test_connection_diff_a_only(void)
              {NM_SETTING_IP_CONFIG_ROUTED_DNS, NM_SETTING_DIFF_RESULT_IN_A},
              {NM_SETTING_IP_CONFIG_SHARED_DHCP_RANGE, NM_SETTING_DIFF_RESULT_IN_A},
              {NM_SETTING_IP_CONFIG_SHARED_DHCP_LEASE_TIME, NM_SETTING_DIFF_RESULT_IN_A},
+             {NM_SETTING_IP_CONFIG_FORWARDING, NM_SETTING_DIFF_RESULT_IN_A},
              {NULL, NM_SETTING_DIFF_RESULT_UNKNOWN},
          }},
     };
@@ -8679,11 +8680,9 @@ test_nm_utils_ascii_str_to_int64(void)
 static void
 test_nm_utils_strstrdictkey(void)
 {
-#define _VALUES_STATIC(_v1, _v2)                              \
-    {                                                         \
-        .v1       = _v1,                                      \
-        .v2       = _v2,                                      \
-        .v_static = _nm_utils_strstrdictkey_static(_v1, _v2), \
+#define _VALUES_STATIC(_v1, _v2)                                                    \
+    {                                                                               \
+        .v1 = _v1, .v2 = _v2, .v_static = _nm_utils_strstrdictkey_static(_v1, _v2), \
     }
     const struct {
         const char           *v1;
@@ -11455,32 +11454,32 @@ static void
 test_dns_uri_parse(void)
 {
     /* clang-format off */
-    t_dns_1("dns+tls://8.8.8.8",                   INET,  TLS,  "8.8.8.8",            -1, NULL,      NULL);
-    t_dns_1("dns+tls://8.8.8.8",                   INET,  TLS,  "8.8.8.8",            -1, NULL,      NULL);
-    t_dns_1("dns+tls://1.2.3.4#name",              INET,  TLS,  "1.2.3.4",            -1, "name",    NULL);
-    t_dns_1("dns+tls://1.2.3.4#a.b.c",             INET,  TLS,  "1.2.3.4",            -1, "a.b.c",   NULL);
-    t_dns_1("dns+tls://1.2.3.4:53",                INET,  TLS,  "1.2.3.4",            53, NULL,      NULL);
-    t_dns_1("dns+tls://1.2.3.4:53#foobar",         INET,  TLS,  "1.2.3.4",            53, "foobar",  NULL);
-    t_dns_1("dns+tls://192.168.120.250:99",        INET,  TLS,  "192.168.120.250",    99, NULL,      NULL);
-    t_dns_1("dns+udp://8.8.8.8:65535",             INET,  UDP,  "8.8.8.8",         65535, NULL,      NULL);
-
-    t_dns_1("dns+udp://[fd01::1]",                 INET6, UDP,  "fd01::1",            -1, NULL,      NULL);
-    t_dns_1("dns+tls://[fd01::2]:5353",            INET6, UDP,  "fd01::2",          5353, NULL,      NULL);
-    t_dns_1("dns+tls://[::1]#name",                INET6, UDP,  "::1",                -1, "name",    NULL);
-    t_dns_1("dns+tls://[::2]:65535#name",          INET6, UDP,  "::2",             65535, "name",    NULL);
-    t_dns_1("dns+udp://[::ffff:1.2.3.4]",          INET6, UDP,  "::ffff:1.2.3.4",     -1, NULL,      NULL);
-    t_dns_1("dns+tls://[fe80::1%eth0]",            INET6, UDP,  "fe80::1",            -1, NULL,      "eth0");
-    t_dns_1("dns+tls://[fe80::2%en1]:53#a",        INET6, UDP,  "fe80::2",            53, "a",       "en1");
-    t_dns_1("dns+tls://[fe80::1%en3456789012345]", INET6, UDP,  "fe80::1",            -1, NULL, "en3456789012345");
-
-    t_dns_1("1.2.3.4",                             INET,  NONE, "1.2.3.4",            -1, NULL,      NULL);
-    t_dns_1("1.2.3.4#foo",                         INET,  NONE, "1.2.3.4",            -1, "foo",     NULL);
-    t_dns_1("1::#x",                               INET6, NONE, "1::",                -1, "x",       NULL);
-    t_dns_1("1::0#x",                              INET6, NONE, "1::",                -1, "x",       NULL);
-    t_dns_1("192.168.0.1",                         INET,  NONE, "192.168.0.1",        -1, NULL,      NULL);
-    t_dns_1("192.168.0.1#tst.com",                 INET,  NONE, "192.168.0.1",        -1, "tst.com", NULL);
-    t_dns_1("fe80::18",                            INET6, NONE, "fe80::18",           -1, NULL,      NULL);
-    t_dns_1("fe80::18#foo.com",                    INET6, NONE, "fe80::18",           -1, "foo.com", NULL);
+    t_dns_1("dns+tls://8.8.8.8",                   INET,  TLS,  "8.8.8.8",            0,     NULL,      NULL);
+    t_dns_1("dns+tls://8.8.8.8",                   INET,  TLS,  "8.8.8.8",            0,     NULL,      NULL);
+    t_dns_1("dns+tls://1.2.3.4#name",              INET,  TLS,  "1.2.3.4",            0,     "name",    NULL);
+    t_dns_1("dns+tls://1.2.3.4#a.b.c",             INET,  TLS,  "1.2.3.4",            0,     "a.b.c",   NULL);
+    t_dns_1("dns+tls://1.2.3.4:53",                INET,  TLS,  "1.2.3.4",            53,    NULL,      NULL);
+    t_dns_1("dns+tls://1.2.3.4:53#foobar",         INET,  TLS,  "1.2.3.4",            53,    "foobar",  NULL);
+    t_dns_1("dns+tls://192.168.120.250:99",        INET,  TLS,  "192.168.120.250",    99,    NULL,      NULL);
+    t_dns_1("dns+udp://8.8.8.8:65535",             INET,  UDP,  "8.8.8.8",         65535,    NULL,      NULL);
+
+    t_dns_1("dns+udp://[fd01::1]",                 INET6, UDP,  "fd01::1",            0,     NULL,      NULL);
+    t_dns_1("dns+tls://[fd01::2]:5353",            INET6, UDP,  "fd01::2",            5353,  NULL,      NULL);
+    t_dns_1("dns+tls://[::1]#name",                INET6, UDP,  "::1",                0,     "name",    NULL);
+    t_dns_1("dns+tls://[::2]:65535#name",          INET6, UDP,  "::2",                65535, "name",    NULL);
+    t_dns_1("dns+udp://[::ffff:1.2.3.4]",          INET6, UDP,  "::ffff:1.2.3.4",     0,     NULL,      NULL);
+    t_dns_1("dns+tls://[fe80::1%eth0]",            INET6, UDP,  "fe80::1",            0,     NULL,      "eth0");
+    t_dns_1("dns+tls://[fe80::2%en1]:53#a",        INET6, UDP,  "fe80::2",            53,    "a",       "en1");
+    t_dns_1("dns+tls://[fe80::1%en3456789012345]", INET6, UDP,  "fe80::1",            0,     NULL,      "en3456789012345");
+
+    t_dns_1("1.2.3.4",                             INET,  NONE, "1.2.3.4",            0,     NULL,      NULL);
+    t_dns_1("1.2.3.4#foo",                         INET,  NONE, "1.2.3.4",            0,     "foo",     NULL);
+    t_dns_1("1::#x",                               INET6, NONE, "1::",                0,     "x",       NULL);
+    t_dns_1("1::0#x",                              INET6, NONE, "1::",                0,     "x",       NULL);
+    t_dns_1("192.168.0.1",                         INET,  NONE, "192.168.0.1",        0,     NULL,      NULL);
+    t_dns_1("192.168.0.1#tst.com",                 INET,  NONE, "192.168.0.1",        0,     "tst.com", NULL);
+    t_dns_1("fe80::18",                            INET6, NONE, "fe80::18",           0,     NULL,      NULL);
+    t_dns_1("fe80::18#foo.com",                    INET6, NONE, "fe80::18",           0,     "foo.com", NULL);
     /* clang-format on */
 
     t_dns_0("http://8.8.8.8");              /* unsupported schema */
diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h
index aa96c526..8b23dd44 100644
--- a/src/libnm-core-intern/nm-core-internal.h
+++ b/src/libnm-core-intern/nm-core-internal.h
@@ -58,6 +58,7 @@
 #include "nm-setting-ovs-port.h"
 #include "nm-setting-ppp.h"
 #include "nm-setting-pppoe.h"
+#include "nm-setting-prefix-delegation.h"
 #include "nm-setting-proxy.h"
 #include "nm-setting-serial.h"
 #include "nm-setting-sriov.h"
diff --git a/src/libnm-core-intern/nm-meta-setting-base-impl.h b/src/libnm-core-intern/nm-meta-setting-base-impl.h
index c03285eb..d1535e5e 100644
--- a/src/libnm-core-intern/nm-meta-setting-base-impl.h
+++ b/src/libnm-core-intern/nm-meta-setting-base-impl.h
@@ -143,6 +143,7 @@ typedef enum _nm_packed {
     NM_META_SETTING_TYPE_OVS_PORT,
     NM_META_SETTING_TYPE_PPP,
     NM_META_SETTING_TYPE_PPPOE,
+    NM_META_SETTING_TYPE_PREFIX_DELEGATION,
     NM_META_SETTING_TYPE_PROXY,
     NM_META_SETTING_TYPE_SERIAL,
     NM_META_SETTING_TYPE_SRIOV,
diff --git a/src/libnm-core-public/meson.build b/src/libnm-core-public/meson.build
index 97888467..086801d9 100644
--- a/src/libnm-core-public/meson.build
+++ b/src/libnm-core-public/meson.build
@@ -46,6 +46,7 @@ libnm_core_headers = files(
   'nm-setting-ovs-port.h',
   'nm-setting-ppp.h',
   'nm-setting-pppoe.h',
+  'nm-setting-prefix-delegation.h',
   'nm-setting-proxy.h',
   'nm-setting-serial.h',
   'nm-setting-sriov.h',
diff --git a/src/libnm-core-public/nm-core-types.h b/src/libnm-core-public/nm-core-types.h
index a0d6bc82..617d6b74 100644
--- a/src/libnm-core-public/nm-core-types.h
+++ b/src/libnm-core-public/nm-core-types.h
@@ -52,6 +52,7 @@ typedef struct _NMSettingOvsPatch         NMSettingOvsPatch;
 typedef struct _NMSettingOvsPort          NMSettingOvsPort;
 typedef struct _NMSettingPpp              NMSettingPpp;
 typedef struct _NMSettingPppoe            NMSettingPppoe;
+typedef struct _NMSettingPrefixDelegation NMSettingPrefixDelegation;
 typedef struct _NMSettingProxy            NMSettingProxy;
 typedef struct _NMSettingSerial           NMSettingSerial;
 typedef struct _NMSettingSriov            NMSettingSriov;
diff --git a/src/libnm-core-public/nm-dbus-interface.h b/src/libnm-core-public/nm-dbus-interface.h
index d6267610..78241193 100644
--- a/src/libnm-core-public/nm-dbus-interface.h
+++ b/src/libnm-core-public/nm-dbus-interface.h
@@ -99,6 +99,10 @@
  *   on connection down.
  *   https://issues.redhat.com/browse/RHEL-66262
  *   https://issues.redhat.com/browse/RHEL-67324
+ * @NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING: Indicates that NetworkManager supports
+ * configuring per-device IPv4 sysctl forwarding setting. Since: 1.54.
+ * @NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN: NetworkManager supports the
+ *   "sriov.preserve-on-down" property. Since: 1.54
  *
  * The numeric values represent the bit index of the capability. These capabilities
  * can be queried in the "VersionInfo" D-Bus property.
@@ -106,7 +110,9 @@
  * Since: 1.42
  */
 typedef enum {
-    NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE = 0,
+    NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE  = 0,
+    NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING         = 1,
+    NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN = 2,
 } NMVersionInfoCapability;
 
 /**
@@ -1014,7 +1020,7 @@ typedef enum {
  *   checkpoints is allowed, however, if an older checkpoint
  *   that references overlapping devices gets rolled back, it will
  *   automatically destroy this checkpoint during rollback. This
- *   allows to create several overlapping checkpoints in parallel,
+ *   allows one to create several overlapping checkpoints in parallel,
  *   and rollback to them at will. With the special case that
  *   rolling back to an older checkpoint will invalidate all
  *   overlapping younger checkpoints. This opts-in that the
diff --git a/src/libnm-core-public/nm-setting-ip-config.h b/src/libnm-core-public/nm-setting-ip-config.h
index f0a29f14..625b941f 100644
--- a/src/libnm-core-public/nm-setting-ip-config.h
+++ b/src/libnm-core-public/nm-setting-ip-config.h
@@ -53,6 +53,27 @@ typedef enum {
     NM_SETTING_IP_CONFIG_ROUTED_DNS_YES     = 1,
 } NMSettingIPConfigRoutedDns;
 
+/**
+ * NMSettingIPConfigForwarding:
+ * @NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT: use the global default value
+ * @NM_SETTING_IP_CONFIG_FORWARDING_NO: disable forwarding
+ * @NM_SETTING_IP_CONFIG_FORWARDING_YES: enable forwarding
+ * @NM_SETTING_IP_CONFIG_FORWARDING_AUTO: enable forwarding if any shared
+ *  connection is active, use kernel default otherwise
+ *
+ * #NMSettingIPConfigForwarding indicates whether to configure sysctl
+ * interface-specific forwarding. When enabled, the interface will act
+ * as a router to forward the packet from one interface to another.
+ *
+ * Since: 1.54
+ */
+typedef enum {
+    NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT = -1,
+    NM_SETTING_IP_CONFIG_FORWARDING_NO      = 0,
+    NM_SETTING_IP_CONFIG_FORWARDING_YES     = 1,
+    NM_SETTING_IP_CONFIG_FORWARDING_AUTO    = 2,
+} NMSettingIPConfigForwarding;
+
 typedef struct NMIPAddress NMIPAddress;
 
 GType nm_ip_address_get_type(void);
@@ -364,6 +385,7 @@ char *nm_ip_routing_rule_to_string(const NMIPRoutingRule       *self,
 #define NM_SETTING_IP_CONFIG_ROUTED_DNS             "routed-dns"
 #define NM_SETTING_IP_CONFIG_SHARED_DHCP_RANGE      "shared-dhcp-range"
 #define NM_SETTING_IP_CONFIG_SHARED_DHCP_LEASE_TIME "shared-dhcp-lease-time"
+#define NM_SETTING_IP_CONFIG_FORWARDING             "forwarding"
 
 /* these are not real GObject properties. */
 #define NM_SETTING_IP_CONFIG_ROUTING_RULES "routing-rules"
@@ -542,6 +564,8 @@ NM_AVAILABLE_IN_1_52
 const char *nm_setting_ip_config_get_shared_dhcp_range(NMSettingIPConfig *setting);
 NM_AVAILABLE_IN_1_52
 int nm_setting_ip_config_get_shared_dhcp_lease_time(NMSettingIPConfig *setting);
+NM_AVAILABLE_IN_1_54
+NMSettingIPConfigForwarding nm_setting_ip_config_get_forwarding(NMSettingIPConfig *setting);
 
 G_END_DECLS
 
diff --git a/src/libnm-core-public/nm-setting-ovs-dpdk.h b/src/libnm-core-public/nm-setting-ovs-dpdk.h
index 0578ab2c..0883dced 100644
--- a/src/libnm-core-public/nm-setting-ovs-dpdk.h
+++ b/src/libnm-core-public/nm-setting-ovs-dpdk.h
@@ -27,13 +27,31 @@ G_BEGIN_DECLS
 
 #define NM_SETTING_OVS_DPDK_SETTING_NAME "ovs-dpdk"
 
-#define NM_SETTING_OVS_DPDK_DEVARGS    "devargs"
-#define NM_SETTING_OVS_DPDK_N_RXQ      "n-rxq"
-#define NM_SETTING_OVS_DPDK_N_RXQ_DESC "n-rxq-desc"
-#define NM_SETTING_OVS_DPDK_N_TXQ_DESC "n-txq-desc"
+#define NM_SETTING_OVS_DPDK_DEVARGS       "devargs"
+#define NM_SETTING_OVS_DPDK_N_RXQ         "n-rxq"
+#define NM_SETTING_OVS_DPDK_N_RXQ_DESC    "n-rxq-desc"
+#define NM_SETTING_OVS_DPDK_N_TXQ_DESC    "n-txq-desc"
+#define NM_SETTING_OVS_DPDK_LSC_INTERRUPT "lsc-interrupt"
 
 typedef struct _NMSettingOvsDpdkClass NMSettingOvsDpdkClass;
 
+/**
+ * NMSettingOvsDpdkLscInterrupt:
+ * @NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE: leave the value set to Open vSwitch default
+ * @NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED: interrupt disabled (poll mode)
+ * @NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED: interrupt enabled
+ *
+ * #NMSettingOvsDpdkLscInterrupt indicates whether the interface uses interrupts
+ * or poll mode for Link State Change (LSC) detection on the OVS DPDK interface.
+ *
+ * Since: 1.54
+ */
+typedef enum {
+    NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE   = -1,
+    NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED = 0,
+    NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED  = 1,
+} NMSettingOvsDpdkLscInterrupt;
+
 NM_AVAILABLE_IN_1_20
 GType nm_setting_ovs_dpdk_get_type(void);
 NM_AVAILABLE_IN_1_20
@@ -47,6 +65,8 @@ NM_AVAILABLE_IN_1_42
 guint32 nm_setting_ovs_dpdk_get_n_rxq_desc(NMSettingOvsDpdk *self);
 NM_AVAILABLE_IN_1_42
 guint32 nm_setting_ovs_dpdk_get_n_txq_desc(NMSettingOvsDpdk *self);
+NM_AVAILABLE_IN_1_54
+NMSettingOvsDpdkLscInterrupt nm_setting_ovs_dpdk_get_lsc_interrupt(NMSettingOvsDpdk *self);
 
 G_END_DECLS
 
diff --git a/src/libnm-core-public/nm-setting-prefix-delegation.h b/src/libnm-core-public/nm-setting-prefix-delegation.h
new file mode 100644
index 00000000..5361d7c6
--- /dev/null
+++ b/src/libnm-core-public/nm-setting-prefix-delegation.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#ifndef __NM_SETTING_PREFIX_DELEGATION_H__
+#define __NM_SETTING_PREFIX_DELEGATION_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-setting.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_PREFIX_DELEGATION (nm_setting_prefix_delegation_get_type())
+#define NM_SETTING_PREFIX_DELEGATION(obj) \
+    (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTING_PREFIX_DELEGATION, NMSettingVrf))
+#define NM_SETTING_PREFIX_DELEGATION_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTING_PREFIX_DELEGATIONCONFIG, NMSettingVrfClass))
+#define NM_IS_SETTING_PREFIX_DELEGATION(obj) \
+    (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTING_PREFIX_DELEGATION))
+#define NM_IS_SETTING_PREFIX_DELEGATION_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTING_PREFIX_DELEGATION))
+#define NM_SETTING_PREFIX_DELEGATION_GET_CLASS(obj) \
+    (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_SETTING_PREFIX_DELEGATION, NMSettingVrfClass))
+
+#define NM_SETTING_PREFIX_DELEGATION_SETTING_NAME "prefix-delegation"
+
+#define NM_SETTING_PREFIX_DELEGATION_SUBNET_ID "subnet-id"
+
+typedef struct _NMSettingPrefixDelegationClass NMSettingPrefixDelegationClass;
+
+NM_AVAILABLE_IN_1_54
+GType nm_setting_prefix_delegation_get_type(void);
+NM_AVAILABLE_IN_1_54
+NMSetting *nm_setting_prefix_delegation_new(void);
+NM_AVAILABLE_IN_1_54
+gint64 nm_setting_prefix_delegation_get_subnet_id(NMSettingPrefixDelegation *setting);
+
+G_END_DECLS
+
+#endif /* __NM_SETTING_PREFIX_DELEGATION_H__ */
diff --git a/src/libnm-core-public/nm-setting-sriov.h b/src/libnm-core-public/nm-setting-sriov.h
index affccc48..60c5005c 100644
--- a/src/libnm-core-public/nm-setting-sriov.h
+++ b/src/libnm-core-public/nm-setting-sriov.h
@@ -28,6 +28,7 @@ G_BEGIN_DECLS
 
 #define NM_SETTING_SRIOV_TOTAL_VFS           "total-vfs"
 #define NM_SETTING_SRIOV_VFS                 "vfs"
+#define NM_SETTING_SRIOV_PRESERVE_ON_DOWN    "preserve-on-down"
 #define NM_SETTING_SRIOV_AUTOPROBE_DRIVERS   "autoprobe-drivers"
 #define NM_SETTING_SRIOV_ESWITCH_MODE        "eswitch-mode"
 #define NM_SETTING_SRIOV_ESWITCH_INLINE_MODE "eswitch-inline-mode"
@@ -57,6 +58,22 @@ typedef enum {
 } NMSriovVFVlanProtocol;
 
 /**
+ * NMSriovPreserveOnDown:
+ * @NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT: use the default value
+ * @NM_SRIOV_PRESERVE_ON_DOWN_NO: reset the SR-IOV parameters when the
+ *     connection is deactivated
+ * @NM_SRIOV_PRESERVE_ON_DOWN_YES: preserve the SR-IOV parameters set on
+     * the device when the connection is deactivated
+ *
+ * Since: 1.54
+ */
+typedef enum {
+    NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT = -1,
+    NM_SRIOV_PRESERVE_ON_DOWN_NO      = 0,
+    NM_SRIOV_PRESERVE_ON_DOWN_YES     = 1,
+} NMSriovPreserveOnDown;
+
+/**
  * NMSriovEswitchMode:
  * @NM_SRIOV_ESWITCH_MODE_PRESERVE:  don't modify current eswitch mode
  * @NM_SRIOV_ESWITCH_MODE_LEGACY:    use legacy SRIOV
@@ -123,6 +140,8 @@ NM_AVAILABLE_IN_1_14
 gboolean nm_setting_sriov_remove_vf_by_index(NMSettingSriov *setting, guint index);
 NM_AVAILABLE_IN_1_14
 void nm_setting_sriov_clear_vfs(NMSettingSriov *setting);
+NM_AVAILABLE_IN_1_54
+NMSriovPreserveOnDown nm_setting_sriov_get_preserve_on_down(NMSettingSriov *setting);
 NM_AVAILABLE_IN_1_14
 NMTernary nm_setting_sriov_get_autoprobe_drivers(NMSettingSriov *setting);
 NM_AVAILABLE_IN_1_46
diff --git a/src/libnm-core-public/nm-version-macros.h.in b/src/libnm-core-public/nm-version-macros.h.in
index d204c4df..4c4772d2 100644
--- a/src/libnm-core-public/nm-version-macros.h.in
+++ b/src/libnm-core-public/nm-version-macros.h.in
@@ -77,6 +77,7 @@
 #define NM_VERSION_1_48   (NM_ENCODE_VERSION(1, 48, 0))
 #define NM_VERSION_1_50   (NM_ENCODE_VERSION(1, 50, 0))
 #define NM_VERSION_1_52   (NM_ENCODE_VERSION(1, 52, 0))
+#define NM_VERSION_1_54   (NM_ENCODE_VERSION(1, 54, 0))
 
 /* For releases, NM_API_VERSION is equal to NM_VERSION.
  *
diff --git a/src/libnm-core-public/nm-version.h b/src/libnm-core-public/nm-version.h
index 6f7e42f3..33daf65f 100644
--- a/src/libnm-core-public/nm-version.h
+++ b/src/libnm-core-public/nm-version.h
@@ -425,6 +425,20 @@
 #define NM_AVAILABLE_IN_1_52
 #endif
 
+#if NM_VERSION_MIN_REQUIRED >= NM_VERSION_1_54
+#define NM_DEPRECATED_IN_1_54        G_DEPRECATED
+#define NM_DEPRECATED_IN_1_54_FOR(f) G_DEPRECATED_FOR(f)
+#else
+#define NM_DEPRECATED_IN_1_54
+#define NM_DEPRECATED_IN_1_54_FOR(f)
+#endif
+
+#if NM_VERSION_MAX_ALLOWED < NM_VERSION_1_54
+#define NM_AVAILABLE_IN_1_54 G_UNAVAILABLE(1, 54)
+#else
+#define NM_AVAILABLE_IN_1_54
+#endif
+
 /*
  * Synchronous API for calling D-Bus in libnm is deprecated. See
  * https://networkmanager.dev/docs/libnm/latest/usage.html#sync-api
diff --git a/src/libnm-glib-aux/nm-dbus-aux.c b/src/libnm-glib-aux/nm-dbus-aux.c
index 1be4047e..27bcf651 100644
--- a/src/libnm-glib-aux/nm-dbus-aux.c
+++ b/src/libnm-glib-aux/nm-dbus-aux.c
@@ -459,7 +459,7 @@ _bus_get_cb(GObject *source, GAsyncResult *result, gpointer user_data)
  *
  * This calls g_bus_get(), but iterates the current (thread-default) GMainContext
  * until the response is ready. As such, it's similar to g_bus_get_sync(),
- * but it allows to cancel the operation (without having multiple threads).
+ * but it allows one to cancel the operation (without having multiple threads).
  *
  * Returns: (transfer full): the new #GDBusConnection or %NULL on error.
  */
diff --git a/src/libnm-glib-aux/nm-dedup-multi.c b/src/libnm-glib-aux/nm-dedup-multi.c
index c80b17ce..973a7d13 100644
--- a/src/libnm-glib-aux/nm-dedup-multi.c
+++ b/src/libnm-glib-aux/nm-dedup-multi.c
@@ -149,7 +149,7 @@ _entry_unpack(const NMDedupMultiEntry    *entry,
     nm_assert(NM_IN_SET(*out_lookup_head, FALSE, TRUE));
     ASSERT_idx_type(*out_idx_type);
 
-    /* for lookup of the head, we allow to omit object, but only
+    /* for lookup of the head, we allow one to omit object, but only
      * if the idx_type does not partition the objects. Otherwise, we
      * require a obj to compare. */
     nm_assert(!*out_lookup_head || (*out_obj || !(*out_idx_type)->klass->idx_obj_partition_equal));
diff --git a/src/libnm-glib-aux/nm-dedup-multi.h b/src/libnm-glib-aux/nm-dedup-multi.h
index ebc5d0a1..b548b2a5 100644
--- a/src/libnm-glib-aux/nm-dedup-multi.h
+++ b/src/libnm-glib-aux/nm-dedup-multi.h
@@ -221,7 +221,7 @@ struct _NMDedupMultiHeadEntry {
 static inline gconstpointer
 nm_dedup_multi_entry_get_obj(const NMDedupMultiEntry *entry)
 {
-    /* convenience method that allows to skip the %NULL check on
+    /* convenience method that allows one to skip the %NULL check on
      * @entry. Think of the NULL-conditional operator ?. of C# */
     return entry ? entry->obj : NULL;
 }
diff --git a/src/libnm-glib-aux/nm-hash-utils.c b/src/libnm-glib-aux/nm-hash-utils.c
index 973422a1..7f25e9ac 100644
--- a/src/libnm-glib-aux/nm-hash-utils.c
+++ b/src/libnm-glib-aux/nm-hash-utils.c
@@ -190,6 +190,27 @@ nm_pint_equal(gconstpointer a, gconstpointer b)
     return s1 == s2 || (s1 && s2 && *s1 == *s2);
 }
 
+/* GHashFunc for GHashTable keys that are a pointer to a guint64 */
+guint
+nm_puint64_hash(gconstpointer p)
+{
+    const guint64 *s = p;
+
+    if (!s)
+        return nm_hash_static(298377461u);
+    return nm_hash_val(1208815757u, *s);
+}
+
+/* GEqualFunc for GHashTable keys that are a pointer to a guint64 */
+gboolean
+nm_puint64_equal(gconstpointer a, gconstpointer b)
+{
+    const guint64 *s1 = a;
+    const guint64 *s2 = a;
+
+    return s1 == s2 || (s1 && s2 && *s1 == *s2);
+}
+
 guint
 nm_pdirect_hash(gconstpointer p)
 {
diff --git a/src/libnm-glib-aux/nm-hash-utils.h b/src/libnm-glib-aux/nm-hash-utils.h
index 6d7cc271..9fbcbdb3 100644
--- a/src/libnm-glib-aux/nm-hash-utils.h
+++ b/src/libnm-glib-aux/nm-hash-utils.h
@@ -212,10 +212,10 @@ nm_hash_update_str(NMHashState *state, const char *str)
 /* Like nm_hash_update_str(), but restricted to arrays only. nm_hash_update_str() only works
  * with a @str argument that cannot be NULL. If you have a string pointer, that is never NULL, use
  * nm_hash_update() instead. */
-#define nm_hash_update_strarr(state, str)                                \
-    (_Generic(&(str),                                                    \
-         const char(*)[sizeof(str)]: nm_hash_update_str((state), (str)), \
-         char(*)[sizeof(str)]: nm_hash_update_str((state), (str))))
+#define nm_hash_update_strarr(state, str)                                 \
+    (_Generic(&(str),                                                     \
+         const char (*)[sizeof(str)]: nm_hash_update_str((state), (str)), \
+         char (*)[sizeof(str)]: nm_hash_update_str((state), (str))))
 #else
 #define nm_hash_update_strarr(state, str) nm_hash_update_str((state), (str))
 #endif
@@ -224,7 +224,7 @@ guint nm_hash_ptr(gconstpointer ptr);
 #define nm_direct_hash nm_hash_ptr
 
 guint nm_hash_str(const char *str);
-#define nm_str_hash ((guint(*)(gconstpointer str)) nm_hash_str)
+#define nm_str_hash ((guint (*)(gconstpointer str)) nm_hash_str)
 
 #define nm_hash_vals(static_seed, ...)         \
     ({                                         \
@@ -266,6 +266,9 @@ gboolean nm_pstr_equal(gconstpointer a, gconstpointer b);
 guint    nm_pint_hash(gconstpointer p);
 gboolean nm_pint_equal(gconstpointer a, gconstpointer b);
 
+guint    nm_puint64_hash(gconstpointer p);
+gboolean nm_puint64_equal(gconstpointer a, gconstpointer b);
+
 G_STATIC_ASSERT(sizeof(int) == sizeof(guint32));
 #define nm_puint32_hash  nm_pint_hash
 #define nm_puint32_equal nm_pint_equal
diff --git a/src/libnm-glib-aux/nm-inet-utils.c b/src/libnm-glib-aux/nm-inet-utils.c
index 2ee73ad5..f4f418cf 100644
--- a/src/libnm-glib-aux/nm-inet-utils.c
+++ b/src/libnm-glib-aux/nm-inet-utils.c
@@ -238,6 +238,42 @@ nm_ip6_addr_clear_host_address(struct in6_addr *dst, const struct in6_addr *src,
     return dst;
 }
 
+/**
+ * nm_ip6_addr_get_subnet_id:
+ * @addr: the IPv6 address
+ * @plen: the prefix length
+ *
+ * Given an IPv6 address and a prefix length, returns the subnet ID,
+ * defined as follows:
+ *
+ * |     plen bits   | (64 - plen) bits |          64 bits              |
+ * +-----------------+------------------+-------------------------------+
+ * |      prefix     |    subnet ID     |        interface ID           |
+ * +-----------------+------------------+-------------------------------+
+ *
+ * The prefix length must be a value between 0 and 64.
+ */
+guint64
+nm_ip6_addr_get_subnet_id(struct in6_addr *addr, guint8 plen)
+{
+    int     nbits = 64 - plen;
+    guint64 res   = 0;
+    guint64 tmp;
+    guint64 i;
+
+    g_return_val_if_fail(addr, 0);
+    g_return_val_if_fail(plen <= 64, 0);
+
+    for (i = 0; i < 2 && nbits > 0; i++, nbits -= 32) {
+        tmp = htonl(addr->s6_addr32[1 - i]);
+        tmp = tmp & ((1ULL << NM_MIN(32U, (guint) nbits)) - 1);
+        tmp = tmp << (32 * i);
+        res += tmp;
+    }
+
+    return res;
+}
+
 int
 nm_ip6_addr_same_prefix_cmp(const struct in6_addr *addr_a,
                             const struct in6_addr *addr_b,
diff --git a/src/libnm-glib-aux/nm-inet-utils.h b/src/libnm-glib-aux/nm-inet-utils.h
index 489d21dd..999519f8 100644
--- a/src/libnm-glib-aux/nm-inet-utils.h
+++ b/src/libnm-glib-aux/nm-inet-utils.h
@@ -218,6 +218,8 @@ nm_ip4_addr_clear_host_address(in_addr_t addr, guint32 plen)
 const struct in6_addr *
 nm_ip6_addr_clear_host_address(struct in6_addr *dst, const struct in6_addr *src, guint32 plen);
 
+guint64 nm_ip6_addr_get_subnet_id(struct in6_addr *addr, guint8 plen);
+
 /*****************************************************************************/
 
 static inline int
diff --git a/src/libnm-glib-aux/nm-macros-internal.h b/src/libnm-glib-aux/nm-macros-internal.h
index 151e7a4f..940e8c30 100644
--- a/src/libnm-glib-aux/nm-macros-internal.h
+++ b/src/libnm-glib-aux/nm-macros-internal.h
@@ -1021,6 +1021,22 @@ nm_g_variant_equal(GVariant *a, GVariant *b)
 
 /*****************************************************************************/
 
+#if defined(__GNUC__) && (__GNUC__ >= 12)
+#define _NM_BACKPORT_SYMBOL_IMPL(version,                                                        \
+                                 return_type,                                                    \
+                                 orig_func,                                                      \
+                                 versioned_func,                                                 \
+                                 args_typed,                                                     \
+                                 args)                                                           \
+    return_type versioned_func args_typed;                                                       \
+                                                                                                 \
+    __attribute__((__symver__(                                                                   \
+        G_STRINGIFY(orig_func) "@" G_STRINGIFY(version)))) return_type versioned_func args_typed \
+    {                                                                                            \
+        return orig_func args;                                                                   \
+    }                                                                                            \
+    return_type orig_func args_typed;
+#else
 #define _NM_BACKPORT_SYMBOL_IMPL(version,                                                       \
                                  return_type,                                                   \
                                  orig_func,                                                     \
@@ -1035,6 +1051,7 @@ nm_g_variant_equal(GVariant *a, GVariant *b)
     return_type orig_func args_typed;                                                           \
     __asm__(".symver " G_STRINGIFY(versioned_func) ", " G_STRINGIFY(orig_func) "@" G_STRINGIFY( \
         version))
+#endif
 
 #define NM_BACKPORT_SYMBOL(version, return_type, func, args_typed, args) \
     _NM_BACKPORT_SYMBOL_IMPL(version, return_type, func, _##func##_##version, args_typed, args)
diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c
index db730b28..e39831c6 100644
--- a/src/libnm-glib-aux/nm-shared-utils.c
+++ b/src/libnm-glib-aux/nm-shared-utils.c
@@ -2898,7 +2898,7 @@ nm_utils_buf_utf8safe_unescape(const char             *str,
  *
  * Depending on @flags, valid UTF-8 characters are not escaped at all
  * (except the escape character '\\'). This is the difference to g_strescape(),
- * which escapes all non-ASCII characters. This allows to pass on
+ * which escapes all non-ASCII characters. This allows one to pass on
  * valid UTF-8 characters as-is and can be directly shown to the user
  * as UTF-8 -- with exception of the backslash escape character,
  * invalid UTF-8 sequences, and other (depending on @flags).
@@ -3113,7 +3113,7 @@ nm_utils_str_utf8safe_unescape(const char *str, NMUtilsStrUtf8SafeFlags flags, c
  *
  * Depending on @flags, valid UTF-8 characters are not escaped at all
  * (except the escape character '\\'). This is the difference to g_strescape(),
- * which escapes all non-ASCII characters. This allows to pass on
+ * which escapes all non-ASCII characters. This allows one to pass on
  * valid UTF-8 characters as-is and can be directly shown to the user
  * as UTF-8 -- with exception of the backslash escape character,
  * invalid UTF-8 sequences, and other (depending on @flags).
@@ -6004,8 +6004,8 @@ nm_utils_is_localhost(const char *name)
     return FALSE;
 }
 
-gboolean
-nm_utils_is_specific_hostname(const char *name)
+static gboolean
+_nm_utils_check_hostname(const char *name, bool allow_localhost)
 {
     if (nm_str_is_empty(name))
         return FALSE;
@@ -6016,7 +6016,7 @@ nm_utils_is_specific_hostname(const char *name)
         return FALSE;
     }
 
-    if (nm_utils_is_localhost(name))
+    if (!allow_localhost && nm_utils_is_localhost(name))
         return FALSE;
 
     /* FIXME: properly validate the hostname, like systemd's hostname_is_valid() */
@@ -6024,6 +6024,18 @@ nm_utils_is_specific_hostname(const char *name)
     return TRUE;
 }
 
+gboolean
+nm_utils_is_specific_hostname(const char *name)
+{
+    return _nm_utils_check_hostname(name, FALSE);
+}
+
+gboolean
+nm_utils_is_not_empty_hostname(const char *name)
+{
+    return _nm_utils_check_hostname(name, TRUE);
+}
+
 /*****************************************************************************/
 
 typedef struct {
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 4fa538e2..1fca6015 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -2143,7 +2143,7 @@ nm_g_ptr_array_pdata(const GPtrArray *arr)
  *   must agree with the owner-ship semantics of @func.
  *
  * This is a replacement for g_ptr_array_copy(), which is not available
- * before glib 2.62. Since GPtrArray does not allow to access the internal
+ * before glib 2.62. Since GPtrArray does not allow one to access the internal
  * element_free_func, we cannot add a compatibility implementation of g_ptr_array_copy()
  * as the caller must provide the correct element_free_func.
  *
@@ -3419,6 +3419,7 @@ char *_nm_utils_format_variant_attributes(GHashTable                          *a
 gboolean nm_utils_is_localhost(const char *name);
 
 gboolean nm_utils_is_specific_hostname(const char *name);
+gboolean nm_utils_is_not_empty_hostname(const char *name);
 
 struct passwd;
 
diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h
index feb86301..98b3f3d0 100644
--- a/src/libnm-glib-aux/nm-test-utils.h
+++ b/src/libnm-glib-aux/nm-test-utils.h
@@ -1504,7 +1504,7 @@ _nmtst_main_loop_quit_on_notify(GObject *object, GParamSpec *pspec, gpointer use
                                                    (timeout_msec),                                \
                                                    (poll_msec),                                   \
                                                    condition))                                    \
-            g_assert(FALSE &&#condition);                                                         \
+            g_assert(FALSE && #condition);                                                        \
     }                                                                                             \
     G_STMT_END
 
diff --git a/src/libnm-glib-aux/tests/test-shared-general.c b/src/libnm-glib-aux/tests/test-shared-general.c
index 2f09a549..931c25c6 100644
--- a/src/libnm-glib-aux/tests/test-shared-general.c
+++ b/src/libnm-glib-aux/tests/test-shared-general.c
@@ -398,6 +398,53 @@ test_nm_ip4_addr_netmask_from_prefix(void)
 /*****************************************************************************/
 
 static void
+test_nm_ip6_addr_get_subnet_id(void)
+{
+#define check_subnet_id(_addrstr, _plen, _subnet_id)                              \
+    {                                                                             \
+        struct in6_addr addr;                                                     \
+                                                                                  \
+        addr = nmtst_inet6_from_string(_addrstr);                                 \
+        g_assert_cmpint(nm_ip6_addr_get_subnet_id(&addr, _plen), ==, _subnet_id); \
+    }
+
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 64, 0);
+    check_subnet_id("aaaa:bbbb:cccc:fffe::", 63, 0);
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 63, 1);
+    check_subnet_id("aaaa:bbbb:cccc:fffc::", 62, 0);
+    check_subnet_id("aaaa:bbbb:cccc:fffd::", 62, 1);
+    check_subnet_id("aaaa:bbbb:cccc:fffe::", 62, 2);
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 62, 3);
+    check_subnet_id("aaaa:bbbb:cccc:fff8::", 61, 0);
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 61, 7);
+    check_subnet_id("aaaa:bbbb:cccc:fff0::", 60, 0);
+    check_subnet_id("aaaa:bbbb:cccc:fff2::", 60, 2);
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 60, 15);
+    check_subnet_id("aaaa:bbbb:cccc:0000::", 48, 0);
+    check_subnet_id("aaaa:bbbb:cccc:f000::", 48, 61440);
+    check_subnet_id("aaaa:bbbb:cccc:ffff::", 48, 65535);
+    check_subnet_id("aaaa:bbbb:cccc:0000::", 46, 0);
+    check_subnet_id("aaaa:bbbb:cccc:0001::", 46, 1);
+    check_subnet_id("aaaa:bbbb:ccce:5555::", 46, 152917);
+    check_subnet_id("aaaa:bbbb:0000:0000::", 32, 0);
+    check_subnet_id("aaaa:bbbb:0000:0001::", 32, 1);
+    check_subnet_id("aaaa:bbbb:0001:0001::", 32, 65537);
+    check_subnet_id("aaaa:bbbb:ffff:ffff::", 32, 0xffffffff);
+    check_subnet_id("aaaa:bbb8:0000:0000::", 30, 0);
+    check_subnet_id("aaaa:bbb8:0000:0001::", 30, 1);
+    check_subnet_id("aaaa:bbb8:0001:0001::", 30, 65537);
+    check_subnet_id("aaaa:bbbb:0000:0000::", 30, 0x300000000ULL);
+    check_subnet_id("aaaa:bbbb:0001:0001::", 30, 0x300010001ULL);
+    check_subnet_id("aaaa:bbbb:0001:0001::", 8, 0xAABBBB00010001ULL);
+    check_subnet_id("abaa:bbbb:0001:0001::", 7, 0x1AABBBB00010001ULL);
+    check_subnet_id("abaa:bbbb:0001:0001::", 0, 0xABAABBBB00010001ULL);
+    check_subnet_id("abaa:bbbb:0001:0001:5555:5555:5555:5555", 0, 0xABAABBBB00010001ULL);
+    check_subnet_id("::", 0, 0);
+}
+
+/*****************************************************************************/
+
+static void
 test_unaligned(void)
 {
     int shift;
@@ -2864,6 +2911,7 @@ main(int argc, char **argv)
     g_test_add_func("/general/test_nm_ip4_addr_is_loopback", test_nm_ip4_addr_is_loopback);
     g_test_add_func("/general/test_nm_ip4_addr_netmask_from_prefix",
                     test_nm_ip4_addr_netmask_from_prefix);
+    g_test_add_func("/general/test_nm_ip6_addr_get_subnet_id", test_nm_ip6_addr_get_subnet_id);
     g_test_add_func("/general/test_unaligned", test_unaligned);
     g_test_add_func("/general/test_strv_cmp", test_strv_cmp);
     g_test_add_func("/general/test_strstrip_avoid_copy", test_strstrip_avoid_copy);
diff --git a/src/libnm-log-core/nm-logging.c b/src/libnm-log-core/nm-logging.c
index a2bd2a27..019bcf09 100644
--- a/src/libnm-log-core/nm-logging.c
+++ b/src/libnm-log-core/nm-logging.c
@@ -641,7 +641,7 @@ _nm_printf(3, 4) static void _iovec_set_format(struct iovec *iov,
     {                                                               \
         const char *_str_arg = (str_arg);                           \
                                                                     \
-        nm_assert(_str_arg &&strlen(_str_arg) < (max_str_len));     \
+        nm_assert(_str_arg && strlen(_str_arg) < (max_str_len));    \
         _iovec_set_format_a((iov), (max_str_len), format, str_arg); \
     }                                                               \
     G_STMT_END
diff --git a/src/libnm-platform/devlink/nm-devlink.c b/src/libnm-platform/devlink/nm-devlink.c
index f06697cf..97749cda 100644
--- a/src/libnm-platform/devlink/nm-devlink.c
+++ b/src/libnm-platform/devlink/nm-devlink.c
@@ -14,6 +14,7 @@
 #include "libnm-platform/nm-netlink.h"
 #include "libnm-platform/nm-platform.h"
 #include "libnm-platform/nm-platform-utils.h"
+#include "libnm-platform/nmp-ethtool-ioctl.h"
 
 #define _NMLOG_PREFIX_NAME "devlink"
 #define _NMLOG_DOMAIN      LOGD_PLATFORM | LOGD_DEVICE
@@ -118,7 +119,7 @@ nm_devlink_get_dev_identifier(NMDevlink *self, char **out_bus, char **out_addr,
         return FALSE;
     }
 
-    if (!nmp_utils_ethtool_get_driver_info(self->ifindex, &ethtool_driver_info)) {
+    if (!nmp_ethtool_ioctl_get_driver_info(self->ifindex, &ethtool_driver_info)) {
         g_set_error(error,
                     NM_UTILS_ERROR,
                     NM_UTILS_ERROR_UNKNOWN,
diff --git a/src/libnm-platform/meson.build b/src/libnm-platform/meson.build
index 7b6ad042..35015b02 100644
--- a/src/libnm-platform/meson.build
+++ b/src/libnm-platform/meson.build
@@ -12,6 +12,8 @@ libnm_platform = static_library(
     'nmp-netns.c',
     'nmp-object.c',
     'nmp-plobj.c',
+    'nmp-ethtool.c',
+    'nmp-ethtool-ioctl.c',
     'devlink/nm-devlink.c',
     'wifi/nm-wifi-utils-nl80211.c',
     'wifi/nm-wifi-utils.c',
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index 24109568..d45893fe 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -41,6 +41,8 @@
 #include "libnm-platform/nm-netlink.h"
 #include "libnm-platform/nm-platform-utils.h"
 #include "libnm-platform/nmp-netns.h"
+#include "libnm-platform/nmp-ethtool.h"
+#include "libnm-platform/nmp-ethtool-ioctl.h"
 #include "libnm-platform/devlink/nm-devlink.h"
 #include "libnm-platform/wifi/nm-wifi-utils-wext.h"
 #include "libnm-platform/wifi/nm-wifi-utils.h"
@@ -1320,7 +1322,7 @@ _linktype_get_type(NMPlatform       *platform,
         NMPUtilsEthtoolDriverInfo driver_info;
 
         /* Fallback OVS detection for kernel <= 3.16 */
-        if (nmp_utils_ethtool_get_driver_info(ifindex, &driver_info)) {
+        if (nmp_ethtool_ioctl_get_driver_info(ifindex, &driver_info)) {
             if (nm_streq(driver_info.driver, "openvswitch"))
                 return NM_LINK_TYPE_OPENVSWITCH;
 
@@ -4037,14 +4039,15 @@ _new_from_nl_route(const struct nlmsghdr *nlh, gboolean id_only, ParseNlmsgIter
     NMPlatformIP4RtNextHop         *v4_nh_extra_nexthops      = v4_nh_extra_nexthops_stack;
     guint                           v4_nh_extra_alloc = G_N_ELEMENTS(v4_nh_extra_nexthops_stack);
     guint32                         mss;
-    guint32                         window   = 0;
-    guint32                         cwnd     = 0;
-    guint32                         initcwnd = 0;
-    guint32                         initrwnd = 0;
-    guint32                         mtu      = 0;
-    guint32                         rto_min  = 0;
-    guint32                         lock     = 0;
-    gboolean                        quickack = FALSE;
+    guint32                         window      = 0;
+    guint32                         cwnd        = 0;
+    guint32                         initcwnd    = 0;
+    guint32                         initrwnd    = 0;
+    guint32                         mtu         = 0;
+    guint32                         rto_min     = 0;
+    guint32                         lock        = 0;
+    gboolean                        quickack    = FALSE;
+    gboolean                        rto_min_set = FALSE;
 
     nm_assert((parse_nlmsg_iter->iter_more && parse_nlmsg_iter->ip6_route.next_multihop > 0)
               || (!parse_nlmsg_iter->iter_more && parse_nlmsg_iter->ip6_route.next_multihop == 0));
@@ -4290,8 +4293,10 @@ rta_multipath_done:
             initrwnd = nla_get_u32(mtb[RTAX_INITRWND]);
         if (mtb[RTAX_MTU])
             mtu = nla_get_u32(mtb[RTAX_MTU]);
-        if (mtb[RTAX_RTO_MIN])
-            rto_min = nla_get_u32(mtb[RTAX_RTO_MIN]);
+        if (mtb[RTAX_RTO_MIN] && NM_FLAGS_HAS(lock, 1U << RTAX_RTO_MIN)) {
+            rto_min     = nla_get_u32(mtb[RTAX_RTO_MIN]);
+            rto_min_set = TRUE;
+        }
         if (mtb[RTAX_QUICKACK])
             quickack = !!nla_get_u32(mtb[RTAX_QUICKACK]);
     }
@@ -4362,6 +4367,7 @@ rta_multipath_done:
     obj->ip_route.initcwnd      = initcwnd;
     obj->ip_route.initrwnd      = initrwnd;
     obj->ip_route.rto_min       = rto_min;
+    obj->ip_route.rto_min_set   = rto_min_set;
     obj->ip_route.quickack      = quickack;
     obj->ip_route.mtu           = mtu;
     obj->ip_route.lock_window   = NM_FLAGS_HAS(lock, 1 << RTAX_WINDOW);
@@ -5634,12 +5640,19 @@ nla_put_failure:
 static guint32
 ip_route_get_lock_flag(const NMPlatformIPRoute *route)
 {
-    return (((guint32) route->lock_window) << RTAX_WINDOW)
-           | (((guint32) route->lock_cwnd) << RTAX_CWND)
-           | (((guint32) route->lock_initcwnd) << RTAX_INITCWND)
-           | (((guint32) route->lock_initrwnd) << RTAX_INITRWND)
-           | (((guint32) route->lock_mtu) << RTAX_MTU)
-           | (((guint32) route->lock_mss) << RTAX_ADVMSS);
+    guint32 ret;
+
+    ret = (((guint32) route->lock_window) << RTAX_WINDOW)
+          | (((guint32) route->lock_cwnd) << RTAX_CWND)
+          | (((guint32) route->lock_initcwnd) << RTAX_INITCWND)
+          | (((guint32) route->lock_initrwnd) << RTAX_INITRWND)
+          | (((guint32) route->lock_mtu) << RTAX_MTU)
+          | (((guint32) route->lock_mss) << RTAX_ADVMSS);
+
+    /* the rto-min value is ignored by kernel unless the lock flag is set */
+    ret |= (((guint32) route->rto_min_set) << RTAX_RTO_MIN);
+
+    return ret;
 }
 
 static gboolean
@@ -5803,7 +5816,7 @@ _nl_msg_new_route(uint16_t nlmsg_type, uint16_t nlmsg_flags, const NMPObject *ob
             NLA_PUT_U32(msg, RTAX_INITRWND, obj->ip_route.initrwnd);
         if (obj->ip_route.mtu)
             NLA_PUT_U32(msg, RTAX_MTU, obj->ip_route.mtu);
-        if (obj->ip_route.rto_min)
+        if (obj->ip_route.rto_min_set)
             NLA_PUT_U32(msg, RTAX_RTO_MIN, obj->ip_route.rto_min);
         if (obj->ip_route.quickack)
             NLA_PUT_U32(msg, RTAX_QUICKACK, obj->ip_route.quickack);
@@ -6130,7 +6143,7 @@ nla_put_failure:
         const int         _dirfd  = (dirfd);                                                      \
         const char *const _path   = (path);                                                       \
                                                                                                   \
-        nm_assert(_path &&_path[0]);                                                              \
+        nm_assert(_path && _path[0]);                                                             \
         g_assert(!strstr(_path, "/../"));                                                         \
         if (_dirfd < 0) {                                                                         \
             nm_assert(!_pathid);                                                                  \
@@ -6138,7 +6151,7 @@ nla_put_failure:
             nm_assert(NM_STR_HAS_PREFIX(_path, "/proc/sys/") || NM_STR_HAS_PREFIX(_path, "/sys/") \
                       || NM_STR_HAS_PREFIX(_path, "/proc/net"));                                  \
         } else {                                                                                  \
-            nm_assert(_pathid &&_pathid[0] && _pathid[0] != '/');                                 \
+            nm_assert(_pathid && _pathid[0] && _pathid[0] != '/');                                \
             nm_assert(_path[0] != '/');                                                           \
         }                                                                                         \
     }                                                                                             \
@@ -7562,7 +7575,7 @@ cache_on_change(NMPlatform      *platform,
                              NM_LINK_TYPE_IP6GRETAP,
                              NM_LINK_TYPE_INFINIBAND,
                              NM_LINK_TYPE_MACVLAN,
-                             NM_LINK_TYPE_MACVLAN,
+                             NM_LINK_TYPE_MACVTAP,
                              NM_LINK_TYPE_SIT,
                              NM_LINK_TYPE_TUN,
                              NM_LINK_TYPE_VLAN,
@@ -8955,8 +8968,8 @@ link_supports_carrier_detect(NMPlatform *platform, int ifindex)
      * us whether the device actually supports carrier detection in the first
      * place. We assume any device that does implements one of these two APIs.
      */
-    return nmp_utils_ethtool_supports_carrier_detect(ifindex)
-           || nmp_utils_mii_supports_carrier_detect(ifindex);
+    return nmp_ethtool_ioctl_supports_carrier_detect(ifindex)
+           || nmp_mii_ioctl_supports_carrier_detect(ifindex);
 }
 
 static gboolean
@@ -8974,7 +8987,7 @@ link_supports_vlans(NMPlatform *platform, int ifindex)
     if (!nm_platform_netns_push(platform, &netns))
         return FALSE;
 
-    return nmp_utils_ethtool_supports_vlans(ifindex);
+    return nmp_ethtool_ioctl_supports_vlans(ifindex);
 }
 
 static gboolean
@@ -9052,7 +9065,7 @@ link_get_permanent_address_ethtool(NMPlatform *platform, int ifindex, NMPLinkAdd
     if (!nm_platform_netns_push(platform, &netns))
         return FALSE;
 
-    if (!nmp_utils_ethtool_get_permanent_address(ifindex, buffer, &len))
+    if (!nmp_ethtool_ioctl_get_permanent_address(ifindex, buffer, &len))
         return FALSE;
     nm_assert(len <= _NM_UTILS_HWADDR_LEN_MAX);
     memcpy(out_address->data, buffer, len);
@@ -9195,7 +9208,7 @@ sriov_async_finish_err(SriovAsyncState *async_state, GError *error)
     g_object_unref(async_state->platform);
     g_object_unref(async_state->cancellable);
     g_free(async_state);
-    g_free(error);
+    nm_g_error_free(error);
 }
 
 static void
@@ -10380,7 +10393,7 @@ link_get_wake_on_lan(NMPlatform *platform, int ifindex)
         return FALSE;
 
     if (type == NM_LINK_TYPE_ETHERNET)
-        return nmp_utils_ethtool_get_wake_on_lan(ifindex);
+        return nmp_ethtool_ioctl_get_wake_on_lan(ifindex);
     else if (type == NM_LINK_TYPE_WIFI) {
         WIFI_GET_WIFI_DATA(wifi_data, platform, ifindex, FALSE);
 
@@ -10405,7 +10418,7 @@ link_get_driver_info(NMPlatform *platform,
     if (!nm_platform_netns_push(platform, &netns))
         return FALSE;
 
-    if (!nmp_utils_ethtool_get_driver_info(ifindex, &driver_info))
+    if (!nmp_ethtool_ioctl_get_driver_info(ifindex, &driver_info))
         return FALSE;
     NM_SET_OUT(out_driver_name, g_strdup(driver_info.driver));
     NM_SET_OUT(out_driver_version, g_strdup(driver_info.version));
@@ -10465,7 +10478,7 @@ parse_fdb_cb(const struct nl_msg *msg, void *arg)
 }
 
 NMEtherAddr **
-nm_linux_platform_get_link_fdb_table(NMPlatform *platform, int *ifindexes, guint ifindexes_len)
+nm_linux_platform_get_bridge_fdb(NMPlatform *platform, int *ifindexes, guint ifindexes_len)
 {
     int                            nle;
     struct nl_sock                *sk        = NULL;
@@ -11820,6 +11833,74 @@ mptcp_addrs_dump(NMPlatform *platform)
 
 /*****************************************************************************/
 
+static gboolean
+ethtool_get_pause(NMPlatform *platform, int ifindex, NMEthtoolPauseState *pause)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_get_pause(priv->sk_genl_sync,
+                                 genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                                 ifindex,
+                                 pause);
+}
+
+static gboolean
+ethtool_set_pause(NMPlatform *platform, int ifindex, const NMEthtoolPauseState *pause)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_set_pause(priv->sk_genl_sync,
+                                 genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                                 ifindex,
+                                 pause);
+}
+
+static gboolean
+ethtool_get_eee(NMPlatform *platform, int ifindex, NMEthtoolEEEState *eee)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_get_eee(priv->sk_genl_sync,
+                               genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                               ifindex,
+                               eee);
+}
+
+static gboolean
+ethtool_set_eee(NMPlatform *platform, int ifindex, const NMEthtoolEEEState *eee)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_set_eee(priv->sk_genl_sync,
+                               genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                               ifindex,
+                               eee);
+}
+
+static gboolean
+ethtool_get_ring(NMPlatform *platform, int ifindex, NMEthtoolRingState *ring)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_get_ring(priv->sk_genl_sync,
+                                genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                                ifindex,
+                                ring);
+}
+
+static gboolean
+ethtool_set_ring(NMPlatform *platform, int ifindex, const NMEthtoolRingState *ring)
+{
+    NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE(platform);
+
+    return nmp_ethtool_set_ring(priv->sk_genl_sync,
+                                genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_ETHTOOL),
+                                ifindex,
+                                ring);
+}
+
+/*****************************************************************************/
+
 static void
 cache_update_link_udev(NMPlatform *platform, int ifindex, struct udev_device *udevice)
 {
@@ -12317,4 +12398,11 @@ nm_linux_platform_class_init(NMLinuxPlatformClass *klass)
     platform_class->genl_get_family_id = genl_get_family_id;
     platform_class->mptcp_addr_update  = mptcp_addr_update;
     platform_class->mptcp_addrs_dump   = mptcp_addrs_dump;
+
+    platform_class->ethtool_set_pause = ethtool_set_pause;
+    platform_class->ethtool_get_pause = ethtool_get_pause;
+    platform_class->ethtool_set_eee   = ethtool_set_eee;
+    platform_class->ethtool_get_eee   = ethtool_get_eee;
+    platform_class->ethtool_set_ring  = ethtool_set_ring;
+    platform_class->ethtool_get_ring  = ethtool_get_ring;
 }
diff --git a/src/libnm-platform/nm-linux-platform.h b/src/libnm-platform/nm-linux-platform.h
index 3f591b7f..c7f1b17a 100644
--- a/src/libnm-platform/nm-linux-platform.h
+++ b/src/libnm-platform/nm-linux-platform.h
@@ -26,7 +26,7 @@ GType nm_linux_platform_get_type(void);
 struct _NMDedupMultiIndex;
 
 NMEtherAddr **
-nm_linux_platform_get_link_fdb_table(NMPlatform *platform, int *ifindexes, guint ifindexes_len);
+nm_linux_platform_get_bridge_fdb(NMPlatform *platform, int *ifindexes, guint ifindexes_len);
 
 NMPlatform *nm_linux_platform_new(struct _NMDedupMultiIndex *multi_idx,
                                   gboolean                   log_with_ptr,
diff --git a/src/libnm-platform/nm-platform-utils.c b/src/libnm-platform/nm-platform-utils.c
index 15aac11c..d35ff6fe 100644
--- a/src/libnm-platform/nm-platform-utils.c
+++ b/src/libnm-platform/nm-platform-utils.c
@@ -12,14 +12,12 @@
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <linux/sockios.h>
-#include <linux/mii.h>
 #include <linux/if.h>
 #include <linux/version.h>
 #include <linux/rtnetlink.h>
 #include <fcntl.h>
 #include <libudev.h>
 
-#include "libnm-base/nm-ethtool-base.h"
 #include "libnm-log-core/nm-logging.h"
 #include "libnm-glib-aux/nm-time-utils.h"
 
@@ -60,1453 +58,6 @@ NM_UTILS_LOOKUP_STR_DEFINE(nm_platform_link_duplex_type_to_string,
                            NM_UTILS_LOOKUP_STR_ITEM(NM_PLATFORM_LINK_DUPLEX_FULL, "full"),
                            NM_UTILS_LOOKUP_STR_ITEM(NM_PLATFORM_LINK_DUPLEX_HALF, "half"), );
 
-/*****************************************************************************/
-
-typedef struct {
-    int       fd;
-    const int ifindex;
-    char      ifname[IFNAMSIZ];
-} SocketHandle;
-
-#define SOCKET_HANDLE_INIT(_ifindex) \
-    {                                \
-        .fd      = -1,               \
-        .ifindex = (_ifindex),       \
-    }
-
-static void
-_nm_auto_socket_handle(SocketHandle *shandle)
-{
-    if (shandle->fd >= 0)
-        nm_close(shandle->fd);
-}
-
-#define nm_auto_socket_handle nm_auto(_nm_auto_socket_handle)
-
-/*****************************************************************************/
-
-typedef enum {
-    IOCTL_CALL_DATA_TYPE_NONE,
-    IOCTL_CALL_DATA_TYPE_IFRDATA,
-    IOCTL_CALL_DATA_TYPE_IFRU,
-} IoctlCallDataType;
-
-static int
-_ioctl_call(const char       *log_ioctl_type,
-            const char       *log_subtype,
-            unsigned long int ioctl_request,
-            int               ifindex,
-            int              *inout_fd,
-            char             *inout_ifname,
-            IoctlCallDataType edata_type,
-            gpointer          edata,
-            gsize             edata_size,
-            struct ifreq     *out_ifreq)
-{
-    nm_auto_close int fd_close = -1;
-    int               fd;
-    int               r;
-    gpointer          edata_backup      = NULL;
-    gs_free gpointer  edata_backup_free = NULL;
-    guint             try_count;
-    char              known_ifnames[2][IFNAMSIZ];
-    const char       *failure_reason = NULL;
-    struct ifreq      ifr;
-
-    nm_assert(ifindex > 0);
-    nm_assert(NM_IN_SET(edata_type,
-                        IOCTL_CALL_DATA_TYPE_NONE,
-                        IOCTL_CALL_DATA_TYPE_IFRDATA,
-                        IOCTL_CALL_DATA_TYPE_IFRU));
-    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_NONE || edata_size == 0);
-    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_IFRDATA || edata_size > 0);
-    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_IFRU
-              || (edata_size > 0 && edata_size <= sizeof(ifr.ifr_ifru)));
-    nm_assert(edata_size == 0 || edata);
-
-    /* open a file descriptor (or use the one provided). */
-    if (inout_fd && *inout_fd >= 0)
-        fd = *inout_fd;
-    else {
-        fd = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
-        if (fd < 0) {
-            r              = -NM_ERRNO_NATIVE(errno);
-            failure_reason = "failed creating socket or ioctl";
-            goto out;
-        }
-        if (inout_fd)
-            *inout_fd = fd;
-        else
-            fd_close = fd;
-    }
-
-    /* resolve the ifindex to name (or use the one provided). */
-    if (inout_ifname && inout_ifname[0])
-        nm_utils_ifname_cpy(known_ifnames[0], inout_ifname);
-    else {
-        if (!nmp_utils_if_indextoname(ifindex, known_ifnames[0])) {
-            failure_reason = "cannot resolve ifindex";
-            r              = -ENODEV;
-            goto out;
-        }
-        if (inout_ifname)
-            nm_utils_ifname_cpy(inout_ifname, known_ifnames[0]);
-    }
-
-    /* we might need to retry the request. Backup edata so that we can
-     * restore it on retry. */
-    if (edata_size > 0)
-        edata_backup = nm_memdup_maybe_a(500, edata, edata_size, &edata_backup_free);
-
-    try_count = 0;
-
-again:
-{
-    const char *ifname = known_ifnames[try_count % 2];
-
-    nm_assert(ifindex > 0);
-    nm_assert(ifname && nm_utils_ifname_valid_kernel(ifname, NULL));
-    nm_assert(fd >= 0);
-
-    memset(&ifr, 0, sizeof(ifr));
-    nm_utils_ifname_cpy(ifr.ifr_name, ifname);
-    if (edata_type == IOCTL_CALL_DATA_TYPE_IFRDATA)
-        ifr.ifr_data = edata;
-    else if (edata_type == IOCTL_CALL_DATA_TYPE_IFRU)
-        memcpy(&ifr.ifr_ifru, edata, NM_MIN(edata_size, sizeof(ifr.ifr_ifru)));
-
-    if (ioctl(fd, ioctl_request, &ifr) < 0) {
-        r = -NM_ERRNO_NATIVE(errno);
-        nm_log_trace(LOGD_PLATFORM,
-                     "%s[%d]: %s, %s: failed: %s",
-                     log_ioctl_type,
-                     ifindex,
-                     log_subtype,
-                     ifname,
-                     nm_strerror_native(-r));
-    } else {
-        r = 0;
-        nm_log_trace(LOGD_PLATFORM,
-                     "%s[%d]: %s, %s: success",
-                     log_ioctl_type,
-                     ifindex,
-                     log_subtype,
-                     ifname);
-    }
-}
-
-    try_count++;
-
-    /* resolve the name again to see whether the ifindex still has the same name. */
-    if (!nmp_utils_if_indextoname(ifindex, known_ifnames[try_count % 2])) {
-        /* we could not find the ifindex again. Probably the device just got
-         * removed.
-         *
-         * In both cases we return the error code we got from ioctl above.
-         * Either it failed because the device was gone already or it still
-         * managed to complete the call. In both cases, the error code is good. */
-        failure_reason =
-            "cannot resolve ifindex after ioctl call. Probably the device was just removed";
-        goto out;
-    }
-
-    /* check whether the ifname changed in the meantime. If yes, would render the result
-     * invalid. Note that this cannot detect every race regarding renames, for example:
-     *
-     *  - if_indextoname(#10) gives eth0
-     *  - rename(#10) => eth0_tmp
-     *  - rename(#11) => eth0
-     *  - ioctl(eth0) (wrongly fetching #11, formerly eth1)
-     *  - rename(#11) => eth_something
-     *  - rename(#10) => eth0
-     *  - if_indextoname(#10) gives eth0
-     */
-    if (!nm_streq(known_ifnames[0], known_ifnames[1])) {
-        gboolean retry;
-
-        /* we detected a possible(!) rename.
-         *
-         * For getters it's straight forward to just retry the call.
-         *
-         * For setters we also always retry. If our previous call operated on the right device,
-         * calling it again should have no bad effect (just setting the same thing more than once).
-         *
-         * The only potential bad thing is if there was a race involving swapping names, and we just
-         * set the ioctl option on the wrong device. But then the bad thing already happenned and
-         * we cannot detect it (nor do anything about it). At least, we can retry and set the
-         * option on the right interface. */
-        retry = (try_count < 5);
-
-        nm_log_trace(LOGD_PLATFORM,
-                     "%s[%d]: %s: rename detected from \"%s\" to \"%s\". %s",
-                     log_ioctl_type,
-                     ifindex,
-                     log_subtype,
-                     known_ifnames[(try_count - 1) % 2],
-                     known_ifnames[try_count % 2],
-                     retry ? "Retry" : "No retry");
-        if (inout_ifname)
-            nm_utils_ifname_cpy(inout_ifname, known_ifnames[try_count % 2]);
-        if (retry) {
-            if (edata_size > 0)
-                memcpy(edata, edata_backup, edata_size);
-            goto again;
-        }
-    }
-
-out:
-    if (failure_reason) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "%s[%d]: %s: %s: %s",
-                     log_ioctl_type,
-                     ifindex,
-                     log_subtype,
-                     failure_reason,
-                     r < 0 ? nm_strerror_native(-r) : "assume success");
-    }
-    if (r >= 0)
-        NM_SET_OUT(out_ifreq, ifr);
-    return r;
-}
-
-/******************************************************************************
- * ethtool
- *****************************************************************************/
-
-static NM_UTILS_ENUM2STR_DEFINE(_ethtool_cmd_to_string,
-                                guint32,
-                                NM_UTILS_ENUM2STR(ETHTOOL_GCOALESCE, "ETHTOOL_GCOALESCE"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GDRVINFO, "ETHTOOL_GDRVINFO"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GFEATURES, "ETHTOOL_GFEATURES"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GLINK, "ETHTOOL_GLINK"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GLINKSETTINGS, "ETHTOOL_GLINKSETTINGS"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GPERMADDR, "ETHTOOL_GPERMADDR"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GRINGPARAM, "ETHTOOL_GRINGPARAM"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GPAUSEPARAM, "ETHTOOL_GPAUSEPARAM"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GSET, "ETHTOOL_GSET"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GSSET_INFO, "ETHTOOL_GSSET_INFO"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GSTATS, "ETHTOOL_GSTATS"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GSTRINGS, "ETHTOOL_GSTRINGS"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_GWOL, "ETHTOOL_GWOL"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SCOALESCE, "ETHTOOL_SCOALESCE"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SFEATURES, "ETHTOOL_SFEATURES"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SLINKSETTINGS, "ETHTOOL_SLINKSETTINGS"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SRINGPARAM, "ETHTOOL_SRINGPARAM"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SPAUSEPARAM, "ETHTOOL_SPAUSEPARAM"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SSET, "ETHTOOL_SSET"),
-                                NM_UTILS_ENUM2STR(ETHTOOL_SWOL, "ETHTOOL_SWOL"), );
-
-static const char *
-_ethtool_edata_to_string(gpointer edata, gsize edata_size, char *sbuf, gsize sbuf_len)
-{
-    nm_assert(edata);
-    nm_assert(edata_size >= sizeof(guint32));
-    nm_assert((((intptr_t) edata) % _nm_alignof(guint32)) == 0);
-
-    return _ethtool_cmd_to_string(*((guint32 *) edata), sbuf, sbuf_len);
-}
-
-/*****************************************************************************/
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)
-#define ethtool_cmd_speed(pedata) ((pedata)->speed)
-
-#define ethtool_cmd_speed_set(pedata, speed) \
-    G_STMT_START                             \
-    {                                        \
-        (pedata)->speed = (guint16) (speed); \
-    }                                        \
-    G_STMT_END
-#endif
-
-static int
-_ethtool_call_handle(SocketHandle *shandle, gpointer edata, gsize edata_size)
-{
-    char sbuf[50];
-
-    return _ioctl_call("ethtool",
-                       _ethtool_edata_to_string(edata, edata_size, sbuf, sizeof(sbuf)),
-                       SIOCETHTOOL,
-                       shandle->ifindex,
-                       &shandle->fd,
-                       shandle->ifname,
-                       IOCTL_CALL_DATA_TYPE_IFRDATA,
-                       edata,
-                       edata_size,
-                       NULL);
-}
-
-static int
-_ethtool_call_once(int ifindex, gpointer edata, gsize edata_size)
-{
-    char sbuf[50];
-
-    return _ioctl_call("ethtool",
-                       _ethtool_edata_to_string(edata, edata_size, sbuf, sizeof(sbuf)),
-                       SIOCETHTOOL,
-                       ifindex,
-                       NULL,
-                       NULL,
-                       IOCTL_CALL_DATA_TYPE_IFRDATA,
-                       edata,
-                       edata_size,
-                       NULL);
-}
-
-/*****************************************************************************/
-
-static struct ethtool_gstrings *
-ethtool_get_stringset(SocketHandle *shandle, int stringset_id)
-{
-    struct {
-        struct ethtool_sset_info info;
-        guint32                  sentinel;
-    } sset_info = {
-        .info.cmd       = ETHTOOL_GSSET_INFO,
-        .info.reserved  = 0,
-        .info.sset_mask = (1ULL << stringset_id),
-    };
-    const guint32                   *pdata;
-    gs_free struct ethtool_gstrings *gstrings = NULL;
-    gsize                            gstrings_len;
-    guint32                          i, len;
-
-    if (_ethtool_call_handle(shandle, &sset_info, sizeof(sset_info)) < 0)
-        return NULL;
-    if (!sset_info.info.sset_mask)
-        return NULL;
-
-    pdata = (guint32 *) sset_info.info.data;
-
-    len = *pdata;
-
-    gstrings_len         = sizeof(*gstrings) + (len * ETH_GSTRING_LEN);
-    gstrings             = g_malloc0(gstrings_len);
-    gstrings->cmd        = ETHTOOL_GSTRINGS;
-    gstrings->string_set = stringset_id;
-    gstrings->len        = len;
-    if (gstrings->len > 0) {
-        if (_ethtool_call_handle(shandle, gstrings, gstrings_len) < 0)
-            return NULL;
-        for (i = 0; i < gstrings->len; i++) {
-            /* ensure NUL terminated */
-            gstrings->data[i * ETH_GSTRING_LEN + (ETH_GSTRING_LEN - 1)] = '\0';
-        }
-    }
-
-    return g_steal_pointer(&gstrings);
-}
-
-static int
-ethtool_gstrings_find(const struct ethtool_gstrings *gstrings, const char *needle)
-{
-    guint32 i;
-
-    /* ethtool_get_stringset() always ensures NUL terminated strings at ETH_GSTRING_LEN.
-     * that means, we cannot possibly request longer names. */
-    nm_assert(needle && strlen(needle) < ETH_GSTRING_LEN);
-
-    for (i = 0; i < gstrings->len; i++) {
-        if (nm_streq((char *) &gstrings->data[i * ETH_GSTRING_LEN], needle))
-            return i;
-    }
-    return -1;
-}
-
-static int
-ethtool_get_stringset_index(SocketHandle *shandle, int stringset_id, const char *needle)
-{
-    gs_free struct ethtool_gstrings *gstrings = NULL;
-
-    /* ethtool_get_stringset() always ensures NUL terminated strings at ETH_GSTRING_LEN.
-     * that means, we cannot possibly request longer names. */
-    nm_assert(needle && strlen(needle) < ETH_GSTRING_LEN);
-
-    gstrings = ethtool_get_stringset(shandle, stringset_id);
-    if (gstrings)
-        return ethtool_gstrings_find(gstrings, needle);
-    return -1;
-}
-
-/*****************************************************************************/
-
-static const NMEthtoolFeatureInfo _ethtool_feature_infos[_NM_ETHTOOL_ID_FEATURE_NUM] = {
-#define ETHT_FEAT(eid, ...)                                      \
-    {                                                            \
-        .ethtool_id     = eid,                                   \
-        .n_kernel_names = NM_NARG(__VA_ARGS__),                  \
-        .kernel_names   = ((const char *const[]) {__VA_ARGS__}), \
-    }
-
-    /* the order does only matter for one thing: if it happens that more than one NMEthtoolID
-     * reference the same kernel-name, then the one that is mentioned *later* will win in
-     * case these NMEthtoolIDs are set. That mostly only makes sense for ethtool-ids which
-     * refer to multiple features ("feature-tso"), while also having more specific ids
-     * ("feature-tx-tcp-segmentation"). */
-
-    /* names from ethtool utility, which are aliases for multiple features. */
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_SG, "tx-scatter-gather", "tx-scatter-gather-fraglist"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TSO,
-              "tx-tcp-segmentation",
-              "tx-tcp-ecn-segmentation",
-              "tx-tcp-mangleid-segmentation",
-              "tx-tcp6-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX,
-              "tx-checksum-ipv4",
-              "tx-checksum-ip-generic",
-              "tx-checksum-ipv6",
-              "tx-checksum-fcoe-crc",
-              "tx-checksum-sctp"),
-
-    /* names from ethtool utility, which are aliases for one feature. */
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_GRO, "rx-gro"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_GSO, "tx-generic-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_LRO, "rx-lro"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_NTUPLE, "rx-ntuple-filter"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX, "rx-checksum"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RXHASH, "rx-hashing"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RXVLAN, "rx-vlan-hw-parse"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TXVLAN, "tx-vlan-hw-insert"),
-
-    /* names of features, as known by kernel. */
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_ESP_HW_OFFLOAD, "esp-hw-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_ESP_TX_CSUM_HW_OFFLOAD, "esp-tx-csum-hw-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_FCOE_MTU, "fcoe-mtu"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_HIGHDMA, "highdma"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_HW_TC_OFFLOAD, "hw-tc-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_L2_FWD_OFFLOAD, "l2-fwd-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_LOOPBACK, "loopback"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_MACSEC_HW_OFFLOAD, "macsec-hw-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_ALL, "rx-all"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_FCS, "rx-fcs"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_GRO_HW, "rx-gro-hw"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_GRO_LIST, "rx-gro-list"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_UDP_GRO_FORWARDING, "rx-udp-gro-forwarding"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD, "rx-udp_tunnel-port-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_FILTER, "rx-vlan-filter"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_FILTER, "rx-vlan-stag-filter"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_HW_PARSE, "rx-vlan-stag-hw-parse"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_RECORD, "tls-hw-record"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_RX_OFFLOAD, "tls-hw-rx-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_TX_OFFLOAD, "tls-hw-tx-offload"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_FCOE_CRC, "tx-checksum-fcoe-crc"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV4, "tx-checksum-ipv4"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV6, "tx-checksum-ipv6"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IP_GENERIC, "tx-checksum-ip-generic"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_SCTP, "tx-checksum-sctp"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_ESP_SEGMENTATION, "tx-esp-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_FCOE_SEGMENTATION, "tx-fcoe-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GRE_CSUM_SEGMENTATION, "tx-gre-csum-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GRE_SEGMENTATION, "tx-gre-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_LIST, "tx-gso-list"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_PARTIAL, "tx-gso-partial"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_ROBUST, "tx-gso-robust"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_IPXIP4_SEGMENTATION, "tx-ipxip4-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_IPXIP6_SEGMENTATION, "tx-ipxip6-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_NOCACHE_COPY, "tx-nocache-copy"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER, "tx-scatter-gather"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER_FRAGLIST, "tx-scatter-gather-fraglist"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCTP_SEGMENTATION, "tx-sctp-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP6_SEGMENTATION, "tx-tcp6-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_ECN_SEGMENTATION, "tx-tcp-ecn-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_MANGLEID_SEGMENTATION, "tx-tcp-mangleid-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_SEGMENTATION, "tx-tcp-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TUNNEL_REMCSUM_SEGMENTATION,
-              "tx-tunnel-remcsum-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_SEGMENTATION, "tx-udp-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION, "tx-udp_tnl-csum-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_SEGMENTATION, "tx-udp_tnl-segmentation"),
-    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_VLAN_STAG_HW_INSERT, "tx-vlan-stag-hw-insert"),
-};
-
-/* the number of kernel features that we handle. It essentially is the sum of all
- * kernel_names. So, all ethtool-ids that reference exactly one kernel-name
- * (_NM_ETHTOOL_ID_FEATURE_NUM) + some extra, for ethtool-ids that are aliases
- * for multiple kernel-names. */
-#define N_ETHTOOL_KERNEL_FEATURES (((guint) _NM_ETHTOOL_ID_FEATURE_NUM) + 8u)
-
-static void
-_ASSERT_ethtool_feature_infos(void)
-{
-#if NM_MORE_ASSERTS > 10
-    guint i, k, n;
-    bool  found[_NM_ETHTOOL_ID_FEATURE_NUM] = {};
-
-    G_STATIC_ASSERT_EXPR(G_N_ELEMENTS(_ethtool_feature_infos) == _NM_ETHTOOL_ID_FEATURE_NUM);
-
-    n = 0;
-    for (i = 0; i < G_N_ELEMENTS(_ethtool_feature_infos); i++) {
-        NMEthtoolFeatureState       kstate;
-        const NMEthtoolFeatureInfo *inf = &_ethtool_feature_infos[i];
-
-        g_assert(inf->ethtool_id >= _NM_ETHTOOL_ID_FEATURE_FIRST);
-        g_assert(inf->ethtool_id <= _NM_ETHTOOL_ID_FEATURE_LAST);
-        g_assert(inf->n_kernel_names > 0);
-
-        for (k = 0; k < i; k++)
-            g_assert(inf->ethtool_id != _ethtool_feature_infos[k].ethtool_id);
-
-        g_assert(!found[_NM_ETHTOOL_ID_FEATURE_AS_IDX(inf->ethtool_id)]);
-        found[_NM_ETHTOOL_ID_FEATURE_AS_IDX(inf->ethtool_id)] = TRUE;
-
-        kstate.idx_kernel_name = inf->n_kernel_names - 1;
-        g_assert((guint) kstate.idx_kernel_name == (guint) (inf->n_kernel_names - 1));
-
-        n += inf->n_kernel_names;
-        for (k = 0; k < inf->n_kernel_names; k++) {
-            const char *name = inf->kernel_names[k];
-
-            g_assert(!nm_strv_contains(inf->kernel_names, k, name));
-
-            /* these offload features are only informational and cannot be set from user-space
-             * (NETIF_F_NEVER_CHANGE). We should not track them in _ethtool_feature_infos. */
-            g_assert(!nm_streq(name, "netns-local"));
-            g_assert(!nm_streq(name, "tx-lockless"));
-            g_assert(!nm_streq(name, "vlan-challenged"));
-        }
-    }
-
-    for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++)
-        g_assert(found[i]);
-
-    g_assert(n == N_ETHTOOL_KERNEL_FEATURES);
-#endif
-}
-
-static NMEthtoolFeatureStates *
-ethtool_get_features(SocketHandle *shandle)
-{
-    gs_free NMEthtoolFeatureStates  *states      = NULL;
-    gs_free struct ethtool_gstrings *ss_features = NULL;
-
-    _ASSERT_ethtool_feature_infos();
-
-    ss_features = ethtool_get_stringset(shandle, ETH_SS_FEATURES);
-    if (!ss_features)
-        return NULL;
-
-    if (ss_features->len > 0) {
-        gs_free struct ethtool_gfeatures   *gfeatures_free = NULL;
-        struct ethtool_gfeatures           *gfeatures;
-        gsize                               gfeatures_len;
-        guint                               idx;
-        const NMEthtoolFeatureState        *states_list0   = NULL;
-        const NMEthtoolFeatureState *const *states_plist0  = NULL;
-        guint                               states_plist_n = 0;
-
-        gfeatures_len = sizeof(struct ethtool_gfeatures)
-                        + (NM_DIV_ROUND_UP(ss_features->len, 32u) * sizeof(gfeatures->features[0]));
-        gfeatures       = nm_malloc0_maybe_a(300, gfeatures_len, &gfeatures_free);
-        gfeatures->cmd  = ETHTOOL_GFEATURES;
-        gfeatures->size = NM_DIV_ROUND_UP(ss_features->len, 32u);
-        if (_ethtool_call_handle(shandle, gfeatures, gfeatures_len) < 0)
-            return NULL;
-
-        for (idx = 0; idx < G_N_ELEMENTS(_ethtool_feature_infos); idx++) {
-            const NMEthtoolFeatureInfo *info = &_ethtool_feature_infos[idx];
-            guint                       idx_kernel_name;
-
-            for (idx_kernel_name = 0; idx_kernel_name < info->n_kernel_names; idx_kernel_name++) {
-                NMEthtoolFeatureState *kstate;
-                const char            *kernel_name = info->kernel_names[idx_kernel_name];
-                int                    i_feature;
-                guint                  i_block;
-                guint32                i_flag;
-
-                i_feature = ethtool_gstrings_find(ss_features, kernel_name);
-                if (i_feature < 0)
-                    continue;
-
-                i_block = ((guint) i_feature) / 32u;
-                i_flag  = (guint32) (1u << (((guint) i_feature) % 32u));
-
-                if (!states) {
-                    states = g_malloc0(
-                        sizeof(NMEthtoolFeatureStates)
-                        + (N_ETHTOOL_KERNEL_FEATURES * sizeof(NMEthtoolFeatureState))
-                        + ((N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos))
-                           * sizeof(NMEthtoolFeatureState *)));
-                    states_list0          = &states->states_list[0];
-                    states_plist0         = (gpointer) &states_list0[N_ETHTOOL_KERNEL_FEATURES];
-                    states->n_ss_features = ss_features->len;
-                }
-
-                nm_assert(states->n_states < N_ETHTOOL_KERNEL_FEATURES);
-                kstate = (NMEthtoolFeatureState *) &states_list0[states->n_states];
-                states->n_states++;
-
-                kstate->info            = info;
-                kstate->idx_ss_features = i_feature;
-                kstate->idx_kernel_name = idx_kernel_name;
-                kstate->available       = !!(gfeatures->features[i_block].available & i_flag);
-                kstate->requested       = !!(gfeatures->features[i_block].requested & i_flag);
-                kstate->active          = !!(gfeatures->features[i_block].active & i_flag);
-                kstate->never_changed   = !!(gfeatures->features[i_block].never_changed & i_flag);
-
-                nm_assert(states_plist_n
-                          < N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos));
-
-                if (!states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)])
-                    states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)] =
-                        &states_plist0[states_plist_n];
-                ((const NMEthtoolFeatureState **) states_plist0)[states_plist_n] = kstate;
-                states_plist_n++;
-            }
-
-            if (states && states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)]) {
-                nm_assert(states_plist_n
-                          < N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos));
-                nm_assert(!states_plist0[states_plist_n]);
-                states_plist_n++;
-            }
-        }
-    }
-
-    return g_steal_pointer(&states);
-}
-
-NMEthtoolFeatureStates *
-nmp_utils_ethtool_get_features(int ifindex)
-{
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-    NMEthtoolFeatureStates            *features;
-
-    g_return_val_if_fail(ifindex > 0, 0);
-
-    features = ethtool_get_features(&shandle);
-
-    if (!features) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting features",
-                     ifindex,
-                     "get-features");
-        return NULL;
-    }
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel features",
-                 ifindex,
-                 "get-features");
-    return features;
-}
-
-static const char *
-_ethtool_feature_state_to_string(char                        *buf,
-                                 gsize                        buf_size,
-                                 const NMEthtoolFeatureState *s,
-                                 const char                  *prefix)
-{
-    int l;
-
-    l = g_snprintf(buf,
-                   buf_size,
-                   "%s %s%s",
-                   prefix ?: "",
-                   ONOFF(s->active),
-                   (!s->available || s->never_changed)
-                       ? ", [fixed]"
-                       : ((s->requested != s->active)
-                              ? (s->requested ? ", [requested on]" : ", [requested off]")
-                              : ""));
-    nm_assert(l < buf_size);
-    return buf;
-}
-
-gboolean
-nmp_utils_ethtool_set_features(
-    int                           ifindex,
-    const NMEthtoolFeatureStates *features,
-    const NMOptionBool *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */,
-    gboolean            do_set /* or reset */)
-{
-    nm_auto_socket_handle SocketHandle shandle        = SOCKET_HANDLE_INIT(ifindex);
-    gs_free struct ethtool_sfeatures  *sfeatures_free = NULL;
-    struct ethtool_sfeatures          *sfeatures;
-    gsize                              sfeatures_len;
-    int                                r;
-    guint                              i, j;
-    struct {
-        const NMEthtoolFeatureState *f_state;
-        NMOptionBool                 requested;
-    } set_states[N_ETHTOOL_KERNEL_FEATURES];
-    guint    set_states_n = 0;
-    gboolean success      = TRUE;
-
-    g_return_val_if_fail(ifindex > 0, 0);
-    g_return_val_if_fail(features, 0);
-    g_return_val_if_fail(requested, 0);
-
-    nm_assert(features->n_states <= N_ETHTOOL_KERNEL_FEATURES);
-
-    for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++) {
-        const NMEthtoolFeatureState *const *states_indexed;
-
-        if (requested[i] == NM_OPTION_BOOL_DEFAULT)
-            continue;
-
-        if (!(states_indexed = features->states_indexed[i])) {
-            if (do_set) {
-                nm_log_trace(LOGD_PLATFORM,
-                             "ethtool[%d]: %s: set feature %s: skip (not found)",
-                             ifindex,
-                             "set-features",
-                             nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname);
-                success = FALSE;
-            }
-            continue;
-        }
-
-        for (j = 0; states_indexed[j]; j++) {
-            const NMEthtoolFeatureState *s = states_indexed[j];
-            char                         sbuf[255];
-
-            if (set_states_n >= G_N_ELEMENTS(set_states))
-                g_return_val_if_reached(FALSE);
-
-            if (s->never_changed) {
-                nm_log_trace(LOGD_PLATFORM,
-                             "ethtool[%d]: %s: %s feature %s (%s): %s, %s (skip feature marked as "
-                             "never changed)",
-                             ifindex,
-                             "set-features",
-                             do_set ? "set" : "reset",
-                             nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname,
-                             s->info->kernel_names[s->idx_kernel_name],
-                             ONOFF(do_set ? requested[i] == NM_OPTION_BOOL_TRUE : s->active),
-                             _ethtool_feature_state_to_string(sbuf,
-                                                              sizeof(sbuf),
-                                                              s,
-                                                              do_set ? " currently:" : " before:"));
-                continue;
-            }
-
-            nm_log_trace(LOGD_PLATFORM,
-                         "ethtool[%d]: %s: %s feature %s (%s): %s, %s",
-                         ifindex,
-                         "set-features",
-                         do_set ? "set" : "reset",
-                         nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname,
-                         s->info->kernel_names[s->idx_kernel_name],
-                         ONOFF(do_set ? requested[i] == NM_OPTION_BOOL_TRUE : s->active),
-                         _ethtool_feature_state_to_string(sbuf,
-                                                          sizeof(sbuf),
-                                                          s,
-                                                          do_set ? " currently:" : " before:"));
-
-            if (do_set && (!s->available || s->never_changed)
-                && (s->active != (requested[i] == NM_OPTION_BOOL_TRUE))) {
-                /* we request to change a flag which kernel reported as fixed.
-                 * While the ethtool operation will silently succeed, mark the request
-                 * as failure. */
-                success = FALSE;
-            }
-
-            set_states[set_states_n].f_state   = s;
-            set_states[set_states_n].requested = requested[i];
-            set_states_n++;
-        }
-    }
-
-    if (set_states_n == 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: no feature requested",
-                     ifindex,
-                     "set-features");
-        return TRUE;
-    }
-
-    sfeatures_len =
-        sizeof(struct ethtool_sfeatures)
-        + (NM_DIV_ROUND_UP(features->n_ss_features, 32U) * sizeof(sfeatures->features[0]));
-    sfeatures       = nm_malloc0_maybe_a(300, sfeatures_len, &sfeatures_free);
-    sfeatures->cmd  = ETHTOOL_SFEATURES;
-    sfeatures->size = NM_DIV_ROUND_UP(features->n_ss_features, 32U);
-
-    for (i = 0; i < set_states_n; i++) {
-        const NMEthtoolFeatureState *s = set_states[i].f_state;
-        guint                        i_block;
-        guint32                      i_flag;
-        gboolean                     is_requested;
-
-        i_block = s->idx_ss_features / 32u;
-        i_flag  = (guint32) (1u << (s->idx_ss_features % 32u));
-
-        sfeatures->features[i_block].valid |= i_flag;
-
-        if (do_set)
-            is_requested = (set_states[i].requested == NM_OPTION_BOOL_TRUE);
-        else
-            is_requested = s->active;
-
-        if (is_requested)
-            sfeatures->features[i_block].requested |= i_flag;
-        else
-            sfeatures->features[i_block].requested &= ~i_flag;
-    }
-
-    r = _ethtool_call_handle(&shandle, sfeatures, sfeatures_len);
-    if (r < 0) {
-        success = FALSE;
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting features (%s)",
-                     ifindex,
-                     "set-features",
-                     nm_strerror_native(-r));
-        return FALSE;
-    }
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: %s",
-                 ifindex,
-                 "set-features",
-                 success ? "successfully setting features"
-                         : "at least some of the features were not successfully set");
-    return success;
-}
-
-gboolean
-nmp_utils_ethtool_get_coalesce(int ifindex, NMEthtoolCoalesceState *coalesce)
-{
-    struct ethtool_coalesce eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(coalesce, FALSE);
-
-    eth_data.cmd = ETHTOOL_GCOALESCE;
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting coalesce settings",
-                     ifindex,
-                     "get-coalesce");
-        return FALSE;
-    }
-
-    *coalesce = (NMEthtoolCoalesceState) {
-        .s = {
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS)] =
-                eth_data.rx_coalesce_usecs,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES)] =
-                eth_data.rx_max_coalesced_frames,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ)] =
-                eth_data.rx_coalesce_usecs_irq,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ)] =
-                eth_data.rx_max_coalesced_frames_irq,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS)] =
-                eth_data.tx_coalesce_usecs,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES)] =
-                eth_data.tx_max_coalesced_frames,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ)] =
-                eth_data.tx_coalesce_usecs_irq,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ)] =
-                eth_data.tx_max_coalesced_frames_irq,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS)] =
-                eth_data.stats_block_coalesce_usecs,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX)] =
-                eth_data.use_adaptive_rx_coalesce,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)] =
-                eth_data.use_adaptive_tx_coalesce,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW)] =
-                eth_data.pkt_rate_low,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW)] =
-                eth_data.rx_coalesce_usecs_low,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW)] =
-                eth_data.rx_max_coalesced_frames_low,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW)] =
-                eth_data.tx_coalesce_usecs_low,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW)] =
-                eth_data.tx_max_coalesced_frames_low,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH)] =
-                eth_data.pkt_rate_high,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH)] =
-                eth_data.rx_coalesce_usecs_high,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH)] =
-                eth_data.rx_max_coalesced_frames_high,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH)] =
-                eth_data.tx_coalesce_usecs_high,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH)] =
-                eth_data.tx_max_coalesced_frames_high,
-            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL)] =
-                eth_data.rate_sample_interval,
-        }};
-    return TRUE;
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel coalesce settings",
-                 ifindex,
-                 "get-coalesce");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_set_coalesce(int ifindex, const NMEthtoolCoalesceState *coalesce)
-{
-    struct ethtool_coalesce eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(coalesce, FALSE);
-
-    eth_data = (struct ethtool_coalesce) {
-        .cmd = ETHTOOL_SCOALESCE,
-        .rx_coalesce_usecs =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS)],
-        .rx_max_coalesced_frames =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES)],
-        .rx_coalesce_usecs_irq =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ)],
-        .rx_max_coalesced_frames_irq =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ)],
-        .tx_coalesce_usecs =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS)],
-        .tx_max_coalesced_frames =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES)],
-        .tx_coalesce_usecs_irq =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ)],
-        .tx_max_coalesced_frames_irq =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ)],
-        .stats_block_coalesce_usecs =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS)],
-        .use_adaptive_rx_coalesce =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX)],
-        .use_adaptive_tx_coalesce =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)],
-        .pkt_rate_low =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW)],
-        .rx_coalesce_usecs_low =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW)],
-        .rx_max_coalesced_frames_low =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW)],
-        .tx_coalesce_usecs_low =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW)],
-        .tx_max_coalesced_frames_low =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW)],
-        .pkt_rate_high =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH)],
-        .rx_coalesce_usecs_high =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH)],
-        .rx_max_coalesced_frames_high =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH)],
-        .tx_coalesce_usecs_high =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH)],
-        .tx_max_coalesced_frames_high =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH)],
-        .rate_sample_interval =
-            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL)],
-    };
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting coalesce settings",
-                     ifindex,
-                     "set-coalesce");
-        return FALSE;
-    }
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: set kernel coalesce settings",
-                 ifindex,
-                 "set-coalesce");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_get_ring(int ifindex, NMEthtoolRingState *ring)
-{
-    struct ethtool_ringparam eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(ring, FALSE);
-
-    eth_data.cmd = ETHTOOL_GRINGPARAM;
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting ring settings",
-                     ifindex,
-                     "get-ring");
-        return FALSE;
-    }
-
-    *ring = (NMEthtoolRingState) {
-        .rx_pending       = eth_data.rx_pending,
-        .rx_jumbo_pending = eth_data.rx_jumbo_pending,
-        .rx_mini_pending  = eth_data.rx_mini_pending,
-        .tx_pending       = eth_data.tx_pending,
-    };
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel ring settings",
-                 ifindex,
-                 "get-ring");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_set_ring(int ifindex, const NMEthtoolRingState *ring)
-{
-    struct ethtool_ringparam eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(ring, FALSE);
-
-    eth_data = (struct ethtool_ringparam) {
-        .cmd              = ETHTOOL_SRINGPARAM,
-        .rx_pending       = ring->rx_pending,
-        .rx_jumbo_pending = ring->rx_jumbo_pending,
-        .rx_mini_pending  = ring->rx_mini_pending,
-        .tx_pending       = ring->tx_pending,
-    };
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting ring settings",
-                     ifindex,
-                     "set-ring");
-        return FALSE;
-    }
-
-    nm_log_trace(LOGD_PLATFORM, "ethtool[%d]: %s: set kernel ring settings", ifindex, "set-ring");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_get_channels(int ifindex, NMEthtoolChannelsState *channels)
-{
-    struct ethtool_channels eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(channels, FALSE);
-
-    eth_data.cmd = ETHTOOL_GCHANNELS;
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting channels settings",
-                     ifindex,
-                     "get-channels");
-        return FALSE;
-    }
-
-    *channels = (NMEthtoolChannelsState) {
-        .rx       = eth_data.rx_count,
-        .tx       = eth_data.tx_count,
-        .other    = eth_data.other_count,
-        .combined = eth_data.combined_count,
-    };
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel channels settings",
-                 ifindex,
-                 "get-channels");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_set_channels(int ifindex, const NMEthtoolChannelsState *channels)
-{
-    struct ethtool_channels eth_data;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(channels, FALSE);
-
-    eth_data = (struct ethtool_channels) {
-        .cmd            = ETHTOOL_SCHANNELS,
-        .rx_count       = channels->rx,
-        .tx_count       = channels->tx,
-        .other_count    = channels->other,
-        .combined_count = channels->combined,
-    };
-
-    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting channels settings",
-                     ifindex,
-                     "set-channels");
-        return FALSE;
-    }
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: set kernel channels settings",
-                 ifindex,
-                 "set-channels");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_get_pause(int ifindex, NMEthtoolPauseState *pause)
-{
-    struct ethtool_pauseparam          eth_data;
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(pause, FALSE);
-
-    eth_data.cmd = ETHTOOL_GPAUSEPARAM;
-    if (_ethtool_call_handle(&shandle, &eth_data, sizeof(struct ethtool_pauseparam)) != 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting pause settings",
-                     ifindex,
-                     "get-pause");
-        return FALSE;
-    }
-
-    *pause = (NMEthtoolPauseState) {
-        .autoneg = eth_data.autoneg == 1,
-        .rx      = eth_data.rx_pause == 1,
-        .tx      = eth_data.tx_pause == 1,
-    };
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel pause settings",
-                 ifindex,
-                 "get-pause");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_get_eee(int ifindex, NMEthtoolEEEState *eee)
-{
-    struct ethtool_eee                 eth_data;
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(eee, FALSE);
-
-    eth_data.cmd = ETHTOOL_GEEE;
-    if (_ethtool_call_handle(&shandle, &eth_data, sizeof(struct ethtool_eee)) != 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting eee settings",
-                     ifindex,
-                     "get-eee");
-        return FALSE;
-    }
-
-    *eee = (NMEthtoolEEEState) {
-        .enabled = eth_data.eee_enabled == 1,
-    };
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: %s: retrieved kernel eee settings",
-                 ifindex,
-                 "get-eee");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_set_pause(int ifindex, const NMEthtoolPauseState *pause)
-{
-    struct ethtool_pauseparam          eth_data;
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(pause, FALSE);
-
-    eth_data = (struct ethtool_pauseparam) {
-        .cmd      = ETHTOOL_SPAUSEPARAM,
-        .autoneg  = pause->autoneg ? 1 : 0,
-        .rx_pause = pause->rx ? 1 : 0,
-        .tx_pause = pause->tx ? 1 : 0,
-    };
-
-    if (_ethtool_call_handle(&shandle, &eth_data, sizeof(struct ethtool_pauseparam)) != 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting pause settings",
-                     ifindex,
-                     "set-pause");
-        return FALSE;
-    }
-    nm_log_trace(LOGD_PLATFORM, "ethtool[%d]: %s: set kernel puase settings", ifindex, "set-pause");
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_set_eee(int ifindex, const NMEthtoolEEEState *eee)
-{
-    struct ethtool_eee                 eth_data;
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(eee, FALSE);
-
-    eth_data.cmd = ETHTOOL_GEEE;
-    if (_ethtool_call_handle(&shandle, &eth_data, sizeof(struct ethtool_eee)) != 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure getting eee settings",
-                     ifindex,
-                     "get-eee");
-        return FALSE;
-    }
-
-    eth_data.cmd = ETHTOOL_SEEE, eth_data.eee_enabled = eee->enabled ? 1 : 0;
-
-    if (_ethtool_call_handle(&shandle, &eth_data, sizeof(struct ethtool_eee)) != 0) {
-        nm_log_trace(LOGD_PLATFORM,
-                     "ethtool[%d]: %s: failure setting eee settings",
-                     ifindex,
-                     "set-eee");
-        return FALSE;
-    }
-    nm_log_trace(LOGD_PLATFORM, "ethtool[%d]: %s: set kernel eee settings", ifindex, "set-eee");
-    return TRUE;
-}
-/*****************************************************************************/
-
-gboolean
-nmp_utils_ethtool_get_driver_info(int ifindex, NMPUtilsEthtoolDriverInfo *data)
-{
-    struct ethtool_drvinfo *drvinfo;
-
-    G_STATIC_ASSERT_EXPR(sizeof(*data) == sizeof(*drvinfo));
-    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, driver)
-                         == offsetof(struct ethtool_drvinfo, driver));
-    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, version)
-                         == offsetof(struct ethtool_drvinfo, version));
-    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, fw_version)
-                         == offsetof(struct ethtool_drvinfo, fw_version));
-    G_STATIC_ASSERT_EXPR(sizeof(data->driver) == sizeof(drvinfo->driver));
-    G_STATIC_ASSERT_EXPR(sizeof(data->version) == sizeof(drvinfo->version));
-    G_STATIC_ASSERT_EXPR(sizeof(data->fw_version) == sizeof(drvinfo->fw_version));
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(data, FALSE);
-
-    drvinfo  = (struct ethtool_drvinfo *) data;
-    *drvinfo = (struct ethtool_drvinfo) {
-        .cmd = ETHTOOL_GDRVINFO,
-    };
-    return _ethtool_call_once(ifindex, drvinfo, sizeof(*drvinfo)) >= 0;
-}
-
-gboolean
-nmp_utils_ethtool_get_permanent_address(int ifindex, guint8 *buf, size_t *length)
-{
-    struct {
-        struct ethtool_perm_addr e;
-        guint8                   _extra_data[_NM_UTILS_HWADDR_LEN_MAX + 1];
-    } edata = {
-        .e.cmd  = ETHTOOL_GPERMADDR,
-        .e.size = _NM_UTILS_HWADDR_LEN_MAX,
-    };
-    const guint8 *pdata;
-
-    guint i;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    if (_ethtool_call_once(ifindex, &edata, sizeof(edata)) < 0)
-        return FALSE;
-
-    if (edata.e.size > _NM_UTILS_HWADDR_LEN_MAX)
-        return FALSE;
-    if (edata.e.size < 1)
-        return FALSE;
-
-    pdata = (const guint8 *) edata.e.data;
-
-    if (NM_IN_SET(pdata[0], 0, 0xFF)) {
-        /* Some drivers might return a permanent address of all zeros.
-         * Reject that (rh#1264024)
-         *
-         * Some drivers return a permanent address of all ones. Reject that too */
-        for (i = 1; i < edata.e.size; i++) {
-            if (pdata[0] != pdata[i])
-                goto not_all_0or1;
-        }
-        return FALSE;
-    }
-
-not_all_0or1:
-    memcpy(buf, pdata, edata.e.size);
-    *length = edata.e.size;
-    return TRUE;
-}
-
-gboolean
-nmp_utils_ethtool_supports_carrier_detect(int ifindex)
-{
-    struct ethtool_cmd edata = {.cmd = ETHTOOL_GLINK};
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    /* We ignore the result. If the ETHTOOL_GLINK call succeeded, then we
-     * assume the device supports carrier-detect, otherwise we assume it
-     * doesn't.
-     */
-    return _ethtool_call_once(ifindex, &edata, sizeof(edata)) >= 0;
-}
-
-gboolean
-nmp_utils_ethtool_supports_vlans(int ifindex)
-{
-    nm_auto_socket_handle SocketHandle shandle       = SOCKET_HANDLE_INIT(ifindex);
-    gs_free struct ethtool_gfeatures  *features_free = NULL;
-    struct ethtool_gfeatures          *features;
-    gsize                              features_len;
-    int                                idx, block, bit, size;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    idx = ethtool_get_stringset_index(&shandle, ETH_SS_FEATURES, "vlan-challenged");
-    if (idx < 0) {
-        nm_log_dbg(LOGD_PLATFORM,
-                   "ethtool[%d]: vlan-challenged ethtool feature does not exist?",
-                   ifindex);
-        return FALSE;
-    }
-
-    block = idx / 32;
-    bit   = idx % 32;
-    size  = block + 1;
-
-    features_len   = sizeof(*features) + (size * sizeof(struct ethtool_get_features_block));
-    features       = nm_malloc0_maybe_a(300, features_len, &features_free);
-    features->cmd  = ETHTOOL_GFEATURES;
-    features->size = size;
-
-    if (_ethtool_call_handle(&shandle, features, features_len) < 0)
-        return FALSE;
-
-    return !(features->features[block].active & (1 << bit));
-}
-
-int
-nmp_utils_ethtool_get_peer_ifindex(int ifindex)
-{
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-    gsize                              stats_len;
-    gs_free struct ethtool_stats      *stats_free = NULL;
-    struct ethtool_stats              *stats;
-    int                                peer_ifindex_stat;
-
-    g_return_val_if_fail(ifindex > 0, 0);
-
-    peer_ifindex_stat = ethtool_get_stringset_index(&shandle, ETH_SS_STATS, "peer_ifindex");
-    if (peer_ifindex_stat < 0) {
-        nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: peer_ifindex stat does not exist?", ifindex);
-        return FALSE;
-    }
-
-    stats_len      = sizeof(*stats) + (peer_ifindex_stat + 1) * sizeof(guint64);
-    stats          = nm_malloc0_maybe_a(300, stats_len, &stats_free);
-    stats->cmd     = ETHTOOL_GSTATS;
-    stats->n_stats = peer_ifindex_stat + 1;
-    if (_ethtool_call_handle(&shandle, stats, stats_len) < 0)
-        return 0;
-
-    return stats->data[peer_ifindex_stat];
-}
-
-gboolean
-nmp_utils_ethtool_get_wake_on_lan(int ifindex)
-{
-    struct ethtool_wolinfo wol = {
-        .cmd = ETHTOOL_GWOL,
-    };
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    if (_ethtool_call_once(ifindex, &wol, sizeof(wol)) < 0)
-        return FALSE;
-
-    return wol.wolopts != 0;
-}
-
-gboolean
-nmp_utils_ethtool_get_link_settings(int                       ifindex,
-                                    gboolean                 *out_autoneg,
-                                    guint32                  *out_speed,
-                                    NMPlatformLinkDuplexType *out_duplex)
-{
-    struct ethtool_cmd edata = {
-        .cmd = ETHTOOL_GSET,
-    };
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    if (_ethtool_call_once(ifindex, &edata, sizeof(edata)) < 0)
-        return FALSE;
-
-    NM_SET_OUT(out_autoneg, (edata.autoneg == AUTONEG_ENABLE));
-
-    if (out_speed) {
-        guint32 speed;
-
-        speed = ethtool_cmd_speed(&edata);
-        if (speed == G_MAXUINT16 || speed == G_MAXUINT32)
-            speed = 0;
-
-        *out_speed = speed;
-    }
-
-    if (out_duplex) {
-        switch (edata.duplex) {
-        case DUPLEX_HALF:
-            *out_duplex = NM_PLATFORM_LINK_DUPLEX_HALF;
-            break;
-        case DUPLEX_FULL:
-            *out_duplex = NM_PLATFORM_LINK_DUPLEX_FULL;
-            break;
-        default: /* DUPLEX_UNKNOWN */
-            *out_duplex = NM_PLATFORM_LINK_DUPLEX_UNKNOWN;
-            break;
-        }
-    }
-
-    return TRUE;
-}
-
-#define ADVERTISED_INVALID 0
-
-static guint32
-get_baset_mode(guint32 speed, NMPlatformLinkDuplexType duplex)
-{
-    if (duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
-        return ADVERTISED_INVALID;
-
-    if (duplex == NM_PLATFORM_LINK_DUPLEX_HALF) {
-        switch (speed) {
-        case 10:
-            return ADVERTISED_10baseT_Half;
-        case 100:
-            return ADVERTISED_100baseT_Half;
-        case 1000:
-            return ADVERTISED_1000baseT_Half;
-        default:
-            return ADVERTISED_INVALID;
-        }
-    } else {
-        switch (speed) {
-        case 10:
-            return ADVERTISED_10baseT_Full;
-        case 100:
-            return ADVERTISED_100baseT_Full;
-        case 1000:
-            return ADVERTISED_1000baseT_Full;
-        case 10000:
-            return ADVERTISED_10000baseT_Full;
-        default:
-            return ADVERTISED_INVALID;
-        }
-    }
-}
-
-static gboolean
-platform_link_duplex_type_to_native(NMPlatformLinkDuplexType duplex_type, guint8 *out_native)
-{
-    switch (duplex_type) {
-    case NM_PLATFORM_LINK_DUPLEX_HALF:
-        *out_native = DUPLEX_HALF;
-        return TRUE;
-    case NM_PLATFORM_LINK_DUPLEX_FULL:
-        *out_native = DUPLEX_FULL;
-        return TRUE;
-    case NM_PLATFORM_LINK_DUPLEX_UNKNOWN:
-        return FALSE;
-    default:
-        g_return_val_if_reached(FALSE);
-    }
-}
-
 const guint8 _nmp_link_mode_all_advertised_modes_bits[] = {
     ETHTOOL_LINK_MODE_10baseT_Half_BIT,
     ETHTOOL_LINK_MODE_10baseT_Full_BIT,
@@ -1597,322 +148,6 @@ const guint32 _nmp_link_mode_all_advertised_modes[] = {
     0x0ffffbffu,
 };
 
-static NMOptionBool
-set_link_settings_new(SocketHandle            *shandle,
-                      gboolean                 autoneg,
-                      guint32                  speed,
-                      NMPlatformLinkDuplexType duplex)
-{
-    struct ethtool_link_settings          edata0;
-    gs_free struct ethtool_link_settings *edata = NULL;
-    gsize                                 edata_size;
-    guint                                 nwords;
-    guint                                 i;
-
-    edata0 = (struct ethtool_link_settings) {
-        .cmd                    = ETHTOOL_GLINKSETTINGS,
-        .link_mode_masks_nwords = 0,
-    };
-
-    /* perform the handshake to find the size of masks */
-    if (_ethtool_call_handle(shandle, &edata0, sizeof(edata0)) < 0
-        || edata0.link_mode_masks_nwords >= 0) {
-        /* new API not supported */
-        return NM_OPTION_BOOL_DEFAULT;
-    }
-
-    nwords                        = -edata0.link_mode_masks_nwords;
-    edata_size                    = sizeof(*edata) + sizeof(guint32) * nwords * 3;
-    edata                         = g_malloc0(edata_size);
-    edata->cmd                    = ETHTOOL_GLINKSETTINGS;
-    edata->link_mode_masks_nwords = nwords;
-
-    /* retrieve first current settings */
-    if (_ethtool_call_handle(shandle, edata, edata_size) < 0)
-        return FALSE;
-
-    /* then change the needed ones */
-    edata->cmd = ETHTOOL_SLINKSETTINGS;
-
-    {
-        const guint32 *v_map_supported      = &edata->link_mode_masks[0];
-        guint32       *v_map_advertising    = &edata->link_mode_masks[nwords];
-        guint32       *v_map_lp_advertising = &edata->link_mode_masks[2 * nwords];
-
-        memcpy(v_map_advertising, v_map_supported, sizeof(guint32) * nwords);
-        (void) v_map_lp_advertising;
-
-        if (speed != 0) {
-            guint32 mode;
-
-            mode = get_baset_mode(speed, duplex);
-
-            if (mode == ADVERTISED_INVALID) {
-                if (!autoneg)
-                    goto set_autoneg;
-                nm_log_trace(LOGD_PLATFORM,
-                             "ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
-                             shandle->ifindex,
-                             speed,
-                             nm_platform_link_duplex_type_to_string(duplex));
-                return FALSE;
-            }
-
-            if (!(v_map_supported[0] & mode)) {
-                if (!autoneg)
-                    goto set_autoneg;
-                nm_log_trace(LOGD_PLATFORM,
-                             "ethtool[%d]: device does not support %uBASE-T %s duplex mode",
-                             shandle->ifindex,
-                             speed,
-                             nm_platform_link_duplex_type_to_string(duplex));
-                return FALSE;
-            }
-
-            for (i = 0; i < (guint) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes); i++)
-                v_map_advertising[i] &= ~_nmp_link_mode_all_advertised_modes[i];
-            v_map_advertising[0] |= mode;
-        }
-    }
-
-set_autoneg:
-    if (autoneg)
-        edata->autoneg = AUTONEG_ENABLE;
-    else {
-        edata->autoneg = AUTONEG_DISABLE;
-
-        if (speed)
-            edata->speed = speed;
-
-        platform_link_duplex_type_to_native(duplex, &edata->duplex);
-    }
-
-    return _ethtool_call_handle(shandle, edata, edata_size) >= 0;
-}
-
-gboolean
-nmp_utils_ethtool_set_link_settings(int                      ifindex,
-                                    gboolean                 autoneg,
-                                    guint32                  speed,
-                                    NMPlatformLinkDuplexType duplex)
-{
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-    struct ethtool_cmd                 edata   = {
-                          .cmd = ETHTOOL_GSET,
-    };
-    NMOptionBool ret;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail((speed && duplex != NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
-                             || (!speed && duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN),
-                         FALSE);
-
-    nm_log_trace(LOGD_PLATFORM,
-                 "ethtool[%d]: set link: autoneg=%d, speed=%d, duplex=%s",
-                 ifindex,
-                 autoneg,
-                 speed,
-                 nm_platform_link_duplex_type_to_string(duplex));
-
-    ret = set_link_settings_new(&shandle, autoneg, speed, duplex);
-    if (ret != NM_OPTION_BOOL_DEFAULT)
-        return ret;
-
-    /* new ETHTOOL_GLINKSETTINGS API not supported, fall back to GSET */
-
-    /* retrieve first current settings */
-    if (_ethtool_call_handle(&shandle, &edata, sizeof(edata)) < 0)
-        return FALSE;
-
-    /* then change the needed ones */
-    edata.cmd = ETHTOOL_SSET;
-
-    edata.advertising = edata.supported;
-    if (speed != 0) {
-        guint32 mode;
-
-        mode = get_baset_mode(speed, duplex);
-
-        if (mode == ADVERTISED_INVALID) {
-            if (!autoneg)
-                goto set_autoneg;
-            nm_log_trace(LOGD_PLATFORM,
-                         "ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
-                         ifindex,
-                         speed,
-                         nm_platform_link_duplex_type_to_string(duplex));
-            return FALSE;
-        }
-        if (!(edata.supported & mode)) {
-            if (!autoneg)
-                goto set_autoneg;
-            nm_log_trace(LOGD_PLATFORM,
-                         "ethtool[%d]: device does not support %uBASE-T %s duplex mode",
-                         ifindex,
-                         speed,
-                         nm_platform_link_duplex_type_to_string(duplex));
-            return FALSE;
-        }
-        edata.advertising &= ~_nmp_link_mode_all_advertised_modes[0];
-        edata.advertising |= mode;
-    }
-
-set_autoneg:
-    if (autoneg)
-        edata.autoneg = AUTONEG_ENABLE;
-    else {
-        edata.autoneg = AUTONEG_DISABLE;
-
-        if (speed)
-            ethtool_cmd_speed_set(&edata, speed);
-
-        platform_link_duplex_type_to_native(duplex, &edata.duplex);
-    }
-
-    return _ethtool_call_handle(&shandle, &edata, sizeof(edata)) >= 0;
-}
-
-gboolean
-nmp_utils_ethtool_set_wake_on_lan(int                      ifindex,
-                                  _NMSettingWiredWakeOnLan wol,
-                                  const char              *wol_password)
-{
-    struct ethtool_wolinfo wol_info = {
-        .cmd     = ETHTOOL_SWOL,
-        .wolopts = 0,
-    };
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    if (wol == _NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE)
-        return TRUE;
-
-    nm_log_dbg(LOGD_PLATFORM,
-               "ethtool[%d]: setting Wake-on-LAN options 0x%x, password '%s'",
-               ifindex,
-               (unsigned) wol,
-               wol_password);
-
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_PHY))
-        wol_info.wolopts |= WAKE_PHY;
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST))
-        wol_info.wolopts |= WAKE_UCAST;
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST))
-        wol_info.wolopts |= WAKE_MCAST;
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST))
-        wol_info.wolopts |= WAKE_BCAST;
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_ARP))
-        wol_info.wolopts |= WAKE_ARP;
-    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC))
-        wol_info.wolopts |= WAKE_MAGIC;
-
-    if (wol_password) {
-        if (!_nm_utils_hwaddr_aton_exact(wol_password, wol_info.sopass, ETH_ALEN)) {
-            nm_log_dbg(LOGD_PLATFORM,
-                       "ethtool[%d]: couldn't parse Wake-on-LAN password '%s'",
-                       ifindex,
-                       wol_password);
-            return FALSE;
-        }
-        wol_info.wolopts |= WAKE_MAGICSECURE;
-    }
-
-    return _ethtool_call_once(ifindex, &wol_info, sizeof(wol_info)) >= 0;
-}
-
-gboolean
-nmp_utils_ethtool_get_fec_mode(int ifindex, uint32_t *fec_mode)
-{
-    int                     r;
-    struct ethtool_fecparam fec_param = {
-        .cmd = ETHTOOL_GFECPARAM,
-        .fec = 0,
-    };
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    if (_ethtool_call_once(ifindex, &fec_param, sizeof(fec_param)) >= 0) {
-        nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: get FEC options 0x%x", ifindex, fec_param.fec);
-        *fec_mode = fec_param.fec;
-        return TRUE;
-    } else {
-        r = -NM_ERRNO_NATIVE(errno);
-        nm_log_dbg(LOGD_PLATFORM,
-                   "ethtool[%d]: ETHTOOL_GFECPARAM failure get fec mode: (%s)",
-                   ifindex,
-                   nm_strerror_native(-r));
-        return FALSE;
-    }
-}
-
-gboolean
-nmp_utils_ethtool_set_fec_mode(int ifindex, uint32_t fec_mode)
-{
-    struct ethtool_fecparam fec_param = {
-        .cmd = ETHTOOL_SFECPARAM,
-        .fec = fec_mode,
-    };
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: setting FEC options 0x%x", ifindex, fec_mode);
-
-    return _ethtool_call_once(ifindex, &fec_param, sizeof(fec_param)) >= 0;
-}
-
-/******************************************************************************
- * mii
- *****************************************************************************/
-
-gboolean
-nmp_utils_mii_supports_carrier_detect(int ifindex)
-{
-    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
-    int                                r;
-    struct ifreq                       ifr;
-    struct mii_ioctl_data             *mii;
-
-    g_return_val_if_fail(ifindex > 0, FALSE);
-
-    r = _ioctl_call("mii",
-                    "SIOCGMIIPHY",
-                    SIOCGMIIPHY,
-                    shandle.ifindex,
-                    &shandle.fd,
-                    shandle.ifname,
-                    IOCTL_CALL_DATA_TYPE_NONE,
-                    NULL,
-                    0,
-                    &ifr);
-    if (r < 0)
-        return FALSE;
-
-    /* If we can read the BMSR register, we assume that the card supports MII link detection */
-    mii          = (struct mii_ioctl_data *) &ifr.ifr_ifru;
-    mii->reg_num = MII_BMSR;
-
-    r = _ioctl_call("mii",
-                    "SIOCGMIIREG",
-                    SIOCGMIIREG,
-                    shandle.ifindex,
-                    &shandle.fd,
-                    shandle.ifname,
-                    IOCTL_CALL_DATA_TYPE_IFRU,
-                    mii,
-                    sizeof(*mii),
-                    &ifr);
-    if (r < 0)
-        return FALSE;
-
-    mii = (struct mii_ioctl_data *) &ifr.ifr_ifru;
-    nm_log_trace(LOGD_PLATFORM,
-                 "mii[%d,%s]: carrier-detect yes: SIOCGMIIREG result 0x%X",
-                 ifindex,
-                 shandle.ifname,
-                 mii->val_out);
-    return TRUE;
-}
-
 /******************************************************************************
  * udev
  *****************************************************************************/
diff --git a/src/libnm-platform/nm-platform-utils.h b/src/libnm-platform/nm-platform-utils.h
index f47bcd49..4477d7ed 100644
--- a/src/libnm-platform/nm-platform-utils.h
+++ b/src/libnm-platform/nm-platform-utils.h
@@ -8,72 +8,17 @@
 
 #include "libnm-base/nm-base.h"
 #include "libnm-platform/nmp-base.h"
+#include "libnm-platform/nm-platform.h"
 
 /*****************************************************************************/
 
-const char *nmp_utils_ethtool_get_driver(int ifindex);
-gboolean    nmp_utils_ethtool_supports_carrier_detect(int ifindex);
-gboolean    nmp_utils_ethtool_supports_vlans(int ifindex);
-int         nmp_utils_ethtool_get_peer_ifindex(int ifindex);
-gboolean    nmp_utils_ethtool_get_wake_on_lan(int ifindex);
-gboolean    nmp_utils_ethtool_set_wake_on_lan(int                      ifindex,
-                                              _NMSettingWiredWakeOnLan wol,
-                                              const char              *wol_password);
-
 const char *nm_platform_link_duplex_type_to_string(NMPlatformLinkDuplexType duplex);
 
 extern const guint8  _nmp_link_mode_all_advertised_modes_bits[79];
 extern const guint32 _nmp_link_mode_all_advertised_modes[3];
 
-gboolean nmp_utils_ethtool_get_link_settings(int                       ifindex,
-                                             gboolean                 *out_autoneg,
-                                             guint32                  *out_speed,
-                                             NMPlatformLinkDuplexType *out_duplex);
-gboolean nmp_utils_ethtool_set_link_settings(int                      ifindex,
-                                             gboolean                 autoneg,
-                                             guint32                  speed,
-                                             NMPlatformLinkDuplexType duplex);
-
-gboolean nmp_utils_ethtool_get_permanent_address(int ifindex, guint8 *buf, size_t *length);
-
-gboolean nmp_utils_ethtool_get_driver_info(int ifindex, NMPUtilsEthtoolDriverInfo *data);
-
-NMEthtoolFeatureStates *nmp_utils_ethtool_get_features(int ifindex);
-
-gboolean nmp_utils_ethtool_set_features(
-    int                           ifindex,
-    const NMEthtoolFeatureStates *features,
-    const NMOptionBool *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */,
-    gboolean            do_set /* or reset */);
-
-gboolean nmp_utils_ethtool_get_coalesce(int ifindex, NMEthtoolCoalesceState *coalesce);
-
-gboolean nmp_utils_ethtool_set_coalesce(int ifindex, const NMEthtoolCoalesceState *coalesce);
-
-gboolean nmp_utils_ethtool_get_ring(int ifindex, NMEthtoolRingState *ring);
-
-gboolean nmp_utils_ethtool_set_ring(int ifindex, const NMEthtoolRingState *ring);
-
-gboolean nmp_utils_ethtool_get_channels(int ifindex, NMEthtoolChannelsState *channels);
-
-gboolean nmp_utils_ethtool_set_channels(int ifindex, const NMEthtoolChannelsState *channels);
-
-gboolean nmp_utils_ethtool_get_pause(int ifindex, NMEthtoolPauseState *pause);
-
-gboolean nmp_utils_ethtool_set_pause(int ifindex, const NMEthtoolPauseState *pause);
-
-gboolean nmp_utils_ethtool_get_eee(int ifindex, NMEthtoolEEEState *eee);
-
-gboolean nmp_utils_ethtool_set_eee(int ifindex, const NMEthtoolEEEState *eee);
-
-gboolean nmp_utils_ethtool_get_fec_mode(int ifindex, uint32_t *fec_mode);
-
-gboolean nmp_utils_ethtool_set_fec_mode(int ifindex, uint32_t fec_mode);
-
 /*****************************************************************************/
 
-gboolean nmp_utils_mii_supports_carrier_detect(int ifindex);
-
 struct udev_device;
 
 const char *nmp_utils_udev_get_driver(struct udev_device *udevice);
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c
index a8d34b71..fd966d2c 100644
--- a/src/libnm-platform/nm-platform.c
+++ b/src/libnm-platform/nm-platform.c
@@ -31,6 +31,7 @@
 #include "libnm-log-core/nm-logging.h"
 #include "libnm-platform/nm-platform-utils.h"
 #include "libnm-platform/nmp-netns.h"
+#include "libnm-platform/nmp-ethtool-ioctl.h"
 #include "libnm-udev-aux/nm-udev-utils.h"
 #include "nm-platform-private.h"
 #include "nmp-object.h"
@@ -3230,7 +3231,7 @@ nm_platform_link_veth_get_properties(NMPlatform *self, int ifindex, int *out_pee
 
         if (!nm_platform_netns_push(self, &netns))
             return FALSE;
-        peer_ifindex = nmp_utils_ethtool_get_peer_ifindex(plink->ifindex);
+        peer_ifindex = nmp_ethtool_ioctl_get_peer_ifindex(plink->ifindex);
         if (peer_ifindex <= 0)
             return FALSE;
 
@@ -3561,7 +3562,7 @@ nm_platform_ethtool_set_wake_on_lan(NMPlatform              *self,
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_wake_on_lan(ifindex, wol, wol_password);
+    return nmp_ethtool_ioctl_set_wake_on_lan(ifindex, wol, wol_password);
 }
 
 gboolean
@@ -3575,7 +3576,7 @@ nm_platform_ethtool_set_link_settings(NMPlatform              *self,
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_link_settings(ifindex, autoneg, speed, duplex);
+    return nmp_ethtool_ioctl_set_link_settings(ifindex, autoneg, speed, duplex);
 }
 
 gboolean
@@ -3589,19 +3590,19 @@ nm_platform_ethtool_get_link_settings(NMPlatform               *self,
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_get_link_settings(ifindex, out_autoneg, out_speed, out_duplex);
+    return nmp_ethtool_ioctl_get_link_settings(ifindex, out_autoneg, out_speed, out_duplex);
 }
 
 /*****************************************************************************/
 
 NMEthtoolFeatureStates *
-nm_platform_ethtool_get_link_features(NMPlatform *self, int ifindex)
+nm_platform_ethtool_get_features(NMPlatform *self, int ifindex)
 {
     _CHECK_SELF_NETNS(self, klass, netns, NULL);
 
     g_return_val_if_fail(ifindex > 0, NULL);
 
-    return nmp_utils_ethtool_get_features(ifindex);
+    return nmp_ethtool_ioctl_get_features(ifindex);
 }
 
 gboolean
@@ -3616,7 +3617,7 @@ nm_platform_ethtool_set_features(
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_features(ifindex, features, requested, do_set);
+    return nmp_ethtool_ioctl_set_features(ifindex, features, requested, do_set);
 }
 
 gboolean
@@ -3626,7 +3627,7 @@ nm_platform_ethtool_get_fec_mode(NMPlatform *self, int ifindex, uint32_t *fec_mo
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_get_fec_mode(ifindex, fec_mode);
+    return nmp_ethtool_ioctl_get_fec_mode(ifindex, fec_mode);
 }
 
 gboolean
@@ -3636,20 +3637,18 @@ nm_platform_ethtool_set_fec_mode(NMPlatform *self, int ifindex, uint32_t fec_mod
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_fec_mode(ifindex, fec_mode);
+    return nmp_ethtool_ioctl_set_fec_mode(ifindex, fec_mode);
 }
 
 gboolean
-nm_platform_ethtool_get_link_coalesce(NMPlatform             *self,
-                                      int                     ifindex,
-                                      NMEthtoolCoalesceState *coalesce)
+nm_platform_ethtool_get_coalesce(NMPlatform *self, int ifindex, NMEthtoolCoalesceState *coalesce)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
     g_return_val_if_fail(coalesce, FALSE);
 
-    return nmp_utils_ethtool_get_coalesce(ifindex, coalesce);
+    return nmp_ethtool_ioctl_get_coalesce(ifindex, coalesce);
 }
 
 gboolean
@@ -3661,18 +3660,18 @@ nm_platform_ethtool_set_coalesce(NMPlatform                   *self,
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_coalesce(ifindex, coalesce);
+    return nmp_ethtool_ioctl_set_coalesce(ifindex, coalesce);
 }
 
 gboolean
-nm_platform_ethtool_get_link_ring(NMPlatform *self, int ifindex, NMEthtoolRingState *ring)
+nm_platform_ethtool_get_ring(NMPlatform *self, int ifindex, NMEthtoolRingState *ring)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
     g_return_val_if_fail(ring, FALSE);
 
-    return nmp_utils_ethtool_get_ring(ifindex, ring);
+    return klass->ethtool_get_ring(self, ifindex, ring);
 }
 
 gboolean
@@ -3681,21 +3680,20 @@ nm_platform_ethtool_set_ring(NMPlatform *self, int ifindex, const NMEthtoolRingS
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(ring, FALSE);
 
-    return nmp_utils_ethtool_set_ring(ifindex, ring);
+    return klass->ethtool_set_ring(self, ifindex, ring);
 }
 
 gboolean
-nm_platform_ethtool_get_link_channels(NMPlatform             *self,
-                                      int                     ifindex,
-                                      NMEthtoolChannelsState *channels)
+nm_platform_ethtool_get_channels(NMPlatform *self, int ifindex, NMEthtoolChannelsState *channels)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
     g_return_val_if_fail(channels, FALSE);
 
-    return nmp_utils_ethtool_get_channels(ifindex, channels);
+    return nmp_ethtool_ioctl_get_channels(ifindex, channels);
 }
 
 gboolean
@@ -3707,39 +3705,40 @@ nm_platform_ethtool_set_channels(NMPlatform                   *self,
 
     g_return_val_if_fail(ifindex > 0, FALSE);
 
-    return nmp_utils_ethtool_set_channels(ifindex, channels);
+    return nmp_ethtool_ioctl_set_channels(ifindex, channels);
 }
 
 gboolean
-nm_platform_ethtool_get_link_pause(NMPlatform *self, int ifindex, NMEthtoolPauseState *pause)
+nm_platform_ethtool_get_pause(NMPlatform *self, int ifindex, NMEthtoolPauseState *pause)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
     g_return_val_if_fail(pause, FALSE);
 
-    return nmp_utils_ethtool_get_pause(ifindex, pause);
+    return klass->ethtool_get_pause(self, ifindex, pause);
 }
 
 gboolean
-nm_platform_ethtool_get_link_eee(NMPlatform *self, int ifindex, NMEthtoolEEEState *eee)
+nm_platform_ethtool_set_pause(NMPlatform *self, int ifindex, const NMEthtoolPauseState *pause)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
-    g_return_val_if_fail(eee, FALSE);
+    g_return_val_if_fail(pause, FALSE);
 
-    return nmp_utils_ethtool_get_eee(ifindex, eee);
+    return klass->ethtool_set_pause(self, ifindex, pause);
 }
 
 gboolean
-nm_platform_ethtool_set_pause(NMPlatform *self, int ifindex, const NMEthtoolPauseState *pause)
+nm_platform_ethtool_get_eee(NMPlatform *self, int ifindex, NMEthtoolEEEState *eee)
 {
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(eee, FALSE);
 
-    return nmp_utils_ethtool_set_pause(ifindex, pause);
+    return klass->ethtool_get_eee(self, ifindex, eee);
 }
 
 gboolean
@@ -3748,8 +3747,9 @@ nm_platform_ethtool_set_eee(NMPlatform *self, int ifindex, const NMEthtoolEEESta
     _CHECK_SELF_NETNS(self, klass, netns, FALSE);
 
     g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(eee, FALSE);
 
-    return nmp_utils_ethtool_set_eee(ifindex, eee);
+    return klass->ethtool_set_eee(self, ifindex, eee);
 }
 /*****************************************************************************/
 
@@ -7315,8 +7315,9 @@ nm_platform_ip4_route_to_string_full(const NMPlatformIP4Route     *route,
                              route->lock_initrwnd ? "lock " : "",
                              route->initrwnd)
             : "",
-        route->rto_min ? nm_sprintf_buf(str_rto_min, " rto_min %" G_GUINT32_FORMAT, route->rto_min)
-                       : "",
+        route->rto_min_set
+            ? nm_sprintf_buf(str_rto_min, " rto_min %" G_GUINT32_FORMAT, route->rto_min)
+            : "",
         route->quickack ? " quickack 1" : "",
         route->mtu || route->lock_mtu ? nm_sprintf_buf(str_mtu,
                                                        " mtu %s%" G_GUINT32_FORMAT,
diff --git a/src/libnm-platform/nm-platform.h b/src/libnm-platform/nm-platform.h
index 1c8a26b3..e4ccb9b1 100644
--- a/src/libnm-platform/nm-platform.h
+++ b/src/libnm-platform/nm-platform.h
@@ -89,7 +89,7 @@ typedef enum {
      * long as NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID differs. */
     NM_PLATFORM_IP_ROUTE_CMP_TYPE_WEAK_ID,
 
-    /* compare two routes as kernel would allow to add them with
+    /* compare two routes as kernel would allow one to add them with
      * `ip route append`. In other words, kernel does not allow you to
      * add two routes (at the same time) which compare equal according
      * to NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID.
@@ -314,6 +314,7 @@ guint _nm_platform_signal_id_get(NMPlatformSignalIdType signal_type);
     guint32 initrwnd;                                                                     \
                                                                                           \
     /* RTA_METRICS.RTAX_RTO_MIN (iproute2: rto_min) */                                    \
+    /* Valid only when 'rto_min_set' is true. */                                          \
     guint32 rto_min;                                                                      \
                                                                                           \
     /* RTA_METRICS.RTAX_MTU (iproute2: mtu) */                                            \
@@ -367,6 +368,10 @@ guint _nm_platform_signal_id_get(NMPlatformSignalIdType signal_type);
     /* RTA_METRICS.RTAX_QUICKACK (iproute2: quickack) */                                  \
     bool quickack : 1;                                                                    \
                                                                                           \
+    /* RTA_METRICS.RTAX_RTO_MIN (iproute2: rto_min) */                                    \
+    /* If true, the 'rto_min' value is valid. */                                          \
+    bool rto_min_set : 1;                                                                 \
+                                                                                          \
     /* if TRUE, the "metric" field is interpreted as an offset that is added to a default
      * metric. For example, form a DHCP lease we don't know the actually used metric, because
      * that is determined by upper layers (the configuration). However, we have a default
@@ -508,7 +513,7 @@ struct _NMPlatformIP6Route {
      * Kernel clears the host part of src/src_plen.
      *
      * src/src_plen is part of the ID of a route just like network/plen. That is,
-     * Not only `ip route append`, but also `ip route add` allows to add routes that only
+     * Not only `ip route append`, but also `ip route add` allows one to add routes that only
      * differ in their src/src_plen.
      */
     struct in6_addr src;
@@ -1341,6 +1346,12 @@ typedef struct {
 
     GPtrArray *(*mptcp_addrs_dump)(NMPlatform *self);
 
+    gboolean (*ethtool_get_pause)(NMPlatform *self, int ifindex, NMEthtoolPauseState *pause);
+    gboolean (*ethtool_set_pause)(NMPlatform *self, int ifindex, const NMEthtoolPauseState *pause);
+    gboolean (*ethtool_get_eee)(NMPlatform *self, int ifindex, NMEthtoolEEEState *eee);
+    gboolean (*ethtool_set_eee)(NMPlatform *self, int ifindex, const NMEthtoolEEEState *eee);
+    gboolean (*ethtool_get_ring)(NMPlatform *self, int ifindex, NMEthtoolRingState *ring);
+    gboolean (*ethtool_set_ring)(NMPlatform *self, int ifindex, const NMEthtoolRingState *ring);
 } NMPlatformClass;
 
 /* NMPlatform signals
@@ -2626,7 +2637,7 @@ gboolean nm_platform_ethtool_get_link_settings(NMPlatform               *self,
                                                guint32                  *out_speed,
                                                NMPlatformLinkDuplexType *out_duplex);
 
-NMEthtoolFeatureStates *nm_platform_ethtool_get_link_features(NMPlatform *self, int ifindex);
+NMEthtoolFeatureStates *nm_platform_ethtool_get_features(NMPlatform *self, int ifindex);
 gboolean                nm_platform_ethtool_set_features(
                    NMPlatform                   *self,
                    int                           ifindex,
@@ -2634,22 +2645,20 @@ gboolean                nm_platform_ethtool_set_features(
                    const NMOptionBool *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */,
                    gboolean            do_set /* or reset */);
 
-gboolean nm_platform_ethtool_get_link_coalesce(NMPlatform             *self,
-                                               int                     ifindex,
-                                               NMEthtoolCoalesceState *coalesce);
+gboolean
+nm_platform_ethtool_get_coalesce(NMPlatform *self, int ifindex, NMEthtoolCoalesceState *coalesce);
 
 gboolean nm_platform_ethtool_set_coalesce(NMPlatform                   *self,
                                           int                           ifindex,
                                           const NMEthtoolCoalesceState *coalesce);
 
-gboolean nm_platform_ethtool_get_link_ring(NMPlatform *self, int ifindex, NMEthtoolRingState *ring);
+gboolean nm_platform_ethtool_get_ring(NMPlatform *self, int ifindex, NMEthtoolRingState *ring);
 
 gboolean
 nm_platform_ethtool_set_ring(NMPlatform *self, int ifindex, const NMEthtoolRingState *ring);
 
-gboolean nm_platform_ethtool_get_link_channels(NMPlatform             *self,
-                                               int                     ifindex,
-                                               NMEthtoolChannelsState *channels);
+gboolean
+nm_platform_ethtool_get_channels(NMPlatform *self, int ifindex, NMEthtoolChannelsState *channels);
 
 gboolean nm_platform_ethtool_set_channels(NMPlatform                   *self,
                                           int                           ifindex,
@@ -2659,10 +2668,9 @@ gboolean nm_platform_ethtool_get_fec_mode(NMPlatform *self, int ifindex, uint32_
 
 gboolean nm_platform_ethtool_set_fec_mode(NMPlatform *self, int ifindex, uint32_t fec_mode);
 
-gboolean
-nm_platform_ethtool_get_link_pause(NMPlatform *self, int ifindex, NMEthtoolPauseState *pause);
+gboolean nm_platform_ethtool_get_pause(NMPlatform *self, int ifindex, NMEthtoolPauseState *pause);
 
-gboolean nm_platform_ethtool_get_link_eee(NMPlatform *self, int ifindex, NMEthtoolEEEState *eee);
+gboolean nm_platform_ethtool_get_eee(NMPlatform *self, int ifindex, NMEthtoolEEEState *eee);
 
 gboolean
 nm_platform_ethtool_set_pause(NMPlatform *self, int ifindex, const NMEthtoolPauseState *pause);
diff --git a/src/libnm-platform/nmp-ethtool-ioctl.c b/src/libnm-platform/nmp-ethtool-ioctl.c
new file mode 100644
index 00000000..830b02f6
--- /dev/null
+++ b/src/libnm-platform/nmp-ethtool-ioctl.c
@@ -0,0 +1,1603 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "libnm-glib-aux/nm-default-glib-i18n-lib.h"
+
+#include "nmp-ethtool-ioctl.h"
+
+#include "libnm-platform/nm-platform.h"
+#include "libnm-platform/nm-platform-utils.h"
+#include "libnm-log-core/nm-logging.h"
+#include "libnm-base/nm-ethtool-base.h"
+
+#include <linux/ethtool.h>
+#include <linux/if.h>
+#include <linux/mii.h>
+#include <linux/sockios.h>
+#include <linux/version.h>
+#include <sys/ioctl.h>
+
+#define ONOFF(bool_val) ((bool_val) ? "on" : "off")
+
+/*****************************************************************************/
+
+typedef struct {
+    int       fd;
+    const int ifindex;
+    char      ifname[IFNAMSIZ];
+} SocketHandle;
+
+#define SOCKET_HANDLE_INIT(_ifindex) \
+    {                                \
+        .fd      = -1,               \
+        .ifindex = (_ifindex),       \
+    }
+
+static void
+_nm_auto_socket_handle(SocketHandle *shandle)
+{
+    if (shandle->fd >= 0)
+        nm_close(shandle->fd);
+}
+
+#define nm_auto_socket_handle nm_auto(_nm_auto_socket_handle)
+
+/*****************************************************************************/
+
+typedef enum {
+    IOCTL_CALL_DATA_TYPE_NONE,
+    IOCTL_CALL_DATA_TYPE_IFRDATA,
+    IOCTL_CALL_DATA_TYPE_IFRU,
+} IoctlCallDataType;
+
+static int
+_ioctl_call(const char       *log_ioctl_type,
+            const char       *log_subtype,
+            unsigned long int ioctl_request,
+            int               ifindex,
+            int              *inout_fd,
+            char             *inout_ifname,
+            IoctlCallDataType edata_type,
+            gpointer          edata,
+            gsize             edata_size,
+            struct ifreq     *out_ifreq)
+{
+    nm_auto_close int fd_close = -1;
+    int               fd;
+    int               r;
+    gpointer          edata_backup      = NULL;
+    gs_free gpointer  edata_backup_free = NULL;
+    guint             try_count;
+    char              known_ifnames[2][IFNAMSIZ];
+    const char       *failure_reason = NULL;
+    struct ifreq      ifr;
+
+    nm_assert(ifindex > 0);
+    nm_assert(NM_IN_SET(edata_type,
+                        IOCTL_CALL_DATA_TYPE_NONE,
+                        IOCTL_CALL_DATA_TYPE_IFRDATA,
+                        IOCTL_CALL_DATA_TYPE_IFRU));
+    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_NONE || edata_size == 0);
+    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_IFRDATA || edata_size > 0);
+    nm_assert(edata_type != IOCTL_CALL_DATA_TYPE_IFRU
+              || (edata_size > 0 && edata_size <= sizeof(ifr.ifr_ifru)));
+    nm_assert(edata_size == 0 || edata);
+
+    /* open a file descriptor (or use the one provided). */
+    if (inout_fd && *inout_fd >= 0)
+        fd = *inout_fd;
+    else {
+        fd = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+        if (fd < 0) {
+            r              = -NM_ERRNO_NATIVE(errno);
+            failure_reason = "failed creating socket or ioctl";
+            goto out;
+        }
+        if (inout_fd)
+            *inout_fd = fd;
+        else
+            fd_close = fd;
+    }
+
+    /* resolve the ifindex to name (or use the one provided). */
+    if (inout_ifname && inout_ifname[0])
+        nm_utils_ifname_cpy(known_ifnames[0], inout_ifname);
+    else {
+        if (!nmp_utils_if_indextoname(ifindex, known_ifnames[0])) {
+            failure_reason = "cannot resolve ifindex";
+            r              = -ENODEV;
+            goto out;
+        }
+        if (inout_ifname)
+            nm_utils_ifname_cpy(inout_ifname, known_ifnames[0]);
+    }
+
+    /* we might need to retry the request. Backup edata so that we can
+     * restore it on retry. */
+    if (edata_size > 0)
+        edata_backup = nm_memdup_maybe_a(500, edata, edata_size, &edata_backup_free);
+
+    try_count = 0;
+
+again:
+{
+    const char *ifname = known_ifnames[try_count % 2];
+
+    nm_assert(ifindex > 0);
+    nm_assert(ifname && nm_utils_ifname_valid_kernel(ifname, NULL));
+    nm_assert(fd >= 0);
+
+    memset(&ifr, 0, sizeof(ifr));
+    nm_utils_ifname_cpy(ifr.ifr_name, ifname);
+    if (edata_type == IOCTL_CALL_DATA_TYPE_IFRDATA)
+        ifr.ifr_data = edata;
+    else if (edata_type == IOCTL_CALL_DATA_TYPE_IFRU)
+        memcpy(&ifr.ifr_ifru, edata, NM_MIN(edata_size, sizeof(ifr.ifr_ifru)));
+
+    if (ioctl(fd, ioctl_request, &ifr) < 0) {
+        r = -NM_ERRNO_NATIVE(errno);
+        nm_log_trace(LOGD_PLATFORM,
+                     "%s[%d]: %s, %s: failed: %s",
+                     log_ioctl_type,
+                     ifindex,
+                     log_subtype,
+                     ifname,
+                     nm_strerror_native(-r));
+    } else {
+        r = 0;
+        nm_log_trace(LOGD_PLATFORM,
+                     "%s[%d]: %s, %s: success",
+                     log_ioctl_type,
+                     ifindex,
+                     log_subtype,
+                     ifname);
+    }
+}
+
+    try_count++;
+
+    /* resolve the name again to see whether the ifindex still has the same name. */
+    if (!nmp_utils_if_indextoname(ifindex, known_ifnames[try_count % 2])) {
+        /* we could not find the ifindex again. Probably the device just got
+         * removed.
+         *
+         * In both cases we return the error code we got from ioctl above.
+         * Either it failed because the device was gone already or it still
+         * managed to complete the call. In both cases, the error code is good. */
+        failure_reason =
+            "cannot resolve ifindex after ioctl call. Probably the device was just removed";
+        goto out;
+    }
+
+    /* check whether the ifname changed in the meantime. If yes, would render the result
+     * invalid. Note that this cannot detect every race regarding renames, for example:
+     *
+     *  - if_indextoname(#10) gives eth0
+     *  - rename(#10) => eth0_tmp
+     *  - rename(#11) => eth0
+     *  - ioctl(eth0) (wrongly fetching #11, formerly eth1)
+     *  - rename(#11) => eth_something
+     *  - rename(#10) => eth0
+     *  - if_indextoname(#10) gives eth0
+     */
+    if (!nm_streq(known_ifnames[0], known_ifnames[1])) {
+        gboolean retry;
+
+        /* we detected a possible(!) rename.
+         *
+         * For getters it's straight forward to just retry the call.
+         *
+         * For setters we also always retry. If our previous call operated on the right device,
+         * calling it again should have no bad effect (just setting the same thing more than once).
+         *
+         * The only potential bad thing is if there was a race involving swapping names, and we just
+         * set the ioctl option on the wrong device. But then the bad thing already happenned and
+         * we cannot detect it (nor do anything about it). At least, we can retry and set the
+         * option on the right interface. */
+        retry = (try_count < 5);
+
+        nm_log_trace(LOGD_PLATFORM,
+                     "%s[%d]: %s: rename detected from \"%s\" to \"%s\". %s",
+                     log_ioctl_type,
+                     ifindex,
+                     log_subtype,
+                     known_ifnames[(try_count - 1) % 2],
+                     known_ifnames[try_count % 2],
+                     retry ? "Retry" : "No retry");
+        if (inout_ifname)
+            nm_utils_ifname_cpy(inout_ifname, known_ifnames[try_count % 2]);
+        if (retry) {
+            if (edata_size > 0)
+                memcpy(edata, edata_backup, edata_size);
+            goto again;
+        }
+    }
+
+out:
+    if (failure_reason) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "%s[%d]: %s: %s: %s",
+                     log_ioctl_type,
+                     ifindex,
+                     log_subtype,
+                     failure_reason,
+                     r < 0 ? nm_strerror_native(-r) : "assume success");
+    }
+    if (r >= 0)
+        NM_SET_OUT(out_ifreq, ifr);
+    return r;
+}
+
+/******************************************************************************
+ * ethtool
+ *****************************************************************************/
+
+static NM_UTILS_ENUM2STR_DEFINE(_ethtool_cmd_to_string,
+                                guint32,
+                                NM_UTILS_ENUM2STR(ETHTOOL_GCOALESCE, "ETHTOOL_GCOALESCE"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GDRVINFO, "ETHTOOL_GDRVINFO"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GFEATURES, "ETHTOOL_GFEATURES"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GLINK, "ETHTOOL_GLINK"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GLINKSETTINGS, "ETHTOOL_GLINKSETTINGS"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GPERMADDR, "ETHTOOL_GPERMADDR"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GRINGPARAM, "ETHTOOL_GRINGPARAM"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GPAUSEPARAM, "ETHTOOL_GPAUSEPARAM"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GSET, "ETHTOOL_GSET"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GSSET_INFO, "ETHTOOL_GSSET_INFO"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GSTATS, "ETHTOOL_GSTATS"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GSTRINGS, "ETHTOOL_GSTRINGS"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_GWOL, "ETHTOOL_GWOL"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SCOALESCE, "ETHTOOL_SCOALESCE"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SFEATURES, "ETHTOOL_SFEATURES"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SLINKSETTINGS, "ETHTOOL_SLINKSETTINGS"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SRINGPARAM, "ETHTOOL_SRINGPARAM"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SPAUSEPARAM, "ETHTOOL_SPAUSEPARAM"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SSET, "ETHTOOL_SSET"),
+                                NM_UTILS_ENUM2STR(ETHTOOL_SWOL, "ETHTOOL_SWOL"), );
+
+static const char *
+_ethtool_edata_to_string(gpointer edata, gsize edata_size, char *sbuf, gsize sbuf_len)
+{
+    nm_assert(edata);
+    nm_assert(edata_size >= sizeof(guint32));
+    nm_assert((((intptr_t) edata) % _nm_alignof(guint32)) == 0);
+
+    return _ethtool_cmd_to_string(*((guint32 *) edata), sbuf, sbuf_len);
+}
+
+/*****************************************************************************/
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)
+#define ethtool_cmd_speed(pedata) ((pedata)->speed)
+
+#define ethtool_cmd_speed_set(pedata, speed) \
+    G_STMT_START                             \
+    {                                        \
+        (pedata)->speed = (guint16) (speed); \
+    }                                        \
+    G_STMT_END
+#endif
+
+static int
+_ethtool_call_handle(SocketHandle *shandle, gpointer edata, gsize edata_size)
+{
+    char sbuf[50];
+
+    return _ioctl_call("ethtool",
+                       _ethtool_edata_to_string(edata, edata_size, sbuf, sizeof(sbuf)),
+                       SIOCETHTOOL,
+                       shandle->ifindex,
+                       &shandle->fd,
+                       shandle->ifname,
+                       IOCTL_CALL_DATA_TYPE_IFRDATA,
+                       edata,
+                       edata_size,
+                       NULL);
+}
+
+static int
+_ethtool_call_once(int ifindex, gpointer edata, gsize edata_size)
+{
+    char sbuf[50];
+
+    return _ioctl_call("ethtool",
+                       _ethtool_edata_to_string(edata, edata_size, sbuf, sizeof(sbuf)),
+                       SIOCETHTOOL,
+                       ifindex,
+                       NULL,
+                       NULL,
+                       IOCTL_CALL_DATA_TYPE_IFRDATA,
+                       edata,
+                       edata_size,
+                       NULL);
+}
+
+/*****************************************************************************/
+
+static struct ethtool_gstrings *
+ethtool_get_stringset(SocketHandle *shandle, int stringset_id)
+{
+    struct {
+        struct ethtool_sset_info info;
+        guint32                  sentinel;
+    } sset_info = {
+        .info.cmd       = ETHTOOL_GSSET_INFO,
+        .info.reserved  = 0,
+        .info.sset_mask = (1ULL << stringset_id),
+    };
+    const guint32                   *pdata;
+    gs_free struct ethtool_gstrings *gstrings = NULL;
+    gsize                            gstrings_len;
+    guint32                          i, len;
+
+    if (_ethtool_call_handle(shandle, &sset_info, sizeof(sset_info)) < 0)
+        return NULL;
+    if (!sset_info.info.sset_mask)
+        return NULL;
+
+    pdata = (guint32 *) sset_info.info.data;
+
+    len = *pdata;
+
+    gstrings_len         = sizeof(*gstrings) + (len * ETH_GSTRING_LEN);
+    gstrings             = g_malloc0(gstrings_len);
+    gstrings->cmd        = ETHTOOL_GSTRINGS;
+    gstrings->string_set = stringset_id;
+    gstrings->len        = len;
+    if (gstrings->len > 0) {
+        if (_ethtool_call_handle(shandle, gstrings, gstrings_len) < 0)
+            return NULL;
+        for (i = 0; i < gstrings->len; i++) {
+            /* ensure NUL terminated */
+            gstrings->data[i * ETH_GSTRING_LEN + (ETH_GSTRING_LEN - 1)] = '\0';
+        }
+    }
+
+    return g_steal_pointer(&gstrings);
+}
+
+static int
+ethtool_gstrings_find(const struct ethtool_gstrings *gstrings, const char *needle)
+{
+    guint32 i;
+
+    /* ethtool_get_stringset() always ensures NUL terminated strings at ETH_GSTRING_LEN.
+     * that means, we cannot possibly request longer names. */
+    nm_assert(needle && strlen(needle) < ETH_GSTRING_LEN);
+
+    for (i = 0; i < gstrings->len; i++) {
+        if (nm_streq((char *) &gstrings->data[i * ETH_GSTRING_LEN], needle))
+            return i;
+    }
+    return -1;
+}
+
+static int
+ethtool_get_stringset_index(SocketHandle *shandle, int stringset_id, const char *needle)
+{
+    gs_free struct ethtool_gstrings *gstrings = NULL;
+
+    /* ethtool_get_stringset() always ensures NUL terminated strings at ETH_GSTRING_LEN.
+     * that means, we cannot possibly request longer names. */
+    nm_assert(needle && strlen(needle) < ETH_GSTRING_LEN);
+
+    gstrings = ethtool_get_stringset(shandle, stringset_id);
+    if (gstrings)
+        return ethtool_gstrings_find(gstrings, needle);
+    return -1;
+}
+
+/*****************************************************************************/
+
+static const NMEthtoolFeatureInfo _ethtool_feature_infos[_NM_ETHTOOL_ID_FEATURE_NUM] = {
+#define ETHT_FEAT(eid, ...)                                      \
+    {                                                            \
+        .ethtool_id     = eid,                                   \
+        .n_kernel_names = NM_NARG(__VA_ARGS__),                  \
+        .kernel_names   = ((const char *const[]) {__VA_ARGS__}), \
+    }
+
+    /* the order does only matter for one thing: if it happens that more than one NMEthtoolID
+     * reference the same kernel-name, then the one that is mentioned *later* will win in
+     * case these NMEthtoolIDs are set. That mostly only makes sense for ethtool-ids which
+     * refer to multiple features ("feature-tso"), while also having more specific ids
+     * ("feature-tx-tcp-segmentation"). */
+
+    /* names from ethtool utility, which are aliases for multiple features. */
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_SG, "tx-scatter-gather", "tx-scatter-gather-fraglist"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TSO,
+              "tx-tcp-segmentation",
+              "tx-tcp-ecn-segmentation",
+              "tx-tcp-mangleid-segmentation",
+              "tx-tcp6-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX,
+              "tx-checksum-ipv4",
+              "tx-checksum-ip-generic",
+              "tx-checksum-ipv6",
+              "tx-checksum-fcoe-crc",
+              "tx-checksum-sctp"),
+
+    /* names from ethtool utility, which are aliases for one feature. */
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_GRO, "rx-gro"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_GSO, "tx-generic-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_LRO, "rx-lro"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_NTUPLE, "rx-ntuple-filter"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX, "rx-checksum"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RXHASH, "rx-hashing"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RXVLAN, "rx-vlan-hw-parse"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TXVLAN, "tx-vlan-hw-insert"),
+
+    /* names of features, as known by kernel. */
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_ESP_HW_OFFLOAD, "esp-hw-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_ESP_TX_CSUM_HW_OFFLOAD, "esp-tx-csum-hw-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_FCOE_MTU, "fcoe-mtu"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_HIGHDMA, "highdma"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_HW_TC_OFFLOAD, "hw-tc-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_L2_FWD_OFFLOAD, "l2-fwd-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_LOOPBACK, "loopback"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_MACSEC_HW_OFFLOAD, "macsec-hw-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_ALL, "rx-all"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_FCS, "rx-fcs"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_GRO_HW, "rx-gro-hw"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_GRO_LIST, "rx-gro-list"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_UDP_GRO_FORWARDING, "rx-udp-gro-forwarding"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD, "rx-udp_tunnel-port-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_FILTER, "rx-vlan-filter"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_FILTER, "rx-vlan-stag-filter"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_HW_PARSE, "rx-vlan-stag-hw-parse"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_RECORD, "tls-hw-record"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_RX_OFFLOAD, "tls-hw-rx-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TLS_HW_TX_OFFLOAD, "tls-hw-tx-offload"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_FCOE_CRC, "tx-checksum-fcoe-crc"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV4, "tx-checksum-ipv4"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV6, "tx-checksum-ipv6"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IP_GENERIC, "tx-checksum-ip-generic"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_SCTP, "tx-checksum-sctp"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_ESP_SEGMENTATION, "tx-esp-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_FCOE_SEGMENTATION, "tx-fcoe-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GRE_CSUM_SEGMENTATION, "tx-gre-csum-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GRE_SEGMENTATION, "tx-gre-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_LIST, "tx-gso-list"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_PARTIAL, "tx-gso-partial"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_GSO_ROBUST, "tx-gso-robust"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_IPXIP4_SEGMENTATION, "tx-ipxip4-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_IPXIP6_SEGMENTATION, "tx-ipxip6-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_NOCACHE_COPY, "tx-nocache-copy"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER, "tx-scatter-gather"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER_FRAGLIST, "tx-scatter-gather-fraglist"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_SCTP_SEGMENTATION, "tx-sctp-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP6_SEGMENTATION, "tx-tcp6-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_ECN_SEGMENTATION, "tx-tcp-ecn-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_MANGLEID_SEGMENTATION, "tx-tcp-mangleid-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TCP_SEGMENTATION, "tx-tcp-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_TUNNEL_REMCSUM_SEGMENTATION,
+              "tx-tunnel-remcsum-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_SEGMENTATION, "tx-udp-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION, "tx-udp_tnl-csum-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_SEGMENTATION, "tx-udp_tnl-segmentation"),
+    ETHT_FEAT(NM_ETHTOOL_ID_FEATURE_TX_VLAN_STAG_HW_INSERT, "tx-vlan-stag-hw-insert"),
+};
+
+/* the number of kernel features that we handle. It essentially is the sum of all
+ * kernel_names. So, all ethtool-ids that reference exactly one kernel-name
+ * (_NM_ETHTOOL_ID_FEATURE_NUM) + some extra, for ethtool-ids that are aliases
+ * for multiple kernel-names. */
+#define N_ETHTOOL_KERNEL_FEATURES (((guint) _NM_ETHTOOL_ID_FEATURE_NUM) + 8u)
+
+static void
+_ASSERT_ethtool_feature_infos(void)
+{
+#if NM_MORE_ASSERTS > 10
+    guint i, k, n;
+    bool  found[_NM_ETHTOOL_ID_FEATURE_NUM] = {};
+
+    G_STATIC_ASSERT_EXPR(G_N_ELEMENTS(_ethtool_feature_infos) == _NM_ETHTOOL_ID_FEATURE_NUM);
+
+    n = 0;
+    for (i = 0; i < G_N_ELEMENTS(_ethtool_feature_infos); i++) {
+        NMEthtoolFeatureState       kstate;
+        const NMEthtoolFeatureInfo *inf = &_ethtool_feature_infos[i];
+
+        g_assert(inf->ethtool_id >= _NM_ETHTOOL_ID_FEATURE_FIRST);
+        g_assert(inf->ethtool_id <= _NM_ETHTOOL_ID_FEATURE_LAST);
+        g_assert(inf->n_kernel_names > 0);
+
+        for (k = 0; k < i; k++)
+            g_assert(inf->ethtool_id != _ethtool_feature_infos[k].ethtool_id);
+
+        g_assert(!found[_NM_ETHTOOL_ID_FEATURE_AS_IDX(inf->ethtool_id)]);
+        found[_NM_ETHTOOL_ID_FEATURE_AS_IDX(inf->ethtool_id)] = TRUE;
+
+        kstate.idx_kernel_name = inf->n_kernel_names - 1;
+        g_assert((guint) kstate.idx_kernel_name == (guint) (inf->n_kernel_names - 1));
+
+        n += inf->n_kernel_names;
+        for (k = 0; k < inf->n_kernel_names; k++) {
+            const char *name = inf->kernel_names[k];
+
+            g_assert(!nm_strv_contains(inf->kernel_names, k, name));
+
+            /* these offload features are only informational and cannot be set from user-space
+             * (NETIF_F_NEVER_CHANGE). We should not track them in _ethtool_feature_infos. */
+            g_assert(!nm_streq(name, "netns-local"));
+            g_assert(!nm_streq(name, "tx-lockless"));
+            g_assert(!nm_streq(name, "vlan-challenged"));
+        }
+    }
+
+    for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++)
+        g_assert(found[i]);
+
+    g_assert(n == N_ETHTOOL_KERNEL_FEATURES);
+#endif
+}
+
+static NMEthtoolFeatureStates *
+ethtool_get_features(SocketHandle *shandle)
+{
+    gs_free NMEthtoolFeatureStates  *states      = NULL;
+    gs_free struct ethtool_gstrings *ss_features = NULL;
+
+    _ASSERT_ethtool_feature_infos();
+
+    ss_features = ethtool_get_stringset(shandle, ETH_SS_FEATURES);
+    if (!ss_features)
+        return NULL;
+
+    if (ss_features->len > 0) {
+        gs_free struct ethtool_gfeatures   *gfeatures_free = NULL;
+        struct ethtool_gfeatures           *gfeatures;
+        gsize                               gfeatures_len;
+        guint                               idx;
+        const NMEthtoolFeatureState        *states_list0   = NULL;
+        const NMEthtoolFeatureState *const *states_plist0  = NULL;
+        guint                               states_plist_n = 0;
+
+        gfeatures_len = sizeof(struct ethtool_gfeatures)
+                        + (NM_DIV_ROUND_UP(ss_features->len, 32u) * sizeof(gfeatures->features[0]));
+        gfeatures       = nm_malloc0_maybe_a(300, gfeatures_len, &gfeatures_free);
+        gfeatures->cmd  = ETHTOOL_GFEATURES;
+        gfeatures->size = NM_DIV_ROUND_UP(ss_features->len, 32u);
+        if (_ethtool_call_handle(shandle, gfeatures, gfeatures_len) < 0)
+            return NULL;
+
+        for (idx = 0; idx < G_N_ELEMENTS(_ethtool_feature_infos); idx++) {
+            const NMEthtoolFeatureInfo *info = &_ethtool_feature_infos[idx];
+            guint                       idx_kernel_name;
+
+            for (idx_kernel_name = 0; idx_kernel_name < info->n_kernel_names; idx_kernel_name++) {
+                NMEthtoolFeatureState *kstate;
+                const char            *kernel_name = info->kernel_names[idx_kernel_name];
+                int                    i_feature;
+                guint                  i_block;
+                guint32                i_flag;
+
+                i_feature = ethtool_gstrings_find(ss_features, kernel_name);
+                if (i_feature < 0)
+                    continue;
+
+                i_block = ((guint) i_feature) / 32u;
+                i_flag  = (guint32) (1u << (((guint) i_feature) % 32u));
+
+                if (!states) {
+                    states = g_malloc0(
+                        sizeof(NMEthtoolFeatureStates)
+                        + (N_ETHTOOL_KERNEL_FEATURES * sizeof(NMEthtoolFeatureState))
+                        + ((N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos))
+                           * sizeof(NMEthtoolFeatureState *)));
+                    states_list0          = &states->states_list[0];
+                    states_plist0         = (gpointer) &states_list0[N_ETHTOOL_KERNEL_FEATURES];
+                    states->n_ss_features = ss_features->len;
+                }
+
+                nm_assert(states->n_states < N_ETHTOOL_KERNEL_FEATURES);
+                kstate = (NMEthtoolFeatureState *) &states_list0[states->n_states];
+                states->n_states++;
+
+                kstate->info            = info;
+                kstate->idx_ss_features = i_feature;
+                kstate->idx_kernel_name = idx_kernel_name;
+                kstate->available       = !!(gfeatures->features[i_block].available & i_flag);
+                kstate->requested       = !!(gfeatures->features[i_block].requested & i_flag);
+                kstate->active          = !!(gfeatures->features[i_block].active & i_flag);
+                kstate->never_changed   = !!(gfeatures->features[i_block].never_changed & i_flag);
+
+                nm_assert(states_plist_n
+                          < N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos));
+
+                if (!states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)])
+                    states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)] =
+                        &states_plist0[states_plist_n];
+                ((const NMEthtoolFeatureState **) states_plist0)[states_plist_n] = kstate;
+                states_plist_n++;
+            }
+
+            if (states && states->states_indexed[_NM_ETHTOOL_ID_FEATURE_AS_IDX(info->ethtool_id)]) {
+                nm_assert(states_plist_n
+                          < N_ETHTOOL_KERNEL_FEATURES + G_N_ELEMENTS(_ethtool_feature_infos));
+                nm_assert(!states_plist0[states_plist_n]);
+                states_plist_n++;
+            }
+        }
+    }
+
+    return g_steal_pointer(&states);
+}
+
+NMEthtoolFeatureStates *
+nmp_ethtool_ioctl_get_features(int ifindex)
+{
+    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
+    NMEthtoolFeatureStates            *features;
+
+    g_return_val_if_fail(ifindex > 0, 0);
+
+    features = ethtool_get_features(&shandle);
+
+    if (!features) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure getting features",
+                     ifindex,
+                     "get-features");
+        return NULL;
+    }
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: retrieved kernel features",
+                 ifindex,
+                 "get-features");
+    return features;
+}
+
+static const char *
+_ethtool_feature_state_to_string(char                        *buf,
+                                 gsize                        buf_size,
+                                 const NMEthtoolFeatureState *s,
+                                 const char                  *prefix)
+{
+    int l;
+
+    l = g_snprintf(buf,
+                   buf_size,
+                   "%s %s%s",
+                   prefix ?: "",
+                   ONOFF(s->active),
+                   (!s->available || s->never_changed)
+                       ? ", [fixed]"
+                       : ((s->requested != s->active)
+                              ? (s->requested ? ", [requested on]" : ", [requested off]")
+                              : ""));
+    nm_assert(l < buf_size);
+    return buf;
+}
+
+gboolean
+nmp_ethtool_ioctl_set_features(
+    int                           ifindex,
+    const NMEthtoolFeatureStates *features,
+    const NMOptionBool *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */,
+    gboolean            do_set /* or reset */)
+{
+    nm_auto_socket_handle SocketHandle shandle        = SOCKET_HANDLE_INIT(ifindex);
+    gs_free struct ethtool_sfeatures  *sfeatures_free = NULL;
+    struct ethtool_sfeatures          *sfeatures;
+    gsize                              sfeatures_len;
+    int                                r;
+    guint                              i, j;
+    struct {
+        const NMEthtoolFeatureState *f_state;
+        NMOptionBool                 requested;
+    } set_states[N_ETHTOOL_KERNEL_FEATURES];
+    guint    set_states_n = 0;
+    gboolean success      = TRUE;
+
+    g_return_val_if_fail(ifindex > 0, 0);
+    g_return_val_if_fail(features, 0);
+    g_return_val_if_fail(requested, 0);
+
+    nm_assert(features->n_states <= N_ETHTOOL_KERNEL_FEATURES);
+
+    for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++) {
+        const NMEthtoolFeatureState *const *states_indexed;
+
+        if (requested[i] == NM_OPTION_BOOL_DEFAULT)
+            continue;
+
+        if (!(states_indexed = features->states_indexed[i])) {
+            if (do_set) {
+                nm_log_trace(LOGD_PLATFORM,
+                             "ethtool[%d]: %s: set feature %s: skip (not found)",
+                             ifindex,
+                             "set-features",
+                             nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname);
+                success = FALSE;
+            }
+            continue;
+        }
+
+        for (j = 0; states_indexed[j]; j++) {
+            const NMEthtoolFeatureState *s = states_indexed[j];
+            char                         sbuf[255];
+
+            if (set_states_n >= G_N_ELEMENTS(set_states))
+                g_return_val_if_reached(FALSE);
+
+            if (s->never_changed) {
+                nm_log_trace(LOGD_PLATFORM,
+                             "ethtool[%d]: %s: %s feature %s (%s): %s, %s (skip feature marked as "
+                             "never changed)",
+                             ifindex,
+                             "set-features",
+                             do_set ? "set" : "reset",
+                             nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname,
+                             s->info->kernel_names[s->idx_kernel_name],
+                             ONOFF(do_set ? requested[i] == NM_OPTION_BOOL_TRUE : s->active),
+                             _ethtool_feature_state_to_string(sbuf,
+                                                              sizeof(sbuf),
+                                                              s,
+                                                              do_set ? " currently:" : " before:"));
+                continue;
+            }
+
+            nm_log_trace(LOGD_PLATFORM,
+                         "ethtool[%d]: %s: %s feature %s (%s): %s, %s",
+                         ifindex,
+                         "set-features",
+                         do_set ? "set" : "reset",
+                         nm_ethtool_data[i + _NM_ETHTOOL_ID_FEATURE_FIRST]->optname,
+                         s->info->kernel_names[s->idx_kernel_name],
+                         ONOFF(do_set ? requested[i] == NM_OPTION_BOOL_TRUE : s->active),
+                         _ethtool_feature_state_to_string(sbuf,
+                                                          sizeof(sbuf),
+                                                          s,
+                                                          do_set ? " currently:" : " before:"));
+
+            if (do_set && (!s->available || s->never_changed)
+                && (s->active != (requested[i] == NM_OPTION_BOOL_TRUE))) {
+                /* we request to change a flag which kernel reported as fixed.
+                 * While the ethtool operation will silently succeed, mark the request
+                 * as failure. */
+                success = FALSE;
+            }
+
+            set_states[set_states_n].f_state   = s;
+            set_states[set_states_n].requested = requested[i];
+            set_states_n++;
+        }
+    }
+
+    if (set_states_n == 0) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: no feature requested",
+                     ifindex,
+                     "set-features");
+        return TRUE;
+    }
+
+    sfeatures_len =
+        sizeof(struct ethtool_sfeatures)
+        + (NM_DIV_ROUND_UP(features->n_ss_features, 32U) * sizeof(sfeatures->features[0]));
+    sfeatures       = nm_malloc0_maybe_a(300, sfeatures_len, &sfeatures_free);
+    sfeatures->cmd  = ETHTOOL_SFEATURES;
+    sfeatures->size = NM_DIV_ROUND_UP(features->n_ss_features, 32U);
+
+    for (i = 0; i < set_states_n; i++) {
+        const NMEthtoolFeatureState *s = set_states[i].f_state;
+        guint                        i_block;
+        guint32                      i_flag;
+        gboolean                     is_requested;
+
+        i_block = s->idx_ss_features / 32u;
+        i_flag  = (guint32) (1u << (s->idx_ss_features % 32u));
+
+        sfeatures->features[i_block].valid |= i_flag;
+
+        if (do_set)
+            is_requested = (set_states[i].requested == NM_OPTION_BOOL_TRUE);
+        else
+            is_requested = s->active;
+
+        if (is_requested)
+            sfeatures->features[i_block].requested |= i_flag;
+        else
+            sfeatures->features[i_block].requested &= ~i_flag;
+    }
+
+    r = _ethtool_call_handle(&shandle, sfeatures, sfeatures_len);
+    if (r < 0) {
+        success = FALSE;
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure setting features (%s)",
+                     ifindex,
+                     "set-features",
+                     nm_strerror_native(-r));
+        return FALSE;
+    }
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: %s",
+                 ifindex,
+                 "set-features",
+                 success ? "successfully setting features"
+                         : "at least some of the features were not successfully set");
+    return success;
+}
+
+gboolean
+nmp_ethtool_ioctl_get_coalesce(int ifindex, NMEthtoolCoalesceState *coalesce)
+{
+    struct ethtool_coalesce eth_data;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(coalesce, FALSE);
+
+    eth_data.cmd = ETHTOOL_GCOALESCE;
+
+    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure getting coalesce settings",
+                     ifindex,
+                     "get-coalesce");
+        return FALSE;
+    }
+
+    *coalesce = (NMEthtoolCoalesceState) {
+        .s = {
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS)] =
+                eth_data.rx_coalesce_usecs,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES)] =
+                eth_data.rx_max_coalesced_frames,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ)] =
+                eth_data.rx_coalesce_usecs_irq,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ)] =
+                eth_data.rx_max_coalesced_frames_irq,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS)] =
+                eth_data.tx_coalesce_usecs,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES)] =
+                eth_data.tx_max_coalesced_frames,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ)] =
+                eth_data.tx_coalesce_usecs_irq,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ)] =
+                eth_data.tx_max_coalesced_frames_irq,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS)] =
+                eth_data.stats_block_coalesce_usecs,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX)] =
+                eth_data.use_adaptive_rx_coalesce,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)] =
+                eth_data.use_adaptive_tx_coalesce,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW)] =
+                eth_data.pkt_rate_low,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW)] =
+                eth_data.rx_coalesce_usecs_low,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW)] =
+                eth_data.rx_max_coalesced_frames_low,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW)] =
+                eth_data.tx_coalesce_usecs_low,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW)] =
+                eth_data.tx_max_coalesced_frames_low,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH)] =
+                eth_data.pkt_rate_high,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH)] =
+                eth_data.rx_coalesce_usecs_high,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH)] =
+                eth_data.rx_max_coalesced_frames_high,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH)] =
+                eth_data.tx_coalesce_usecs_high,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH)] =
+                eth_data.tx_max_coalesced_frames_high,
+            [_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL)] =
+                eth_data.rate_sample_interval,
+        }};
+    return TRUE;
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: retrieved kernel coalesce settings",
+                 ifindex,
+                 "get-coalesce");
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_ioctl_set_coalesce(int ifindex, const NMEthtoolCoalesceState *coalesce)
+{
+    struct ethtool_coalesce eth_data;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(coalesce, FALSE);
+
+    eth_data = (struct ethtool_coalesce) {
+        .cmd = ETHTOOL_SCOALESCE,
+        .rx_coalesce_usecs =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS)],
+        .rx_max_coalesced_frames =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES)],
+        .rx_coalesce_usecs_irq =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ)],
+        .rx_max_coalesced_frames_irq =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ)],
+        .tx_coalesce_usecs =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS)],
+        .tx_max_coalesced_frames =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES)],
+        .tx_coalesce_usecs_irq =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ)],
+        .tx_max_coalesced_frames_irq =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ)],
+        .stats_block_coalesce_usecs =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS)],
+        .use_adaptive_rx_coalesce =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX)],
+        .use_adaptive_tx_coalesce =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)],
+        .pkt_rate_low =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW)],
+        .rx_coalesce_usecs_low =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW)],
+        .rx_max_coalesced_frames_low =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW)],
+        .tx_coalesce_usecs_low =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW)],
+        .tx_max_coalesced_frames_low =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW)],
+        .pkt_rate_high =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH)],
+        .rx_coalesce_usecs_high =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH)],
+        .rx_max_coalesced_frames_high =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH)],
+        .tx_coalesce_usecs_high =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH)],
+        .tx_max_coalesced_frames_high =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH)],
+        .rate_sample_interval =
+            coalesce->s[_NM_ETHTOOL_ID_COALESCE_AS_IDX(NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL)],
+    };
+
+    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure setting coalesce settings",
+                     ifindex,
+                     "set-coalesce");
+        return FALSE;
+    }
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: set kernel coalesce settings",
+                 ifindex,
+                 "set-coalesce");
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_ioctl_get_channels(int ifindex, NMEthtoolChannelsState *channels)
+{
+    struct ethtool_channels eth_data;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(channels, FALSE);
+
+    eth_data.cmd = ETHTOOL_GCHANNELS;
+
+    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure getting channels settings",
+                     ifindex,
+                     "get-channels");
+        return FALSE;
+    }
+
+    *channels = (NMEthtoolChannelsState) {
+        .rx       = eth_data.rx_count,
+        .tx       = eth_data.tx_count,
+        .other    = eth_data.other_count,
+        .combined = eth_data.combined_count,
+    };
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: retrieved kernel channels settings",
+                 ifindex,
+                 "get-channels");
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_ioctl_set_channels(int ifindex, const NMEthtoolChannelsState *channels)
+{
+    struct ethtool_channels eth_data;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(channels, FALSE);
+
+    eth_data = (struct ethtool_channels) {
+        .cmd            = ETHTOOL_SCHANNELS,
+        .rx_count       = channels->rx,
+        .tx_count       = channels->tx,
+        .other_count    = channels->other,
+        .combined_count = channels->combined,
+    };
+
+    if (_ethtool_call_once(ifindex, &eth_data, sizeof(eth_data)) < 0) {
+        nm_log_trace(LOGD_PLATFORM,
+                     "ethtool[%d]: %s: failure setting channels settings",
+                     ifindex,
+                     "set-channels");
+        return FALSE;
+    }
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: %s: set kernel channels settings",
+                 ifindex,
+                 "set-channels");
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_ioctl_get_fec_mode(int ifindex, uint32_t *fec_mode)
+{
+    int                     r;
+    struct ethtool_fecparam fec_param = {
+        .cmd = ETHTOOL_GFECPARAM,
+        .fec = 0,
+    };
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    if (_ethtool_call_once(ifindex, &fec_param, sizeof(fec_param)) >= 0) {
+        nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: get FEC options 0x%x", ifindex, fec_param.fec);
+        *fec_mode = fec_param.fec;
+        return TRUE;
+    } else {
+        r = -NM_ERRNO_NATIVE(errno);
+        nm_log_dbg(LOGD_PLATFORM,
+                   "ethtool[%d]: ETHTOOL_GFECPARAM failure get fec mode: (%s)",
+                   ifindex,
+                   nm_strerror_native(-r));
+        return FALSE;
+    }
+}
+
+gboolean
+nmp_ethtool_ioctl_set_fec_mode(int ifindex, uint32_t fec_mode)
+{
+    struct ethtool_fecparam fec_param = {
+        .cmd = ETHTOOL_SFECPARAM,
+        .fec = fec_mode,
+    };
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: setting FEC options 0x%x", ifindex, fec_mode);
+
+    return _ethtool_call_once(ifindex, &fec_param, sizeof(fec_param)) >= 0;
+}
+
+/*****************************************************************************/
+
+gboolean
+nmp_ethtool_ioctl_get_driver_info(int ifindex, NMPUtilsEthtoolDriverInfo *data)
+{
+    struct ethtool_drvinfo *drvinfo;
+
+    G_STATIC_ASSERT_EXPR(sizeof(*data) == sizeof(*drvinfo));
+    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, driver)
+                         == offsetof(struct ethtool_drvinfo, driver));
+    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, version)
+                         == offsetof(struct ethtool_drvinfo, version));
+    G_STATIC_ASSERT_EXPR(offsetof(NMPUtilsEthtoolDriverInfo, fw_version)
+                         == offsetof(struct ethtool_drvinfo, fw_version));
+    G_STATIC_ASSERT_EXPR(sizeof(data->driver) == sizeof(drvinfo->driver));
+    G_STATIC_ASSERT_EXPR(sizeof(data->version) == sizeof(drvinfo->version));
+    G_STATIC_ASSERT_EXPR(sizeof(data->fw_version) == sizeof(drvinfo->fw_version));
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail(data, FALSE);
+
+    drvinfo  = (struct ethtool_drvinfo *) data;
+    *drvinfo = (struct ethtool_drvinfo) {
+        .cmd = ETHTOOL_GDRVINFO,
+    };
+    return _ethtool_call_once(ifindex, drvinfo, sizeof(*drvinfo)) >= 0;
+}
+
+gboolean
+nmp_ethtool_ioctl_get_permanent_address(int ifindex, guint8 *buf, size_t *length)
+{
+    struct {
+        struct ethtool_perm_addr e;
+        guint8                   _extra_data[_NM_UTILS_HWADDR_LEN_MAX + 1];
+    } edata = {
+        .e.cmd  = ETHTOOL_GPERMADDR,
+        .e.size = _NM_UTILS_HWADDR_LEN_MAX,
+    };
+    const guint8 *pdata;
+
+    guint i;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    if (_ethtool_call_once(ifindex, &edata, sizeof(edata)) < 0)
+        return FALSE;
+
+    if (edata.e.size > _NM_UTILS_HWADDR_LEN_MAX)
+        return FALSE;
+    if (edata.e.size < 1)
+        return FALSE;
+
+    pdata = (const guint8 *) edata.e.data;
+
+    if (NM_IN_SET(pdata[0], 0, 0xFF)) {
+        /* Some drivers might return a permanent address of all zeros.
+         * Reject that (rh#1264024)
+         *
+         * Some drivers return a permanent address of all ones. Reject that too */
+        for (i = 1; i < edata.e.size; i++) {
+            if (pdata[0] != pdata[i])
+                goto not_all_0or1;
+        }
+        return FALSE;
+    }
+
+not_all_0or1:
+    memcpy(buf, pdata, edata.e.size);
+    *length = edata.e.size;
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_ioctl_supports_carrier_detect(int ifindex)
+{
+    struct ethtool_cmd edata = {.cmd = ETHTOOL_GLINK};
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    /* We ignore the result. If the ETHTOOL_GLINK call succeeded, then we
+     * assume the device supports carrier-detect, otherwise we assume it
+     * doesn't.
+     */
+    return _ethtool_call_once(ifindex, &edata, sizeof(edata)) >= 0;
+}
+
+gboolean
+nmp_ethtool_ioctl_supports_vlans(int ifindex)
+{
+    nm_auto_socket_handle SocketHandle shandle       = SOCKET_HANDLE_INIT(ifindex);
+    gs_free struct ethtool_gfeatures  *features_free = NULL;
+    struct ethtool_gfeatures          *features;
+    gsize                              features_len;
+    int                                idx, block, bit, size;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    idx = ethtool_get_stringset_index(&shandle, ETH_SS_FEATURES, "vlan-challenged");
+    if (idx < 0) {
+        nm_log_dbg(LOGD_PLATFORM,
+                   "ethtool[%d]: vlan-challenged ethtool feature does not exist?",
+                   ifindex);
+        return FALSE;
+    }
+
+    block = idx / 32;
+    bit   = idx % 32;
+    size  = block + 1;
+
+    features_len   = sizeof(*features) + (size * sizeof(struct ethtool_get_features_block));
+    features       = nm_malloc0_maybe_a(300, features_len, &features_free);
+    features->cmd  = ETHTOOL_GFEATURES;
+    features->size = size;
+
+    if (_ethtool_call_handle(&shandle, features, features_len) < 0)
+        return FALSE;
+
+    return !(features->features[block].active & (1 << bit));
+}
+
+int
+nmp_ethtool_ioctl_get_peer_ifindex(int ifindex)
+{
+    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
+    gsize                              stats_len;
+    gs_free struct ethtool_stats      *stats_free = NULL;
+    struct ethtool_stats              *stats;
+    int                                peer_ifindex_stat;
+
+    g_return_val_if_fail(ifindex > 0, 0);
+
+    peer_ifindex_stat = ethtool_get_stringset_index(&shandle, ETH_SS_STATS, "peer_ifindex");
+    if (peer_ifindex_stat < 0) {
+        nm_log_dbg(LOGD_PLATFORM, "ethtool[%d]: peer_ifindex stat does not exist?", ifindex);
+        return FALSE;
+    }
+
+    stats_len      = sizeof(*stats) + (peer_ifindex_stat + 1) * sizeof(guint64);
+    stats          = nm_malloc0_maybe_a(300, stats_len, &stats_free);
+    stats->cmd     = ETHTOOL_GSTATS;
+    stats->n_stats = peer_ifindex_stat + 1;
+    if (_ethtool_call_handle(&shandle, stats, stats_len) < 0)
+        return 0;
+
+    return stats->data[peer_ifindex_stat];
+}
+
+gboolean
+nmp_ethtool_ioctl_get_wake_on_lan(int ifindex)
+{
+    struct ethtool_wolinfo wol = {
+        .cmd = ETHTOOL_GWOL,
+    };
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    if (_ethtool_call_once(ifindex, &wol, sizeof(wol)) < 0)
+        return FALSE;
+
+    return wol.wolopts != 0;
+}
+
+gboolean
+nmp_ethtool_ioctl_set_wake_on_lan(int                      ifindex,
+                                  _NMSettingWiredWakeOnLan wol,
+                                  const char              *wol_password)
+{
+    struct ethtool_wolinfo wol_info = {
+        .cmd     = ETHTOOL_SWOL,
+        .wolopts = 0,
+    };
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    if (wol == _NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE)
+        return TRUE;
+
+    nm_log_dbg(LOGD_PLATFORM,
+               "ethtool[%d]: setting Wake-on-LAN options 0x%x, password '%s'",
+               ifindex,
+               (unsigned) wol,
+               wol_password);
+
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_PHY))
+        wol_info.wolopts |= WAKE_PHY;
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST))
+        wol_info.wolopts |= WAKE_UCAST;
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST))
+        wol_info.wolopts |= WAKE_MCAST;
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST))
+        wol_info.wolopts |= WAKE_BCAST;
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_ARP))
+        wol_info.wolopts |= WAKE_ARP;
+    if (NM_FLAGS_HAS(wol, _NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC))
+        wol_info.wolopts |= WAKE_MAGIC;
+
+    if (wol_password) {
+        if (!_nm_utils_hwaddr_aton_exact(wol_password, wol_info.sopass, ETH_ALEN)) {
+            nm_log_dbg(LOGD_PLATFORM,
+                       "ethtool[%d]: couldn't parse Wake-on-LAN password '%s'",
+                       ifindex,
+                       wol_password);
+            return FALSE;
+        }
+        wol_info.wolopts |= WAKE_MAGICSECURE;
+    }
+
+    return _ethtool_call_once(ifindex, &wol_info, sizeof(wol_info)) >= 0;
+}
+
+/*****************************************************************************/
+
+gboolean
+nmp_ethtool_ioctl_get_link_settings(int                       ifindex,
+                                    gboolean                 *out_autoneg,
+                                    guint32                  *out_speed,
+                                    NMPlatformLinkDuplexType *out_duplex)
+{
+    struct ethtool_cmd edata = {
+        .cmd = ETHTOOL_GSET,
+    };
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    if (_ethtool_call_once(ifindex, &edata, sizeof(edata)) < 0)
+        return FALSE;
+
+    NM_SET_OUT(out_autoneg, (edata.autoneg == AUTONEG_ENABLE));
+
+    if (out_speed) {
+        guint32 speed;
+
+        speed = ethtool_cmd_speed(&edata);
+        if (speed == G_MAXUINT16 || speed == G_MAXUINT32)
+            speed = 0;
+
+        *out_speed = speed;
+    }
+
+    if (out_duplex) {
+        switch (edata.duplex) {
+        case DUPLEX_HALF:
+            *out_duplex = NM_PLATFORM_LINK_DUPLEX_HALF;
+            break;
+        case DUPLEX_FULL:
+            *out_duplex = NM_PLATFORM_LINK_DUPLEX_FULL;
+            break;
+        default: /* DUPLEX_UNKNOWN */
+            *out_duplex = NM_PLATFORM_LINK_DUPLEX_UNKNOWN;
+            break;
+        }
+    }
+
+    return TRUE;
+}
+
+#define ADVERTISED_INVALID 0
+
+static guint32
+get_baset_mode(guint32 speed, NMPlatformLinkDuplexType duplex)
+{
+    if (duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
+        return ADVERTISED_INVALID;
+
+    if (duplex == NM_PLATFORM_LINK_DUPLEX_HALF) {
+        switch (speed) {
+        case 10:
+            return ADVERTISED_10baseT_Half;
+        case 100:
+            return ADVERTISED_100baseT_Half;
+        case 1000:
+            return ADVERTISED_1000baseT_Half;
+        default:
+            return ADVERTISED_INVALID;
+        }
+    } else {
+        switch (speed) {
+        case 10:
+            return ADVERTISED_10baseT_Full;
+        case 100:
+            return ADVERTISED_100baseT_Full;
+        case 1000:
+            return ADVERTISED_1000baseT_Full;
+        case 10000:
+            return ADVERTISED_10000baseT_Full;
+        default:
+            return ADVERTISED_INVALID;
+        }
+    }
+}
+
+static gboolean
+platform_link_duplex_type_to_native(NMPlatformLinkDuplexType duplex_type, guint8 *out_native)
+{
+    switch (duplex_type) {
+    case NM_PLATFORM_LINK_DUPLEX_HALF:
+        *out_native = DUPLEX_HALF;
+        return TRUE;
+    case NM_PLATFORM_LINK_DUPLEX_FULL:
+        *out_native = DUPLEX_FULL;
+        return TRUE;
+    case NM_PLATFORM_LINK_DUPLEX_UNKNOWN:
+        return FALSE;
+    default:
+        g_return_val_if_reached(FALSE);
+    }
+}
+
+static NMOptionBool
+set_link_settings_new(SocketHandle            *shandle,
+                      gboolean                 autoneg,
+                      guint32                  speed,
+                      NMPlatformLinkDuplexType duplex)
+{
+    struct ethtool_link_settings          edata0;
+    gs_free struct ethtool_link_settings *edata = NULL;
+    gsize                                 edata_size;
+    guint                                 nwords;
+    guint                                 i;
+
+    edata0 = (struct ethtool_link_settings) {
+        .cmd                    = ETHTOOL_GLINKSETTINGS,
+        .link_mode_masks_nwords = 0,
+    };
+
+    /* perform the handshake to find the size of masks */
+    if (_ethtool_call_handle(shandle, &edata0, sizeof(edata0)) < 0
+        || edata0.link_mode_masks_nwords >= 0) {
+        /* new API not supported */
+        return NM_OPTION_BOOL_DEFAULT;
+    }
+
+    nwords                        = -edata0.link_mode_masks_nwords;
+    edata_size                    = sizeof(*edata) + sizeof(guint32) * nwords * 3;
+    edata                         = g_malloc0(edata_size);
+    edata->cmd                    = ETHTOOL_GLINKSETTINGS;
+    edata->link_mode_masks_nwords = nwords;
+
+    /* retrieve first current settings */
+    if (_ethtool_call_handle(shandle, edata, edata_size) < 0)
+        return FALSE;
+
+    /* then change the needed ones */
+    edata->cmd = ETHTOOL_SLINKSETTINGS;
+
+    {
+        const guint32 *v_map_supported      = &edata->link_mode_masks[0];
+        guint32       *v_map_advertising    = &edata->link_mode_masks[nwords];
+        guint32       *v_map_lp_advertising = &edata->link_mode_masks[2 * nwords];
+
+        memcpy(v_map_advertising, v_map_supported, sizeof(guint32) * nwords);
+        (void) v_map_lp_advertising;
+
+        if (speed != 0) {
+            guint32 mode;
+
+            mode = get_baset_mode(speed, duplex);
+
+            if (mode == ADVERTISED_INVALID) {
+                if (!autoneg)
+                    goto set_autoneg;
+                nm_log_trace(LOGD_PLATFORM,
+                             "ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
+                             shandle->ifindex,
+                             speed,
+                             nm_platform_link_duplex_type_to_string(duplex));
+                return FALSE;
+            }
+
+            if (!(v_map_supported[0] & mode)) {
+                if (!autoneg)
+                    goto set_autoneg;
+                nm_log_trace(LOGD_PLATFORM,
+                             "ethtool[%d]: device does not support %uBASE-T %s duplex mode",
+                             shandle->ifindex,
+                             speed,
+                             nm_platform_link_duplex_type_to_string(duplex));
+                return FALSE;
+            }
+
+            for (i = 0; i < (guint) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes); i++)
+                v_map_advertising[i] &= ~_nmp_link_mode_all_advertised_modes[i];
+            v_map_advertising[0] |= mode;
+        }
+    }
+
+set_autoneg:
+    if (autoneg)
+        edata->autoneg = AUTONEG_ENABLE;
+    else {
+        edata->autoneg = AUTONEG_DISABLE;
+
+        if (speed)
+            edata->speed = speed;
+
+        platform_link_duplex_type_to_native(duplex, &edata->duplex);
+    }
+
+    return _ethtool_call_handle(shandle, edata, edata_size) >= 0;
+}
+
+gboolean
+nmp_ethtool_ioctl_set_link_settings(int                      ifindex,
+                                    gboolean                 autoneg,
+                                    guint32                  speed,
+                                    NMPlatformLinkDuplexType duplex)
+{
+    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
+    struct ethtool_cmd                 edata   = {
+                          .cmd = ETHTOOL_GSET,
+    };
+    NMOptionBool ret;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+    g_return_val_if_fail((speed && duplex != NM_PLATFORM_LINK_DUPLEX_UNKNOWN)
+                             || (!speed && duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN),
+                         FALSE);
+
+    nm_log_trace(LOGD_PLATFORM,
+                 "ethtool[%d]: set link: autoneg=%d, speed=%d, duplex=%s",
+                 ifindex,
+                 autoneg,
+                 speed,
+                 nm_platform_link_duplex_type_to_string(duplex));
+
+    ret = set_link_settings_new(&shandle, autoneg, speed, duplex);
+    if (ret != NM_OPTION_BOOL_DEFAULT)
+        return ret;
+
+    /* new ETHTOOL_GLINKSETTINGS API not supported, fall back to GSET */
+
+    /* retrieve first current settings */
+    if (_ethtool_call_handle(&shandle, &edata, sizeof(edata)) < 0)
+        return FALSE;
+
+    /* then change the needed ones */
+    edata.cmd = ETHTOOL_SSET;
+
+    edata.advertising = edata.supported;
+    if (speed != 0) {
+        guint32 mode;
+
+        mode = get_baset_mode(speed, duplex);
+
+        if (mode == ADVERTISED_INVALID) {
+            if (!autoneg)
+                goto set_autoneg;
+            nm_log_trace(LOGD_PLATFORM,
+                         "ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
+                         ifindex,
+                         speed,
+                         nm_platform_link_duplex_type_to_string(duplex));
+            return FALSE;
+        }
+        if (!(edata.supported & mode)) {
+            if (!autoneg)
+                goto set_autoneg;
+            nm_log_trace(LOGD_PLATFORM,
+                         "ethtool[%d]: device does not support %uBASE-T %s duplex mode",
+                         ifindex,
+                         speed,
+                         nm_platform_link_duplex_type_to_string(duplex));
+            return FALSE;
+        }
+        edata.advertising &= ~_nmp_link_mode_all_advertised_modes[0];
+        edata.advertising |= mode;
+    }
+
+set_autoneg:
+    if (autoneg)
+        edata.autoneg = AUTONEG_ENABLE;
+    else {
+        edata.autoneg = AUTONEG_DISABLE;
+
+        if (speed)
+            ethtool_cmd_speed_set(&edata, speed);
+
+        platform_link_duplex_type_to_native(duplex, &edata.duplex);
+    }
+
+    return _ethtool_call_handle(&shandle, &edata, sizeof(edata)) >= 0;
+}
+
+gboolean
+nmp_mii_ioctl_supports_carrier_detect(int ifindex)
+{
+    nm_auto_socket_handle SocketHandle shandle = SOCKET_HANDLE_INIT(ifindex);
+    int                                r;
+    struct ifreq                       ifr;
+    struct mii_ioctl_data             *mii;
+
+    g_return_val_if_fail(ifindex > 0, FALSE);
+
+    r = _ioctl_call("mii",
+                    "SIOCGMIIPHY",
+                    SIOCGMIIPHY,
+                    shandle.ifindex,
+                    &shandle.fd,
+                    shandle.ifname,
+                    IOCTL_CALL_DATA_TYPE_NONE,
+                    NULL,
+                    0,
+                    &ifr);
+    if (r < 0)
+        return FALSE;
+
+    /* If we can read the BMSR register, we assume that the card supports MII link detection */
+    mii          = (struct mii_ioctl_data *) &ifr.ifr_ifru;
+    mii->reg_num = MII_BMSR;
+
+    r = _ioctl_call("mii",
+                    "SIOCGMIIREG",
+                    SIOCGMIIREG,
+                    shandle.ifindex,
+                    &shandle.fd,
+                    shandle.ifname,
+                    IOCTL_CALL_DATA_TYPE_IFRU,
+                    mii,
+                    sizeof(*mii),
+                    &ifr);
+    if (r < 0)
+        return FALSE;
+
+    mii = (struct mii_ioctl_data *) &ifr.ifr_ifru;
+    nm_log_trace(LOGD_PLATFORM,
+                 "mii[%d,%s]: carrier-detect yes: SIOCGMIIREG result 0x%X",
+                 ifindex,
+                 shandle.ifname,
+                 mii->val_out);
+    return TRUE;
+}
diff --git a/src/libnm-platform/nmp-ethtool-ioctl.h b/src/libnm-platform/nmp-ethtool-ioctl.h
new file mode 100644
index 00000000..cb93e9cf
--- /dev/null
+++ b/src/libnm-platform/nmp-ethtool-ioctl.h
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#ifndef __NMP_ETHTOOL_IOCTL_H__
+#define __NMP_ETHTOOL_IOCTL_H__
+
+#include "libnm-platform/nmp-base.h"
+#include "libnm-platform/nm-netlink.h"
+
+gboolean nmp_ethtool_ioctl_supports_carrier_detect(int ifindex);
+
+gboolean nmp_ethtool_ioctl_supports_vlans(int ifindex);
+
+int nmp_ethtool_ioctl_get_peer_ifindex(int ifindex);
+
+gboolean nmp_ethtool_ioctl_get_wake_on_lan(int ifindex);
+
+gboolean nmp_ethtool_ioctl_set_wake_on_lan(int                      ifindex,
+                                           _NMSettingWiredWakeOnLan wol,
+                                           const char              *wol_password);
+
+gboolean nmp_ethtool_ioctl_get_link_settings(int                       ifindex,
+                                             gboolean                 *out_autoneg,
+                                             guint32                  *out_speed,
+                                             NMPlatformLinkDuplexType *out_duplex);
+gboolean nmp_ethtool_ioctl_set_link_settings(int                      ifindex,
+                                             gboolean                 autoneg,
+                                             guint32                  speed,
+                                             NMPlatformLinkDuplexType duplex);
+
+gboolean nmp_ethtool_ioctl_get_permanent_address(int ifindex, guint8 *buf, size_t *length);
+
+gboolean nmp_ethtool_ioctl_get_driver_info(int ifindex, NMPUtilsEthtoolDriverInfo *data);
+
+NMEthtoolFeatureStates *nmp_ethtool_ioctl_get_features(int ifindex);
+
+gboolean nmp_ethtool_ioctl_set_features(
+    int                           ifindex,
+    const NMEthtoolFeatureStates *features,
+    const NMOptionBool *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */,
+    gboolean            do_set /* or reset */);
+
+gboolean nmp_ethtool_ioctl_get_coalesce(int ifindex, NMEthtoolCoalesceState *coalesce);
+
+gboolean nmp_ethtool_ioctl_set_coalesce(int ifindex, const NMEthtoolCoalesceState *coalesce);
+
+gboolean nmp_ethtool_ioctl_get_channels(int ifindex, NMEthtoolChannelsState *channels);
+
+gboolean nmp_ethtool_ioctl_set_channels(int ifindex, const NMEthtoolChannelsState *channels);
+
+gboolean nmp_ethtool_ioctl_get_fec_mode(int ifindex, uint32_t *fec_mode);
+
+gboolean nmp_ethtool_ioctl_set_fec_mode(int ifindex, uint32_t fec_mode);
+
+gboolean nmp_mii_ioctl_supports_carrier_detect(int ifindex);
+
+#endif /* __NMP_ETHTOOL_IOCTL_H__ */
diff --git a/src/libnm-platform/nmp-ethtool.c b/src/libnm-platform/nmp-ethtool.c
new file mode 100644
index 00000000..ed028f6a
--- /dev/null
+++ b/src/libnm-platform/nmp-ethtool.c
@@ -0,0 +1,559 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "libnm-glib-aux/nm-default-glib-i18n-lib.h"
+
+#include "nmp-ethtool.h"
+
+#include "libnm-platform/nm-platform.h"
+#include "libnm-log-core/nm-logging.h"
+
+enum {
+    ETHTOOL_A_HEADER_UNSPEC,
+    ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */
+    ETHTOOL_A_HEADER_DEV_NAME,  /* string */
+    ETHTOOL_A_HEADER_FLAGS,     /* u32 - ETHTOOL_FLAG_* */
+    ETHTOOL_A_HEADER_PHY_INDEX, /* u32 */
+
+    /* add new constants above here */
+    __ETHTOOL_A_HEADER_CNT,
+    ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
+};
+
+enum {
+    ETHTOOL_MSG_USER_NONE  = 0,
+    ETHTOOL_MSG_STRSET_GET = 1,
+    ETHTOOL_MSG_LINKINFO_GET,
+    ETHTOOL_MSG_LINKINFO_SET,
+    ETHTOOL_MSG_LINKMODES_GET,
+    ETHTOOL_MSG_LINKMODES_SET,
+    ETHTOOL_MSG_LINKSTATE_GET,
+    ETHTOOL_MSG_DEBUG_GET,
+    ETHTOOL_MSG_DEBUG_SET,
+    ETHTOOL_MSG_WOL_GET,
+    ETHTOOL_MSG_WOL_SET,
+    ETHTOOL_MSG_FEATURES_GET,
+    ETHTOOL_MSG_FEATURES_SET,
+    ETHTOOL_MSG_PRIVFLAGS_GET,
+    ETHTOOL_MSG_PRIVFLAGS_SET,
+    ETHTOOL_MSG_RINGS_GET,
+    ETHTOOL_MSG_RINGS_SET,
+    ETHTOOL_MSG_CHANNELS_GET,
+    ETHTOOL_MSG_CHANNELS_SET,
+    ETHTOOL_MSG_COALESCE_GET,
+    ETHTOOL_MSG_COALESCE_SET,
+    ETHTOOL_MSG_PAUSE_GET,
+    ETHTOOL_MSG_PAUSE_SET,
+    ETHTOOL_MSG_EEE_GET,
+    ETHTOOL_MSG_EEE_SET,
+    ETHTOOL_MSG_TSINFO_GET,
+    ETHTOOL_MSG_CABLE_TEST_ACT,
+    ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
+    ETHTOOL_MSG_TUNNEL_INFO_GET,
+    ETHTOOL_MSG_FEC_GET,
+    ETHTOOL_MSG_FEC_SET,
+
+    /* add new constants above here */
+    __ETHTOOL_MSG_USER_CNT,
+    ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
+};
+
+#define ETHTOOL_GENL_VERSION 1
+
+#define _NMLOG_DOMAIN      LOGD_PLATFORM
+#define _NMLOG_PREFIX_NAME "ethtool"
+#define _NMLOG(_level, ...)                                   \
+    G_STMT_START                                              \
+    {                                                         \
+        int _ifindex = ifindex;                               \
+                                                              \
+        nm_log((_level),                                      \
+               (_NMLOG_DOMAIN),                               \
+               NULL,                                          \
+               NULL,                                          \
+               "%s[%d]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+               _NMLOG_PREFIX_NAME,                            \
+               _ifindex _NM_UTILS_MACRO_REST(__VA_ARGS__));   \
+    }                                                         \
+    G_STMT_END
+
+#define CB_RESULT_PENDING 0
+#define CB_RESULT_OK      1
+
+static int
+ack_cb_handler(const struct nl_msg *msg, void *data)
+{
+    int *result = data;
+    *result     = CB_RESULT_OK;
+    return NL_STOP;
+}
+
+static int
+finish_cb_handler(const struct nl_msg *msg, void *data)
+{
+    int *result = data;
+    *result     = CB_RESULT_OK;
+    return NL_SKIP;
+}
+
+static int
+err_cb_handler(const struct sockaddr_nl *nla, const struct nlmsgerr *err, void *data)
+{
+    void      **args       = data;
+    int        *result     = args[0];
+    char      **err_msg    = args[1];
+    const char *extack_msg = NULL;
+
+    *result = err->error;
+    nlmsg_parse_error(nlmsg_undata(err), &extack_msg);
+
+    if (err_msg)
+        *err_msg = g_strdup(extack_msg ?: nm_strerror(err->error));
+
+    return NL_SKIP;
+}
+
+static int
+ethtool_send_and_recv(struct nl_sock *sock,
+                      int             ifindex,
+                      struct nl_msg  *msg,
+                      int (*valid_handler)(const struct nl_msg *, void *),
+                      void       *valid_data,
+                      char      **err_msg,
+                      const char *log_prefix)
+{
+    int                nle;
+    int                cb_result = CB_RESULT_PENDING;
+    void              *err_arg[] = {&cb_result, err_msg};
+    const struct nl_cb cb        = {
+               .err_cb     = err_cb_handler,
+               .err_arg    = err_arg,
+               .finish_cb  = finish_cb_handler,
+               .finish_arg = &cb_result,
+               .ack_cb     = ack_cb_handler,
+               .ack_arg    = &cb_result,
+               .valid_cb   = valid_handler,
+               .valid_arg  = valid_data,
+    };
+
+    g_return_val_if_fail(msg, -ENOMEM);
+
+    if (err_msg)
+        *err_msg = NULL;
+
+    nle = nl_send_auto(sock, msg);
+    if (nle < 0)
+        goto out;
+
+    while (cb_result == CB_RESULT_PENDING) {
+        nle = nl_recvmsgs(sock, &cb);
+        if (nle < 0 && nle != -EAGAIN) {
+            break;
+        }
+    }
+
+out:
+    if (nle < 0 && err_msg && *err_msg == NULL)
+        *err_msg = strdup(nm_strerror(nle));
+
+    if (nle >= 0 && cb_result < 0)
+        nle = cb_result;
+
+    if (nle < 0) {
+        _LOGT("%s: netlink error: %d (%s)", log_prefix, nle, err_msg && *err_msg ? *err_msg : "");
+    }
+
+    return nle;
+}
+
+static struct nl_msg *
+ethtool_create_msg(guint16     family_id,
+                   int         ifindex,
+                   guint8      cmd,
+                   int         header_attr,
+                   const char *log_prefix)
+{
+    nm_auto_nlmsg struct nl_msg *msg = NULL;
+    struct nlattr               *nest_header;
+
+    if (family_id == 0) {
+        _LOGT("%s: ethtool genl family not found", log_prefix);
+        return NULL;
+    }
+
+    msg = nlmsg_alloc(nlmsg_total_size(GENL_HDRLEN) + 200);
+
+    if (!genlmsg_put(msg,
+                     NL_AUTO_PORT,
+                     NL_AUTO_SEQ,
+                     family_id,
+                     0,
+                     NLM_F_REQUEST,
+                     cmd,
+                     ETHTOOL_GENL_VERSION))
+        goto nla_put_failure;
+
+    nest_header = nla_nest_start(msg, header_attr);
+    NLA_PUT_U32(msg, ETHTOOL_A_HEADER_DEV_INDEX, (guint32) ifindex);
+    NLA_NEST_END(msg, nest_header);
+    return g_steal_pointer(&msg);
+
+nla_put_failure:
+    g_return_val_if_reached(NULL);
+}
+
+/*****************************************************************************/
+/* PAUSE                                                                     */
+/*****************************************************************************/
+
+enum {
+    ETHTOOL_A_PAUSE_UNSPEC,
+    ETHTOOL_A_PAUSE_HEADER,
+    ETHTOOL_A_PAUSE_AUTONEG,
+    ETHTOOL_A_PAUSE_RX,
+    ETHTOOL_A_PAUSE_TX,
+
+    __ETHTOOL_A_PAUSE_CNT,
+    ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
+};
+
+static int
+ethtool_parse_pause(const struct nl_msg *msg, void *data)
+{
+    NMEthtoolPauseState           *pause    = data;
+    static const struct nla_policy policy[] = {
+        [ETHTOOL_A_PAUSE_AUTONEG] = {.type = NLA_U8},
+        [ETHTOOL_A_PAUSE_RX]      = {.type = NLA_U8},
+        [ETHTOOL_A_PAUSE_TX]      = {.type = NLA_U8},
+    };
+    struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
+    struct nlattr     *tb[G_N_ELEMENTS(policy)];
+
+    *pause = (NMEthtoolPauseState) {};
+
+    if (nla_parse_arr(tb, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), policy) < 0)
+        return NL_SKIP;
+
+    if (tb[ETHTOOL_A_PAUSE_AUTONEG])
+        pause->autoneg = !!nla_get_u8(tb[ETHTOOL_A_PAUSE_AUTONEG]);
+    if (tb[ETHTOOL_A_PAUSE_RX])
+        pause->rx = !!nla_get_u8(tb[ETHTOOL_A_PAUSE_RX]);
+    if (tb[ETHTOOL_A_PAUSE_TX])
+        pause->tx = !!nla_get_u8(tb[ETHTOOL_A_PAUSE_TX]);
+
+    return NL_OK;
+}
+
+gboolean
+nmp_ethtool_get_pause(struct nl_sock      *genl_sock,
+                      guint16              family_id,
+                      int                  ifindex,
+                      NMEthtoolPauseState *pause)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(pause, FALSE);
+
+    _LOGT("get-pause: start");
+    *pause = (NMEthtoolPauseState) {};
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_PAUSE_GET,
+                             ETHTOOL_A_PAUSE_HEADER,
+                             "get-pause");
+    if (!msg)
+        return FALSE;
+
+    r = ethtool_send_and_recv(genl_sock,
+                              ifindex,
+                              msg,
+                              ethtool_parse_pause,
+                              pause,
+                              &err_msg,
+                              "get-pause");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("get-pause: autoneg %d rx %d tx %d", pause->autoneg, pause->rx, pause->tx);
+
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_set_pause(struct nl_sock            *genl_sock,
+                      guint16                    family_id,
+                      int                        ifindex,
+                      const NMEthtoolPauseState *pause)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(pause, FALSE);
+
+    _LOGT("set-pause: autoneg %d rx %d tx %d", pause->autoneg, pause->rx, pause->tx);
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_PAUSE_SET,
+                             ETHTOOL_A_PAUSE_HEADER,
+                             "set-pause");
+    if (!msg)
+        return FALSE;
+
+    NLA_PUT_U8(msg, ETHTOOL_A_PAUSE_AUTONEG, pause->autoneg);
+    NLA_PUT_U8(msg, ETHTOOL_A_PAUSE_RX, pause->rx);
+    NLA_PUT_U8(msg, ETHTOOL_A_PAUSE_TX, pause->tx);
+
+    r = ethtool_send_and_recv(genl_sock, ifindex, msg, NULL, NULL, &err_msg, "set-pause");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("set-pause: succeeded");
+
+    return TRUE;
+nla_put_failure:
+    g_return_val_if_reached(FALSE);
+}
+
+/*****************************************************************************/
+/* EEE                                                                       */
+/*****************************************************************************/
+
+enum {
+    ETHTOOL_A_EEE_UNSPEC,
+    ETHTOOL_A_EEE_HEADER,     /* nest - _A_HEADER_* */
+    ETHTOOL_A_EEE_MODES_OURS, /* bitset */
+    ETHTOOL_A_EEE_MODES_PEER, /* bitset */
+    ETHTOOL_A_EEE_ACTIVE,     /* u8 */
+    ETHTOOL_A_EEE_ENABLED,    /* u8 */
+
+    /* add new constants above here */
+    __ETHTOOL_A_EEE_CNT,
+    ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
+};
+
+static int
+ethtool_parse_eee(const struct nl_msg *msg, void *data)
+{
+    NMEthtoolEEEState             *eee      = data;
+    static const struct nla_policy policy[] = {
+        [ETHTOOL_A_EEE_ENABLED] = {.type = NLA_U8},
+    };
+    struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
+    struct nlattr     *tb[G_N_ELEMENTS(policy)];
+
+    *eee = (NMEthtoolEEEState) {};
+
+    if (nla_parse_arr(tb, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), policy) < 0)
+        return NL_SKIP;
+
+    if (tb[ETHTOOL_A_EEE_ENABLED])
+        eee->enabled = !!nla_get_u8(tb[ETHTOOL_A_EEE_ENABLED]);
+
+    return NL_OK;
+}
+
+gboolean
+nmp_ethtool_get_eee(struct nl_sock    *genl_sock,
+                    guint16            family_id,
+                    int                ifindex,
+                    NMEthtoolEEEState *eee)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(eee, FALSE);
+
+    _LOGT("get-eee: start");
+    *eee = (NMEthtoolEEEState) {};
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_EEE_GET,
+                             ETHTOOL_A_EEE_HEADER,
+                             "get-eee");
+    if (!msg)
+        return FALSE;
+
+    r = ethtool_send_and_recv(genl_sock, ifindex, msg, ethtool_parse_eee, eee, &err_msg, "get-eee");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("get-eee: enabled %d", eee->enabled);
+
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_set_eee(struct nl_sock          *genl_sock,
+                    guint16                  family_id,
+                    int                      ifindex,
+                    const NMEthtoolEEEState *eee)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(eee, FALSE);
+
+    _LOGT("set-eee: enabled %d", eee->enabled);
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_EEE_SET,
+                             ETHTOOL_A_EEE_HEADER,
+                             "set-eee");
+    if (!msg)
+        return FALSE;
+
+    NLA_PUT_U8(msg, ETHTOOL_A_EEE_ENABLED, eee->enabled);
+
+    r = ethtool_send_and_recv(genl_sock, ifindex, msg, NULL, NULL, &err_msg, "set-eee");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("set-eee: succeeded");
+
+    return TRUE;
+nla_put_failure:
+    g_return_val_if_reached(FALSE);
+}
+
+/*****************************************************************************/
+/* RINGS                                                                     */
+/*****************************************************************************/
+
+enum {
+    ETHTOOL_A_RINGS_UNSPEC,
+    ETHTOOL_A_RINGS_HEADER,       /* nest - _A_HEADER_* */
+    ETHTOOL_A_RINGS_RX_MAX,       /* u32 */
+    ETHTOOL_A_RINGS_RX_MINI_MAX,  /* u32 */
+    ETHTOOL_A_RINGS_RX_JUMBO_MAX, /* u32 */
+    ETHTOOL_A_RINGS_TX_MAX,       /* u32 */
+    ETHTOOL_A_RINGS_RX,           /* u32 */
+    ETHTOOL_A_RINGS_RX_MINI,      /* u32 */
+    ETHTOOL_A_RINGS_RX_JUMBO,     /* u32 */
+    ETHTOOL_A_RINGS_TX,           /* u32 */
+
+    /* add new constants above here */
+    __ETHTOOL_A_RINGS_CNT,
+    ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
+};
+
+static int
+ethtool_parse_ring(const struct nl_msg *msg, void *data)
+{
+    NMEthtoolRingState            *ring     = data;
+    static const struct nla_policy policy[] = {
+        [ETHTOOL_A_RINGS_RX]       = {.type = NLA_U32},
+        [ETHTOOL_A_RINGS_RX_MINI]  = {.type = NLA_U32},
+        [ETHTOOL_A_RINGS_RX_JUMBO] = {.type = NLA_U32},
+        [ETHTOOL_A_RINGS_TX]       = {.type = NLA_U32},
+    };
+    struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
+    struct nlattr     *tb[G_N_ELEMENTS(policy)];
+
+    *ring = (NMEthtoolRingState) {};
+
+    if (nla_parse_arr(tb, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), policy) < 0)
+        return NL_SKIP;
+
+    if (tb[ETHTOOL_A_RINGS_RX])
+        ring->rx_pending = nla_get_u32(tb[ETHTOOL_A_RINGS_RX]);
+    if (tb[ETHTOOL_A_RINGS_RX_MINI])
+        ring->rx_mini_pending = nla_get_u32(tb[ETHTOOL_A_RINGS_RX_MINI]);
+    if (tb[ETHTOOL_A_RINGS_RX_JUMBO])
+        ring->rx_jumbo_pending = nla_get_u32(tb[ETHTOOL_A_RINGS_RX_JUMBO]);
+    if (tb[ETHTOOL_A_RINGS_TX])
+        ring->tx_pending = nla_get_u32(tb[ETHTOOL_A_RINGS_TX]);
+
+    return NL_OK;
+}
+
+gboolean
+nmp_ethtool_get_ring(struct nl_sock     *genl_sock,
+                     guint16             family_id,
+                     int                 ifindex,
+                     NMEthtoolRingState *ring)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(ring, FALSE);
+
+    _LOGT("get-ring: start");
+    *ring = (NMEthtoolRingState) {};
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_RINGS_GET,
+                             ETHTOOL_A_RINGS_HEADER,
+                             "get-ring");
+    if (!msg)
+        return FALSE;
+
+    r = ethtool_send_and_recv(genl_sock,
+                              ifindex,
+                              msg,
+                              ethtool_parse_ring,
+                              ring,
+                              &err_msg,
+                              "get-ring");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("get-ring: rx %u rx-mini %u rx-jumbo %u tx %u",
+          ring->rx_pending,
+          ring->rx_mini_pending,
+          ring->rx_jumbo_pending,
+          ring->tx_pending);
+
+    return TRUE;
+}
+
+gboolean
+nmp_ethtool_set_ring(struct nl_sock           *genl_sock,
+                     guint16                   family_id,
+                     int                       ifindex,
+                     const NMEthtoolRingState *ring)
+{
+    nm_auto_nlmsg struct nl_msg *msg     = NULL;
+    gs_free char                *err_msg = NULL;
+    int                          r;
+
+    g_return_val_if_fail(ring, FALSE);
+
+    _LOGT("set-ring: rx %u rx-mini %u rx-jumbo %u tx %u",
+          ring->rx_pending,
+          ring->rx_mini_pending,
+          ring->rx_jumbo_pending,
+          ring->tx_pending);
+
+    msg = ethtool_create_msg(family_id,
+                             ifindex,
+                             ETHTOOL_MSG_RINGS_SET,
+                             ETHTOOL_A_RINGS_HEADER,
+                             "set-ring");
+    if (!msg)
+        return FALSE;
+
+    NLA_PUT_U32(msg, ETHTOOL_A_RINGS_RX, ring->rx_pending);
+    NLA_PUT_U32(msg, ETHTOOL_A_RINGS_RX_MINI, ring->rx_mini_pending);
+    NLA_PUT_U32(msg, ETHTOOL_A_RINGS_RX_JUMBO, ring->rx_jumbo_pending);
+    NLA_PUT_U32(msg, ETHTOOL_A_RINGS_TX, ring->tx_pending);
+
+    r = ethtool_send_and_recv(genl_sock, ifindex, msg, NULL, NULL, &err_msg, "set-ring");
+    if (r < 0)
+        return FALSE;
+
+    _LOGT("set-ring: succeeded");
+
+    return TRUE;
+nla_put_failure:
+    g_return_val_if_reached(FALSE);
+}
diff --git a/src/libnm-platform/nmp-ethtool.h b/src/libnm-platform/nmp-ethtool.h
new file mode 100644
index 00000000..88bb95b6
--- /dev/null
+++ b/src/libnm-platform/nmp-ethtool.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#ifndef __NMP_ETHTOOL_H__
+#define __NMP_ETHTOOL_H__
+
+#include "libnm-platform/nmp-base.h"
+#include "libnm-platform/nm-netlink.h"
+
+gboolean nmp_ethtool_get_pause(struct nl_sock      *genl_sock,
+                               guint16              family_id,
+                               int                  ifindex,
+                               NMEthtoolPauseState *pause);
+gboolean nmp_ethtool_set_pause(struct nl_sock            *genl_sock,
+                               guint16                    family_id,
+                               int                        ifindex,
+                               const NMEthtoolPauseState *pause);
+
+gboolean nmp_ethtool_get_eee(struct nl_sock    *genl_sock,
+                             guint16            family_id,
+                             int                ifindex,
+                             NMEthtoolEEEState *eee);
+gboolean nmp_ethtool_set_eee(struct nl_sock          *genl_sock,
+                             guint16                  family_id,
+                             int                      ifindex,
+                             const NMEthtoolEEEState *eee);
+
+gboolean nmp_ethtool_get_ring(struct nl_sock     *genl_sock,
+                              guint16             family_id,
+                              int                 ifindex,
+                              NMEthtoolRingState *ring);
+gboolean nmp_ethtool_set_ring(struct nl_sock           *genl_sock,
+                              guint16                   family_id,
+                              int                       ifindex,
+                              const NMEthtoolRingState *ring);
+
+#endif /* __NMP_ETHTOOL_H__ */
diff --git a/src/libnm-platform/nmp-object.c b/src/libnm-platform/nmp-object.c
index f41cc95a..e11bfb3f 100644
--- a/src/libnm-platform/nmp-object.c
+++ b/src/libnm-platform/nmp-object.c
@@ -16,6 +16,7 @@
 #include "libnm-platform/nm-platform-utils.h"
 #include "libnm-platform/wifi/nm-wifi-utils.h"
 #include "libnm-platform/wpan/nm-wpan-utils.h"
+#include "libnm-platform/nmp-ethtool-ioctl.h"
 
 /*****************************************************************************/
 
@@ -647,7 +648,7 @@ _link_get_driver(struct udev_device *udevice, const char *kind, int ifindex)
     if (ifindex > 0) {
         NMPUtilsEthtoolDriverInfo driver_info;
 
-        if (nmp_utils_ethtool_get_driver_info(ifindex, &driver_info)) {
+        if (nmp_ethtool_ioctl_get_driver_info(ifindex, &driver_info)) {
             if (driver_info.driver[0])
                 return g_intern_string(driver_info.driver);
         }
@@ -2006,8 +2007,8 @@ _vt_dedup_obj_clone(const NMDedupMultiObj *obj)
         .obj_destroy = _vt_dedup_obj_destroy,                                              \
         .obj_full_hash_update =                                                            \
             (void (*)(const NMDedupMultiObj *obj, NMHashState *h)) nmp_object_hash_update, \
-        .obj_full_equal = (gboolean(*)(const NMDedupMultiObj *obj_a,                       \
-                                       const NMDedupMultiObj *obj_b)) nmp_object_equal,    \
+        .obj_full_equal = (gboolean (*)(const NMDedupMultiObj *obj_a,                      \
+                                        const NMDedupMultiObj *obj_b)) nmp_object_equal,   \
     }
 
 /*****************************************************************************/
diff --git a/src/libnm-std-aux/nm-std-aux.h b/src/libnm-std-aux/nm-std-aux.h
index 7f08de5d..840aaade 100644
--- a/src/libnm-std-aux/nm-std-aux.h
+++ b/src/libnm-std-aux/nm-std-aux.h
@@ -975,7 +975,7 @@ nm_memcpy(void *restrict dest, const void *restrict src, size_t n)
  * side-effects. */
 #define NM_IN_SET_SE(x, ...) _NM_IN_SET(NM_UNIQ, |, typeof(x), x, __VA_ARGS__)
 
-/* the *_TYPED forms allow to explicitly select the type of "x". This is useful
+/* the *_TYPED forms allow one to explicitly select the type of "x". This is useful
  * if "x" doesn't support typeof (bitfields) or you want to gracefully convert
  * a type using automatic type conversion rules (but not forcing the conversion
  * with a cast). */
diff --git a/src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-lease.c b/src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-lease.c
index 9569af58..ecbc7633 100644
--- a/src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-lease.c
+++ b/src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-lease.c
@@ -114,7 +114,7 @@ static void dhcp6_lease_set_lifetime(sd_dhcp6_lease *lease) {
         }
 
 DEFINE_GET_TIME_FUNCTIONS(t1, lifetime_t1);
-DEFINE_GET_TIME_FUNCTIONS(t2, lifetime_t1);
+DEFINE_GET_TIME_FUNCTIONS(t2, lifetime_t2);
 DEFINE_GET_TIME_FUNCTIONS(valid_lifetime, lifetime_valid);
 
 static void dhcp6_lease_set_server_address(sd_dhcp6_lease *lease, const struct in6_addr *server_address) {
diff --git a/src/libnmc-setting/nm-meta-setting-base-impl.c b/src/libnmc-setting/nm-meta-setting-base-impl.c
index b9dcf34f..52af9ad2 100644
--- a/src/libnmc-setting/nm-meta-setting-base-impl.c
+++ b/src/libnmc-setting/nm-meta-setting-base-impl.c
@@ -51,6 +51,7 @@
 #include "nm-setting-ovs-port.h"
 #include "nm-setting-ppp.h"
 #include "nm-setting-pppoe.h"
+#include "nm-setting-prefix-delegation.h"
 #include "nm-setting-proxy.h"
 #include "nm-setting-serial.h"
 #include "nm-setting-tc-config.h"
@@ -484,6 +485,13 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
             .setting_name      = NM_SETTING_PPP_SETTING_NAME,
             .get_setting_gtype = nm_setting_ppp_get_type,
         },
+    [NM_META_SETTING_TYPE_PREFIX_DELEGATION] =
+        {
+            .meta_type         = NM_META_SETTING_TYPE_PREFIX_DELEGATION,
+            .setting_priority  = NM_SETTING_PRIORITY_IP,
+            .setting_name      = NM_SETTING_PREFIX_DELEGATION_SETTING_NAME,
+            .get_setting_gtype = nm_setting_prefix_delegation_get_type,
+        },
     [NM_META_SETTING_TYPE_PROXY] =
         {
             .meta_type         = NM_META_SETTING_TYPE_PROXY,
@@ -698,6 +706,7 @@ const NMMetaSettingType nm_meta_setting_types_by_priority[] = {
     NM_META_SETTING_TYPE_HOSTNAME,
     NM_META_SETTING_TYPE_IP4_CONFIG,
     NM_META_SETTING_TYPE_IP6_CONFIG,
+    NM_META_SETTING_TYPE_PREFIX_DELEGATION,
     NM_META_SETTING_TYPE_PROXY,
     NM_META_SETTING_TYPE_TC_CONFIG,
 
diff --git a/src/libnmc-setting/nm-meta-setting-base-impl.h b/src/libnmc-setting/nm-meta-setting-base-impl.h
index c03285eb..d1535e5e 100644
--- a/src/libnmc-setting/nm-meta-setting-base-impl.h
+++ b/src/libnmc-setting/nm-meta-setting-base-impl.h
@@ -143,6 +143,7 @@ typedef enum _nm_packed {
     NM_META_SETTING_TYPE_OVS_PORT,
     NM_META_SETTING_TYPE_PPP,
     NM_META_SETTING_TYPE_PPPOE,
+    NM_META_SETTING_TYPE_PREFIX_DELEGATION,
     NM_META_SETTING_TYPE_PROXY,
     NM_META_SETTING_TYPE_SERIAL,
     NM_META_SETTING_TYPE_SRIOV,
diff --git a/src/libnmc-setting/nm-meta-setting-desc.c b/src/libnmc-setting/nm-meta-setting-desc.c
index fcb2d041..aa290b9f 100644
--- a/src/libnmc-setting/nm-meta-setting-desc.c
+++ b/src/libnmc-setting/nm-meta-setting-desc.c
@@ -11,7 +11,6 @@
 #include <arpa/inet.h>
 #include <linux/if_ether.h>
 #include <linux/if_infiniband.h>
-#include <linux/ethtool.h>
 
 #include "libnm-core-aux-intern/nm-common-macros.h"
 #include "libnm-glib-aux/nm-enum-utils.h"
@@ -1005,8 +1004,16 @@ _get_fcn_gobject_int(ARGS_GET_FCN)
     case 16:
         if (is_uint64)
             return_str = g_strdup_printf("0x%" G_GINT64_MODIFIER "x", v.u64);
-        else
-            return_str = g_strdup_printf("0x%" G_GINT64_MODIFIER "x", (guint64) v.i64);
+        else {
+            if (property_info->property_typ_data
+                && property_info->property_typ_data->subtype.gobject_int
+                       .print_hex_negative_as_base10
+                && v.i64 < 0) {
+                return_str = g_strdup_printf("%" G_GINT64_FORMAT, v.i64);
+            } else {
+                return_str = g_strdup_printf("0x%" G_GINT64_MODIFIER "x", (guint64) v.i64);
+            }
+        }
         break;
     default:
         return_str = NULL;
@@ -1422,6 +1429,11 @@ _set_fcn_gobject_int(ARGS_SET_FCN)
 
     nm_meta_property_int_get_range(property_info, &min, &max);
 
+    /* See the comment on "print_hex_negative_as_base10" */
+    nm_assert(!property_info->property_typ_data
+              || !property_info->property_typ_data->subtype.gobject_int.print_hex_negative_as_base10
+              || (!is_uint64 && min.i64 > -10));
+
     if (is_uint64)
         v.u64 = _nm_utils_ascii_str_to_uint64(value, base, min.u64, max.u64, 0);
     else
@@ -6473,6 +6485,9 @@ static const NMMetaPropertyInfo *const property_infos_IP4_CONFIG[] = {
             ),
         ),
     ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_FORWARDING, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_FORWARDING,
+        .property_type =                &_pt_gobject_enum,
+    ),
     PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME,
         .property_type =                &_pt_gobject_string,
     ),
@@ -7306,7 +7321,10 @@ static const NMMetaPropertyInfo *const property_infos_OVS_DPDK[] = {
    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_DPDK_N_TXQ_DESC,
         .property_type =                &_pt_gobject_int,
    ),
-    NULL
+   PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_DPDK_LSC_INTERRUPT,
+        .property_type =                &_pt_gobject_enum,
+   ),
+   NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
@@ -7476,6 +7494,19 @@ static const NMMetaPropertyInfo *const property_infos_PPPOE[] = {
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
+#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PREFIX_DELEGATION
+static const NMMetaPropertyInfo *const property_infos_PREFIX_DELEGATION[] = {
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PREFIX_DELEGATION_SUBNET_ID,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .base         = 16,
+            .print_hex_negative_as_base10 = TRUE,
+        ),
+    ),
+    NULL
+};
+
+#undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PROXY
 static const NMMetaPropertyInfo *const property_infos_PROXY[] = {
     PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_METHOD,
@@ -7599,6 +7630,9 @@ static const NMMetaPropertyInfo *const property_infos_SRIOV[] = {
     PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_ESWITCH_ENCAP_MODE,
         .property_type =                &_pt_gobject_enum,
     ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_PRESERVE_ON_DOWN,
+        .property_type =                &_pt_gobject_enum,
+    ),
     NULL
 };
 
@@ -8932,6 +8966,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
 #define SETTING_PRETTY_NAME_OVS_PORT            N_("Open vSwitch port settings")
 #define SETTING_PRETTY_NAME_PPP                 N_("PPP settings")
 #define SETTING_PRETTY_NAME_PPPOE               N_("PPPoE")
+#define SETTING_PRETTY_NAME_PREFIX_DELEGATION   N_("Prefix delegation settings")
 #define SETTING_PRETTY_NAME_PROXY               N_("Proxy")
 #define SETTING_PRETTY_NAME_SERIAL              N_("Serial settings")
 #define SETTING_PRETTY_NAME_SRIOV               N_("SR-IOV settings")
@@ -9144,6 +9179,7 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
             NM_META_SETTING_VALID_PART_ITEM (OVS_PATCH,             FALSE),
             NM_META_SETTING_VALID_PART_ITEM (IP4_CONFIG,            FALSE),
             NM_META_SETTING_VALID_PART_ITEM (IP6_CONFIG,            FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (PREFIX_DELEGATION,     FALSE),
             NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
             NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
         ),
@@ -9169,6 +9205,7 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
         ),
     ),
     SETTING_INFO (PPP),
+    SETTING_INFO (PREFIX_DELEGATION),
     SETTING_INFO (PROXY,
         .setting_init_fcn =             _setting_init_fcn_proxy,
     ),
@@ -9297,6 +9334,7 @@ static const NMMetaSettingValidPartItem *const valid_settings_noport[] = {
     NM_META_SETTING_VALID_PART_ITEM(MATCH, FALSE),
     NM_META_SETTING_VALID_PART_ITEM(IP4_CONFIG, FALSE),
     NM_META_SETTING_VALID_PART_ITEM(IP6_CONFIG, FALSE),
+    NM_META_SETTING_VALID_PART_ITEM(PREFIX_DELEGATION, FALSE),
     NM_META_SETTING_VALID_PART_ITEM(HOSTNAME, FALSE),
     NM_META_SETTING_VALID_PART_ITEM(LINK, FALSE),
     NM_META_SETTING_VALID_PART_ITEM(TC_CONFIG, FALSE),
diff --git a/src/libnmc-setting/nm-meta-setting-desc.h b/src/libnmc-setting/nm-meta-setting-desc.h
index fa09fbe6..0294b1f7 100644
--- a/src/libnmc-setting/nm-meta-setting-desc.h
+++ b/src/libnmc-setting/nm-meta-setting-desc.h
@@ -162,7 +162,7 @@ typedef enum {
     NM_META_ACCESSOR_GET_OUT_FLAGS_NONE = 0,
     NM_META_ACCESSOR_GET_OUT_FLAGS_STRV = (1LL << 0),
 
-    /* the property allows to be hidden, if and only if, it's value is set to the
+    /* the property allows one to be hidden, if and only if, it's value is set to the
      * default. This should only be set by new properties, to preserve behavior
      * of old properties, which were always printed. */
     NM_META_ACCESSOR_GET_OUT_FLAGS_HIDE = (1LL << 1),
@@ -293,9 +293,21 @@ struct _NMMetaPropertyTypData {
                                    int                       value);
         } gobject_enum;
         struct {
-            NMMetaSignUnsignInt64          min;
-            NMMetaSignUnsignInt64          max;
-            guint                          base;
+            NMMetaSignUnsignInt64 min;
+            NMMetaSignUnsignInt64 max;
+            guint                 base;
+
+            /* Normally, when a property has "base = 16", it is printed
+             * as unsigned even if the gtype is signed. For some properties,
+             * we want to print the hexadecimal representation for positive
+             * values, and the base10 representation with minus sign for negative
+             * values. A typical use case is to encode the default value as
+             * "-1" and use positive values as a hexadecimal number. To avoid
+             * ambiguity when setting the value via nmcli, the property minimum
+             * allowed value should not be <= -10.
+             */
+            bool print_hex_negative_as_base10;
+
             const NMMetaUtilsIntValueInfo *value_infos;
         } gobject_int;
         struct {
diff --git a/src/libnmc-setting/settings-docs.h.in b/src/libnmc-setting/settings-docs.h.in
index 3bae49b8..56c7c29c 100644
--- a/src/libnmc-setting/settings-docs.h.in
+++ b/src/libnmc-setting/settings-docs.h.in
@@ -28,7 +28,7 @@
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_READ_ONLY N_("This property is deprecated and has no meaning.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SECONDARIES N_("List of connection UUIDs that should be activated when the base connection itself is activated. Currently, only VPN connections are supported.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_SLAVE_TYPE N_("Setting name of the device type of this port's controller connection (eg, \"bond\"), or NULL if this connection is not a port. Deprecated 1.46. Use \"port-type\" instead, this is just an alias.")
-#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used to derive the DHCP client identifier with ipv4.dhcp-client-id=stable, the DHCPv6 DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid] and the DHCP IAID with ipv4.iaid=stable and ipv6.iaid=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret_key. See NetworkManager(8) manual about the secret-key and the host identity. The '$' character is treated special to perform dynamic substitutions at activation time. Currently, supported are \"${CONNECTION}\", \"${DEVICE}\", \"${MAC}\", \"${NETWORK_SSID}\", \"${BOOT}\", \"${RANDOM}\".  These effectively create unique IDs per-connection, per-device, per-SSID, per-boot, or every time.  The \"${CONNECTION}\" uses the profile's connection.uuid, the \"${DEVICE}\" uses the interface name of the device and \"${MAC}\" the permanent MAC address of the device. \"${NETWORK_SSID}\" uses the SSID for Wi-Fi networks and falls back to \"${CONNECTION}\" on other networks. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\".  For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is \"default${CONNECTION}\" go generate an ID unique per connection profile.")
+#define DESCRIBE_DOC_NM_SETTING_CONNECTION_STABLE_ID N_("This represents the identity of the connection used for various purposes. It allows configuring multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used to derive the DHCP client identifier with ipv4.dhcp-client-id=stable, the DHCPv6 DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid] and the DHCP IAID with ipv4.iaid=stable and ipv6.iaid=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's name is included, so that different interfaces yield different addresses. The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret_key. See NetworkManager(8) manual about the secret-key and the host identity. The '$' character is treated special to perform dynamic substitutions at activation time. Currently, supported are \"${CONNECTION}\", \"${DEVICE}\", \"${MAC}\", \"${NETWORK_SSID}\", \"${BOOT}\", \"${RANDOM}\".  These effectively create unique IDs per-connection, per-device, per-SSID, per-boot, or every time.  The \"${CONNECTION}\" uses the profile's connection.uuid, the \"${DEVICE}\" uses the interface name of the device and \"${MAC}\" the permanent MAC address of the device. \"${NETWORK_SSID}\" uses the SSID for Wi-Fi networks and falls back to \"${CONNECTION}\" on other networks. Any unrecognized patterns following '$' are treated verbatim, however are reserved for future use. You are thus advised to avoid '$' or escape it as \"$$\".  For example, set it to \"${CONNECTION}-${BOOT}-${DEVICE}\" to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is \"default${CONNECTION}\" go generate an ID unique per connection profile.")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TIMESTAMP N_("The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_TYPE N_("Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, \"802-3-ethernet\" or \"802-11-wireless\" or \"bluetooth\", etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, \"vpn\" or \"bridge\", etc).")
 #define DESCRIBE_DOC_NM_SETTING_CONNECTION_UUID N_("The connection.uuid is the real identifier of a profile. It cannot change and it must be unique. It is therefore often best to refer to a profile by UUID, for example with `nmcli connection up uuid $UUID`. The UUID cannot be changed, except in offline mode. In that case, the special values \"new\", \"generate\" and \"\" are allowed to generate a new random UUID.")
@@ -200,6 +200,7 @@
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_OPTIONS N_("DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The currently supported options are \"attempts\", \"debug\", \"edns0\", \"ndots\", \"no-aaaa\", \"no-check-names\", \"no-reload\", \"no-tld-query\", \"rotate\", \"single-request\", \"single-request-reopen\", \"timeout\", \"trust-ad\", \"use-vc\". See the resolv.conf(5) manual. Note that there is a distinction between an unset (default) list and an empty list. In nmcli, to unset the list set the value to \"\". To set an empty list, set it to \" \". Currently, an unset list has the same meaning as an empty list. That might change in the future. The \"trust-ad\" setting is only honored if the profile contributes name servers to resolv.conf, and if all contributing profiles have \"trust-ad\" enabled. When using a caching DNS plugin (dnsmasq or systemd-resolved in NetworkManager.conf) then \"edns0\" and \"trust-ad\" are automatically added. The valid \"ipv4.dns-options\" and \"ipv6.dns-options\" get merged together.")
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_PRIORITY N_("DNS servers priority. The relative priority for DNS servers specified by this setting.  A lower numerical value is better (higher priority). Negative values have the special effect of excluding other configurations with a greater numerical priority value; so in presence of at least one negative priority, only DNS servers from connections with the lowest priority value will be used. To avoid all DNS leaks, set the priority of the profile that should be used to the most negative value of all active connections profiles. Zero selects a globally configured default value. If the latter is missing or zero too, it defaults to 50 for VPNs (including WireGuard) and 100 for other connections. Note that the priority is to order DNS settings for multiple active connections.  It does not disambiguate multiple DNS servers within the same connection profile. When multiple devices have configurations with the same priority, VPNs will be considered first, then devices with the best (lowest metric) default route and then all other devices. When using dns=default, servers with higher priority will be on top of resolv.conf. To prioritize a given server over another one within the same connection, just specify them in the desired order. Note that commonly the resolver tries name servers in /etc/resolv.conf in the order listed, proceeding with the next server in the list on failure. See for example the \"rotate\" option of the dns-options setting. If there are any negative DNS priorities, then only name servers from the devices with that lowest priority will be considered. When using a DNS resolver that supports Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-resolved settings), each connection is used to query domains in its search list. The search domains determine which name servers to ask, and the DNS priority is used to prioritize name servers based on the domain.  Queries for domains not present in any search list are routed through connections having the '~.' special wildcard domain, which is added automatically to connections with the default route (or can be added manually).  When multiple connections specify the same domain, the one with the best priority (lowest numerical value) wins.  If a sub domain is configured on another interface it will be accepted regardless the priority, unless parent domain on the other interface has a negative priority, which causes the sub domain to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly configuring DNS priorities and the search domains, so that only name servers of the desired interface are configured.")
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_SEARCH N_("List of DNS search domains. Domains starting with a tilde ('~') are considered 'routing' domains and are used only to decide the interface over which a query must be forwarded; they are not used to complete unqualified host names. When using a DNS plugin that supports Conditional Forwarding or Split DNS, then the search domains specify which name servers to query. This makes the behavior different from running with plain /etc/resolv.conf. For more information see also the dns-priority setting. When set on a profile that also enabled DHCP, the DNS search list received automatically (option 119 for DHCPv4 and option 24 for DHCPv6) gets merged with the manual list. This can be prevented by setting \"ignore-auto-dns\". Note that if no DNS searches are configured, the fallback will be derived from the domain from DHCP (option 15).")
+#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_FORWARDING N_("Whether to configure sysctl interface-specific forwarding. When enabled, the interface will act as a router to forward the packet from one interface to another. When set to \"default\" (-1), the value from global configuration is used; if no global default is defined, \"auto\" (2) will be used. The \"forwarding\" property is ignored when \"method\" is set to \"shared\", because forwarding is always enabled in this case. The accepted values are: \"default\" (-1): use global default. \"no\" (0): disabled. \"yes\" (1): enabled. \"auto\" (2): enable if any shared connection is active, use kernel default otherwise.")
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_GATEWAY N_("The gateway associated with this configuration. This is only meaningful if \"addresses\" is also set. Setting the gateway causes NetworkManager to configure a standard default route with the gateway as next hop. This is ignored if \"never-default\" is set. An alternative is to configure the default route explicitly with a manual route and /0 as prefix length. Note that the gateway usually conflicts with routing that NetworkManager configures for WireGuard interfaces, so usually it should not be set in that case. See \"ip4-auto-default-route\".")
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS N_("When \"method\" is set to \"auto\" and this property to TRUE, automatically configured name servers and search domains are ignored and only name servers and search domains specified in the \"dns\" and \"dns-search\" properties, if any, are used.")
 #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES N_("When \"method\" is set to \"auto\" and this property to TRUE, automatically configured routes are ignored and only routes specified in the \"routes\" property, if any, are used.")
@@ -235,6 +236,7 @@
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_OPTIONS N_("DNS options for /etc/resolv.conf as described in resolv.conf(5) manual. The currently supported options are \"attempts\", \"debug\", \"edns0\", \"ndots\", \"no-aaaa\", \"no-check-names\", \"no-reload\", \"no-tld-query\", \"rotate\", \"single-request\", \"single-request-reopen\", \"timeout\", \"trust-ad\", \"use-vc\" and \"inet6\", \"ip6-bytestring\", \"ip6-dotint\", \"no-ip6-dotint\". See the resolv.conf(5) manual. Note that there is a distinction between an unset (default) list and an empty list. In nmcli, to unset the list set the value to \"\". To set an empty list, set it to \" \". Currently, an unset list has the same meaning as an empty list. That might change in the future. The \"trust-ad\" setting is only honored if the profile contributes name servers to resolv.conf, and if all contributing profiles have \"trust-ad\" enabled. When using a caching DNS plugin (dnsmasq or systemd-resolved in NetworkManager.conf) then \"edns0\" and \"trust-ad\" are automatically added. The valid \"ipv4.dns-options\" and \"ipv6.dns-options\" get merged together.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_PRIORITY N_("DNS servers priority. The relative priority for DNS servers specified by this setting.  A lower numerical value is better (higher priority). Negative values have the special effect of excluding other configurations with a greater numerical priority value; so in presence of at least one negative priority, only DNS servers from connections with the lowest priority value will be used. To avoid all DNS leaks, set the priority of the profile that should be used to the most negative value of all active connections profiles. Zero selects a globally configured default value. If the latter is missing or zero too, it defaults to 50 for VPNs (including WireGuard) and 100 for other connections. Note that the priority is to order DNS settings for multiple active connections.  It does not disambiguate multiple DNS servers within the same connection profile. When multiple devices have configurations with the same priority, VPNs will be considered first, then devices with the best (lowest metric) default route and then all other devices. When using dns=default, servers with higher priority will be on top of resolv.conf. To prioritize a given server over another one within the same connection, just specify them in the desired order. Note that commonly the resolver tries name servers in /etc/resolv.conf in the order listed, proceeding with the next server in the list on failure. See for example the \"rotate\" option of the dns-options setting. If there are any negative DNS priorities, then only name servers from the devices with that lowest priority will be considered. When using a DNS resolver that supports Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-resolved settings), each connection is used to query domains in its search list. The search domains determine which name servers to ask, and the DNS priority is used to prioritize name servers based on the domain.  Queries for domains not present in any search list are routed through connections having the '~.' special wildcard domain, which is added automatically to connections with the default route (or can be added manually).  When multiple connections specify the same domain, the one with the best priority (lowest numerical value) wins.  If a sub domain is configured on another interface it will be accepted regardless the priority, unless parent domain on the other interface has a negative priority, which causes the sub domain to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly configuring DNS priorities and the search domains, so that only name servers of the desired interface are configured.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_SEARCH N_("List of DNS search domains. Domains starting with a tilde ('~') are considered 'routing' domains and are used only to decide the interface over which a query must be forwarded; they are not used to complete unqualified host names. When using a DNS plugin that supports Conditional Forwarding or Split DNS, then the search domains specify which name servers to query. This makes the behavior different from running with plain /etc/resolv.conf. For more information see also the dns-priority setting. When set on a profile that also enabled DHCP, the DNS search list received automatically (option 119 for DHCPv4 and option 24 for DHCPv6) gets merged with the manual list. This can be prevented by setting \"ignore-auto-dns\". Note that if no DNS searches are configured, the fallback will be derived from the domain from DHCP (option 15).")
+#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_FORWARDING N_("Whether to configure sysctl interface-specific forwarding. When enabled, the interface will act as a router to forward the packet from one interface to another. When set to \"default\" (-1), the value from global configuration is used; if no global default is defined, \"auto\" (2) will be used. The \"forwarding\" property is ignored when \"method\" is set to \"shared\", because forwarding is always enabled in this case. The accepted values are: \"default\" (-1): use global default. \"no\" (0): disabled. \"yes\" (1): enabled. \"auto\" (2): enable if any shared connection is active, use kernel default otherwise.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_GATEWAY N_("The gateway associated with this configuration. This is only meaningful if \"addresses\" is also set. Setting the gateway causes NetworkManager to configure a standard default route with the gateway as next hop. This is ignored if \"never-default\" is set. An alternative is to configure the default route explicitly with a manual route and /0 as prefix length. Note that the gateway usually conflicts with routing that NetworkManager configures for WireGuard interfaces, so usually it should not be set in that case. See \"ip4-auto-default-route\".")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS N_("When \"method\" is set to \"auto\" and this property to TRUE, automatically configured name servers and search domains are ignored and only name servers and search domains specified in the \"dns\" and \"dns-search\" properties, if any, are used.")
 #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES N_("When \"method\" is set to \"auto\" and this property to TRUE, automatically configured routes are ignored and only routes specified in the \"routes\" property, if any, are used.")
@@ -301,6 +303,7 @@
 #define DESCRIBE_DOC_NM_SETTING_OVS_BRIDGE_RSTP_ENABLE N_("Enable or disable RSTP.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_BRIDGE_STP_ENABLE N_("Enable or disable STP.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_DEVARGS N_("Open vSwitch DPDK device arguments.")
+#define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_LSC_INTERRUPT N_("Configures the Link State Change (LSC) detection mode for the OVS DPDK interface. When set to \"ignore\" (-1), NetworkManager doesn't change the default value configured by Open vSwitch. \"enabled\" (1) enables interrupts. \"disabled\" (0) disables interrupts, thus setting the interface in poll mode.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_N_RXQ N_("Open vSwitch DPDK number of rx queues. Defaults to zero which means to leave the parameter in OVS unspecified and effectively configures one queue.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_N_RXQ_DESC N_("The rx queue size (number of rx descriptors) for DPDK ports. Must be zero or a power of 2 between 1 and 4096, and supported by the hardware. Defaults to zero which means to leave the parameter in OVS unspecified and effectively configures 2048 descriptors.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_N_TXQ_DESC N_("The tx queue size (number of tx descriptors) for DPDK ports. Must be zero or a power of 2 between 1 and 4096, and supported by the hardware. Defaults to zero which means to leave the parameter in OVS unspecified and effectively configures 2048 descriptors.")
@@ -350,6 +353,7 @@
 #define DESCRIBE_DOC_NM_SETTING_SRIOV_ESWITCH_ENCAP_MODE N_("Select the eswitch encapsulation support. Currently it's only supported for PCI PF devices, and only if the eswitch device is managed from the same PCI address than the PF. If set to \"preserve\" (-1) (default) the eswitch encap-mode won't be modified by NetworkManager.")
 #define DESCRIBE_DOC_NM_SETTING_SRIOV_ESWITCH_INLINE_MODE N_("Select the eswitch inline-mode of the device. Some HWs need the VF driver to put part of the packet headers on the TX descriptor so the e-switch can do proper matching and steering. Currently it's only supported for PCI PF devices, and only if the eswitch device is managed from the same PCI address than the PF. If set to \"preserve\" (-1) (default) the eswitch inline-mode won't be modified by NetworkManager.")
 #define DESCRIBE_DOC_NM_SETTING_SRIOV_ESWITCH_MODE N_("Select the eswitch mode of the device. Currently it's only supported for PCI PF devices, and only if the eswitch device is managed from the same PCI address than the PF. If set to \"preserve\" (-1) (default) the eswitch mode won't be modified by NetworkManager.")
+#define DESCRIBE_DOC_NM_SETTING_SRIOV_PRESERVE_ON_DOWN N_("This controls whether NetworkManager preserves the SR-IOV parameters set on the device when the connection is deactivated, or whether it resets them to their default value. The SR-IOV parameters are those specified in this setting (the \"sriov\" setting), like the number of VFs to create, the eswitch configuration, etc. If set to \"no\" (0), NetworkManager resets the SR-IOV parameters when the connection is deactivated. When set to \"yes\" (1), NetworkManager preserves those parameters on the device. If the value is \"default\" (-1), NetworkManager looks up a global default value in the configuration; in case no such value is defined, it uses \"no\" (0) as fallback.")
 #define DESCRIBE_DOC_NM_SETTING_SRIOV_TOTAL_VFS N_("The total number of virtual functions to create. Note that when the sriov setting is present NetworkManager enforces the number of virtual functions on the interface (also when it is zero) during activation and resets it upon deactivation. To prevent any changes to SR-IOV parameters don't add a sriov setting to the connection.")
 #define DESCRIBE_DOC_NM_SETTING_SRIOV_VFS N_("Array of virtual function descriptors. Each VF descriptor is a dictionary mapping attribute names to GVariant values. The 'index' entry is mandatory for each VF. When represented as string a VF is in the form: \"INDEX [ATTR=VALUE[ ATTR=VALUE]...]\". for example: \"2 mac=00:11:22:33:44:55 spoof-check=true\". Multiple VFs can be specified using a comma as separator. Currently, the following attributes are supported: mac, spoof-check, trust, min-tx-rate, max-tx-rate, vlans. The \"vlans\" attribute is represented as a semicolon-separated list of VLAN descriptors, where each descriptor has the form \"ID[.PRIORITY[.PROTO]]\". PROTO can be either 'q' for 802.1Q (the default) or 'ad' for 802.1ad.")
 #define DESCRIBE_DOC_NM_SETTING_TC_CONFIG_QDISCS N_("Array of TC queueing disciplines. When the \"tc\" setting is present, qdiscs from this property are applied upon activation. If the property is empty, all qdiscs are removed and the device will only have the default qdisc assigned by kernel according to the \"net.core.default_qdisc\" sysctl. If the \"tc\" setting is not present, NetworkManager doesn't touch the qdiscs present on the interface.")
@@ -422,7 +426,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("When TRUE, enforce auto-negotiation of speed and duplex mode. If \"speed\" and \"duplex\" properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address if the device has one (otherwise this is treated as \"preserve\"). \"random\" creates a random MAC address on each connect. \"stable\" creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("When a value is set, either \"half\" or \"full\", configures the device to use the specified duplex mode. If \"auto-negotiate\" is \"yes\" the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if \"auto-negotiate\" is \"no\", the default) or will be auto-negotiated (if \"auto-negotiate\" is \"yes\") and the local device will advertise all the supported duplex modes. Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.")
-#define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
+#define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows one to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS N_("If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
 #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
@@ -448,7 +452,7 @@
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_CHANNEL N_("Wireless channel to use for the Wi-Fi connection.  The device will only join (or create for Ad-Hoc networks) a Wi-Fi network on the specified channel.  Because channel numbers overlap between bands, this property also requires the \"band\" property to be set.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_CHANNEL_WIDTH N_("Specifies width of the wireless channel in Access Point (AP) mode. When set to \"auto\" (0) (the default), the channel width is automatically determined. At the moment, this means that the safest (smallest) width is chosen. If the value is not \"auto\" (0), then the 'channel' property must also be set. When using the 2.4GHz band, the width can be at most 40MHz. This property can be set to a value different from \"auto\" (0) only when the interface is configured in AP mode.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\", \"stable\" and \"stable-ssid\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address of the device. \"random\" creates a random MAC address on each connect. \"stable\" creates a hashed MAC address based on connection.stable-id and a machine dependent key. \"stable-ssid\" creates a hashed MAC address based on the SSID, the same as setting the stable-id to \"${NETWORK_SSID}\". If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".")
-#define DESCRIBE_DOC_NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
+#define DESCRIBE_DOC_NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows one to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_HIDDEN N_("If TRUE, indicates that the network is a non-broadcasting network that hides its SSID. This works both in infrastructure and AP mode. In infrastructure mode, various workarounds are used for a more reliable discovery of hidden networks, such as probe-scanning the SSID.  However, these workarounds expose inherent insecurities with hidden SSID networks, and thus hidden SSID networks should be used with caution. In AP mode, the created network does not broadcast its SSID. Note that marking the network as hidden may be a privacy issue for you (in infrastructure mode) or client stations (in AP mode), as the explicit probe-scans are distinctly recognizable on the air.")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_MAC_ADDRESS N_("If specified, this connection will only apply to the Wi-Fi device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
 #define DESCRIBE_DOC_NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST N_("A list of permanent MAC addresses of Wi-Fi devices to which this connection should never apply.  Each MAC address should be given in the standard hex-digits-and-colons notation (eg \"00:11:22:33:44:55\").")
@@ -500,4 +504,5 @@
 #define DESCRIBE_DOC_NM_SETTING_LOOPBACK_MTU N_("If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_EXTERNAL_IDS_DATA N_("A dictionary of key/value pairs with external-ids for OVS.")
 #define DESCRIBE_DOC_NM_SETTING_OVS_OTHER_CONFIG_DATA N_("A dictionary of key/value pairs with other_config settings for OVS. See also \"other_config\" in the \"ovs-vswitchd.conf.db\" manual for the keys that OVS supports.")
+#define DESCRIBE_DOC_NM_SETTING_PREFIX_DELEGATION_SUBNET_ID N_("The subnet ID to use on the interface from the prefix delegation received via an upstream interface. Set to a value between 0 and 0xffffffff (2^32 - 1) to indicate a specific subnet ID; or set to -1 to automatically choose an available subnet ID.")
 #define DESCRIBE_DOC_NM_SETTING_VETH_PEER N_("This property specifies the peer interface name of the veth. This property is mandatory.")
diff --git a/src/nm-cloud-setup/nmcs-provider-oci.c b/src/nm-cloud-setup/nmcs-provider-oci.c
index 17cd997e..8dc72ccd 100644
--- a/src/nm-cloud-setup/nmcs-provider-oci.c
+++ b/src/nm-cloud-setup/nmcs-provider-oci.c
@@ -141,10 +141,10 @@ _get_config_done_cb(GObject *source, GAsyncResult *result, gpointer user_data)
         }
 
         field   = json_object_get(vnic, "vnicId");
-        vnic_id = field && json_is_string(field) ? json_string_value(field) : "";
+        vnic_id = json_is_string(field) ? json_string_value(field) : "";
 
         field = json_object_get(vnic, "macAddr");
-        val   = field && json_is_string(field) ? json_string_value(field) : NULL;
+        val   = json_is_string(field) ? json_string_value(field) : NULL;
         mac   = val ? nmcs_utils_hwaddr_normalize(val, json_string_length(field)) : NULL;
         if (!mac) {
             _VNIC_WARN("missing or invalid 'macAddr', ignoring VNIC");
@@ -153,14 +153,14 @@ _get_config_done_cb(GObject *source, GAsyncResult *result, gpointer user_data)
 
         if (is_baremetal) {
             field     = json_object_get(vnic, "nicIndex");
-            nic_index = field && json_is_integer(field) ? json_integer_value(field) : -1;
+            nic_index = json_is_integer(field) ? json_integer_value(field) : -1;
             if (nic_index < 0 || nic_index >= 1024) { /* 1024 = random limit to prevent abuse*/
                 _VNIC_WARN("missing or invalid 'nicIndex', ignoring VNIC");
                 continue;
             }
 
             field    = json_object_get(vnic, "vlanTag");
-            vlan_tag = field && json_is_integer(field) ? json_integer_value(field) : -1;
+            vlan_tag = json_is_integer(field) ? json_integer_value(field) : -1;
             if (vlan_tag < 0) {
                 _VNIC_WARN("missing or invalid 'vlanTag', ignoring VNIC");
                 continue;
@@ -171,7 +171,7 @@ _get_config_done_cb(GObject *source, GAsyncResult *result, gpointer user_data)
         config_iface_data->iface_idx = i;
 
         field = json_object_get(vnic, "privateIp");
-        val   = field && json_is_string(field) ? json_string_value(field) : NULL;
+        val   = json_is_string(field) ? json_string_value(field) : NULL;
         if (val && nm_inet_parse_bin(AF_INET, val, NULL, &addr)) {
             config_iface_data->has_ipv4s    = TRUE;
             config_iface_data->ipv4s_len    = 1;
@@ -182,7 +182,7 @@ _get_config_done_cb(GObject *source, GAsyncResult *result, gpointer user_data)
         }
 
         field = json_object_get(vnic, "virtualRouterIp");
-        val   = field && json_is_string(field) ? json_string_value(field) : NULL;
+        val   = json_is_string(field) ? json_string_value(field) : NULL;
         if (val && nm_inet_parse_bin(AF_INET, val, NULL, &addr)) {
             config_iface_data->has_gateway = TRUE;
             config_iface_data->gateway     = addr;
@@ -191,7 +191,7 @@ _get_config_done_cb(GObject *source, GAsyncResult *result, gpointer user_data)
         }
 
         field = json_object_get(vnic, "subnetCidrBlock");
-        val   = field && json_is_string(field) ? json_string_value(field) : NULL;
+        val   = json_is_string(field) ? json_string_value(field) : NULL;
         if (val && nm_inet_parse_with_prefix_bin(AF_INET, val, NULL, &addr, &prefix)) {
             config_iface_data->has_cidr    = TRUE;
             config_iface_data->cidr_addr   = addr;
diff --git a/src/nm-dispatcher/nm-dispatcher.c b/src/nm-dispatcher/nm-dispatcher.c
index ce252b92..16e35827 100644
--- a/src/nm-dispatcher/nm-dispatcher.c
+++ b/src/nm-dispatcher/nm-dispatcher.c
@@ -163,7 +163,7 @@ struct Request {
         const ScriptInfo *const _script  = (x_script);                        \
         const Request *const    _request = _script ? _script->request : NULL; \
                                                                               \
-        nm_assert(_script &&_request);                                        \
+        nm_assert(_script && _request);                                       \
         if (enabled_cmd)                                                      \
             __LOG_print_S(print_cmd, _request, _script, ": "__VA_ARGS__);     \
     }                                                                         \
diff --git a/src/nm-initrd-generator/meson.build b/src/nm-initrd-generator/meson.build
index 080fe7e4..6b02e066 100644
--- a/src/nm-initrd-generator/meson.build
+++ b/src/nm-initrd-generator/meson.build
@@ -6,6 +6,7 @@ libnmi_core = static_library(
     'nmi-cmdline-reader.c',
     'nmi-dt-reader.c',
     'nmi-ibft-reader.c',
+    'nmi-nbft-reader.c',
   ),
   include_directories: [
     src_inc,
diff --git a/src/nm-initrd-generator/nm-initrd-generator.h b/src/nm-initrd-generator/nm-initrd-generator.h
index c2baad4e..a73ce361 100644
--- a/src/nm-initrd-generator/nm-initrd-generator.h
+++ b/src/nm-initrd-generator/nm-initrd-generator.h
@@ -41,6 +41,8 @@ nmi_ibft_update_connection_from_nic(NMConnection *connection, GHashTable *nic, G
 
 NMConnection *nmi_dt_reader_parse(const char *sysfs_dir);
 
+NMConnection **nmi_nbft_reader_parse(const char *sysfs_dir, char **hostname);
+
 GHashTable *nmi_cmdline_reader_parse(const char        *etc_connections_dir,
                                      const char        *sysfs_dir,
                                      const char *const *argv,
diff --git a/src/nm-initrd-generator/nmi-cmdline-reader.c b/src/nm-initrd-generator/nmi-cmdline-reader.c
index 5389748d..ba5380af 100644
--- a/src/nm-initrd-generator/nmi-cmdline-reader.c
+++ b/src/nm-initrd-generator/nmi-cmdline-reader.c
@@ -1479,8 +1479,10 @@ nmi_cmdline_reader_parse(const char        *etc_connections_dir,
     gs_unref_ptrarray GPtrArray *routes        = NULL;
     gs_unref_ptrarray GPtrArray *znets         = NULL;
     int                          i;
-    guint64                      dhcp_timeout   = 90;
-    guint64                      dhcp_num_tries = 1;
+    guint64                      dhcp_timeout     = 90;
+    guint64                      dhcp_num_tries   = 1;
+    gboolean                     nvmf_nonbft      = FALSE;
+    gboolean                     have_dracut_nbft = FALSE;
 
     reader = reader_new();
 
@@ -1497,7 +1499,10 @@ nmi_cmdline_reader_parse(const char        *etc_connections_dir,
             /* pass */
         } else if (nm_streq(tag, "net.ifnames"))
             net_ifnames = !nm_streq(argument, "0");
-        else if (nm_streq(tag, "rd.peerdns"))
+        else if (nm_streq(tag, "ifname")) {
+            if (NM_STR_HAS_PREFIX(argument, "nbft"))
+                have_dracut_nbft = TRUE;
+        } else if (nm_streq(tag, "rd.peerdns"))
             reader->ignore_auto_dns = !_nm_utils_ascii_str_to_bool(argument, TRUE);
         else if (nm_streq(tag, "rd.net.timeout.dhcp")) {
             if (nm_streq0(argument, "infinity")) {
@@ -1589,7 +1594,18 @@ nmi_cmdline_reader_parse(const char        *etc_connections_dir,
             reader_parse_dns_backend(reader, argument);
         } else if (nm_streq(tag, "rd.net.dns-resolve-mode")) {
             reader_parse_dns_resolve_mode(reader, argument);
+        } else if (nm_streq(tag, "rd.nvmf.nonbft"))
+            nvmf_nonbft = TRUE;
+    }
+
+    if (!nvmf_nonbft && !have_dracut_nbft) {
+        NMConnection **nbft_connections, **c;
+
+        nbft_connections = nmi_nbft_reader_parse(sysfs_dir, &reader->hostname);
+        for (c = nbft_connections; c && *c; c++) {
+            reader_add_connection(reader, nm_connection_get_id(*c), *c);
         }
+        g_free(nbft_connections);
     }
 
     for (i = 0; i < reader->vlan_parents->len; i++) {
diff --git a/src/nm-initrd-generator/nmi-nbft-reader.c b/src/nm-initrd-generator/nmi-nbft-reader.c
new file mode 100644
index 00000000..5d12086f
--- /dev/null
+++ b/src/nm-initrd-generator/nmi-nbft-reader.c
@@ -0,0 +1,415 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Red Hat, Inc.
+ */
+
+#include "libnm-core-impl/nm-default-libnm-core.h"
+
+#include "nm-initrd-generator.h"
+
+#if WITH_NBFT
+
+#include <libnvme.h>
+#include <dlfcn.h>
+
+#include "libnm-log-core/nm-logging.h"
+#include "libnm-core-intern/nm-core-internal.h"
+
+/*****************************************************************************/
+
+#define _NMLOG(level, domain, ...) \
+    nm_log((level),                \
+           (domain),               \
+           NULL,                   \
+           NULL,                   \
+           "nbft-reader: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__) _NM_UTILS_MACRO_REST(__VA_ARGS__))
+
+/*****************************************************************************/
+
+static inline gboolean
+is_valid_addr(int family, const char *addr)
+{
+    return (addr && strlen(addr) > 0 && !nm_streq(addr, "0.0.0.0") && !nm_streq(addr, "::")
+            && nm_utils_ipaddr_valid(family, addr));
+}
+
+static int (*_nvme_nbft_read)(struct nbft_info **nbft, const char *filename);
+static void (*_nvme_nbft_free)(struct nbft_info *nbft);
+
+static void *
+load_libnvme(void)
+{
+    void *handle;
+
+    handle = dlopen("libnvme.so.1", RTLD_LAZY);
+    if (!handle)
+        return NULL;
+
+#if HAVE_DLVSYM
+    _nvme_nbft_read = dlvsym(handle, "nvme_nbft_read", "LIBNVME_1_5");
+    _nvme_nbft_free = dlvsym(handle, "nvme_nbft_free", "LIBNVME_1_5");
+#else
+    /* no dlvsym() in musl */
+    _nvme_nbft_read = dlsym(handle, "nvme_nbft_read");
+    _nvme_nbft_free = dlsym(handle, "nvme_nbft_free");
+#endif
+
+    if (!_nvme_nbft_read || !_nvme_nbft_free) {
+        dlclose(handle);
+        return NULL;
+    }
+    return handle;
+}
+
+static char *
+format_conn_name(const char *table_name, struct nbft_info_hfi *hfi, gboolean is_vlan)
+{
+    if (is_vlan) {
+        nm_assert(hfi->tcp_info.vlan > 0);
+        return g_strdup_printf("%s connection HFI %d VLAN %d",
+                               table_name,
+                               hfi->index,
+                               hfi->tcp_info.vlan);
+    } else
+        return g_strdup_printf("%s connection HFI %d", table_name, hfi->index);
+}
+
+static NMConnection *
+find_conn_for_wired_mac(GPtrArray *a, const char *hwaddr)
+{
+    guint i;
+
+    for (i = 0; i < a->len; i++) {
+        NMConnection   *con = a->pdata[i];
+        NMSettingWired *s_wired;
+
+        if (!nm_connection_is_type(con, NM_SETTING_WIRED_SETTING_NAME))
+            continue;
+        s_wired = nm_connection_get_setting_wired(con);
+        if (!s_wired)
+            continue;
+        if (nm_streq(hwaddr, nm_setting_wired_get_mac_address(s_wired)))
+            return con;
+    }
+    return NULL;
+}
+
+static NMConnection *
+create_wired_conn(struct nbft_info_hfi *hfi,
+                  const char           *conn_name,
+                  const char           *hwaddr,
+                  gboolean              is_vlan)
+{
+    NMConnection *connection;
+    NMSetting    *s_connection;
+    NMSetting    *s_wired;
+
+    connection = nm_simple_connection_new();
+
+    s_connection = nm_setting_connection_new();
+    g_object_set(s_connection,
+                 NM_SETTING_CONNECTION_TYPE,
+                 is_vlan ? NM_SETTING_VLAN_SETTING_NAME : NM_SETTING_WIRED_SETTING_NAME,
+                 NM_SETTING_CONNECTION_ID,
+                 conn_name,
+                 NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
+                 NMI_AUTOCONNECT_PRIORITY_FIRMWARE,
+                 NULL);
+    nm_connection_add_setting(connection, s_connection);
+
+    /* MAC address */
+    s_wired = nm_setting_wired_new();
+    g_object_set(s_wired, NM_SETTING_WIRED_MAC_ADDRESS, hwaddr, NULL);
+    nm_connection_add_setting(connection, s_wired);
+
+    return connection;
+}
+
+static void
+parse_hfi(GPtrArray *a, struct nbft_info_hfi *hfi, const char *table_name, char **hostname)
+{
+    gs_unref_object NMConnection         *connection = NULL;
+    NMConnection                         *parent_connection;
+    NMSetting                            *s_vlan;
+    gs_free char                         *hwaddr    = NULL;
+    gs_free char                         *conn_name = NULL;
+    gs_unref_object NMSetting            *s_ip4     = NULL;
+    gs_unref_object NMSetting            *s_ip6     = NULL;
+    nm_auto_unref_ip_address NMIPAddress *ipaddr    = NULL;
+    guint                                 prefix;
+    gs_free_error GError                 *error  = NULL;
+    int                                   family = AF_UNSPEC;
+    NMIPAddr                              addr_bin;
+
+    /* Pre-checks */
+    if (!nm_inet_parse_bin_full(family, FALSE, hfi->tcp_info.ipaddr, &family, &addr_bin)) {
+        _LOGW(LOGD_CORE, "NBFT: Malformed IP address: '%s'", hfi->tcp_info.ipaddr);
+        return;
+    }
+
+    /* MAC address */
+    hwaddr = g_strdup_printf("%02X:%02X:%02X:%02X:%02X:%02X",
+                             hfi->tcp_info.mac_addr[0],
+                             hfi->tcp_info.mac_addr[1],
+                             hfi->tcp_info.mac_addr[2],
+                             hfi->tcp_info.mac_addr[3],
+                             hfi->tcp_info.mac_addr[4],
+                             hfi->tcp_info.mac_addr[5]);
+
+    /* First check if we need VLANs */
+    if (hfi->tcp_info.vlan > 0) {
+        parent_connection = find_conn_for_wired_mac(a, hwaddr);
+        if (!parent_connection) {
+            /* Create new parent wired connection */
+            conn_name         = format_conn_name(table_name, hfi, FALSE);
+            parent_connection = create_wired_conn(hfi, conn_name, hwaddr, FALSE);
+
+            s_ip4 = nm_setting_ip4_config_new();
+            s_ip6 = nm_setting_ip6_config_new();
+            g_object_set(s_ip4,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
+                         NULL);
+            g_object_set(s_ip6,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP6_CONFIG_METHOD_DISABLED,
+                         NULL);
+            nm_connection_add_setting(parent_connection, g_steal_pointer(&s_ip4));
+            nm_connection_add_setting(parent_connection, g_steal_pointer(&s_ip6));
+
+            if (!nm_connection_normalize(parent_connection, NULL, NULL, &error)) {
+                _LOGW(LOGD_CORE, "Generated an invalid connection: %s", error->message);
+                g_object_unref(parent_connection);
+                return;
+            }
+            g_ptr_array_add(a, parent_connection);
+        }
+
+        conn_name  = format_conn_name(table_name, hfi, TRUE);
+        connection = create_wired_conn(hfi, conn_name, hwaddr, TRUE);
+
+        s_vlan = nm_setting_vlan_new();
+        g_object_set(s_vlan, NM_SETTING_VLAN_ID, hfi->tcp_info.vlan, NULL);
+        nm_connection_add_setting(connection, s_vlan);
+    } else {
+        /* No VLANS */
+        conn_name  = format_conn_name(table_name, hfi, FALSE);
+        connection = create_wired_conn(hfi, conn_name, hwaddr, FALSE);
+    }
+
+    /* IP addresses */
+    s_ip4 = nm_setting_ip4_config_new();
+    s_ip6 = nm_setting_ip6_config_new();
+
+    switch (family) {
+    /* IPv4 */
+    case AF_INET:
+        g_object_set(s_ip6,
+                     NM_SETTING_IP_CONFIG_METHOD,
+                     NM_SETTING_IP6_CONFIG_METHOD_DISABLED,
+                     NULL);
+        if (is_valid_addr(AF_INET, hfi->tcp_info.dhcp_server_ipaddr)) {
+            g_object_set(s_ip4,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP4_CONFIG_METHOD_AUTO,
+                         NULL);
+            if (hfi->tcp_info.host_name && strlen(hfi->tcp_info.host_name) > 0) {
+                g_object_set(s_ip4,
+                             NM_SETTING_IP_CONFIG_DHCP_HOSTNAME,
+                             hfi->tcp_info.host_name,
+                             NULL);
+            }
+        } else {
+            g_object_set(s_ip4,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
+                         NULL);
+            ipaddr = nm_ip_address_new_binary(AF_INET,
+                                              &addr_bin,
+                                              hfi->tcp_info.subnet_mask_prefix,
+                                              &error);
+            if (!ipaddr) {
+                _LOGW(LOGD_CORE,
+                      "Cannot parse IP %s/%u: %s",
+                      hfi->tcp_info.ipaddr,
+                      hfi->tcp_info.subnet_mask_prefix,
+                      error->message);
+                return;
+            }
+            nm_setting_ip_config_add_address(NM_SETTING_IP_CONFIG(s_ip4), ipaddr);
+            if (is_valid_addr(AF_INET, hfi->tcp_info.gateway_ipaddr)) {
+                g_object_set(s_ip4,
+                             NM_SETTING_IP_CONFIG_GATEWAY,
+                             hfi->tcp_info.gateway_ipaddr,
+                             NULL);
+            }
+            if (is_valid_addr(AF_INET, hfi->tcp_info.primary_dns_ipaddr)) {
+                nm_setting_ip_config_add_dns(NM_SETTING_IP_CONFIG(s_ip4),
+                                             hfi->tcp_info.primary_dns_ipaddr);
+            }
+            if (is_valid_addr(AF_INET, hfi->tcp_info.secondary_dns_ipaddr)) {
+                nm_setting_ip_config_add_dns(NM_SETTING_IP_CONFIG(s_ip4),
+                                             hfi->tcp_info.secondary_dns_ipaddr);
+            }
+        }
+        break;
+
+    /* IPv6 */
+    case AF_INET6:
+        g_object_set(s_ip4,
+                     NM_SETTING_IP_CONFIG_METHOD,
+                     NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
+                     NULL);
+        if (is_valid_addr(AF_INET6, hfi->tcp_info.dhcp_server_ipaddr)) {
+            g_object_set(s_ip6,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP6_CONFIG_METHOD_AUTO,
+                         NULL);
+            if (hfi->tcp_info.host_name && strlen(hfi->tcp_info.host_name) > 0) {
+                g_object_set(s_ip6,
+                             NM_SETTING_IP_CONFIG_DHCP_HOSTNAME,
+                             hfi->tcp_info.host_name,
+                             NULL);
+            }
+        } else {
+            g_object_set(s_ip6,
+                         NM_SETTING_IP_CONFIG_METHOD,
+                         NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
+                         NULL);
+            prefix = hfi->tcp_info.subnet_mask_prefix;
+            if (prefix == 0) {
+                /* Buggy firmware implementations may report prefix=0 for v6 addresses,
+                 * let's fall back to /64.
+                 */
+                _LOGW(LOGD_CORE,
+                      "NBFT: Invalid IPv6 prefix %d, using /64 as a fallback.",
+                      hfi->tcp_info.subnet_mask_prefix);
+                prefix = 64;
+            }
+            ipaddr = nm_ip_address_new_binary(AF_INET6, &addr_bin, prefix, &error);
+            if (!ipaddr) {
+                _LOGW(LOGD_CORE,
+                      "Cannot parse IP %s/%u: %s",
+                      hfi->tcp_info.ipaddr,
+                      prefix,
+                      error->message);
+                return;
+            }
+            nm_setting_ip_config_add_address(NM_SETTING_IP_CONFIG(s_ip6), ipaddr);
+            if (is_valid_addr(AF_INET6, hfi->tcp_info.gateway_ipaddr)) {
+                g_object_set(s_ip6,
+                             NM_SETTING_IP_CONFIG_GATEWAY,
+                             hfi->tcp_info.gateway_ipaddr,
+                             NULL);
+            }
+            if (is_valid_addr(AF_INET6, hfi->tcp_info.primary_dns_ipaddr)) {
+                nm_setting_ip_config_add_dns(NM_SETTING_IP_CONFIG(s_ip6),
+                                             hfi->tcp_info.primary_dns_ipaddr);
+            }
+            if (is_valid_addr(AF_INET6, hfi->tcp_info.secondary_dns_ipaddr)) {
+                nm_setting_ip_config_add_dns(NM_SETTING_IP_CONFIG(s_ip6),
+                                             hfi->tcp_info.secondary_dns_ipaddr);
+            }
+        }
+        break;
+    default:
+        g_warn_if_reached();
+    }
+
+    nm_connection_add_setting(connection, g_steal_pointer(&s_ip4));
+    nm_connection_add_setting(connection, g_steal_pointer(&s_ip6));
+
+    /* Hostname */
+    if (hfi->tcp_info.host_name && strlen(hfi->tcp_info.host_name) > 0) {
+        g_free(*hostname);
+        *hostname = g_strdup(hfi->tcp_info.host_name);
+    }
+
+    /* TODO: translate the following HFI struct members?
+     *         hfi->tcp_info.pci_sbdf
+     *         hfi->tcp_info.ip_origin
+     *         hfi->tcp_info.dhcp_server_ipaddr
+     *         hfi->tcp_info.this_hfi_is_default_route
+     *         hfi->tcp_info.dhcp_override
+     */
+
+    if (!nm_connection_normalize(connection, NULL, NULL, &error)) {
+        _LOGW(LOGD_CORE, "Generated an invalid connection: %s", error->message);
+        return;
+    }
+
+    g_ptr_array_add(a, g_steal_pointer(&connection));
+}
+
+NMConnection **
+nmi_nbft_reader_parse(const char *sysfs_dir, char **hostname)
+{
+    nm_auto_unref_ptrarray GPtrArray *a     = NULL;
+    gs_free char                     *path  = NULL;
+    gs_free_error GError             *error = NULL;
+    GDir                             *dir;
+    void                             *libnvme_handle = NULL;
+    const char                       *entry_name;
+
+    g_return_val_if_fail(sysfs_dir != NULL, NULL);
+    path = g_build_filename(sysfs_dir, "firmware", "acpi", "tables", NULL);
+
+    dir = g_dir_open(path, 0, NULL);
+    if (!dir)
+        return NULL;
+
+    a = g_ptr_array_new();
+
+    while ((entry_name = g_dir_read_name(dir))) {
+        gs_free char          *entry_path = NULL;
+        struct nbft_info      *nbft;
+        struct nbft_info_hfi **hfi;
+        int                    ret;
+
+        if (!g_str_has_prefix(entry_name, "NBFT"))
+            continue;
+
+        /* attempt to load libnvme only on the first table match, saving some I/O */
+        if (!libnvme_handle && !(libnvme_handle = load_libnvme())) {
+            g_dir_close(dir);
+            return NULL;
+        }
+
+        entry_path = g_build_filename(path, entry_name, NULL);
+        ret        = _nvme_nbft_read(&nbft, entry_path);
+        if (ret) {
+            _LOGW(LOGD_CORE, "Error parsing NBFT table %s: %m", entry_path);
+            continue;
+        }
+
+        for (hfi = nbft->hfi_list; hfi && *hfi; hfi++) {
+            if (!nm_streq((*hfi)->transport, "tcp")) {
+                _LOGW(LOGD_CORE,
+                      "NBFT table %s, HFI descriptor %d: unsupported transport type '%s'",
+                      entry_path,
+                      (*hfi)->index,
+                      (*hfi)->transport);
+                continue;
+            }
+            parse_hfi(a, *hfi, entry_name, hostname);
+        }
+
+        _nvme_nbft_free(nbft);
+    }
+
+    g_dir_close(dir);
+    if (libnvme_handle)
+        dlclose(libnvme_handle);
+    g_ptr_array_add(a, NULL); /* trailing NULL-delimiter */
+    return (NMConnection **) g_ptr_array_free(g_steal_pointer(&a), FALSE);
+}
+
+#else /* WITH_NBFT */
+
+NMConnection **
+nmi_nbft_reader_parse(const char *sysfs_dir, char **hostname)
+{
+    return NULL;
+}
+
+#endif
diff --git a/src/nmcli/agent.c b/src/nmcli/agent.c
index b16a3c51..478f3e68 100644
--- a/src/nmcli/agent.c
+++ b/src/nmcli/agent.c
@@ -57,7 +57,7 @@ usage_agent_all(void)
 static char *pre_input_deftext;
 
 static int
-set_deftext(_NMC_RL_STARTUPHOOK_ARGS)
+set_deftext(void)
 {
     if (pre_input_deftext && rl_startup_hook) {
         rl_insert_text(pre_input_deftext);
diff --git a/src/nmcli/common.c b/src/nmcli/common.c
index 2ced70f3..15a7927b 100644
--- a/src/nmcli/common.c
+++ b/src/nmcli/common.c
@@ -1138,7 +1138,7 @@ nmc_rl_gen_func_ifnames(const char *text, int state)
 char *nmc_rl_pre_input_deftext;
 
 int
-nmc_rl_set_deftext(_NMC_RL_STARTUPHOOK_ARGS)
+nmc_rl_set_deftext(void)
 {
     if (nmc_rl_pre_input_deftext && rl_startup_hook) {
         rl_insert_text(nmc_rl_pre_input_deftext);
diff --git a/src/nmcli/common.h b/src/nmcli/common.h
index 892b2d4e..2ed13054 100644
--- a/src/nmcli/common.h
+++ b/src/nmcli/common.h
@@ -50,17 +50,9 @@ char            *nmc_rl_gen_func_ifnames(const char *text, int state);
 gboolean         nmc_get_in_readline(void);
 void             nmc_set_in_readline(gboolean in_readline);
 
-#if HAVE_EDITLINE_READLINE
-/* libedit has different signature for rl_startup_hook function */
-#define _NMC_RL_STARTUPHOOK_ARGS const char *c, int i
-#else
-/* By default the libreadline shall be used */
-#define _NMC_RL_STARTUPHOOK_ARGS void
-#endif
-
 /* for pre-filling a string to readline prompt */
 extern char *nmc_rl_pre_input_deftext;
-int          nmc_rl_set_deftext(_NMC_RL_STARTUPHOOK_ARGS);
+int          nmc_rl_set_deftext(void);
 
 char *nmc_parse_lldp_capabilities(guint value);
 
diff --git a/src/nmcli/connections.c b/src/nmcli/connections.c
index bccec3a1..d93e16f0 100644
--- a/src/nmcli/connections.c
+++ b/src/nmcli/connections.c
@@ -1055,27 +1055,28 @@ const NmcMetaGenericInfo
     "," NM_SETTING_VETH_SETTING_NAME "," NM_SETTING_802_1X_SETTING_NAME                \
     "," NM_SETTING_WIRELESS_SETTING_NAME "," NM_SETTING_WIRELESS_SECURITY_SETTING_NAME \
     "," NM_SETTING_IP4_CONFIG_SETTING_NAME "," NM_SETTING_IP6_CONFIG_SETTING_NAME      \
-    "," NM_SETTING_SERIAL_SETTING_NAME "," NM_SETTING_WIFI_P2P_SETTING_NAME            \
-    "," NM_SETTING_PPP_SETTING_NAME "," NM_SETTING_PPPOE_SETTING_NAME                  \
-    "," NM_SETTING_ADSL_SETTING_NAME "," NM_SETTING_GSM_SETTING_NAME                   \
-    "," NM_SETTING_CDMA_SETTING_NAME "," NM_SETTING_BLUETOOTH_SETTING_NAME             \
-    "," NM_SETTING_OLPC_MESH_SETTING_NAME "," NM_SETTING_VPN_SETTING_NAME              \
-    "," NM_SETTING_INFINIBAND_SETTING_NAME "," NM_SETTING_BOND_SETTING_NAME            \
-    "," NM_SETTING_BOND_PORT_SETTING_NAME "," NM_SETTING_VLAN_SETTING_NAME             \
-    "," NM_SETTING_BRIDGE_SETTING_NAME "," NM_SETTING_BRIDGE_PORT_SETTING_NAME         \
-    "," NM_SETTING_TEAM_SETTING_NAME "," NM_SETTING_TEAM_PORT_SETTING_NAME             \
-    "," NM_SETTING_OVS_BRIDGE_SETTING_NAME "," NM_SETTING_OVS_INTERFACE_SETTING_NAME   \
-    "," NM_SETTING_OVS_PATCH_SETTING_NAME "," NM_SETTING_OVS_PORT_SETTING_NAME         \
-    "," NM_SETTING_GENERIC_SETTING_NAME "," NM_SETTING_DCB_SETTING_NAME                \
-    "," NM_SETTING_TUN_SETTING_NAME "," NM_SETTING_IP_TUNNEL_SETTING_NAME              \
-    "," NM_SETTING_MACSEC_SETTING_NAME "," NM_SETTING_MACVLAN_SETTING_NAME             \
-    "," NM_SETTING_VXLAN_SETTING_NAME "," NM_SETTING_VRF_SETTING_NAME                  \
-    "," NM_SETTING_WPAN_SETTING_NAME "," NM_SETTING_6LOWPAN_SETTING_NAME               \
-    "," NM_SETTING_WIREGUARD_SETTING_NAME "," NM_SETTING_LINK_SETTING_NAME             \
-    "," NM_SETTING_PROXY_SETTING_NAME "," NM_SETTING_TC_CONFIG_SETTING_NAME            \
-    "," NM_SETTING_SRIOV_SETTING_NAME "," NM_SETTING_ETHTOOL_SETTING_NAME              \
-    "," NM_SETTING_OVS_DPDK_SETTING_NAME "," NM_SETTING_HOSTNAME_SETTING_NAME          \
-    "," NM_SETTING_HSR_SETTING_NAME "," NM_SETTING_IPVLAN_SETTING_NAME
+    "," NM_SETTING_PREFIX_DELEGATION_SETTING_NAME "," NM_SETTING_SERIAL_SETTING_NAME   \
+    "," NM_SETTING_WIFI_P2P_SETTING_NAME "," NM_SETTING_PPP_SETTING_NAME               \
+    "," NM_SETTING_PPPOE_SETTING_NAME "," NM_SETTING_ADSL_SETTING_NAME                 \
+    "," NM_SETTING_GSM_SETTING_NAME "," NM_SETTING_CDMA_SETTING_NAME                   \
+    "," NM_SETTING_BLUETOOTH_SETTING_NAME "," NM_SETTING_OLPC_MESH_SETTING_NAME        \
+    "," NM_SETTING_VPN_SETTING_NAME "," NM_SETTING_INFINIBAND_SETTING_NAME             \
+    "," NM_SETTING_BOND_SETTING_NAME "," NM_SETTING_BOND_PORT_SETTING_NAME             \
+    "," NM_SETTING_VLAN_SETTING_NAME "," NM_SETTING_BRIDGE_SETTING_NAME                \
+    "," NM_SETTING_BRIDGE_PORT_SETTING_NAME "," NM_SETTING_TEAM_SETTING_NAME           \
+    "," NM_SETTING_TEAM_PORT_SETTING_NAME "," NM_SETTING_OVS_BRIDGE_SETTING_NAME       \
+    "," NM_SETTING_OVS_INTERFACE_SETTING_NAME "," NM_SETTING_OVS_PATCH_SETTING_NAME    \
+    "," NM_SETTING_OVS_PORT_SETTING_NAME "," NM_SETTING_GENERIC_SETTING_NAME           \
+    "," NM_SETTING_DCB_SETTING_NAME "," NM_SETTING_TUN_SETTING_NAME                    \
+    "," NM_SETTING_IP_TUNNEL_SETTING_NAME "," NM_SETTING_MACSEC_SETTING_NAME           \
+    "," NM_SETTING_MACVLAN_SETTING_NAME "," NM_SETTING_VXLAN_SETTING_NAME              \
+    "," NM_SETTING_VRF_SETTING_NAME "," NM_SETTING_WPAN_SETTING_NAME                   \
+    "," NM_SETTING_6LOWPAN_SETTING_NAME "," NM_SETTING_WIREGUARD_SETTING_NAME          \
+    "," NM_SETTING_LINK_SETTING_NAME "," NM_SETTING_PROXY_SETTING_NAME                 \
+    "," NM_SETTING_TC_CONFIG_SETTING_NAME "," NM_SETTING_SRIOV_SETTING_NAME            \
+    "," NM_SETTING_ETHTOOL_SETTING_NAME "," NM_SETTING_OVS_DPDK_SETTING_NAME           \
+    "," NM_SETTING_HOSTNAME_SETTING_NAME "," NM_SETTING_HSR_SETTING_NAME               \
+    "," NM_SETTING_IPVLAN_SETTING_NAME
 /* NM_SETTING_DUMMY_SETTING_NAME NM_SETTING_WIMAX_SETTING_NAME */
 
 const NmcMetaGenericInfo *const nmc_fields_con_active_details_groups[] = {
@@ -3510,9 +3511,9 @@ do_connection_down(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
         active = found_active_cons->pdata[i];
 
         if (!nm_client_deactivate_connection(nmc->client, active, NULL, &error)) {
-            nmc_print(_("Connection '%s' deactivation failed: %s\n"),
-                      nm_active_connection_get_id(active),
-                      error->message);
+            nmc_printerr(_("Connection '%s' deactivation failed: %s\n"),
+                         nm_active_connection_get_id(active),
+                         error->message);
             g_clear_error(&error);
 
             if (info) {
@@ -3860,6 +3861,11 @@ check_valid_name_toplevel(const char *val, const char **port_type, GError **erro
         return NM_SETTING_WIRED_SETTING_NAME;
     }
 
+    if (nm_streq(str, "ovs-port"))
+        NM_SET_OUT(port_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME);
+    else if (nm_streq(str, "ovs-interface"))
+        NM_SET_OUT(port_type, NM_SETTING_OVS_PORT_SETTING_NAME);
+
     setting_info = nm_meta_setting_info_editor_find_by_name(str, TRUE);
     if (setting_info)
         return setting_info->general->setting_name;
@@ -3999,8 +4005,10 @@ normalized_controller_for_port(const GPtrArray *connections,
     }
 
     if (!out_controller) {
-        nmc_print(_("Warning: controller='%s' doesn't refer to any existing profile.\n"),
-                  controller);
+        nmc_printerr(
+            _("Warning: controller '%s' doesn't refer to any existing profile of type '%s'.\n"),
+            controller,
+            type);
         out_controller = controller;
         if (out_type)
             *out_type = type;
@@ -4615,8 +4623,11 @@ set_connection_type(NmCli            *nmc,
                     gboolean          allow_reset,
                     GError          **error)
 {
-    GError     *local     = NULL;
-    const char *port_type = NULL;
+    NMSettingConnection *s_con     = nm_connection_get_setting_connection(con);
+    GError              *local     = NULL;
+    const char          *port_type = NULL;
+
+    nm_assert(s_con);
 
     value = check_valid_name_toplevel(value, &port_type, &local);
     if (!value) {
@@ -4631,7 +4642,7 @@ set_connection_type(NmCli            *nmc,
         return FALSE;
     }
 
-    if (port_type) {
+    if (!nm_setting_connection_get_port_type(s_con) && port_type) {
         if (!set_property(nmc->client,
                           con,
                           NM_SETTING_CONNECTION_SETTING_NAME,
@@ -5228,19 +5239,140 @@ get_value(const char        **value,
     return TRUE;
 }
 
+static int
+_copy_connection_properties(const char      ***dst,
+                            const char *const *src,
+                            gboolean           invert_match,
+                            const char *const *options_list_match)
+{
+    const char *option;
+    gboolean    match;
+    int         count = 0;
+
+    while (*src) {
+        option = (**src == '+' || **src == '-') ? *src + 1 : *src;
+        match  = _nm_g_strv_contains(options_list_match, option);
+        match  = invert_match ? !match : match;
+        if (match) {
+            *((*dst)++) = src[0];
+            *((*dst)++) = src[1];
+            count += 2;
+        }
+        src++;
+        if (*src) /* Might be the NULL termination, already */
+            src++;
+    }
+
+    return count;
+}
+
+static gboolean
+is_ip_setting_for_port_connection(NMConnection *connection,
+                                  const char   *setting_name,
+                                  const char   *property_name,
+                                  const char   *value,
+                                  gboolean     *out_is_method_disabled)
+{
+    NMSettingConnection *s_con;
+
+    *out_is_method_disabled = FALSE;
+
+    if (!NM_IN_STRSET(setting_name,
+                      NM_SETTING_IP4_CONFIG_SETTING_NAME,
+                      NM_SETTING_IP6_CONFIG_SETTING_NAME))
+        return FALSE;
+
+    s_con = nm_connection_get_setting_connection(connection);
+    if (!s_con)
+        return FALSE;
+
+    if (!nm_setting_connection_get_controller(s_con))
+        return FALSE;
+
+    if (nm_streq(property_name, NM_SETTING_IP_CONFIG_METHOD)) {
+        if (nm_streq(setting_name, NM_SETTING_IP4_CONFIG_SETTING_NAME)) {
+            if (nm_streq(value, NM_SETTING_IP4_CONFIG_METHOD_DISABLED))
+                *out_is_method_disabled = TRUE;
+        } else {
+            /* IPv6 */
+            if (NM_IN_STRSET(value,
+                             NM_SETTING_IP6_CONFIG_METHOD_DISABLED,
+                             NM_SETTING_IP6_CONFIG_METHOD_IGNORE))
+                *out_is_method_disabled = TRUE;
+        }
+    }
+
+    return TRUE;
+}
+
 gboolean
-nmc_process_connection_properties(NmCli              *nmc,
-                                  NMConnection       *connection,
-                                  int                *argc,
-                                  const char *const **argv,
-                                  gboolean            allow_setting_removal,
-                                  GError            **error)
+nmc_process_connection_properties(NmCli             *nmc,
+                                  NMConnection      *connection,
+                                  int                argc,
+                                  const char *const *argv,
+                                  gboolean           allow_setting_removal,
+                                  GError           **error)
 {
+    gs_free const char **to_free = NULL;
+
+    if (argc == 0)
+        return TRUE;
+
     /* First check if we have a port-type, as this would mean we will not
      * have ip properties but possibly others, port-type specific.
+     * Then check connection.type and connection.controller, as port-type might
+     * be deduced from them.
+     * Don't reorder if we are doing CLI argument completion, as it might give
+     * unexpected results
      */
+    if (!nmc->complete) {
+        const char **dst;
+
+        dst = to_free = g_new(const char *, argc + 1);
+
+        argc = _copy_connection_properties(
+            &dst,
+            argv,
+            FALSE,
+            NM_MAKE_STRV(NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_PORT_TYPE,
+                         "port-type", /* alias */
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_SLAVE_TYPE,
+                         "slave-type" /* alias */));
+        argc += _copy_connection_properties(&dst,
+                                            argv,
+                                            FALSE,
+                                            NM_MAKE_STRV(NM_SETTING_CONNECTION_SETTING_NAME
+                                                         "." NM_SETTING_CONNECTION_TYPE,
+                                                         "type" /* alias */));
+        argc += _copy_connection_properties(
+            &dst,
+            argv,
+            FALSE,
+            NM_MAKE_STRV(NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_CONTROLLER,
+                         "controller", /* alias */
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_MASTER,
+                         "master" /* alias */));
+        argc += _copy_connection_properties(
+            &dst,
+            argv,
+            TRUE,
+            NM_MAKE_STRV(NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_PORT_TYPE,
+                         "port-type",
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_SLAVE_TYPE,
+                         "slave-type",
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_TYPE,
+                         "type",
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_CONTROLLER,
+                         "controller",
+                         NM_SETTING_CONNECTION_SETTING_NAME "." NM_SETTING_CONNECTION_MASTER,
+                         "master"));
+
+        *dst = NULL; /* NULL terminated as expected by get_value() */
+        argv = to_free;
+    }
+
     /* Go through arguments and set properties */
-    do {
+    while (argc) {
         const NMMetaSettingValidPartItem *const *type_settings;
         const NMMetaSettingValidPartItem *const *port_settings;
         NMMetaAccessorModifier                   modifier;
@@ -5259,19 +5391,10 @@ nmc_process_connection_properties(NmCli              *nmc,
         ensure_settings(connection, port_settings);
         ensure_settings(connection, type_settings);
 
-        if (*argc <= 0) {
-            g_set_error_literal(error,
-                                NMCLI_ERROR,
-                                NMC_RESULT_ERROR_USER_INPUT,
-                                _("Error: <setting>.<property> argument is missing."));
-            return FALSE;
-        }
-
         nm_assert(argv);
         nm_assert(*argv);
-        nm_assert(**argv);
 
-        option_orig = **argv;
+        option_orig = *argv;
 
         switch (option_orig[0]) {
         case '+':
@@ -5293,15 +5416,15 @@ nmc_process_connection_properties(NmCli              *nmc,
             NMSetting  *ss;
             const char *setting_name;
 
-            (*argc)--;
-            (*argv)++;
+            argc--;
+            argv++;
 
-            if (*argc == 1 && nmc->complete) {
+            if (argc == 1 && nmc->complete) {
                 complete_existing_setting(nmc, connection, value);
-                return TRUE;
+                break;
             }
 
-            if (!*argc) {
+            if (!argc) {
                 g_set_error_literal(error,
                                     NMCLI_ERROR,
                                     NMC_RESULT_ERROR_USER_INPUT,
@@ -5309,9 +5432,9 @@ nmc_process_connection_properties(NmCli              *nmc,
                 return FALSE;
             }
 
-            setting_name = **argv;
-            (*argc)--;
-            (*argv)++;
+            setting_name = *argv;
+            argc--;
+            argv++;
 
             ss = is_setting_valid(connection, type_settings, port_settings, setting_name);
             if (!ss) {
@@ -5341,30 +5464,64 @@ nmc_process_connection_properties(NmCli              *nmc,
             /* This seems like a <setting>.<property> (such as "connection.id" or "bond.mode"),
              * optionally prefixed with "+| or "-". */
 
-            if (*argc == 1 && nmc->complete)
+            if (argc == 1 && nmc->complete)
                 complete_property_name(nmc, connection, modifier, option_sett, option_prop);
 
+            argc--;
+            argv++;
+            if (!get_value(&value, &argc, &argv, option_orig, error))
+                return FALSE;
+
             option_sett_expanded =
                 check_valid_name(option_sett, type_settings, port_settings, &local);
             if (!option_sett_expanded) {
-                g_set_error(error,
-                            NMCLI_ERROR,
-                            NMC_RESULT_ERROR_USER_INPUT,
-                            _("Error: invalid or not allowed setting '%s': %s."),
-                            option_sett,
-                            local->message);
-                g_clear_error(&local);
-                return FALSE;
+                gboolean raise_error        = TRUE;
+                gboolean is_method_disabled = FALSE;
+
+                /* The setting does not exist or is now allowed for the given
+                 * connection type or for the given port type. In the past nmcli
+                 * accepted IP-config properties for port connections under some
+                 * circumstances. For backward bug compatibility, still allow
+                 * the user to set the IP method to disabled/ignore for ports,
+                 * so that we don't break user scripts.
+                 * */
+                if (is_ip_setting_for_port_connection(connection,
+                                                      option_sett,
+                                                      option_prop,
+                                                      value,
+                                                      &is_method_disabled)) {
+                    if (is_method_disabled) {
+                        /* Allowed */
+                        option_sett_expanded = option_sett;
+                        raise_error          = FALSE;
+                        g_clear_error(&local);
+                    } else {
+                        /* The property is not a disabled/ignore IP method. Raise a
+                         * meaningful error, instead of the generic "setting X is not
+                         * among LIST" */
+                        g_clear_error(&local);
+                        g_set_error(&local,
+                                    NMCLI_ERROR,
+                                    NMC_RESULT_ERROR_USER_INPUT,
+                                    _("port connections cannot have IP configuration"));
+                        raise_error = TRUE;
+                    }
+                }
+                if (raise_error) {
+                    g_set_error(error,
+                                NMCLI_ERROR,
+                                NMC_RESULT_ERROR_USER_INPUT,
+                                _("Error: invalid or not allowed setting '%s': %s."),
+                                option_sett,
+                                local->message);
+                    g_clear_error(&local);
+                    return FALSE;
+                }
             }
 
-            (*argc)--;
-            (*argv)++;
-            if (!get_value(&value, argc, argv, option_orig, error))
-                return FALSE;
-
-            if (!*argc && nmc->complete) {
+            if (!argc && nmc->complete) {
                 complete_property(nmc, option_sett, option_prop, value ?: "", connection);
-                return TRUE;
+                break;
             }
 
             if (!set_property(nmc->client,
@@ -5446,7 +5603,7 @@ nmc_process_connection_properties(NmCli              *nmc,
         }
 
         if (!chosen) {
-            if (*argc == 1 && nmc->complete) {
+            if (argc == 1 && nmc->complete) {
                 if (allow_setting_removal && g_str_has_prefix("remove", option))
                     nmc_print("remove\n");
                 complete_property_name(nmc, connection, modifier, option, NULL);
@@ -5459,21 +5616,20 @@ nmc_process_connection_properties(NmCli              *nmc,
             return FALSE;
         }
 
-        if (*argc == 1 && nmc->complete)
+        if (argc == 1 && nmc->complete)
             complete_property_name(nmc, connection, modifier, option, NULL);
 
-        (*argc)--;
-        (*argv)++;
-        if (!get_value(&value, argc, argv, option_orig, error))
+        argc--;
+        argv++;
+        if (!get_value(&value, &argc, &argv, option_orig, error))
             return FALSE;
 
-        if (!*argc && nmc->complete)
+        if (!argc && nmc->complete)
             complete_option(nmc, chosen, value ?: "", connection);
 
         if (!set_option(nmc, connection, chosen, value, TRUE, error))
             return FALSE;
-
-    } while (*argc);
+    }
 
     return TRUE;
 }
@@ -5910,6 +6066,7 @@ nmc_add_connection(NmCli *nmc, NMConnection *connection, gboolean temporary)
 static void
 do_connection_add(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const *argv)
 {
+    gs_unref_ptrarray GPtrArray  *props      = NULL;
     gs_unref_object NMConnection *connection = NULL;
     NMSettingConnection          *s_con;
     gs_free_error GError         *error          = NULL;
@@ -5928,16 +6085,21 @@ do_connection_add(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const
     s_con = (NMSettingConnection *) nm_setting_connection_new();
     nm_connection_add_setting(connection, NM_SETTING(s_con));
 
-read_properties:
-    g_clear_error(&error);
-    /* Get the arguments from the command line if any */
-    if (argc && !nmc_process_connection_properties(nmc, connection, &argc, &argv, FALSE, &error)) {
-        if (nm_streq0(*argv, "--") && !seen_dash_dash) {
+    props = g_ptr_array_new_full(sizeof(const char *) * (argc + 1), NULL);
+
+    while (argc) {
+        if (nm_streq0(*argv, "--")) {
             /* This is for compatibility with older nmcli that required
              * options and properties to be separated with "--" */
-            seen_dash_dash = TRUE;
-            next_arg(nmc, &argc, &argv, NULL);
-            goto read_properties;
+            if (seen_dash_dash) {
+                g_string_printf(nmc->return_text,
+                                _("Error: argument '--' can only be passed once"));
+                nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
+                goto finish;
+            } else {
+                seen_dash_dash = TRUE;
+                next_arg(nmc, &argc, &argv, NULL);
+            }
         } else if (nm_streq0(*argv, "save")) {
             /* It would be better if "save" was a separate argument and not
              * mixed with properties, but there's not much we can do about it now. */
@@ -5950,16 +6112,31 @@ read_properties:
                 nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
                 goto finish;
             }
-            g_clear_error(&error);
             if (!nmc_string_to_bool(*argv, &save_bool, &error)) {
                 g_string_printf(nmc->return_text, _("Error: 'save': %s."), error->message);
                 nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
                 goto finish;
             }
             next_arg(nmc, &argc, &argv, NULL);
-            goto read_properties;
+        } else {
+            g_ptr_array_add(props, (gpointer) *argv);
+            argc--;
+            argv++;
+            if (argc > 0) {
+                g_ptr_array_add(props, (gpointer) *argv);
+                argc--;
+                argv++;
+            }
         }
+    }
+    g_ptr_array_add(props, NULL); /* Must be NULL terminated */
 
+    if (!nmc_process_connection_properties(nmc,
+                                           connection,
+                                           props->len - 1,
+                                           (const char *const *) props->pdata,
+                                           FALSE,
+                                           &error)) {
         g_string_assign(nmc->return_text, error->message);
         nmc->return_value = error->code;
         goto finish;
@@ -6073,7 +6250,7 @@ finish:
 /* Functions for readline TAB completion in editor */
 
 #if HAVE_EDITLINE_READLINE
-#define uuid_display_hook ((void (*)(void)) NULL)
+#define uuid_display_hook ((void (*)(char **, int, int)) NULL)
 #else
 static void
 uuid_display_hook(char **array, int len, int max_len)
@@ -6944,7 +7121,7 @@ load_history_cmds(const char *uuid)
     kf       = g_key_file_new();
     if (!g_key_file_load_from_file(kf, filename, G_KEY_FILE_KEEP_COMMENTS, &err)) {
         if (g_error_matches(err, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_PARSE))
-            nmc_print("Warning: %s parse error: %s\n", filename, err->message);
+            nmc_printerr("Warning: %s parse error: %s\n", filename, err->message);
         g_key_file_free(kf);
         g_free(filename);
         return;
@@ -6983,7 +7160,7 @@ save_history_cmds(const char *uuid)
     if (!g_key_file_load_from_file(kf, filename, G_KEY_FILE_KEEP_COMMENTS, &error)) {
         if (!g_error_matches(error, G_FILE_ERROR, G_FILE_ERROR_NOENT)
             && !g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) {
-            nmc_print("Warning: %s parse error: %s\n", filename, error->message);
+            nmc_printerr("Warning: %s parse error: %s\n", filename, error->message);
             return;
         }
         g_clear_error(&error);
@@ -7256,7 +7433,7 @@ editor_main_help(const char *command)
                         "is not saved, the user is asked to confirm the action.\n"));
             break;
         default:
-            nmc_print(_("Unknown command: '%s'\n"), command);
+            nmc_printerr(_("Unknown command: '%s'\n"), command);
             break;
         }
     }
@@ -7393,7 +7570,7 @@ editor_sub_usage(const char *command)
                         "is not saved, the user is asked to confirm the action.\n"));
             break;
         default:
-            nmc_print(_("Unknown command: '%s'\n"), command);
+            nmc_printerr(_("Unknown command: '%s'\n"), command);
             break;
         }
     }
@@ -7477,7 +7654,7 @@ progress_activation_editor_cb(gpointer user_data)
     } else if (ac_state == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED
                || dev_state == NM_DEVICE_STATE_FAILED) {
         nmc_terminal_erase_line();
-        nmc_print(_("Error: Connection activation failed.\n"));
+        nmc_printerr(_("Error: Connection activation failed.\n"));
         goto finish;
     }
 
@@ -7704,9 +7881,9 @@ property_edit_submenu(NmCli               *nmc,
                                                   prop_val_user,
                                                   &tmp_err);
             if (!set_result) {
-                nmc_print(_("Error: failed to set '%s' property: %s\n"),
-                          prop_name,
-                          tmp_err->message);
+                nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
+                             prop_name,
+                             tmp_err->message);
                 g_clear_error(&tmp_err);
             }
             break;
@@ -7723,9 +7900,9 @@ property_edit_submenu(NmCli               *nmc,
                                           NM_META_ACCESSOR_MODIFIER_SET,
                                           prop_val_user,
                                           &tmp_err)) {
-                nmc_print(_("Error: failed to set '%s' property: %s\n"),
-                          prop_name,
-                          tmp_err->message);
+                nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
+                             prop_name,
+                             tmp_err->message);
                 g_clear_error(&tmp_err);
             }
             break;
@@ -7738,7 +7915,7 @@ property_edit_submenu(NmCli               *nmc,
                                                             : NM_META_ACCESSOR_MODIFIER_SET),
                                           cmd_property_arg,
                                           &tmp_err)) {
-                nmc_print(_("Error: %s\n"), tmp_err->message);
+                nmc_printerr(_("Error: %s\n"), tmp_err->message);
                 g_clear_error(&tmp_err);
             }
             break;
@@ -7757,7 +7934,7 @@ property_edit_submenu(NmCli               *nmc,
                          || matches(cmd_property_arg, "all"))
                     editor_show_connection(connection, nmc);
                 else
-                    nmc_print(_("Unknown command argument: '%s'\n"), cmd_property_arg);
+                    nmc_printerr(_("Unknown command argument: '%s'\n"), cmd_property_arg);
             } else {
                 gs_free char *prop_val = NULL;
 
@@ -7785,7 +7962,7 @@ property_edit_submenu(NmCli               *nmc,
 
         case NMC_EDITOR_SUB_CMD_UNKNOWN:
         default:
-            nmc_print(_("Unknown command: '%s'\n"), cmd_property_user);
+            nmc_printerr(_("Unknown command: '%s'\n"), cmd_property_user);
             break;
         }
     }
@@ -7863,7 +8040,7 @@ ask_check_setting(const NmcConfig                         *nmc_config,
                                           valid_settings_main,
                                           valid_settings_port,
                                           &err))) {
-        nmc_print(_("Error: invalid setting name; %s\n"), err->message);
+        nmc_printerr(_("Error: invalid setting name; %s\n"), err->message);
         g_clear_error(&err);
     }
     return setting_name;
@@ -7888,7 +8065,7 @@ ask_check_property(const NmcConfig *nmc_config,
 
     prop_name = nmc_string_is_valid(prop_name_user, valid_props, &tmp_err);
     if (!prop_name)
-        nmc_print(_("Error: property %s\n"), tmp_err->message);
+        nmc_printerr(_("Error: property %s\n"), tmp_err->message);
 
     return prop_name;
 }
@@ -8098,15 +8275,15 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                   NM_META_ACCESSOR_MODIFIER_ADD,
                                                   prop_val_user,
                                                   &tmp_err)) {
-                        nmc_print(_("Error: failed to set '%s' property: %s\n"),
-                                  prop_name,
-                                  tmp_err->message);
+                        nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
+                                     prop_name,
+                                     tmp_err->message);
                         g_clear_error(&tmp_err);
                     }
                 } else {
-                    nmc_print(_("Error: no setting selected; valid are [%s]\n"),
-                              valid_settings_str);
-                    nmc_print(_("use 'goto <setting>' first, or 'set <setting>.<property>'\n"));
+                    nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
+                                 valid_settings_str);
+                    nmc_printerr(_("use 'goto <setting>' first, or 'set <setting>.<property>'\n"));
                 }
             } else {
                 gs_free char              *prop_name  = NULL;
@@ -8126,9 +8303,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                             valid_settings_port);
                         ss         = ss_created;
                         if (!ss) {
-                            nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
-                                      cmd_arg_s,
-                                      valid_settings_str);
+                            nmc_printerr(
+                                _("Error: invalid setting argument '%s'; valid are [%s]\n"),
+                                cmd_arg_s,
+                                valid_settings_str);
                             break;
                         }
                     }
@@ -8136,14 +8314,14 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                     if (menu_ctx.curr_setting)
                         ss = menu_ctx.curr_setting;
                     else {
-                        nmc_print(_("Error: missing setting for '%s' property\n"), cmd_arg_p);
+                        nmc_printerr(_("Error: missing setting for '%s' property\n"), cmd_arg_p);
                         break;
                     }
                 }
 
                 prop_name = is_property_valid(ss, cmd_arg_p, &tmp_err);
                 if (!prop_name) {
-                    nmc_print(_("Error: invalid property: %s\n"), tmp_err->message);
+                    nmc_printerr(_("Error: invalid property: %s\n"), tmp_err->message);
                     g_clear_error(&tmp_err);
                     break;
                 }
@@ -8173,9 +8351,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                         : NM_META_ACCESSOR_MODIFIER_SET,
                                               cmd_arg_v,
                                               &tmp_err)) {
-                    nmc_print(_("Error: failed to set '%s' property: %s\n"),
-                              prop_name,
-                              tmp_err->message);
+                    nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
+                                 prop_name,
+                                 tmp_err->message);
                     g_clear_error(&tmp_err);
                 }
 
@@ -8206,7 +8384,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
 
                     setting_info = nm_meta_setting_info_editor_find_by_name(setting_name, FALSE);
                     if (!setting_info) {
-                        nmc_print(_("Error: unknown setting '%s'\n"), setting_name);
+                        nmc_printerr(_("Error: unknown setting '%s'\n"), setting_name);
                         break;
                     }
 
@@ -8278,13 +8456,14 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                   NM_META_ACCESSOR_MODIFIER_SET,
                                                   NULL,
                                                   &tmp_err)) {
-                        nmc_print(_("Error: failed to remove value of '%s': %s\n"),
-                                  prop_name,
-                                  tmp_err->message);
+                        nmc_printerr(_("Error: failed to remove value of '%s': %s\n"),
+                                     prop_name,
+                                     tmp_err->message);
                         g_clear_error(&tmp_err);
                     }
                 } else
-                    nmc_print(_("Error: no argument given; valid are [%s]\n"), valid_settings_str);
+                    nmc_printerr(_("Error: no argument given; valid are [%s]\n"),
+                                 valid_settings_str);
             } else {
                 NMSetting *ss = NULL;
                 gboolean   descr_all;
@@ -8306,9 +8485,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                             nmc_print(_("Setting '%s' is not present in the connection.\n"),
                                       user_s);
                         } else {
-                            nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
-                                      user_s,
-                                      valid_settings_str);
+                            nmc_printerr(
+                                _("Error: invalid setting argument '%s'; valid are [%s]\n"),
+                                user_s,
+                                valid_settings_str);
                         }
                         break;
                     }
@@ -8340,9 +8520,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                                 : NM_META_ACCESSOR_MODIFIER_SET,
                                                       cmd_arg_v ? cmd_arg_v : NULL,
                                                       &tmp_err)) {
-                            nmc_print(_("Error: failed to remove value of '%s': %s\n"),
-                                      prop_name,
-                                      tmp_err->message);
+                            nmc_printerr(_("Error: failed to remove value of '%s': %s\n"),
+                                         prop_name,
+                                         tmp_err->message);
                         }
                     } else {
                         NMSetting *s_tmp;
@@ -8366,8 +8546,8 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                 nmc_tab_completion.setting = NULL; /* for TAB completion */
                             }
                         } else {
-                            nmc_print(_("Error: %s properties, nor it is a setting name.\n"),
-                                      tmp_err->message);
+                            nmc_printerr(_("Error: %s properties, nor it is a setting name.\n"),
+                                         tmp_err->message);
                         }
                     }
                 }
@@ -8390,9 +8570,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                     /* Show property description */
                     print_property_description(menu_ctx.curr_setting, prop_name);
                 } else {
-                    nmc_print(_("Error: no setting selected; valid are [%s]\n"),
-                              valid_settings_str);
-                    nmc_print(
+                    nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
+                                 valid_settings_str);
+                    nmc_printerr(
                         _("use 'goto <setting>' first, or 'describe <setting>.<property>'\n"));
                 }
             } else {
@@ -8414,9 +8594,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                     valid_settings_main,
                                                     valid_settings_port);
                         if (!ss) {
-                            nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
-                                      user_s,
-                                      valid_settings_str);
+                            nmc_printerr(
+                                _("Error: invalid setting argument '%s'; valid are [%s]\n"),
+                                user_s,
+                                valid_settings_str);
                             break;
                         }
                         ss_free = ss;
@@ -8425,9 +8606,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                     ss = menu_ctx.curr_setting;
 
                 if (!ss) {
-                    nmc_print(_("Error: no setting selected; valid are [%s]\n"),
-                              valid_settings_str);
-                    nmc_print(
+                    nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
+                                 valid_settings_str);
+                    nmc_printerr(
                         _("use 'goto <setting>' first, or 'describe <setting>.<property>'\n"));
                 } else if (descr_all) {
                     /* Show description for all properties */
@@ -8451,9 +8632,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                         if (s_tmp)
                             print_setting_description(s_tmp);
                         else {
-                            nmc_print(_("Error: invalid property: %s, "
-                                        "neither a valid setting name.\n"),
-                                      tmp_err->message);
+                            nmc_printerr(_("Error: invalid property: %s, "
+                                           "neither a valid setting name.\n"),
+                                         tmp_err->message);
                         }
                     }
                 }
@@ -8481,13 +8662,13 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                                   valid_settings_port,
                                                   NULL);
                         if (!s_name) {
-                            nmc_print(_("Error: unknown setting: '%s'\n"), user_s);
+                            nmc_printerr(_("Error: unknown setting: '%s'\n"), user_s);
                             break;
                         }
                         ss = nm_connection_get_setting_by_name(connection, s_name);
                         if (!ss) {
-                            nmc_print(_("Error: '%s' setting not present in the connection\n"),
-                                      s_name);
+                            nmc_printerr(_("Error: '%s' setting not present in the connection\n"),
+                                         s_name);
                             break;
                         }
                     } else
@@ -8518,9 +8699,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                 /* Print the whole setting */
                                 editor_show_setting(s_tmp, nmc);
                             } else
-                                nmc_print(_("Error: invalid property: %s%s\n"),
-                                          err->message,
-                                          cmd_arg_s ? "" : _(", neither a valid setting name"));
+                                nmc_printerr(_("Error: invalid property: %s%s\n"),
+                                             err->message,
+                                             cmd_arg_s ? "" : _(", neither a valid setting name"));
                             g_clear_error(&err);
                         }
                     }
@@ -8536,7 +8717,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
         case NMC_EDITOR_MAIN_CMD_VERIFY:
             /* Verify current setting or the whole connection */
             if (cmd_arg && !nm_streq(cmd_arg, "all") && !nm_streq(cmd_arg, "fix")) {
-                nmc_print(_("Invalid verify option: %s\n"), cmd_arg);
+                nmc_printerr(_("Invalid verify option: %s\n"), cmd_arg);
                 break;
             }
 
@@ -8544,9 +8725,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 gs_free_error GError *tmp_err = NULL;
 
                 nm_setting_verify(menu_ctx.curr_setting, NULL, &tmp_err);
-                nmc_print(_("Verify setting '%s': %s\n"),
-                          nm_setting_get_name(menu_ctx.curr_setting),
-                          tmp_err ? tmp_err->message : "OK");
+                nmc_printerr(_("Verify setting '%s': %s\n"),
+                             nm_setting_get_name(menu_ctx.curr_setting),
+                             tmp_err ? tmp_err->message : "OK");
             } else {
                 gs_free_error GError *tmp_err = NULL;
                 gboolean              fixed   = TRUE;
@@ -8559,9 +8740,15 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                     g_clear_error(&tmp_err);
                     fixed = nm_connection_normalize(connection, NULL, &modified, &tmp_err);
                 }
-                nmc_print(_("Verify connection: %s\n"), tmp_err ? tmp_err->message : "OK");
+
+                if (tmp_err) {
+                    nmc_printerr(_("Verify connection: %s\n"), tmp_err->message);
+                } else {
+                    nmc_print(_("Verify connection: %s\n"), "OK");
+                }
+
                 if (!fixed)
-                    nmc_print(_("The error cannot be fixed automatically.\n"));
+                    nmc_printerr(_("The error cannot be fixed automatically.\n"));
             }
             break;
 
@@ -8581,7 +8768,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                     else if (matches(cmd_arg, "persistent"))
                         temporary = FALSE;
                     else {
-                        nmc_print(_("Error: invalid argument '%s'\n"), cmd_arg);
+                        nmc_printerr(_("Error: invalid argument '%s'\n"), cmd_arg);
                         break;
                     }
                 }
@@ -8638,20 +8825,20 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 g_source_destroy(source);
 
                 if (nmc_editor_error) {
-                    nmc_print(_("Error: Failed to save '%s' (%s) connection: %s\n"),
-                              nm_connection_get_id(connection),
-                              nm_connection_get_uuid(connection),
-                              nmc_editor_error->message);
+                    nmc_printerr(_("Error: Failed to save '%s' (%s) connection: %s\n"),
+                                 nm_connection_get_id(connection),
+                                 nm_connection_get_uuid(connection),
+                                 nmc_editor_error->message);
                     g_error_free(nmc_editor_error);
                 } else if (timeout) {
-                    nmc_print(_("Error: Timeout saving '%s' (%s) connection\n"),
-                              nm_connection_get_id(connection),
-                              nm_connection_get_uuid(connection));
+                    nmc_printerr(_("Error: Timeout saving '%s' (%s) connection\n"),
+                                 nm_connection_get_id(connection),
+                                 nm_connection_get_uuid(connection));
                 } else {
-                    nmc_print(!rem_con ? _("Connection '%s' (%s) successfully saved.\n")
-                                       : _("Connection '%s' (%s) successfully updated.\n"),
-                              nm_connection_get_id(connection),
-                              nm_connection_get_uuid(connection));
+                    nmc_printerr(!rem_con ? _("Connection '%s' (%s) successfully saved.\n")
+                                          : _("Connection '%s' (%s) successfully updated.\n"),
+                                 nm_connection_get_id(connection),
+                                 nm_connection_get_uuid(connection));
 
                     con_tmp = nm_client_get_connection_by_uuid(nmc->client,
                                                                nm_connection_get_uuid(connection));
@@ -8683,9 +8870,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 nmc_editor_cb_called = FALSE;
                 nmc_editor_error     = NULL;
             } else {
-                nmc_print(_("Error: connection verification failed: %s\n"),
-                          err1 ? err1->message : _("(unknown error)"));
-                nmc_print(_("You may try running 'verify fix' to fix errors.\n"));
+                nmc_printerr(_("Error: connection verification failed: %s\n"),
+                             err1 ? err1->message : _("(unknown error)"));
+                nmc_printerr(_("You may try running 'verify fix' to fix errors.\n"));
             }
 
             g_clear_error(&err1);
@@ -8708,11 +8895,11 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
 
             if (is_connection_dirty(connection, rem_con)) {
                 /* TRANSLATORS: do not translate 'save', leave it as it is */
-                nmc_print(_("Error: connection is not saved. Type 'save' first.\n"));
+                nmc_printerr(_("Error: connection is not saved. Type 'save' first.\n"));
                 break;
             }
             if (!nm_connection_verify(NM_CONNECTION(rem_con), &tmp_err)) {
-                nmc_print(_("Error: connection is not valid: %s\n"), tmp_err->message);
+                nmc_printerr(_("Error: connection is not valid: %s\n"), tmp_err->message);
                 g_clear_error(&tmp_err);
                 break;
             }
@@ -8728,7 +8915,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                                          NULL,
                                          activate_connection_editor_cb,
                                          &tmp_err)) {
-                nmc_print(_("Error: Cannot activate connection: %s.\n"), tmp_err->message);
+                nmc_printerr(_("Error: Cannot activate connection: %s.\n"), tmp_err->message);
                 g_clear_error(&tmp_err);
                 break;
             }
@@ -8737,10 +8924,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 g_main_context_iteration(NULL, TRUE);
 
             if (nmc_editor_error) {
-                nmc_print(_("Error: Failed to activate '%s' (%s) connection: %s\n"),
-                          nm_connection_get_id(connection),
-                          nm_connection_get_uuid(connection),
-                          nmc_editor_error->message);
+                nmc_printerr(_("Error: Failed to activate '%s' (%s) connection: %s\n"),
+                             nm_connection_get_id(connection),
+                             nm_connection_get_uuid(connection),
+                             nmc_editor_error->message);
                 g_error_free(nmc_editor_error);
             } else {
                 nmc_readline(&nmc->nmc_config,
@@ -8779,7 +8966,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 GError  *tmp_err = NULL;
                 gboolean bb;
                 if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
-                    nmc_print(_("Error: status-line: %s\n"), tmp_err->message);
+                    nmc_printerr(_("Error: status-line: %s\n"), tmp_err->message);
                     g_clear_error(&tmp_err);
                 } else
                     nmc->editor_status_line = bb;
@@ -8787,7 +8974,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 GError  *tmp_err = NULL;
                 gboolean bb;
                 if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
-                    nmc_print(_("Error: save-confirmation: %s\n"), tmp_err->message);
+                    nmc_printerr(_("Error: save-confirmation: %s\n"), tmp_err->message);
                     g_clear_error(&tmp_err);
                 } else
                     nmc->editor_save_confirmation = bb;
@@ -8795,7 +8982,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                 GError  *tmp_err = NULL;
                 gboolean bb;
                 if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
-                    nmc_print(_("Error: show-secrets: %s\n"), tmp_err->message);
+                    nmc_printerr(_("Error: show-secrets: %s\n"), tmp_err->message);
                     g_clear_error(&tmp_err);
                 } else
                     nmc->nmc_config_mutable.show_secrets = bb;
@@ -8811,9 +8998,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
                           nmc->editor_save_confirmation ? "yes" : "no",
                           nmc->nmc_config.show_secrets ? "yes" : "no");
             } else
-                nmc_print(_("Invalid configuration option '%s'; allowed [%s]\n"),
-                          cmd_arg_v ?: "",
-                          "status-line, save-confirmation, show-secrets");
+                nmc_printerr(_("Invalid configuration option '%s'; allowed [%s]\n"),
+                             cmd_arg_v ?: "",
+                             "status-line, save-confirmation, show-secrets");
 
             break;
 
@@ -8827,7 +9014,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
 
         case NMC_EDITOR_MAIN_CMD_UNKNOWN:
         default:
-            nmc_print(_("Unknown command: '%s'\n"), cmd_user);
+            nmc_printerr(_("Unknown command: '%s'\n"), cmd_user);
             break;
         }
     }
@@ -9075,10 +9262,11 @@ do_connection_edit(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
         connection_type = nm_setting_connection_get_connection_type(s_con);
 
         if (type)
-            nmc_print(_("Warning: editing existing connection '%s'; 'type' argument is ignored\n"),
-                      nm_connection_get_id(connection));
+            nmc_printerr(
+                _("Warning: editing existing connection '%s'; 'type' argument is ignored\n"),
+                nm_connection_get_id(connection));
         if (con_name)
-            nmc_print(
+            nmc_printerr(
                 _("Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"),
                 nm_connection_get_id(connection));
 
@@ -9106,9 +9294,9 @@ do_connection_edit(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
             gs_free char *type_ask = NULL;
 
             if (!type)
-                nmc_print(_("Valid connection types: %s\n"), tmp_str);
+                nmc_printerr(_("Valid connection types: %s\n"), tmp_str);
             else
-                nmc_print(_("Error: invalid connection type; %s\n"), err1->message);
+                nmc_printerr(_("Error: invalid connection type; %s\n"), err1->message);
             g_clear_error(&err1);
 
             type_ask = nmc_readline(&nmc->nmc_config, EDITOR_PROMPT_CON_TYPE);
@@ -9239,7 +9427,7 @@ do_connection_modify(const NMCCommand *cmd, NmCli *nmc, int argc, const char *co
 
     /* Don't insist on having argument if we're running in offline mode. */
     if (!nmc->nmc_config.offline || argc > 0) {
-        if (!nmc_process_connection_properties(nmc, connection, &argc, &argv, TRUE, &error)) {
+        if (!nmc_process_connection_properties(nmc, connection, argc, argv, TRUE, &error)) {
             g_string_assign(nmc->return_text, error->message);
             nmc->return_value = error->code;
             return;
diff --git a/src/nmcli/connections.h b/src/nmcli/connections.h
index 48c98170..a343ca25 100644
--- a/src/nmcli/connections.h
+++ b/src/nmcli/connections.h
@@ -12,12 +12,12 @@ void nmc_monitor_connections(NmCli *nmc);
 
 const char *nmc_connection_check_deprecated(NMConnection *c);
 
-gboolean nmc_process_connection_properties(NmCli              *nmc,
-                                           NMConnection       *connection,
-                                           int                *argc,
-                                           const char *const **argv,
-                                           gboolean            allow_remove_setting,
-                                           GError            **error);
+gboolean nmc_process_connection_properties(NmCli             *nmc,
+                                           NMConnection      *connection,
+                                           int                argc,
+                                           const char *const *args,
+                                           gboolean           allow_remove_setting,
+                                           GError           **error);
 
 NMMetaColor nmc_active_connection_state_to_color(NMActiveConnection *ac);
 
diff --git a/src/nmcli/devices.c b/src/nmcli/devices.c
index b308e440..9a018113 100644
--- a/src/nmcli/devices.c
+++ b/src/nmcli/devices.c
@@ -2596,7 +2596,7 @@ modify_get_applied_cb(GObject *object, GAsyncResult *result, gpointer user_data)
     argc = info->argc;
     argv = (const char *const *) info->argv;
 
-    if (!nmc_process_connection_properties(info->nmc, connection, &argc, &argv, TRUE, &error)) {
+    if (!nmc_process_connection_properties(info->nmc, connection, argc, argv, TRUE, &error)) {
         g_string_assign(nmc->return_text, error->message);
         nmc->return_value = error->code;
         quit();
diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
index 77e6c427..67b14d4c 100644
--- a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
+++ b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
@@ -53,7 +53,7 @@
                   format="MAC address"
                   special-values="preserve, permanent, random, stable, stable-ssid" />
         <property name="generate-mac-address-mask"
-                  nmcli-description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered."
+                  nmcli-description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows one to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered."
                   format="string" />
         <property name="mac-address-blacklist"
                   nmcli-description="A list of permanent MAC addresses of Wi-Fi devices to which this connection should never apply.  Each MAC address should be given in the standard hex-digits-and-colons notation (eg &quot;00:11:22:33:44:55&quot;)."
@@ -362,7 +362,7 @@
                   format="MAC address"
                   special-values="preserve, permanent, random, stable" />
         <property name="generate-mac-address-mask"
-                  nmcli-description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered."
+                  nmcli-description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows one to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered."
                   format="string" />
         <property name="mac-address-blacklist"
                   nmcli-description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)."
@@ -623,7 +623,7 @@
                   nmcli-description="The connection.uuid is the real identifier of a profile. It cannot change and it must be unique. It is therefore often best to refer to a profile by UUID, for example with `nmcli connection up uuid $UUID`. The UUID cannot be changed, except in offline mode. In that case, the special values &quot;new&quot;, &quot;generate&quot; and &quot;&quot; are allowed to generate a new random UUID."
                   format="string" />
         <property name="stable-id"
-                  nmcli-description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used to derive the DHCP client identifier with ipv4.dhcp-client-id=stable, the DHCPv6 DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid] and the DHCP IAID with ipv4.iaid=stable and ipv6.iaid=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device&apos;s name is included, so that different interfaces yield different addresses. The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret_key. See NetworkManager(8) manual about the secret-key and the host identity. The &apos;$&apos; character is treated special to perform dynamic substitutions at activation time. Currently, supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${MAC}&quot;, &quot;${NETWORK_SSID}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;.  These effectively create unique IDs per-connection, per-device, per-SSID, per-boot, or every time.  The &quot;${CONNECTION}&quot; uses the profile&apos;s connection.uuid, the &quot;${DEVICE}&quot; uses the interface name of the device and &quot;${MAC}&quot; the permanent MAC address of the device. &quot;${NETWORK_SSID}&quot; uses the SSID for Wi-Fi networks and falls back to &quot;${CONNECTION}&quot; on other networks. Any unrecognized patterns following &apos;$&apos; are treated verbatim, however are reserved for future use. You are thus advised to avoid &apos;$&apos; or escape it as &quot;$$&quot;.  For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is &quot;default${CONNECTION}&quot; go generate an ID unique per connection profile."
+                  nmcli-description="This represents the identity of the connection used for various purposes. It allows configuring multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used to derive the DHCP client identifier with ipv4.dhcp-client-id=stable, the DHCPv6 DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid] and the DHCP IAID with ipv4.iaid=stable and ipv6.iaid=stable. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device&apos;s name is included, so that different interfaces yield different addresses. The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret_key. See NetworkManager(8) manual about the secret-key and the host identity. The &apos;$&apos; character is treated special to perform dynamic substitutions at activation time. Currently, supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${MAC}&quot;, &quot;${NETWORK_SSID}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;.  These effectively create unique IDs per-connection, per-device, per-SSID, per-boot, or every time.  The &quot;${CONNECTION}&quot; uses the profile&apos;s connection.uuid, the &quot;${DEVICE}&quot; uses the interface name of the device and &quot;${MAC}&quot; the permanent MAC address of the device. &quot;${NETWORK_SSID}&quot; uses the SSID for Wi-Fi networks and falls back to &quot;${CONNECTION}&quot; on other networks. Any unrecognized patterns following &apos;$&apos; are treated verbatim, however are reserved for future use. You are thus advised to avoid &apos;$&apos; or escape it as &quot;$$&quot;.  For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is &quot;default${CONNECTION}&quot; go generate an ID unique per connection profile."
                   format="string" />
         <property name="type"
                   alias="type"
@@ -1402,6 +1402,10 @@
                   nmcli-description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the dhcp-hostname property is NULL and this property is TRUE, the current persistent hostname of the computer is sent. The default value is default (-1). In this case the global value from NetworkManager configuration is looked up. If it&apos;s not set, the value from dhcp-send-hostname-deprecated, which defaults to TRUE, is used for backwards compatibility. In the future this will change and, in absence of a global default, it will always fallback to TRUE."
                   format="choice (NMTernary)"
                   values="default (-1), false/no (0), true/yes (1)" />
+        <property name="forwarding"
+                  nmcli-description="Whether to configure sysctl interface-specific forwarding. When enabled, the interface will act as a router to forward the packet from one interface to another. When set to &quot;default&quot; (-1), the value from global configuration is used; if no global default is defined, &quot;auto&quot; (2) will be used. The &quot;forwarding&quot; property is ignored when &quot;method&quot; is set to &quot;shared&quot;, because forwarding is always enabled in this case. The accepted values are: &quot;default&quot; (-1): use global default. &quot;no&quot; (0): disabled. &quot;yes&quot; (1): enabled. &quot;auto&quot; (2): enable if any shared connection is active, use kernel default otherwise."
+                  format="choice (NMSettingIPConfigForwarding)"
+                  values="default (-1), no (0), yes (1), auto (2)" />
         <property name="dhcp-hostname"
                   nmcli-description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time."
                   format="string" />
@@ -1759,6 +1763,10 @@
                   nmcli-description="The tx queue size (number of tx descriptors) for DPDK ports. Must be zero or a power of 2 between 1 and 4096, and supported by the hardware. Defaults to zero which means to leave the parameter in OVS unspecified and effectively configures 2048 descriptors."
                   format="integer"
                   values="0 - 4096" />
+        <property name="lsc-interrupt"
+                  nmcli-description="Configures the Link State Change (LSC) detection mode for the OVS DPDK interface. When set to &quot;ignore&quot; (-1), NetworkManager doesn&apos;t change the default value configured by Open vSwitch. &quot;enabled&quot; (1) enables interrupts. &quot;disabled&quot; (0) disables interrupts, thus setting the interface in poll mode."
+                  format="choice (NMSettingOvsDpdkLscInterrupt)"
+                  values="ignore (-1), disabled (0), enabled (1)" />
     </setting>
     <setting name="ovs-external-ids" >
     </setting>
@@ -1904,6 +1912,12 @@
                   format="flags (NMSettingSecretFlags)"
                   values="none (0x0), agent-owned (0x1), not-saved (0x2), not-required (0x4)" />
     </setting>
+    <setting name="prefix-delegation" >
+        <property name="subnet-id"
+                  nmcli-description="The subnet ID to use on the interface from the prefix delegation received via an upstream interface. Set to a value between 0 and 0xffffffff (2^32 - 1) to indicate a specific subnet ID; or set to -1 to automatically choose an available subnet ID."
+                  format="integer"
+                  values="-1 - 4294967295" />
+    </setting>
     <setting name="proxy" >
         <property name="method"
                   alias="method"
@@ -1970,6 +1984,10 @@
                   nmcli-description="Select the eswitch encapsulation support. Currently it&apos;s only supported for PCI PF devices, and only if the eswitch device is managed from the same PCI address than the PF. If set to &quot;preserve&quot; (-1) (default) the eswitch encap-mode won&apos;t be modified by NetworkManager."
                   format="choice (NMSriovEswitchEncapMode)"
                   values="preserve (-1), none (0), basic (1)" />
+        <property name="preserve-on-down"
+                  nmcli-description="This controls whether NetworkManager preserves the SR-IOV parameters set on the device when the connection is deactivated, or whether it resets them to their default value. The SR-IOV parameters are those specified in this setting (the &quot;sriov&quot; setting), like the number of VFs to create, the eswitch configuration, etc. If set to &quot;no&quot; (0), NetworkManager resets the SR-IOV parameters when the connection is deactivated. When set to &quot;yes&quot; (1), NetworkManager preserves those parameters on the device. If the value is &quot;default&quot; (-1), NetworkManager looks up a global default value in the configuration; in case no such value is defined, it uses &quot;no&quot; (0) as fallback."
+                  format="choice (NMSriovPreserveOnDown)"
+                  values="default (-1), no (0), yes (1)" />
     </setting>
     <setting name="tc" >
         <property name="qdiscs"
diff --git a/src/nmcli/general.c b/src/nmcli/general.c
index c6c266a2..2e9aad44 100644
--- a/src/nmcli/general.c
+++ b/src/nmcli/general.c
@@ -933,7 +933,7 @@ do_general_hostname(const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
 
     hostname = *argv;
     if (next_arg(nmc, &argc, &argv, NULL) == 0)
-        nmc_print("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
+        nmc_printerr("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
 
     nmc->should_wait++;
     nm_client_save_hostname_async(nmc->client, hostname, NULL, save_hostname_cb, nmc);
diff --git a/src/nmcli/nmcli-completion b/src/nmcli/nmcli-completion
index f2de7b67..0c9b5156 100644
--- a/src/nmcli/nmcli-completion
+++ b/src/nmcli/nmcli-completion
@@ -49,7 +49,10 @@ _nmcli()
         cur=''
     fi
 
-    output="$(nmcli --complete-args "${words[@]}" 2>/dev/null)"
+    # If the user set an alias like `nmcli=nmcli --some-arguments`, then --complete-args
+    # might give unexpected behaviours. Use `command` to ensure that aliases are ignored
+    # and the nmcli binary is used directly.
+    output="$(command nmcli --complete-args "${words[@]}" 2>/dev/null)"
 
     # Bail out early if we're completing a file name
     if [ $? = 65 ]; then
diff --git a/src/nmcli/settings.c b/src/nmcli/settings.c
index 85f4ad83..458b03e5 100644
--- a/src/nmcli/settings.c
+++ b/src/nmcli/settings.c
@@ -246,10 +246,11 @@ wireless_band_channel_changed_cb(GObject *object, GParamSpec *pspec, gpointer us
 
     mode = nm_setting_wireless_get_mode(NM_SETTING_WIRELESS(object));
     if (!mode || !*mode || strcmp(mode, NM_SETTING_WIRELESS_MODE_INFRA) == 0) {
-        nmc_print(_("Warning: %s.%s set to '%s', but it might be ignored in infrastructure mode\n"),
-                  nm_setting_get_name(NM_SETTING(s_wireless)),
-                  g_param_spec_get_name(pspec),
-                  value);
+        nmc_printerr(
+            _("Warning: %s.%s set to '%s', but it might be ignored in infrastructure mode\n"),
+            nm_setting_get_name(NM_SETTING(s_wireless)),
+            g_param_spec_get_name(pspec),
+            value);
     }
 }
 
@@ -266,9 +267,9 @@ connection_controller_changed_cb(GObject *object, GParamSpec *pspec, gpointer us
         s_ipv4 = nm_connection_get_setting_by_name(connection, NM_SETTING_IP4_CONFIG_SETTING_NAME);
         s_ipv6 = nm_connection_get_setting_by_name(connection, NM_SETTING_IP6_CONFIG_SETTING_NAME);
         if (s_ipv4 || s_ipv6) {
-            nmc_print(_("Warning: setting %s.%s requires removing ipv4 and ipv6 settings\n"),
-                      nm_setting_get_name(NM_SETTING(s_con)),
-                      g_param_spec_get_name(pspec));
+            nmc_printerr(_("Warning: setting %s.%s requires removing ipv4 and ipv6 settings\n"),
+                         nm_setting_get_name(NM_SETTING(s_con)),
+                         g_param_spec_get_name(pspec));
             tmp_str = nmc_get_user_input(_("Do you want to remove them? [yes] "));
             if (!tmp_str || matches(tmp_str, "yes")) {
                 if (s_ipv4)
@@ -376,8 +377,8 @@ _set_fcn_precheck_connection_secondaries(NMClient   *client,
         if (nm_utils_is_uuid(*iter)) {
             con = nmc_find_connection(connections, "uuid", *iter, NULL, FALSE);
             if (!con) {
-                nmc_print(_("Warning: %s is not an UUID of any existing connection profile\n"),
-                          *iter);
+                nmc_printerr(_("Warning: %s is not an UUID of any existing connection profile\n"),
+                             *iter);
             } else {
                 /* Currently, NM only supports VPN connections as secondaries */
                 if (!nm_connection_is_type(con, NM_SETTING_VPN_SETTING_NAME)) {
@@ -434,13 +435,13 @@ _env_warn_fcn_handle(
 
     switch (warn_level) {
     case NM_META_ENV_WARN_LEVEL_WARN:
-        nmc_print(_("Warning: %s\n"), m);
+        nmc_printerr(_("Warning: %s\n"), m);
         return;
     case NM_META_ENV_WARN_LEVEL_INFO:
         nmc_print(_("Info: %s\n"), m);
         return;
     }
-    nmc_print(_("Error: %s\n"), m);
+    nmc_printerr(_("Error: %s\n"), m);
 }
 
 static NMDevice *const *
diff --git a/src/nmtui/meson.build b/src/nmtui/meson.build
index eecfaa99..40bb40b9 100644
--- a/src/nmtui/meson.build
+++ b/src/nmtui/meson.build
@@ -28,6 +28,7 @@ executable(
     'nmt-page-ip4.c',
     'nmt-page-ip6.c',
     'nmt-page-ip-tunnel.c',
+    'nmt-page-loopback.c',
     'nmt-page-macsec.c',
     'nmt-page-ppp.c',
     'nmt-page-team.c',
diff --git a/src/nmtui/nm-editor-utils.c b/src/nmtui/nm-editor-utils.c
index 73fad6d1..7997a8ce 100644
--- a/src/nmtui/nm-editor-utils.c
+++ b/src/nmtui/nm-editor-utils.c
@@ -156,6 +156,14 @@ nm_editor_utils_get_connection_type_list(void)
     item->id_format         = _("Veth connection %d");
     g_ptr_array_add(array, item);
 
+    item                    = g_new0(NMEditorConnectionTypeDataReal, 1);
+    item->data.name         = _("Loopback");
+    item->data.setting_type = NM_TYPE_SETTING_LOOPBACK;
+    item->data.device_type  = NM_TYPE_DEVICE_LOOPBACK;
+    item->data.virtual      = TRUE;
+    item->id_format         = _("Loopback connection %d");
+    g_ptr_array_add(array, item);
+
     item                        = g_new0(NMEditorConnectionTypeDataReal, 1);
     item->data.name             = _("Wi-Fi");
     item->data.setting_type     = NM_TYPE_SETTING_WIRELESS;
diff --git a/src/nmtui/nmt-connect-connection-list.c b/src/nmtui/nmt-connect-connection-list.c
index 1fd44b29..8e7dc807 100644
--- a/src/nmtui/nmt-connect-connection-list.c
+++ b/src/nmtui/nmt-connect-connection-list.c
@@ -95,6 +95,7 @@ static const char *device_sort_order[]   = {"NMDeviceEthernet",
                                             "NMDeviceVeth",
                                             "NMDeviceInfiniband",
                                             "NMDeviceWifi",
+                                            "NMDeviceLoopback",
                                             NM_SETTING_VLAN_SETTING_NAME,
                                             NM_SETTING_VETH_SETTING_NAME,
                                             NM_SETTING_BOND_SETTING_NAME,
diff --git a/src/nmtui/nmt-editor.c b/src/nmtui/nmt-editor.c
index 6205736a..474d08c2 100644
--- a/src/nmtui/nmt-editor.c
+++ b/src/nmtui/nmt-editor.c
@@ -35,6 +35,7 @@
 #include "nmt-page-ip-tunnel.h"
 #include "nmt-page-ip4.h"
 #include "nmt-page-ip6.h"
+#include "nmt-page-loopback.h"
 #include "nmt-page-macsec.h"
 #include "nmt-page-ppp.h"
 #include "nmt-page-team.h"
@@ -299,13 +300,13 @@ add_sections_for_page(NmtEditor *editor, NmtEditorGrid *grid, NmtEditorPage *pag
 static void
 nmt_editor_constructed(GObject *object)
 {
-    NmtEditor           *editor = NMT_EDITOR(object);
-    NmtEditorPrivate    *priv   = NMT_EDITOR_GET_PRIVATE(editor);
+    NmtEditor           *editor   = NMT_EDITOR(object);
+    NmtEditorPrivate    *priv     = NMT_EDITOR_GET_PRIVATE(editor);
+    NmtDeviceEntry      *deventry = NULL;
     NMSettingConnection *s_con;
     NmtNewtWidget       *vbox, *widget, *buttons;
     NmtEditorGrid       *grid;
     const char          *deventry_label;
-    NmtDeviceEntry      *deventry;
     GType                hardware_type;
     const char          *port_type;
     NmtEditorPage       *page;
@@ -337,22 +338,26 @@ nmt_editor_constructed(GObject *object)
     else
         hardware_type = priv->type_data->device_type;
 
-    /* For connections involving multiple network devices, clarify which one
-     * NMSettingConnection:interface-name refers to.
-     */
-    if (nm_connection_is_type(priv->edit_connection, NM_SETTING_PPPOE_SETTING_NAME))
-        deventry_label = _("Ethernet device");
-    else
-        deventry_label = _("Device");
-
-    widget = nmt_device_entry_new(deventry_label, 40, hardware_type);
-    nmt_editor_grid_append(grid, NULL, widget, NULL);
-    deventry = NMT_DEVICE_ENTRY(widget);
-    g_object_bind_property(s_con,
-                           NM_SETTING_CONNECTION_INTERFACE_NAME,
-                           deventry,
-                           "interface-name",
-                           G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+    if (nm_connection_is_type(priv->edit_connection, NM_SETTING_LOOPBACK_SETTING_NAME)) {
+        g_object_set(s_con, NM_SETTING_CONNECTION_INTERFACE_NAME, "lo", NULL);
+    } else {
+        /* For connections involving multiple network devices, clarify which one
+        * NMSettingConnection:interface-name refers to.
+        */
+        if (nm_connection_is_type(priv->edit_connection, NM_SETTING_PPPOE_SETTING_NAME))
+            deventry_label = _("Ethernet device");
+        else
+            deventry_label = _("Device");
+
+        widget = nmt_device_entry_new(deventry_label, 40, hardware_type);
+        nmt_editor_grid_append(grid, NULL, widget, NULL);
+        deventry = NMT_DEVICE_ENTRY(widget);
+        g_object_bind_property(s_con,
+                               NM_SETTING_CONNECTION_INTERFACE_NAME,
+                               deventry,
+                               "interface-name",
+                               G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+    }
 
     nmt_editor_grid_append(grid, NULL, nmt_newt_separator_new(), NULL);
 
@@ -376,6 +381,8 @@ nmt_editor_constructed(GObject *object)
         page = nmt_page_vlan_new(priv->edit_connection, deventry);
     else if (nm_connection_is_type(priv->edit_connection, NM_SETTING_WIRED_SETTING_NAME))
         page = nmt_page_ethernet_new(priv->edit_connection, deventry);
+    else if (nm_connection_is_type(priv->edit_connection, NM_SETTING_LOOPBACK_SETTING_NAME))
+        page = nmt_page_loopback_new(priv->edit_connection);
     else if (nm_connection_is_type(priv->edit_connection, NM_SETTING_WIRELESS_SETTING_NAME))
         page = nmt_page_wifi_new(priv->edit_connection, deventry);
     else if (nm_connection_is_type(priv->edit_connection, NM_SETTING_IP_TUNNEL_SETTING_NAME))
diff --git a/src/nmtui/nmt-page-loopback.c b/src/nmtui/nmt-page-loopback.c
new file mode 100644
index 00000000..e0800168
--- /dev/null
+++ b/src/nmtui/nmt-page-loopback.c
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2025 Red Hat, Inc.
+ */
+/**
+ * SECTION:nmt-page-loopback
+ * @short_description: The editor page for the loopback interface
+ */
+
+#include "libnm-client-aux-extern/nm-default-client.h"
+
+#include <linux/if_ether.h>
+
+#include "nmt-page-loopback.h"
+
+#include "libnm-core-aux-intern/nm-libnm-core-utils.h"
+#include "nmt-mtu-entry.h"
+
+G_DEFINE_TYPE(NmtPageLoopback, nmt_page_loopback, NMT_TYPE_EDITOR_PAGE_DEVICE)
+
+#define NMT_PAGE_LOOPBACK_GET_PRIVATE(o) \
+    _NM_GET_PRIVATE(self, NmtPageLoopback, NMT_IS_PAGE_LOOPBACK)
+
+static void
+nmt_page_loopback_init(NmtPageLoopback *loopback)
+{}
+
+NmtEditorPage *
+nmt_page_loopback_new(NMConnection *conn)
+{
+    return g_object_new(NMT_TYPE_PAGE_LOOPBACK, "connection", conn, NULL);
+}
+
+static void
+nmt_page_loopback_constructed(GObject *object)
+{
+    NmtPageLoopback   *loopback = NMT_PAGE_LOOPBACK(object);
+    NmtEditorSection  *section;
+    NmtEditorGrid     *grid;
+    NMSettingLoopback *s_loopback;
+    NmtNewtWidget     *widget;
+    NMConnection      *conn;
+
+    conn       = nmt_editor_page_get_connection(NMT_EDITOR_PAGE(loopback));
+    s_loopback = _nm_connection_ensure_setting(conn, NM_TYPE_SETTING_LOOPBACK);
+
+    section = nmt_editor_section_new(_("LOOPBACK"), NULL, FALSE);
+    grid    = nmt_editor_section_get_body(section);
+
+    widget = nmt_mtu_entry_new();
+    g_object_bind_property(s_loopback,
+                           NM_SETTING_LOOPBACK_MTU,
+                           widget,
+                           "mtu",
+                           G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+    nmt_editor_grid_append(grid, _("MTU"), widget, NULL);
+
+    nmt_editor_page_add_section(NMT_EDITOR_PAGE(loopback), section);
+
+    G_OBJECT_CLASS(nmt_page_loopback_parent_class)->constructed(object);
+}
+
+static void
+nmt_page_loopback_class_init(NmtPageLoopbackClass *loopback_class)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS(loopback_class);
+    object_class->constructed  = nmt_page_loopback_constructed;
+}
diff --git a/src/nmtui/nmt-page-loopback.h b/src/nmtui/nmt-page-loopback.h
new file mode 100644
index 00000000..12c38ef8
--- /dev/null
+++ b/src/nmtui/nmt-page-loopback.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2025 Red Hat, Inc.
+ */
+
+#ifndef NMT_PAGE_LOOPBACK_H
+#define NMT_PAGE_LOOPBACK_H
+
+#include "nmt-editor-page-device.h"
+
+#define NMT_TYPE_PAGE_LOOPBACK (nmt_page_loopback_get_type())
+#define NMT_PAGE_LOOPBACK(obj) \
+    (_NM_G_TYPE_CHECK_INSTANCE_CAST((obj), NMT_TYPE_PAGE_LOOPBACK, NmtPageLoopback))
+#define NMT_PAGE_LOOPBACK_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_CAST((klass), NMT_TYPE_PAGE_LOOPBACK, NmtPageLoopbackClass))
+#define NMT_IS_PAGE_LOOPBACK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), NMT_TYPE_PAGE_LOOPBACK))
+#define NMT_IS_PAGE_LOOPBACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NMT_TYPE_PAGE_LOOPBACK))
+#define NMT_PAGE_LOOPBACK_GET_CLASS(obj) \
+    (G_TYPE_INSTANCE_GET_CLASS((obj), NMT_TYPE_PAGE_LOOPBACK, NmtPageLoopbackClass))
+
+typedef struct {
+    NmtEditorPageDevice parent;
+} NmtPageLoopback;
+
+typedef struct {
+    NmtEditorPageDeviceClass parent;
+} NmtPageLoopbackClass;
+
+GType nmt_page_loopback_get_type(void);
+
+NmtEditorPage *nmt_page_loopback_new(NMConnection *conn);
+
+#endif /* NMT_PAGE_LOOPBACK_H */
diff --git a/src/tests/check-potfile-list.py b/src/tests/check-potfile-list.py
new file mode 100755
index 00000000..b89743ed
--- /dev/null
+++ b/src/tests/check-potfile-list.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2025 Red Hat, Inc.
+
+from pathlib import Path
+import subprocess
+import itertools
+import shutil
+import sys
+import os
+
+xgettext = shutil.which("xgettext")
+
+# Paths relative to repo root which should be
+# excluded from pot->tree, or tree->pot checks.
+ignore_in_potfiles = ()
+ignore_in_tree = ()
+
+
+def err(s):
+    print(f"ERR: {s}", file=sys.stderr)
+
+
+def read_potfile_list(root, path):
+    with open(root / path, "r") as f:
+        for line in f.readlines():
+            stripped = line.strip()
+            if stripped.startswith("#") or len(stripped) == 0:
+                continue
+            if stripped in ignore_in_potfiles:
+                continue
+            yield (root / stripped).resolve()
+
+
+def get_existing_entries(root):
+    in_list = read_potfile_list(root, "po/POTFILES.in")
+    skip_list = read_potfile_list(root, "po/POTFILES.skip")
+    return set(itertools.chain(in_list, skip_list))
+
+
+def check_exists_in_tree(root, paths):
+    is_ok = True
+
+    for path in paths:
+        if not path.exists():
+            err(
+                f"{path.relative_to(root)} exists in POTFILES.in or POTFILES.skip, but missing in sources"
+            )
+            is_ok = False
+
+    return is_ok
+
+
+def get_gettext_args(root):
+    arg_name = "XGETTEXT_OPTIONS ="
+    with open(root / "po" / "Makevars", "r") as f:
+        for line in f.readlines():
+            if line.startswith(arg_name):
+                return line[len(arg_name) :].strip().split(" ")
+
+    raise Exception("could not get gettext args")
+
+
+def list_c_sources(root):
+    for path, _, files in os.walk(root / "src"):
+        for file in files:
+            relpath_str = str(Path(path).relative_to(root) / file)
+            extension = file.replace(".in", "").split(".").pop()
+            if extension in ["c", "h"] and relpath_str not in ignore_in_tree:
+                full_path = root / path / file
+                yield full_path.resolve()
+
+
+def gettext_dry_run(root, paths):
+    args = get_gettext_args(root)
+    process = subprocess.Popen(
+        [xgettext, "--files-from=-", "--output=-"] + args,
+        stdin=subprocess.PIPE,
+        stdout=subprocess.PIPE,
+        text=True,
+    )
+
+    for line in paths:
+        process.stdin.write(f"{line.resolve()}\n")
+    process.stdin.close()
+
+    seen = set()
+    for line in process.stdout:
+        if line.startswith("#: "):
+            out_path = Path(line.replace("#: ", "").split(":")[0])
+            if out_path not in seen:
+                seen.add(out_path)
+                yield out_path
+
+    process.stdout.close()
+    assert process.wait() == 0
+
+
+def check_exists_in_potfiles(root, pot_paths):
+    unseen_paths = filter(lambda path: path not in pot_paths, list_c_sources(root))
+
+    is_ok = True
+    for path in gettext_dry_run(root, unseen_paths):
+        err(
+            f"{path.relative_to(root)} code contains gettext macros, but missing in POTFILES.in or POTFILES.skip"
+        )
+        is_ok = False
+
+    return is_ok
+
+
+def check_potfiles():
+    root = (Path(os.path.dirname(__file__)) / "../../").resolve()
+    file_entries = get_existing_entries(root)
+    is_ok = True
+
+    # Let's first check that all the files that we
+    # have in POTFILES.* actually exist.
+    is_ok &= check_exists_in_tree(root, file_entries)
+
+    # Now the other direction -- check that all sources
+    # that should be included in POTFILES, are included.
+    is_ok &= check_exists_in_potfiles(root, file_entries)
+
+    return is_ok
+
+
+if __name__ == "__main__":
+    if xgettext is None:
+        raise Exception("xgettext is missing")
+
+    out_msg = "POTFILES consistency check: %s"
+    if check_potfiles():
+        print(out_msg % "ok")
+    else:
+        print(out_msg % "failed", file=sys.stderr)
+        sys.exit(1)
diff --git a/src/tests/client/test-client.check-on-disk/test_003.expected b/src/tests/client/test-client.check-on-disk/test_003.expected
index 7094583f..40959fed 100644
--- a/src/tests/client/test-client.check-on-disk/test_003.expected
+++ b/src/tests/client/test-client.check-on-disk/test_003.expected
@@ -182,12 +182,12 @@ id
 path
 uuid
 <<<
-size: 6526
+size: 6579
 location: src/tests/client/test-client.py:test_003()/14
 cmd: $NMCLI con s con-gsm1
 lang: C
 returncode: 0
-stdout: 6393 bytes
+stdout: 6446 bytes
 >>>
 connection.id:                          con-gsm1
 connection.uuid:                        UUID-con-gsm1-REPLACED-REPLACED-REPL
@@ -244,6 +244,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -329,12 +330,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 6569
+size: 6622
 location: src/tests/client/test-client.py:test_003()/15
 cmd: $NMCLI con s con-gsm1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6426 bytes
+stdout: 6479 bytes
 >>>
 connection.id:                          con-gsm1
 connection.uuid:                        UUID-con-gsm1-REPLACED-REPLACED-REPL
@@ -391,6 +392,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -476,42 +478,42 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 581
+size: 584
 location: src/tests/client/test-client.py:test_003()/16
 cmd: $NMCLI -g all con s con-gsm1
 lang: C
 returncode: 0
-stdout: 442 bytes
+stdout: 445 bytes
 >>>
 connection:con-gsm1:UUID-con-gsm1-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
 proxy:none:no::
 
 <<<
-size: 591
+size: 594
 location: src/tests/client/test-client.py:test_003()/17
 cmd: $NMCLI -g all con s con-gsm1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 442 bytes
+stdout: 445 bytes
 >>>
 connection:con-gsm1:UUID-con-gsm1-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0:xyz.con-gsm1::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
 proxy:none:no::
 
 <<<
-size: 6514
+size: 6567
 location: src/tests/client/test-client.py:test_003()/18
 cmd: $NMCLI con s con-gsm2
 lang: C
 returncode: 0
-stdout: 6381 bytes
+stdout: 6434 bytes
 >>>
 connection.id:                          con-gsm2
 connection.uuid:                        UUID-con-gsm2-REPLACED-REPLACED-REPL
@@ -568,6 +570,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -653,12 +656,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 6557
+size: 6610
 location: src/tests/client/test-client.py:test_003()/19
 cmd: $NMCLI con s con-gsm2
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6414 bytes
+stdout: 6467 bytes
 >>>
 connection.id:                          con-gsm2
 connection.uuid:                        UUID-con-gsm2-REPLACED-REPLACED-REPL
@@ -715,6 +718,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -800,42 +804,42 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 569
+size: 572
 location: src/tests/client/test-client.py:test_003()/20
 cmd: $NMCLI -g all con s con-gsm2
 lang: C
 returncode: 0
-stdout: 430 bytes
+stdout: 433 bytes
 >>>
 connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
 proxy:none:no::
 
 <<<
-size: 579
+size: 582
 location: src/tests/client/test-client.py:test_003()/21
 cmd: $NMCLI -g all con s con-gsm2
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 430 bytes
+stdout: 433 bytes
 >>>
 connection:con-gsm2:UUID-con-gsm2-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0:::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
 proxy:none:no::
 
 <<<
-size: 6514
+size: 6567
 location: src/tests/client/test-client.py:test_003()/22
 cmd: $NMCLI con s con-gsm3
 lang: C
 returncode: 0
-stdout: 6381 bytes
+stdout: 6434 bytes
 >>>
 connection.id:                          con-gsm3
 connection.uuid:                        UUID-con-gsm3-REPLACED-REPLACED-REPL
@@ -892,6 +896,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -977,12 +982,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 6557
+size: 6610
 location: src/tests/client/test-client.py:test_003()/23
 cmd: $NMCLI con s con-gsm3
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6414 bytes
+stdout: 6467 bytes
 >>>
 connection.id:                          con-gsm3
 connection.uuid:                        UUID-con-gsm3-REPLACED-REPLACED-REPL
@@ -1039,6 +1044,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1124,30 +1130,30 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 570
+size: 573
 location: src/tests/client/test-client.py:test_003()/24
 cmd: $NMCLI -g all con s con-gsm3
 lang: C
 returncode: 0
-stdout: 431 bytes
+stdout: 434 bytes
 >>>
 connection:con-gsm3:UUID-con-gsm3-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
 proxy:none:no::
 
 <<<
-size: 580
+size: 583
 location: src/tests/client/test-client.py:test_003()/25
 cmd: $NMCLI -g all con s con-gsm3
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 431 bytes
+stdout: 434 bytes
 >>>
 connection:con-gsm3:UUID-con-gsm3-REPLACED-REPLACED-REPL::gsm::no:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::: :0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 serial:5:8:even:1:100
 gsm:no:::<hidden>:0: ::<hidden>:0:no::::auto:no:::<hidden>:0:yes:no:no:no:no:no
@@ -1294,12 +1300,12 @@ UUID                                  NAME
 UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
-size: 5866
+size: 5919
 location: src/tests/client/test-client.py:test_003()/37
 cmd: $NMCLI -f ALL con s ethernet
 lang: C
 returncode: 0
-stdout: 5726 bytes
+stdout: 5779 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1371,6 +1377,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1426,12 +1433,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5901
+size: 5954
 location: src/tests/client/test-client.py:test_003()/38
 cmd: $NMCLI -f ALL con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5751 bytes
+stdout: 5804 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1503,6 +1510,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1578,12 +1586,12 @@ stdout: 51 bytes
 GENERAL.STATE:                          aktywowano
 
 <<<
-size: 6568
+size: 6621
 location: src/tests/client/test-client.py:test_003()/41
 cmd: $NMCLI con s ethernet
 lang: C
 returncode: 0
-stdout: 6435 bytes
+stdout: 6488 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1655,6 +1663,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1723,12 +1732,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6607
+size: 6660
 location: src/tests/client/test-client.py:test_003()/42
 cmd: $NMCLI con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6464 bytes
+stdout: 6517 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1800,6 +1809,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -2354,12 +2364,12 @@ UUID                                  NAME
 UUID-ethernet-REPLACED-REPLACED-REPL  ethernet 
 
 <<<
-size: 5866
+size: 5919
 location: src/tests/client/test-client.py:test_003()/62
 cmd: $NMCLI -f ALL con s ethernet
 lang: C
 returncode: 0
-stdout: 5726 bytes
+stdout: 5779 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2431,6 +2441,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -2486,12 +2497,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5901
+size: 5954
 location: src/tests/client/test-client.py:test_003()/63
 cmd: $NMCLI -f ALL con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5751 bytes
+stdout: 5804 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2563,6 +2574,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -2642,12 +2654,12 @@ GENERAL.STATE:                          aktywowano
 GENERAL.STATE:                          aktywowano
 
 <<<
-size: 7278
+size: 7331
 location: src/tests/client/test-client.py:test_003()/66
 cmd: $NMCLI con s ethernet
 lang: C
 returncode: 0
-stdout: 7145 bytes
+stdout: 7198 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2719,6 +2731,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -2801,12 +2814,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 7321
+size: 7374
 location: src/tests/client/test-client.py:test_003()/67
 cmd: $NMCLI con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7178 bytes
+stdout: 7231 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2878,6 +2891,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -3468,12 +3482,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 7281
+size: 7334
 location: src/tests/client/test-client.py:test_003()/84
 cmd: $NMCLI con s ethernet
 lang: C
 returncode: 0
-stdout: 7148 bytes
+stdout: 7201 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3545,6 +3559,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -3627,12 +3642,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 7325
+size: 7378
 location: src/tests/client/test-client.py:test_003()/85
 cmd: $NMCLI con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7182 bytes
+stdout: 7235 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3704,6 +3719,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -3786,12 +3802,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6611
+size: 6664
 location: src/tests/client/test-client.py:test_003()/86
 cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6438 bytes
+stdout: 6491 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3863,6 +3879,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -3931,12 +3948,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6651
+size: 6704
 location: src/tests/client/test-client.py:test_003()/87
 cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6468 bytes
+stdout: 6521 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -4008,6 +4025,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4286,12 +4304,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 7293
+size: 7346
 location: src/tests/client/test-client.py:test_003()/94
 cmd: $NMCLI --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 7148 bytes
+stdout: 7201 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -4363,6 +4381,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4445,12 +4464,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 7337
+size: 7390
 location: src/tests/client/test-client.py:test_003()/95
 cmd: $NMCLI --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7182 bytes
+stdout: 7235 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -4522,6 +4541,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4604,12 +4624,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6623
+size: 6676
 location: src/tests/client/test-client.py:test_003()/96
 cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6438 bytes
+stdout: 6491 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -4681,6 +4701,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4749,12 +4770,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6663
+size: 6716
 location: src/tests/client/test-client.py:test_003()/97
 cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6468 bytes
+stdout: 6521 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -4826,6 +4847,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5120,12 +5142,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 8534
+size: 8587
 location: src/tests/client/test-client.py:test_003()/104
 cmd: $NMCLI --pretty con s ethernet
 lang: C
 returncode: 0
-stdout: 8391 bytes
+stdout: 8444 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -5202,6 +5224,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5295,12 +5318,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 8599
+size: 8652
 location: src/tests/client/test-client.py:test_003()/105
 cmd: $NMCLI --pretty con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 8446 bytes
+stdout: 8499 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -5377,6 +5400,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5470,12 +5494,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7552
+size: 7605
 location: src/tests/client/test-client.py:test_003()/106
 cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 7369 bytes
+stdout: 7422 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -5552,6 +5576,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5627,12 +5652,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7605
+size: 7658
 location: src/tests/client/test-client.py:test_003()/107
 cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7412 bytes
+stdout: 7465 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -5709,6 +5734,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -6034,12 +6060,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 8546
+size: 8599
 location: src/tests/client/test-client.py:test_003()/114
 cmd: $NMCLI --pretty --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 8391 bytes
+stdout: 8444 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -6116,6 +6142,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -6209,12 +6236,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 8611
+size: 8664
 location: src/tests/client/test-client.py:test_003()/115
 cmd: $NMCLI --pretty --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 8446 bytes
+stdout: 8499 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -6291,6 +6318,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -6384,12 +6412,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7564
+size: 7617
 location: src/tests/client/test-client.py:test_003()/116
 cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 7369 bytes
+stdout: 7422 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -6466,6 +6494,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -6541,12 +6570,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7617
+size: 7670
 location: src/tests/client/test-client.py:test_003()/117
 cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7412 bytes
+stdout: 7465 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -6623,6 +6652,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -6928,12 +6958,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL:gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
 
 <<<
-size: 3919
+size: 3938
 location: src/tests/client/test-client.py:test_003()/124
 cmd: $NMCLI --terse con s ethernet
 lang: C
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7005,6 +7035,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -7087,12 +7118,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3929
+size: 3948
 location: src/tests/client/test-client.py:test_003()/125
 cmd: $NMCLI --terse con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7164,6 +7195,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -7246,12 +7278,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3569
+size: 3588
 location: src/tests/client/test-client.py:test_003()/126
 cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7323,6 +7355,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -7391,12 +7424,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3579
+size: 3598
 location: src/tests/client/test-client.py:test_003()/127
 cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7468,6 +7501,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -7742,12 +7776,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL:gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
 
 <<<
-size: 3931
+size: 3950
 location: src/tests/client/test-client.py:test_003()/134
 cmd: $NMCLI --terse --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7819,6 +7853,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -7901,12 +7936,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3941
+size: 3960
 location: src/tests/client/test-client.py:test_003()/135
 cmd: $NMCLI --terse --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -7978,6 +8013,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -8060,12 +8096,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3581
+size: 3600
 location: src/tests/client/test-client.py:test_003()/136
 cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8137,6 +8173,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -8205,12 +8242,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3591
+size: 3610
 location: src/tests/client/test-client.py:test_003()/137
 cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8282,6 +8319,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -8560,12 +8598,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 5027
+size: 5055
 location: src/tests/client/test-client.py:test_003()/144
 cmd: $NMCLI --mode tabular con s ethernet
 lang: C
 returncode: 0
-stdout: 4878 bytes
+stdout: 4906 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8573,8 +8611,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu   s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8591,12 +8629,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 5077
+size: 5105
 location: src/tests/client/test-client.py:test_003()/145
 cmd: $NMCLI --mode tabular con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4918 bytes
+stdout: 4946 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8604,8 +8642,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu           s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8622,12 +8660,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deza
 
 
 <<<
-size: 4565
+size: 4593
 location: src/tests/client/test-client.py:test_003()/146
 cmd: $NMCLI --mode tabular c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 4376 bytes
+stdout: 4404 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8635,8 +8673,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu   s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8649,12 +8687,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 4613
+size: 4641
 location: src/tests/client/test-client.py:test_003()/147
 cmd: $NMCLI --mode tabular c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4414 bytes
+stdout: 4442 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8662,8 +8700,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu           s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8812,12 +8850,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 5039
+size: 5067
 location: src/tests/client/test-client.py:test_003()/154
 cmd: $NMCLI --mode tabular --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 4878 bytes
+stdout: 4906 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8825,8 +8863,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu   s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8843,12 +8881,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 5089
+size: 5117
 location: src/tests/client/test-client.py:test_003()/155
 cmd: $NMCLI --mode tabular --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4918 bytes
+stdout: 4946 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8856,8 +8894,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu           s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8874,12 +8912,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deza
 
 
 <<<
-size: 4577
+size: 4605
 location: src/tests/client/test-client.py:test_003()/156
 cmd: $NMCLI --mode tabular --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 4376 bytes
+stdout: 4404 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8887,8 +8925,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu   s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -8901,12 +8939,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 4625
+size: 4653
 location: src/tests/client/test-client.py:test_003()/157
 cmd: $NMCLI --mode tabular --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4414 bytes
+stdout: 4442 bytes
 >>>
 name        id        uuid                                  stable-id  type            interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-ethernet  --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
@@ -8914,8 +8952,8 @@ connection  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  --         802-3-eth
 name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-address  generate-mac-address-mask  mac-address-denylist  mtu           s390-subchannels  s390-nettype  s390-options  wake-on-lan  wake-on-lan-password  accept-all-mac-addresses 
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -9080,12 +9118,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 8012
+size: 8054
 location: src/tests/client/test-client.py:test_003()/164
 cmd: $NMCLI --mode tabular --pretty con s ethernet
 lang: C
 returncode: 0
-stdout: 7854 bytes
+stdout: 7896 bytes
 >>>
 =========================================
   Connection profile details (ethernet)
@@ -9098,9 +9136,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9127,12 +9165,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 8142
+size: 8184
 location: src/tests/client/test-client.py:test_003()/165
 cmd: $NMCLI --mode tabular --pretty con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7974 bytes
+stdout: 8016 bytes
 >>>
 ===========================================
   Szczegóły profilu połączenia (ethernet)
@@ -9145,9 +9183,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9174,12 +9212,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deza
 
 
 <<<
-size: 7094
+size: 7136
 location: src/tests/client/test-client.py:test_003()/166
 cmd: $NMCLI --mode tabular --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6896 bytes
+stdout: 6938 bytes
 >>>
 =========================================
   Connection profile details (ethernet)
@@ -9192,9 +9230,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9213,12 +9251,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 7196
+size: 7238
 location: src/tests/client/test-client.py:test_003()/167
 cmd: $NMCLI --mode tabular --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6988 bytes
+stdout: 7030 bytes
 >>>
 ===========================================
   Szczegóły profilu połączenia (ethernet)
@@ -9231,9 +9269,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9428,12 +9466,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL  gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA  ethernet 
 
 <<<
-size: 8024
+size: 8066
 location: src/tests/client/test-client.py:test_003()/174
 cmd: $NMCLI --mode tabular --pretty --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 7854 bytes
+stdout: 7896 bytes
 >>>
 =========================================
   Connection profile details (ethernet)
@@ -9446,9 +9484,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9475,12 +9513,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 8154
+size: 8196
 location: src/tests/client/test-client.py:test_003()/175
 cmd: $NMCLI --mode tabular --pretty --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7974 bytes
+stdout: 8016 bytes
 >>>
 ===========================================
   Szczegóły profilu połączenia (ethernet)
@@ -9493,9 +9531,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9522,12 +9560,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deza
 
 
 <<<
-size: 7106
+size: 7148
 location: src/tests/client/test-client.py:test_003()/176
 cmd: $NMCLI --mode tabular --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6896 bytes
+stdout: 6938 bytes
 >>>
 =========================================
   Connection profile details (ethernet)
@@ -9540,9 +9578,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      no              --           --                  --                         --                    auto  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9561,12 +9599,12 @@ GENERAL  ethernet  UUID-ethernet-REPLACED-REPLACED-REPL  eth0     eth0      deac
 
 
 <<<
-size: 7208
+size: 7250
 location: src/tests/client/test-client.py:test_003()/177
 cmd: $NMCLI --mode tabular --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6988 bytes
+stdout: 7030 bytes
 >>>
 ===========================================
   Szczegóły profilu połączenia (ethernet)
@@ -9579,9 +9617,9 @@ name            port  speed  duplex  auto-negotiate  mac-address  cloned-mac-add
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 802-3-ethernet  --    0      --      nie             --           --                  --                         --                    automatyczne  --                --            --            default      --                    -1 (default)             
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -9756,16 +9794,16 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL:gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
 
 <<<
-size: 928
+size: 931
 location: src/tests/client/test-client.py:test_003()/184
 cmd: $NMCLI --mode tabular --terse con s ethernet
 lang: C
 returncode: 0
-stdout: 772 bytes
+stdout: 775 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -9773,16 +9811,16 @@ GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no:
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 938
+size: 941
 location: src/tests/client/test-client.py:test_003()/185
 cmd: $NMCLI --mode tabular --terse con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 772 bytes
+stdout: 775 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -9790,31 +9828,31 @@ GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no:
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 776
+size: 779
 location: src/tests/client/test-client.py:test_003()/186
 cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 580 bytes
+stdout: 583 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 786
+size: 789
 location: src/tests/client/test-client.py:test_003()/187
 cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 580 bytes
+stdout: 583 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -9918,16 +9956,16 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL:gsm
 UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
 
 <<<
-size: 940
+size: 943
 location: src/tests/client/test-client.py:test_003()/194
 cmd: $NMCLI --mode tabular --terse --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 772 bytes
+stdout: 775 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -9935,16 +9973,16 @@ GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no:
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 950
+size: 953
 location: src/tests/client/test-client.py:test_003()/195
 cmd: $NMCLI --mode tabular --terse --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 772 bytes
+stdout: 775 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -9952,31 +9990,31 @@ GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no:
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 788
+size: 791
 location: src/tests/client/test-client.py:test_003()/196
 cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 580 bytes
+stdout: 583 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
 
 <<<
-size: 798
+size: 801
 location: src/tests/client/test-client.py:test_003()/197
 cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 580 bytes
+stdout: 583 bytes
 >>>
 connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
 802-3-ethernet::0::no:::::auto::::default::-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 proxy:none:no::
 GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/6::
@@ -10288,12 +10326,12 @@ UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
 TYPE:                                   ethernet
 
 <<<
-size: 7299
+size: 7352
 location: src/tests/client/test-client.py:test_003()/204
 cmd: $NMCLI --mode multiline con s ethernet
 lang: C
 returncode: 0
-stdout: 7148 bytes
+stdout: 7201 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -10365,6 +10403,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -10447,12 +10486,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 7343
+size: 7396
 location: src/tests/client/test-client.py:test_003()/205
 cmd: $NMCLI --mode multiline con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7182 bytes
+stdout: 7235 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -10524,6 +10563,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -10606,12 +10646,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6629
+size: 6682
 location: src/tests/client/test-client.py:test_003()/206
 cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6438 bytes
+stdout: 6491 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -10683,6 +10723,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -10751,12 +10792,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6669
+size: 6722
 location: src/tests/client/test-client.py:test_003()/207
 cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6468 bytes
+stdout: 6521 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -10828,6 +10869,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -11310,12 +11352,12 @@ UUID:                                   UUID-con-xx1-REPLACED-REPLACED-REPLA
 TYPE:                                   ethernet
 
 <<<
-size: 7311
+size: 7364
 location: src/tests/client/test-client.py:test_003()/214
 cmd: $NMCLI --mode multiline --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 7148 bytes
+stdout: 7201 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11387,6 +11429,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -11469,12 +11512,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 7355
+size: 7408
 location: src/tests/client/test-client.py:test_003()/215
 cmd: $NMCLI --mode multiline --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7182 bytes
+stdout: 7235 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11546,6 +11589,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -11628,12 +11672,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6641
+size: 6694
 location: src/tests/client/test-client.py:test_003()/216
 cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 6438 bytes
+stdout: 6491 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11705,6 +11749,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -11773,12 +11818,12 @@ GENERAL.ZONE:                           --
 GENERAL.MASTER-PATH:                    --
 
 <<<
-size: 6681
+size: 6734
 location: src/tests/client/test-client.py:test_003()/217
 cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6468 bytes
+stdout: 6521 bytes
 >>>
 connection.id:                          ethernet
 connection.uuid:                        UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11850,6 +11895,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12370,12 +12416,12 @@ TYPE:                                   ethernet
 -------------------------------------------------------------------------------
 
 <<<
-size: 8551
+size: 8604
 location: src/tests/client/test-client.py:test_003()/224
 cmd: $NMCLI --mode multiline --pretty con s ethernet
 lang: C
 returncode: 0
-stdout: 8391 bytes
+stdout: 8444 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -12452,6 +12498,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12545,12 +12592,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 8616
+size: 8669
 location: src/tests/client/test-client.py:test_003()/225
 cmd: $NMCLI --mode multiline --pretty con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 8446 bytes
+stdout: 8499 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -12627,6 +12674,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12720,12 +12768,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7569
+size: 7622
 location: src/tests/client/test-client.py:test_003()/226
 cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 7369 bytes
+stdout: 7422 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -12802,6 +12850,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12877,12 +12926,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7622
+size: 7675
 location: src/tests/client/test-client.py:test_003()/227
 cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7412 bytes
+stdout: 7465 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -12959,6 +13008,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -13510,12 +13560,12 @@ TYPE:                                   ethernet
 -------------------------------------------------------------------------------
 
 <<<
-size: 8563
+size: 8616
 location: src/tests/client/test-client.py:test_003()/234
 cmd: $NMCLI --mode multiline --pretty --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 8391 bytes
+stdout: 8444 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -13592,6 +13642,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -13685,12 +13736,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 8628
+size: 8681
 location: src/tests/client/test-client.py:test_003()/235
 cmd: $NMCLI --mode multiline --pretty --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 8446 bytes
+stdout: 8499 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -13767,6 +13818,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -13860,12 +13912,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7581
+size: 7634
 location: src/tests/client/test-client.py:test_003()/236
 cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 7369 bytes
+stdout: 7422 bytes
 >>>
 ===============================================================================
                      Connection profile details (ethernet)
@@ -13942,6 +13994,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -14017,12 +14070,12 @@ GENERAL.MASTER-PATH:                    --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7634
+size: 7687
 location: src/tests/client/test-client.py:test_003()/237
 cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7412 bytes
+stdout: 7465 bytes
 >>>
 ===============================================================================
                     Szczegóły profilu połączenia (ethernet)
@@ -14099,6 +14152,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -14612,12 +14666,12 @@ UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
 TYPE:802-3-ethernet
 
 <<<
-size: 3936
+size: 3955
 location: src/tests/client/test-client.py:test_003()/244
 cmd: $NMCLI --mode multiline --terse con s ethernet
 lang: C
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -14689,6 +14743,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -14771,12 +14826,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3946
+size: 3965
 location: src/tests/client/test-client.py:test_003()/245
 cmd: $NMCLI --mode multiline --terse con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -14848,6 +14903,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -14930,12 +14986,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3586
+size: 3605
 location: src/tests/client/test-client.py:test_003()/246
 cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -15007,6 +15063,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -15075,12 +15132,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3596
+size: 3615
 location: src/tests/client/test-client.py:test_003()/247
 cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -15152,6 +15209,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -15634,12 +15692,12 @@ UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
 TYPE:802-3-ethernet
 
 <<<
-size: 3948
+size: 3967
 location: src/tests/client/test-client.py:test_003()/254
 cmd: $NMCLI --mode multiline --terse --color yes con s ethernet
 lang: C
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -15711,6 +15769,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -15793,12 +15852,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3958
+size: 3977
 location: src/tests/client/test-client.py:test_003()/255
 cmd: $NMCLI --mode multiline --terse --color yes con s ethernet
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3777 bytes
+stdout: 3796 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -15870,6 +15929,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -15952,12 +16012,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3598
+size: 3617
 location: src/tests/client/test-client.py:test_003()/256
 cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: C
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -16029,6 +16089,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16097,12 +16158,12 @@ GENERAL.ZONE:
 GENERAL.MASTER-PATH:
 
 <<<
-size: 3608
+size: 3627
 location: src/tests/client/test-client.py:test_003()/257
 cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3387 bytes
+stdout: 3406 bytes
 >>>
 connection.id:ethernet
 connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -16174,6 +16235,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
diff --git a/src/tests/client/test-client.check-on-disk/test_004.expected b/src/tests/client/test-client.check-on-disk/test_004.expected
index c57ea772..09422f10 100644
--- a/src/tests/client/test-client.check-on-disk/test_004.expected
+++ b/src/tests/client/test-client.check-on-disk/test_004.expected
@@ -58,12 +58,12 @@ location: src/tests/client/test-client.py:test_004()/7
 cmd: $NMCLI connection mod con-xx1 ipv4.addresses 192.168.77.5/24 ipv4.routes '2.3.4.5/32 192.168.77.1' ipv6.addresses 1:2:3:4::6/64 ipv6.routes 1:2:3:4:5:6::5/128
 lang: C
 returncode: 0
-size: 6146
+size: 6199
 location: src/tests/client/test-client.py:test_004()/8
 cmd: $NMCLI con s con-xx1
 lang: C
 returncode: 0
-stdout: 6015 bytes
+stdout: 6068 bytes
 >>>
 connection.id:                          con-xx1
 connection.uuid:                        UUID-con-xx1-REPLACED-REPLACED-REPLA
@@ -138,6 +138,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -193,12 +194,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 6181
+size: 6234
 location: src/tests/client/test-client.py:test_004()/9
 cmd: $NMCLI con s con-xx1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6040 bytes
+stdout: 6093 bytes
 >>>
 connection.id:                          con-xx1
 connection.uuid:                        UUID-con-xx1-REPLACED-REPLACED-REPLA
@@ -273,6 +274,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -364,12 +366,12 @@ con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  vpn       --
 con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      --     
 
 <<<
-size: 5522
+size: 5575
 location: src/tests/client/test-client.py:test_004()/13
 cmd: $NMCLI con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5388 bytes
+stdout: 5441 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -426,6 +428,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -487,12 +490,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5549
+size: 5602
 location: src/tests/client/test-client.py:test_004()/14
 cmd: $NMCLI con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5405 bytes
+stdout: 5458 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -549,6 +552,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -682,12 +686,12 @@ con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      wlan0
 con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  --     
 
 <<<
-size: 6650
+size: 6703
 location: src/tests/client/test-client.py:test_004()/21
 cmd: $NMCLI con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6516 bytes
+stdout: 6569 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -744,6 +748,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -826,12 +831,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6683
+size: 6736
 location: src/tests/client/test-client.py:test_004()/22
 cmd: $NMCLI con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6539 bytes
+stdout: 6592 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -888,6 +893,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1086,12 +1092,12 @@ con-xx1    UUID-con-xx1-REPLACED-REPLACED-REPLA  wifi      0          never
 con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          never           yes          0                     no        /org/freedesktop/NetworkManager/Settings/Connection/1  no      --      --         --                                                  --     /etc/NetworkManager/system-connections/con-1     
 
 <<<
-size: 6656
+size: 6709
 location: src/tests/client/test-client.py:test_004()/27
 cmd: $NMCLI con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1148,6 +1154,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1230,12 +1237,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6693
+size: 6746
 location: src/tests/client/test-client.py:test_004()/28
 cmd: $NMCLI con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1292,6 +1299,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1374,12 +1382,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6656
+size: 6709
 location: src/tests/client/test-client.py:test_004()/29
 cmd: $NMCLI con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1436,6 +1444,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1518,12 +1527,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6693
+size: 6746
 location: src/tests/client/test-client.py:test_004()/30
 cmd: $NMCLI con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1580,6 +1589,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1662,12 +1672,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 5529
+size: 5582
 location: src/tests/client/test-client.py:test_004()/31
 cmd: $NMCLI -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5388 bytes
+stdout: 5441 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1724,6 +1734,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -1785,12 +1796,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5556
+size: 5609
 location: src/tests/client/test-client.py:test_004()/32
 cmd: $NMCLI -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5405 bytes
+stdout: 5458 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1847,6 +1858,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4518,12 +4530,12 @@ connection.type:                        802-11-wireless
 connection.interface-name:              --
 
 <<<
-size: 6668
+size: 6721
 location: src/tests/client/test-client.py:test_004()/77
 cmd: $NMCLI --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4580,6 +4592,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4662,12 +4675,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6705
+size: 6758
 location: src/tests/client/test-client.py:test_004()/78
 cmd: $NMCLI --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4724,6 +4737,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4806,12 +4820,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6668
+size: 6721
 location: src/tests/client/test-client.py:test_004()/79
 cmd: $NMCLI --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4868,6 +4882,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -4950,12 +4965,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6705
+size: 6758
 location: src/tests/client/test-client.py:test_004()/80
 cmd: $NMCLI --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -5012,6 +5027,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5094,12 +5110,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 5541
+size: 5594
 location: src/tests/client/test-client.py:test_004()/81
 cmd: $NMCLI --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5388 bytes
+stdout: 5441 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -5156,6 +5172,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -5217,12 +5234,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5568
+size: 5621
 location: src/tests/client/test-client.py:test_004()/82
 cmd: $NMCLI --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5405 bytes
+stdout: 5458 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -5279,6 +5296,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -7950,12 +7968,12 @@ connection.type:                        802-11-wireless
 connection.interface-name:              --
 
 <<<
-size: 7677
+size: 7730
 location: src/tests/client/test-client.py:test_004()/127
 cmd: $NMCLI --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -8016,6 +8034,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -8107,12 +8126,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7727
+size: 7780
 location: src/tests/client/test-client.py:test_004()/128
 cmd: $NMCLI --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -8173,6 +8192,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -8264,12 +8284,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7677
+size: 7730
 location: src/tests/client/test-client.py:test_004()/129
 cmd: $NMCLI --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -8330,6 +8350,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -8421,12 +8442,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7727
+size: 7780
 location: src/tests/client/test-client.py:test_004()/130
 cmd: $NMCLI --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -8487,6 +8508,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -8578,12 +8600,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 6158
+size: 6211
 location: src/tests/client/test-client.py:test_004()/131
 cmd: $NMCLI --pretty -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6007 bytes
+stdout: 6060 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -8644,6 +8666,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -8709,12 +8732,12 @@ proxy.pac-script:                       --
 -------------------------------------------------------------------------------
 
 <<<
-size: 6190
+size: 6243
 location: src/tests/client/test-client.py:test_004()/132
 cmd: $NMCLI --pretty -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6029 bytes
+stdout: 6082 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -8775,6 +8798,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12054,12 +12078,12 @@ connection.interface-name:              --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7689
+size: 7742
 location: src/tests/client/test-client.py:test_004()/177
 cmd: $NMCLI --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -12120,6 +12144,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12211,12 +12236,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7739
+size: 7792
 location: src/tests/client/test-client.py:test_004()/178
 cmd: $NMCLI --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -12277,6 +12302,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12368,12 +12394,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7689
+size: 7742
 location: src/tests/client/test-client.py:test_004()/179
 cmd: $NMCLI --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -12434,6 +12460,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12525,12 +12552,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7739
+size: 7792
 location: src/tests/client/test-client.py:test_004()/180
 cmd: $NMCLI --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -12591,6 +12618,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12682,12 +12710,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 6170
+size: 6223
 location: src/tests/client/test-client.py:test_004()/181
 cmd: $NMCLI --pretty --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6007 bytes
+stdout: 6060 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -12748,6 +12776,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -12813,12 +12842,12 @@ proxy.pac-script:                       --
 -------------------------------------------------------------------------------
 
 <<<
-size: 6202
+size: 6255
 location: src/tests/client/test-client.py:test_004()/182
 cmd: $NMCLI --pretty --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6029 bytes
+stdout: 6082 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -12879,6 +12908,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -16158,12 +16188,12 @@ connection.interface-name:              --
 -------------------------------------------------------------------------------
 
 <<<
-size: 3409
+size: 3428
 location: src/tests/client/test-client.py:test_004()/227
 cmd: $NMCLI --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16220,6 +16250,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16302,12 +16333,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3419
+size: 3438
 location: src/tests/client/test-client.py:test_004()/228
 cmd: $NMCLI --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16364,6 +16395,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16446,12 +16478,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3409
+size: 3428
 location: src/tests/client/test-client.py:test_004()/229
 cmd: $NMCLI --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16508,6 +16540,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16590,12 +16623,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3419
+size: 3438
 location: src/tests/client/test-client.py:test_004()/230
 cmd: $NMCLI --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16652,6 +16685,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16734,12 +16768,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 2834
+size: 2853
 location: src/tests/client/test-client.py:test_004()/231
 cmd: $NMCLI --terse -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16796,6 +16830,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -16857,12 +16892,12 @@ proxy.pac-url:
 proxy.pac-script:
 
 <<<
-size: 2844
+size: 2863
 location: src/tests/client/test-client.py:test_004()/232
 cmd: $NMCLI --terse -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -16919,6 +16954,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -19560,12 +19596,12 @@ connection.type:802-11-wireless
 connection.interface-name:
 
 <<<
-size: 3421
+size: 3440
 location: src/tests/client/test-client.py:test_004()/277
 cmd: $NMCLI --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -19622,6 +19658,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -19704,12 +19741,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3431
+size: 3450
 location: src/tests/client/test-client.py:test_004()/278
 cmd: $NMCLI --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -19766,6 +19803,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -19848,12 +19886,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3421
+size: 3440
 location: src/tests/client/test-client.py:test_004()/279
 cmd: $NMCLI --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -19910,6 +19948,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -19992,12 +20031,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3431
+size: 3450
 location: src/tests/client/test-client.py:test_004()/280
 cmd: $NMCLI --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -20054,6 +20093,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -20136,12 +20176,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 2846
+size: 2865
 location: src/tests/client/test-client.py:test_004()/281
 cmd: $NMCLI --terse --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -20198,6 +20238,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -20259,12 +20300,12 @@ proxy.pac-url:
 proxy.pac-script:
 
 <<<
-size: 2856
+size: 2875
 location: src/tests/client/test-client.py:test_004()/282
 cmd: $NMCLI --terse --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -20321,6 +20362,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -22962,18 +23004,18 @@ connection.type:802-11-wireless
 connection.interface-name:
 
 <<<
-size: 4518
+size: 4546
 location: src/tests/client/test-client.py:test_004()/327
 cmd: $NMCLI --mode tabular con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 4368 bytes
+stdout: 4396 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -22991,18 +23033,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4557
+size: 4585
 location: src/tests/client/test-client.py:test_004()/328
 cmd: $NMCLI --mode tabular con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4397 bytes
+stdout: 4425 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -23020,18 +23062,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4518
+size: 4546
 location: src/tests/client/test-client.py:test_004()/329
 cmd: $NMCLI --mode tabular con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 4368 bytes
+stdout: 4396 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -23049,18 +23091,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4557
+size: 4585
 location: src/tests/client/test-client.py:test_004()/330
 cmd: $NMCLI --mode tabular con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4397 bytes
+stdout: 4425 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -23078,18 +23120,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 3766
+size: 3794
 location: src/tests/client/test-client.py:test_004()/331
 cmd: $NMCLI --mode tabular -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3609 bytes
+stdout: 3637 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -23102,18 +23144,18 @@ proxy  none    no            --       --
 
 
 <<<
-size: 3794
+size: 3822
 location: src/tests/client/test-client.py:test_004()/332
 cmd: $NMCLI --mode tabular -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3627 bytes
+stdout: 3655 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24616,18 +24658,18 @@ interface-name
 
 
 <<<
-size: 4530
+size: 4558
 location: src/tests/client/test-client.py:test_004()/377
 cmd: $NMCLI --mode tabular --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 4368 bytes
+stdout: 4396 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24645,18 +24687,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4569
+size: 4597
 location: src/tests/client/test-client.py:test_004()/378
 cmd: $NMCLI --mode tabular --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4397 bytes
+stdout: 4425 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24674,18 +24716,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4530
+size: 4558
 location: src/tests/client/test-client.py:test_004()/379
 cmd: $NMCLI --mode tabular --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 4368 bytes
+stdout: 4396 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24703,18 +24745,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 4569
+size: 4597
 location: src/tests/client/test-client.py:test_004()/380
 cmd: $NMCLI --mode tabular --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 4397 bytes
+stdout: 4425 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24732,18 +24774,18 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 3778
+size: 3806
 location: src/tests/client/test-client.py:test_004()/381
 cmd: $NMCLI --mode tabular --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3609 bytes
+stdout: 3637 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered  lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               no             yes       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  auto  --            --         --         0 (default)   yes                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -24756,18 +24798,18 @@ proxy  none    no            --       --
 
 
 <<<
-size: 3806
+size: 3834
 location: src/tests/client/test-client.py:test_004()/382
 cmd: $NMCLI --mode tabular --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3627 bytes
+stdout: 3655 bytes
 >>>
 name        id         uuid                                  stable-id  type  interface-name  autoconnect  autoconnect-priority  autoconnect-retries  multi-connect  auth-retries  timestamp  permissions  zone  controller  master  slave-type  port-type  autoconnect-slaves  autoconnect-ports  down-on-poweroff  secondaries  gateway-ping-timeout  ip-ping-timeout  ip-ping-addresses  ip-ping-addresses-require-all  metered   lldp     mdns          llmnr         dns-over-tls  mptcp-flags    wait-device-timeout  wait-activation-delay 
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ipv6  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              nie            tak       -1 (default)      -1 (default)  0 (default)          0 (default)              default        0 (default)  automatyczne  --            --         --         0 (default)   tak                            -1 (default)        --             0x0 (none)           -1 (default)       --    
@@ -26270,12 +26312,12 @@ interface-name
 
 
 <<<
-size: 7047
+size: 7089
 location: src/tests/client/test-client.py:test_004()/427
 cmd: $NMCLI --mode tabular --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6888 bytes
+stdout: 6930 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -26284,9 +26326,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -26312,12 +26354,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7133
+size: 7175
 location: src/tests/client/test-client.py:test_004()/428
 cmd: $NMCLI --mode tabular --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6964 bytes
+stdout: 7006 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -26326,9 +26368,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -26354,12 +26396,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7047
+size: 7089
 location: src/tests/client/test-client.py:test_004()/429
 cmd: $NMCLI --mode tabular --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6888 bytes
+stdout: 6930 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -26368,9 +26410,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -26396,12 +26438,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7133
+size: 7175
 location: src/tests/client/test-client.py:test_004()/430
 cmd: $NMCLI --mode tabular --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6964 bytes
+stdout: 7006 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -26410,9 +26452,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -26438,12 +26480,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 5709
+size: 5751
 location: src/tests/client/test-client.py:test_004()/431
 cmd: $NMCLI --mode tabular --pretty -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5543 bytes
+stdout: 5585 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -26452,9 +26494,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -26470,12 +26512,12 @@ proxy  none    no            --       --
 
 
 <<<
-size: 5756
+size: 5798
 location: src/tests/client/test-client.py:test_004()/432
 cmd: $NMCLI --mode tabular --pretty -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5580 bytes
+stdout: 5622 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -26484,9 +26526,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28578,12 +28620,12 @@ interface-name
 
 
 <<<
-size: 7059
+size: 7101
 location: src/tests/client/test-client.py:test_004()/477
 cmd: $NMCLI --mode tabular --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6888 bytes
+stdout: 6930 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -28592,9 +28634,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28620,12 +28662,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7145
+size: 7187
 location: src/tests/client/test-client.py:test_004()/478
 cmd: $NMCLI --mode tabular --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6964 bytes
+stdout: 7006 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -28634,9 +28676,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28662,12 +28704,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7059
+size: 7101
 location: src/tests/client/test-client.py:test_004()/479
 cmd: $NMCLI --mode tabular --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6888 bytes
+stdout: 6930 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -28676,9 +28718,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28704,12 +28746,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 - VPN connected  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 7145
+size: 7187
 location: src/tests/client/test-client.py:test_004()/480
 cmd: $NMCLI --mode tabular --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6964 bytes
+stdout: 7006 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -28718,9 +28760,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28746,12 +28788,12 @@ NAME  TYPE     USERNAME  GATEWAY  BANNER                            VPN-STATE
 VPN   openvpn  --        --       *** VPN connection con-vpn-1 ***  5 — Połączono z VPN  key1 = val1 | key2 = val2 | key3 = val3 
 
 <<<
-size: 5721
+size: 5763
 location: src/tests/client/test-client.py:test_004()/481
 cmd: $NMCLI --mode tabular --pretty --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5543 bytes
+stdout: 5585 bytes
 >>>
 ==========================================
   Connection profile details (con-vpn-1)
@@ -28760,9 +28802,9 @@ name        id         uuid                                  stable-id  type  in
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              yes          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   unknown  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  no                  no               --              --         --         0 (default)   yes                            -1 (default)        -1 (default)  --             --         0x0 (none)           no             yes       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu   dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28778,12 +28820,12 @@ proxy  none    no            --       --
 
 
 <<<
-size: 5768
+size: 5810
 location: src/tests/client/test-client.py:test_004()/482
 cmd: $NMCLI --mode tabular --pretty --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5580 bytes
+stdout: 5622 bytes
 >>>
 ============================================
   Szczegóły profilu połączenia (con-vpn-1)
@@ -28792,9 +28834,9 @@ name        id         uuid                                  stable-id  type  in
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 connection  con-vpn-1  UUID-con-vpn-1-REPLACED-REPLACED-REP  --         vpn   --              tak          0                     -1 (default)         0 (default)    -1            0          --           --    --          --      --          --         -1 (default)        -1 (default)       -1 (default)      --           0                     0                --                 -1 (default)                   nieznane  default  -1 (default)  -1 (default)  -1 (default)  0x0 (default)  -1                   -1                    
 
-name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
+name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  dhcp-client-id  dhcp-iaid  dhcp-dscp  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  forwarding    dhcp-hostname  dhcp-fqdn  dhcp-hostname-flags  never-default  may-fail  required-timeout  dad-timeout   dhcp-vendor-class-identifier  dhcp-ipv6-only-preferred  link-local   dhcp-reject-servers  auto-route-ext-gw  shared-dhcp-range  shared-dhcp-lease-time 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ipv4  auto    --   --          --           0             --         --       --      -1            0 (unspec)   --             -1 (default)        -1 (default)       -1 (default)  nie                 nie              --              --         --         0 (default)   tak                            -1 (default)        -1 (default)  --             --         0x0 (none)           nie            tak       -1 (default)      -1 (default)  --                            -1 (default)              0 (default)  --                   -1 (default)       --                 0 (default)            
 
 name  method  dns  dns-search  dns-options  dns-priority  addresses  gateway  routes  route-metric  route-table  routing-rules  replace-local-rule  dhcp-send-release  routed-dns    ignore-auto-routes  ignore-auto-dns  never-default  may-fail  required-timeout  ip6-privacy   temp-valid-lifetime  temp-preferred-lifetime  addr-gen-mode  ra-timeout   mtu           dhcp-pd-hint  dhcp-duid  dhcp-iaid  dhcp-timeout  dhcp-send-hostname-deprecated  dhcp-send-hostname  dhcp-hostname  dhcp-hostname-flags  auto-route-ext-gw  token 
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -30886,15 +30928,15 @@ interface-name
 
 
 <<<
-size: 883
+size: 886
 location: src/tests/client/test-client.py:test_004()/527
 cmd: $NMCLI --mode tabular --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -30902,15 +30944,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 893
+size: 896
 location: src/tests/client/test-client.py:test_004()/528
 cmd: $NMCLI --mode tabular --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -30918,15 +30960,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 883
+size: 886
 location: src/tests/client/test-client.py:test_004()/529
 cmd: $NMCLI --mode tabular --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -30934,15 +30976,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 893
+size: 896
 location: src/tests/client/test-client.py:test_004()/530
 cmd: $NMCLI --mode tabular --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -30950,29 +30992,29 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 590
+size: 593
 location: src/tests/client/test-client.py:test_004()/531
 cmd: $NMCLI --mode tabular --terse -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 426 bytes
+stdout: 429 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
 
 <<<
-size: 600
+size: 603
 location: src/tests/client/test-client.py:test_004()/532
 cmd: $NMCLI --mode tabular --terse -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 426 bytes
+stdout: 429 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -31824,15 +31866,15 @@ UUID-con-xx1-REPLACED-REPLACED-REPLA
 
 
 <<<
-size: 895
+size: 898
 location: src/tests/client/test-client.py:test_004()/577
 cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -31840,15 +31882,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 905
+size: 908
 location: src/tests/client/test-client.py:test_004()/578
 cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -31856,15 +31898,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 895
+size: 898
 location: src/tests/client/test-client.py:test_004()/579
 cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -31872,15 +31914,15 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 905
+size: 908
 location: src/tests/client/test-client.py:test_004()/580
 cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 726 bytes
+stdout: 729 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -31888,29 +31930,29 @@ GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:
 VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
 
 <<<
-size: 602
+size: 605
 location: src/tests/client/test-client.py:test_004()/581
 cmd: $NMCLI --mode tabular --terse --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 426 bytes
+stdout: 429 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
 
 <<<
-size: 612
+size: 615
 location: src/tests/client/test-client.py:test_004()/582
 cmd: $NMCLI --mode tabular --terse --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 426 bytes
+stdout: 429 bytes
 >>>
 connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:::::::-1:-1:-1::0:0::-1:unknown:default:-1:-1:-1:0x0:-1:-1
-ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
+ipv4:auto::::0::::-1:0::-1:-1:-1:no:no::::0:yes:-1:-1:::0x0:no:yes:-1:-1::-1:0::-1::0
 ipv6:auto::::0::::-1:0::-1:-1:-1:no:no:no:yes:-1:-1:0:0:default:0:auto::::0:yes:-1::0x0:-1:
 vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
 proxy:none:no::
@@ -32762,12 +32804,12 @@ UUID-con-xx1-REPLACED-REPLACED-REPLA
 
 
 <<<
-size: 6674
+size: 6727
 location: src/tests/client/test-client.py:test_004()/627
 cmd: $NMCLI --mode multiline con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -32824,6 +32866,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -32906,12 +32949,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6711
+size: 6764
 location: src/tests/client/test-client.py:test_004()/628
 cmd: $NMCLI --mode multiline con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -32968,6 +33011,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -33050,12 +33094,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6674
+size: 6727
 location: src/tests/client/test-client.py:test_004()/629
 cmd: $NMCLI --mode multiline con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -33112,6 +33156,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -33194,12 +33239,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6711
+size: 6764
 location: src/tests/client/test-client.py:test_004()/630
 cmd: $NMCLI --mode multiline con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -33256,6 +33301,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -33338,12 +33384,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 5547
+size: 5600
 location: src/tests/client/test-client.py:test_004()/631
 cmd: $NMCLI --mode multiline -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5388 bytes
+stdout: 5441 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -33400,6 +33446,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -33461,12 +33508,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5574
+size: 5627
 location: src/tests/client/test-client.py:test_004()/632
 cmd: $NMCLI --mode multiline -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5405 bytes
+stdout: 5458 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -33523,6 +33570,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -36704,12 +36752,12 @@ connection.type:                        802-11-wireless
 connection.interface-name:              --
 
 <<<
-size: 6686
+size: 6739
 location: src/tests/client/test-client.py:test_004()/677
 cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -36766,6 +36814,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -36848,12 +36897,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6723
+size: 6776
 location: src/tests/client/test-client.py:test_004()/678
 cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -36910,6 +36959,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -36992,12 +37042,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6686
+size: 6739
 location: src/tests/client/test-client.py:test_004()/679
 cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6522 bytes
+stdout: 6575 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -37054,6 +37104,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -37136,12 +37187,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 6723
+size: 6776
 location: src/tests/client/test-client.py:test_004()/680
 cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6549 bytes
+stdout: 6602 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -37198,6 +37249,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -37280,12 +37332,12 @@ VPN.CFG[2]:                             key2 = val2
 VPN.CFG[3]:                             key3 = val3
 
 <<<
-size: 5559
+size: 5612
 location: src/tests/client/test-client.py:test_004()/681
 cmd: $NMCLI --mode multiline --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 5388 bytes
+stdout: 5441 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -37342,6 +37394,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -37403,12 +37456,12 @@ proxy.pac-url:                          --
 proxy.pac-script:                       --
 
 <<<
-size: 5586
+size: 5639
 location: src/tests/client/test-client.py:test_004()/682
 cmd: $NMCLI --mode multiline --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 5405 bytes
+stdout: 5458 bytes
 >>>
 connection.id:                          con-vpn-1
 connection.uuid:                        UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -37465,6 +37518,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -40646,12 +40700,12 @@ connection.type:                        802-11-wireless
 connection.interface-name:              --
 
 <<<
-size: 7694
+size: 7747
 location: src/tests/client/test-client.py:test_004()/727
 cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -40712,6 +40766,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -40803,12 +40858,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7744
+size: 7797
 location: src/tests/client/test-client.py:test_004()/728
 cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -40869,6 +40924,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -40960,12 +41016,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7694
+size: 7747
 location: src/tests/client/test-client.py:test_004()/729
 cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -41026,6 +41082,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -41117,12 +41174,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7744
+size: 7797
 location: src/tests/client/test-client.py:test_004()/730
 cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -41183,6 +41240,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -41274,12 +41332,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 6175
+size: 6228
 location: src/tests/client/test-client.py:test_004()/731
 cmd: $NMCLI --mode multiline --pretty -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6007 bytes
+stdout: 6060 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -41340,6 +41398,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -41405,12 +41464,12 @@ proxy.pac-script:                       --
 -------------------------------------------------------------------------------
 
 <<<
-size: 6207
+size: 6260
 location: src/tests/client/test-client.py:test_004()/732
 cmd: $NMCLI --mode multiline --pretty -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6029 bytes
+stdout: 6082 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -41471,6 +41530,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -45290,12 +45350,12 @@ connection.interface-name:              --
 -------------------------------------------------------------------------------
 
 <<<
-size: 7706
+size: 7759
 location: src/tests/client/test-client.py:test_004()/777
 cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -45356,6 +45416,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -45447,12 +45508,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7756
+size: 7809
 location: src/tests/client/test-client.py:test_004()/778
 cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -45513,6 +45574,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -45604,12 +45666,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7706
+size: 7759
 location: src/tests/client/test-client.py:test_004()/779
 cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 7533 bytes
+stdout: 7586 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -45670,6 +45732,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -45761,12 +45824,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 7756
+size: 7809
 location: src/tests/client/test-client.py:test_004()/780
 cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 7573 bytes
+stdout: 7626 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -45827,6 +45890,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -45918,12 +45982,12 @@ VPN.CFG[3]:                             key3 = val3
 -------------------------------------------------------------------------------
 
 <<<
-size: 6187
+size: 6240
 location: src/tests/client/test-client.py:test_004()/781
 cmd: $NMCLI --mode multiline --pretty --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 6007 bytes
+stdout: 6060 bytes
 >>>
 ===============================================================================
                     Connection profile details (con-vpn-1)
@@ -45984,6 +46048,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     yes
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -46049,12 +46114,12 @@ proxy.pac-script:                       --
 -------------------------------------------------------------------------------
 
 <<<
-size: 6219
+size: 6272
 location: src/tests/client/test-client.py:test_004()/782
 cmd: $NMCLI --mode multiline --pretty --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 6029 bytes
+stdout: 6082 bytes
 >>>
 ===============================================================================
                    Szczegóły profilu połączenia (con-vpn-1)
@@ -46115,6 +46180,7 @@ ipv4.dhcp-dscp:                         --
 ipv4.dhcp-timeout:                      0 (default)
 ipv4.dhcp-send-hostname-deprecated:     tak
 ipv4.dhcp-send-hostname:                -1 (default)
+ipv4.forwarding:                        -1 (default)
 ipv4.dhcp-hostname:                     --
 ipv4.dhcp-fqdn:                         --
 ipv4.dhcp-hostname-flags:               0x0 (none)
@@ -49934,12 +50000,12 @@ connection.interface-name:              --
 -------------------------------------------------------------------------------
 
 <<<
-size: 3426
+size: 3445
 location: src/tests/client/test-client.py:test_004()/827
 cmd: $NMCLI --mode multiline --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -49996,6 +50062,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -50078,12 +50145,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3436
+size: 3455
 location: src/tests/client/test-client.py:test_004()/828
 cmd: $NMCLI --mode multiline --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -50140,6 +50207,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -50222,12 +50290,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3426
+size: 3445
 location: src/tests/client/test-client.py:test_004()/829
 cmd: $NMCLI --mode multiline --terse con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -50284,6 +50352,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -50366,12 +50435,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3436
+size: 3455
 location: src/tests/client/test-client.py:test_004()/830
 cmd: $NMCLI --mode multiline --terse con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -50428,6 +50497,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -50510,12 +50580,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 2851
+size: 2870
 location: src/tests/client/test-client.py:test_004()/831
 cmd: $NMCLI --mode multiline --terse -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -50572,6 +50642,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -50633,12 +50704,12 @@ proxy.pac-url:
 proxy.pac-script:
 
 <<<
-size: 2861
+size: 2880
 location: src/tests/client/test-client.py:test_004()/832
 cmd: $NMCLI --mode multiline --terse -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -50695,6 +50766,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -53876,12 +53948,12 @@ connection.type:802-11-wireless
 connection.interface-name:
 
 <<<
-size: 3438
+size: 3457
 location: src/tests/client/test-client.py:test_004()/877
 cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -53938,6 +54010,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -54020,12 +54093,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3448
+size: 3467
 location: src/tests/client/test-client.py:test_004()/878
 cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -54082,6 +54155,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -54164,12 +54238,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3438
+size: 3457
 location: src/tests/client/test-client.py:test_004()/879
 cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -54226,6 +54300,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -54308,12 +54383,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 3448
+size: 3467
 location: src/tests/client/test-client.py:test_004()/880
 cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 3266 bytes
+stdout: 3285 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -54370,6 +54445,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -54452,12 +54528,12 @@ VPN.CFG[2]:key2 = val2
 VPN.CFG[3]:key3 = val3
 
 <<<
-size: 2863
+size: 2882
 location: src/tests/client/test-client.py:test_004()/881
 cmd: $NMCLI --mode multiline --terse --color yes -f ALL con s con-vpn-1
 lang: C
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -54514,6 +54590,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -54575,12 +54652,12 @@ proxy.pac-url:
 proxy.pac-script:
 
 <<<
-size: 2873
+size: 2892
 location: src/tests/client/test-client.py:test_004()/882
 cmd: $NMCLI --mode multiline --terse --color yes -f ALL con s con-vpn-1
 lang: pl_PL.UTF-8
 returncode: 0
-stdout: 2684 bytes
+stdout: 2703 bytes
 >>>
 connection.id:con-vpn-1
 connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -54637,6 +54714,7 @@ ipv4.dhcp-dscp:
 ipv4.dhcp-timeout:0
 ipv4.dhcp-send-hostname-deprecated:yes
 ipv4.dhcp-send-hostname:-1
+ipv4.forwarding:-1
 ipv4.dhcp-hostname:
 ipv4.dhcp-fqdn:
 ipv4.dhcp-hostname-flags:0x0
@@ -57903,3 +57981,43 @@ con-xx2    UUID-con-xx2-REPLACED-REPLACED-REPLA  ethernet  0          nigdy
 con-1      5fcfd6d7-1e63-3332-8826-a7eda103792d  ethernet  0          nigdy           tak          0                     nie       /org/freedesktop/NetworkManager/Settings/Connection/1  nie     --      --          --                                                  --     /etc/NetworkManager/system-connections/con-1     
 
 <<<
+size: 359
+location: src/tests/client/test-client.py:test_004()/934
+cmd: $NMCLI connection add type ethernet ifname foobar con-name con-port1 ipv4.method disabled ipv6.method ignore connection.port-type bridge connection.controller bridge1
+lang: C
+returncode: 0
+stdout: 82 bytes
+>>>
+Connection 'con-port1' (UUID-con-port1-REPLACED-REPLACED-REP) successfully added.
+
+<<<
+size: 353
+location: src/tests/client/test-client.py:test_004()/935
+cmd: $NMCLI connection add type ethernet ifname foobar con-name ethernet-foobar ipv6.method auto connection.port-type bridge connection.controller bridge1
+lang: C
+returncode: 2
+stderr: 93 bytes
+>>>
+Error: invalid or not allowed setting 'ipv6': port connections cannot have IP configuration.
+
+<<<
+size: 373
+location: src/tests/client/test-client.py:test_004()/936
+cmd: $NMCLI connection add type ovs-interface ifname ovs-int con-name con-ovs-int ipv4.method auto ipv6.method link-local connection.port-type ovs-port connection.controller ovs-port1
+lang: C
+returncode: 0
+stdout: 84 bytes
+>>>
+Connection 'con-ovs-int' (UUID-con-ovs-int-REPLACED-REPLACED-R) successfully added.
+
+<<<
+size: 377
+location: src/tests/client/test-client.py:test_004()/937
+cmd: $NMCLI connection add type ethernet ifname enp1s0 con-name con-port2 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv6.method dhcp connection.port-type vrf connection.controller vrf1
+lang: C
+returncode: 0
+stdout: 82 bytes
+>>>
+Connection 'con-port2' (UUID-con-port2-REPLACED-REPLACED-REP) successfully added.
+
+<<<
diff --git a/src/tests/client/test-client.py b/src/tests/client/test-client.py
index 62b72b79..cc76d37b 100755
--- a/src/tests/client/test-client.py
+++ b/src/tests/client/test-client.py
@@ -2125,6 +2125,113 @@ class TestNmcli(unittest.TestCase):
             replace_stdout=replace_uuids,
         )
 
+        # It is allowed to set IP method disabled/ignore for ports
+        replace_uuids.append(
+            self.ctx.srv.ReplaceTextConUuid(
+                "con-port1", "UUID-con-port1-REPLACED-REPLACED-REP"
+            )
+        )
+        self.call_nmcli(
+            [
+                "connection",
+                "add",
+                "type",
+                "ethernet",
+                "ifname",
+                "foobar",
+                "con-name",
+                "con-port1",
+                "ipv4.method",
+                "disabled",
+                "ipv6.method",
+                "ignore",
+                "connection.port-type",
+                "bridge",
+                "connection.controller",
+                "bridge1",
+            ],
+            replace_stdout=replace_uuids,
+        )
+
+        # It is NOT allowed to set IP method != disabled/ignore for ports
+        self.call_nmcli(
+            [
+                "connection",
+                "add",
+                "type",
+                "ethernet",
+                "ifname",
+                "foobar",
+                "con-name",
+                "ethernet-foobar",
+                "ipv6.method",
+                "auto",
+                "connection.port-type",
+                "bridge",
+                "connection.controller",
+                "bridge1",
+            ],
+            replace_stdout=replace_uuids,
+        )
+
+        # ovs-interface connections support IP configuration
+        replace_uuids.append(
+            self.ctx.srv.ReplaceTextConUuid(
+                "con-ovs-int", "UUID-con-ovs-int-REPLACED-REPLACED-R"
+            )
+        )
+        self.call_nmcli(
+            [
+                "connection",
+                "add",
+                "type",
+                "ovs-interface",
+                "ifname",
+                "ovs-int",
+                "con-name",
+                "con-ovs-int",
+                "ipv4.method",
+                "auto",
+                "ipv6.method",
+                "link-local",
+                "connection.port-type",
+                "ovs-port",
+                "connection.controller",
+                "ovs-port1",
+            ],
+            replace_stdout=replace_uuids,
+        )
+
+        # VRF ports support IP configuration
+        replace_uuids.append(
+            self.ctx.srv.ReplaceTextConUuid(
+                "con-port2", "UUID-con-port2-REPLACED-REPLACED-REP"
+            )
+        )
+        self.call_nmcli(
+            [
+                "connection",
+                "add",
+                "type",
+                "ethernet",
+                "ifname",
+                "enp1s0",
+                "con-name",
+                "con-port2",
+                "ipv4.method",
+                "manual",
+                "ipv4.addresses",
+                "192.0.2.1/24",
+                "ipv6.method",
+                "dhcp",
+                "connection.port-type",
+                "vrf",
+                "connection.controller",
+                "vrf1",
+            ],
+            replace_stdout=replace_uuids,
+        )
+
     @nm_test_no_dbus
     def test_offline(self):
         # Make sure we're not using D-Bus
diff --git a/tools/generate-docs-nm-settings-docs-gir.py b/tools/generate-docs-nm-settings-docs-gir.py
index e438d87a..40fab200 100755
--- a/tools/generate-docs-nm-settings-docs-gir.py
+++ b/tools/generate-docs-nm-settings-docs-gir.py
@@ -6,26 +6,9 @@
 from __future__ import print_function, unicode_literals
 import xml.etree.ElementTree as ET
 import argparse
-import os
 import gi
 import re
 
-gi.require_version("GIRepository", "2.0")
-from gi.repository import GIRepository
-
-try:
-    libs = os.environ["LD_LIBRARY_PATH"].split(":")
-    libs.reverse()
-    for lib in libs:
-        GIRepository.Repository.prepend_library_path(lib)
-except AttributeError:
-    # An old GI version, that has no prepend_library_path
-    # It's alright, it probably interprets LD_LIBRARY_PATH
-    # correctly.
-    pass
-except KeyError:
-    pass
-
 gi.require_version("NM", "1.0")
 from gi.repository import NM, GObject
 
@@ -355,13 +338,6 @@ def main(gir_path_str, output_path_str, output_target):
 if __name__ == "__main__":
     parser = argparse.ArgumentParser()
     parser.add_argument(
-        "-l",
-        "--lib-path",
-        metavar="PATH",
-        action="append",
-        help="path to scan for shared libraries",
-    )
-    parser.add_argument(
         "-g",
         "--gir",
         metavar="FILE",
@@ -384,8 +360,4 @@ if __name__ == "__main__":
 
     args = parser.parse_args()
 
-    if args.lib_path:
-        for lib in args.lib_path:
-            GIRepository.Repository.prepend_library_path(lib)
-
     main(args.gir, args.output, args.target)
diff --git a/tools/nm-in-container b/tools/nm-in-container
index 0e3f31da..365b8fcf 100755
--- a/tools/nm-in-container
+++ b/tools/nm-in-container
@@ -224,6 +224,7 @@ RUN dnf install -y \\
     libasan \\
     libcurl-devel \\
     libndp-devel \\
+    libnvme-devel \\
     libpsl-devel \\
     libselinux-devel \\
     libtool \\
diff --git a/tools/nm-in-vm b/tools/nm-in-vm
index 4d2c7a15..cf42b038 100755
--- a/tools/nm-in-vm
+++ b/tools/nm-in-vm
@@ -17,7 +17,7 @@ set -e
 #
 # Options (they MUST go before the command):
 #  -v | --vm: name of the VM to run the command on (by default 'nm').
-#             This allows to have more than one VM at the same time
+#             This allows one to have more than one VM at the same time
 #  -h | --help: show this text
 #
 # NetworkManager directories:
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py
index 8d39aef7..0a13f2bd 100755
--- a/tools/test-networkmanager-service.py
+++ b/tools/test-networkmanager-service.py
@@ -613,6 +613,7 @@ class NmUtil:
         if t not in [
             NM.SETTING_GSM_SETTING_NAME,
             NM.SETTING_MACVLAN_SETTING_NAME,
+            NM.SETTING_OVS_INTERFACE_SETTING_NAME,
             NM.SETTING_VLAN_SETTING_NAME,
             NM.SETTING_VPN_SETTING_NAME,
             NM.SETTING_WIMAX_SETTING_NAME,
diff --git a/vapi/NM-1.0.metadata b/vapi/NM-1.0.metadata
index d747aea8..4f630538 100644
--- a/vapi/NM-1.0.metadata
+++ b/vapi/NM-1.0.metadata
@@ -54,6 +54,7 @@ SETTING_OVS_PORT_*          parent="NM.SettingOvsPort"              name="SETTIN
 SETTING_PARAM_*             parent="NM.Setting"                     name="SETTING_PARAM_(.+)"
 SETTING_PPPOE_*             parent="NM.SettingPppoe"                name="SETTING_PPPOE_(.+)"
 SETTING_PPP_*               parent="NM.SettingPpp"                  name="SETTING_PPP_(.+)"
+SETTING_PREFIX_DELEGATION_* parent="NM.SettingPrefixDelegation"     name="SETTING_PREFIX_DELEGATION_(.+)"
 SETTING_PROXY_*             parent="NM.SettingProxy"                name="SETTING_PROXY_(.+)"
 SETTING_SERIAL_*            parent="NM.SettingSerial"               name="SETTING_SERIAL_(.+)"
 SETTING_SRIOV_*             parent="NM.SettingSriov"                name="SETTING_SRIOV_(.+)"