From d8c4e70533cc78b3db3eca6aaee83883124a2d27 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Fri, 3 May 2024 18:12:46 +0200 Subject: [PATCH 01/47] release: bump version to 1.49.0 (development) --- configure.ac | 4 ++-- meson.build | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 5a7f25a51a..5e7291d532 100644 --- a/configure.ac +++ b/configure.ac @@ -7,8 +7,8 @@ dnl - add corresponding NM_VERSION_x_y_z macros in dnl "shared/nm-version-macros.h.in" dnl - update number in meson.build m4_define([nm_major_version], [1]) -m4_define([nm_minor_version], [47]) -m4_define([nm_micro_version], [90]) +m4_define([nm_minor_version], [49]) +m4_define([nm_micro_version], [0]) m4_define([nm_version], [nm_major_version.nm_minor_version.nm_micro_version]) diff --git a/meson.build b/meson.build index 980c6f46ec..505989bcf6 100644 --- a/meson.build +++ b/meson.build @@ -6,7 +6,7 @@ project( # - add corresponding NM_VERSION_x_y_z macros in # "src/libnm-core-public/nm-version-macros.h.in" # - update number in configure.ac - version: '1.47.90', + version: '1.49.0', license: 'GPL2+', default_options: [ 'buildtype=debugoptimized', From 5fae0403b80291c25c432d41c2b7f9d0c78b8dc6 Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Thu, 25 Apr 2024 14:46:20 +0200 Subject: [PATCH 02/47] contrib/rpm: use meson by default for builds on RHEL10 As part of our plan to deprecate autotools, we will now be using meson by default to build NM releases on RHEL 10. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1929 --- contrib/fedora/rpm/NetworkManager.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index f55d243dd6..9d78200cf1 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -48,7 +48,7 @@ %global systemd_units_cloud_setup nm-cloud-setup.service nm-cloud-setup.timer ############################################################################### -%if 0%{?fedora} > 40 +%if 0%{?fedora} > 40 || 0%{?rhel} >= 10 %bcond_without meson %else %bcond_with meson From 69efb4660c26b7ff8d0042148f3d92bedb3fbeb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Fri, 19 Apr 2024 10:36:13 +0200 Subject: [PATCH 03/47] CI: periodically clean image's registry This will force to regenerate the various images of the distributions that we want to test so we get an updated snapshot on them. Otherwise we might be testing a months old version of them. A bug in ci-fairy was making the deletion of the images to partially fail. It is fixed in the latest version of ci-fairy, so we need to update the value of templates_sha to pick it. The task will run only on pipelines of type "scheduled". Then we can create a weekly scheduled pipeline in Gitlab. --- .gitlab-ci.yml | 140 ++++++++++++++++++++++++++++++++++------- .gitlab-ci/ci.template | 34 ++++++++-- 2 files changed, 149 insertions(+), 25 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e2a4e171a..2c5d77067a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ # see https://docs.gitlab.com/ee/ci/yaml/#includefile -.templates_sha: &template_sha 184ca628f89f3193c249b4e34e45afee2773a833 +.templates_sha: &template_sha 98b1218f146a1ec96d65e3ce0041f9a6ec5cb5e6 @@ -39,6 +39,8 @@ include: - project: 'freedesktop/ci-templates' ref: *template_sha file: '/templates/ubuntu.yml' + - project: 'freedesktop/ci-templates' + file: '/templates/ci-fairy.yml' stages: - prep @@ -57,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-ec0f564800e3' - CENTOS_TAG: 'tag-b114f45d4a4e' - DEBIAN_TAG: 'tag-318ea804326f' - FEDORA_TAG: 'tag-b114f45d4a4e' - UBUNTU_TAG: 'tag-318ea804326f' + ALPINE_TAG: 'tag-81dd13f55ef0' + CENTOS_TAG: 'tag-844c9af59d0e' + DEBIAN_TAG: 'tag-29bac6f208bb' + FEDORA_TAG: 'tag-844c9af59d0e' + UBUNTU_TAG: 'tag-29bac6f208bb' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -106,6 +108,8 @@ tier1:fedora:40@prep: FDO_DISTRIBUTION_VERSION: '40' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' tier1:fedora:rawhide@prep: extends: @@ -116,6 +120,8 @@ tier1:fedora:rawhide@prep: FDO_DISTRIBUTION_VERSION: 'rawhide' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' tier1:centos:stream9@prep: extends: @@ -126,6 +132,8 @@ tier1:centos:stream9@prep: FDO_DISTRIBUTION_VERSION: 'stream9' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' tier2:debian:sid@prep: extends: @@ -136,7 +144,10 @@ tier2:debian:sid@prep: FDO_DISTRIBUTION_VERSION: 'sid' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier2:debian:testing@prep: extends: @@ -147,7 +158,10 @@ tier2:debian:testing@prep: FDO_DISTRIBUTION_VERSION: 'testing' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier2:ubuntu:devel@prep: extends: @@ -158,7 +172,10 @@ tier2:ubuntu:devel@prep: FDO_DISTRIBUTION_VERSION: 'devel' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier2:alpine:edge@prep: extends: @@ -169,7 +186,10 @@ tier2:alpine:edge@prep: FDO_DISTRIBUTION_VERSION: 'edge' FDO_DISTRIBUTION_TAG: $ALPINE_TAG FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:fedora:39@prep: extends: @@ -180,7 +200,10 @@ tier3:fedora:39@prep: FDO_DISTRIBUTION_VERSION: '39' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:ubuntu:20.04@prep: extends: @@ -191,7 +214,10 @@ tier3:ubuntu:20.04@prep: FDO_DISTRIBUTION_VERSION: '20.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:ubuntu:22.04@prep: extends: @@ -202,7 +228,10 @@ tier3:ubuntu:22.04@prep: FDO_DISTRIBUTION_VERSION: '22.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:ubuntu:24.04@prep: extends: @@ -213,7 +242,10 @@ tier3:ubuntu:24.04@prep: FDO_DISTRIBUTION_VERSION: '24.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:ubuntu:rolling@prep: extends: @@ -224,7 +256,10 @@ tier3:ubuntu:rolling@prep: FDO_DISTRIBUTION_VERSION: 'rolling' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:debian:stable@prep: extends: @@ -235,7 +270,10 @@ tier3:debian:stable@prep: FDO_DISTRIBUTION_VERSION: 'stable' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:debian:oldstable@prep: extends: @@ -246,7 +284,10 @@ tier3:debian:oldstable@prep: FDO_DISTRIBUTION_VERSION: 'oldstable' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:centos:stream8@prep: extends: @@ -257,7 +298,10 @@ tier3:centos:stream8@prep: FDO_DISTRIBUTION_VERSION: 'stream8' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier3:alpine:latest@prep: extends: @@ -268,7 +312,10 @@ tier3:alpine:latest@prep: FDO_DISTRIBUTION_VERSION: 'latest' FDO_DISTRIBUTION_TAG: $ALPINE_TAG FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC - when: manual + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true ################################################################# # # @@ -310,6 +357,8 @@ t_fedora:40: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "tier1:fedora:40@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_fedora:rawhide: extends: @@ -335,6 +384,8 @@ t_fedora:rawhide: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "tier1:fedora:rawhide@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_centos:stream9: extends: @@ -360,6 +411,8 @@ t_centos:stream9: FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - "tier1:centos:stream9@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_debian:sid: extends: @@ -372,6 +425,8 @@ t_debian:sid: FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - "tier2:debian:sid@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_debian:testing: extends: @@ -384,6 +439,8 @@ t_debian:testing: FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - "tier2:debian:testing@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_ubuntu:devel: extends: @@ -396,6 +453,8 @@ t_ubuntu:devel: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - "tier2:ubuntu:devel@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_alpine:edge: extends: @@ -408,6 +467,8 @@ t_alpine:edge: FDO_DISTRIBUTION_TAG: $ALPINE_TAG needs: - "tier2:alpine:edge@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_fedora:39: extends: @@ -420,6 +481,8 @@ t_fedora:39: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "tier3:fedora:39@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_ubuntu:20.04: extends: @@ -432,6 +495,8 @@ t_ubuntu:20.04: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - "tier3:ubuntu:20.04@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_ubuntu:22.04: extends: @@ -444,6 +509,8 @@ t_ubuntu:22.04: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - "tier3:ubuntu:22.04@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_ubuntu:24.04: extends: @@ -456,6 +523,8 @@ t_ubuntu:24.04: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - "tier3:ubuntu:24.04@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_ubuntu:rolling: extends: @@ -468,6 +537,8 @@ t_ubuntu:rolling: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - "tier3:ubuntu:rolling@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_debian:stable: extends: @@ -480,6 +551,8 @@ t_debian:stable: FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - "tier3:debian:stable@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_debian:oldstable: extends: @@ -492,6 +565,8 @@ t_debian:oldstable: FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - "tier3:debian:oldstable@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_centos:stream8: extends: @@ -504,6 +579,8 @@ t_centos:stream8: FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - "tier3:centos:stream8@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' t_alpine:latest: extends: @@ -516,6 +593,8 @@ t_alpine:latest: FDO_DISTRIBUTION_TAG: $ALPINE_TAG needs: - "tier3:alpine:latest@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' ################################################################# # # @@ -531,6 +610,8 @@ check-patch: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "tier1:fedora:40@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 script: - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh @@ -544,6 +625,8 @@ check-tree: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "tier1:fedora:40@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 script: - date '+%Y%m%d-%H%M%S'; clang-format --version @@ -562,8 +645,10 @@ pages: expire_in: 20 days paths: - public - only: - - main + rules: + - if: $CI_PIPELINE_SOURCE == 'schedule' + when: never + - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' dependencies: - "t_fedora:40: [autotools+gcc+docs+valgrind]" needs: @@ -578,9 +663,22 @@ triage:issues: only: - schedules +# Clean the generated images periodically to get updated snapshots of the distribution images. +# Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type +# 'File' with an authentication token with API access level. +clean-images: + extends: + - .fdo.ci-fairy + stage: prep + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" + script: + - ci-fairy -v --authfile $AUTHFILE delete-image --project NetworkManager/NetworkManager --all + # Have detached MR pipeline (https://docs.gitlab.com/ee/ci/pipelines/merge_request_pipelines.html) # https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/540#what-it-means-for-me-a-maintainer-of-a-project-part-of-gitlabfreedesktoporg workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' + - if: $CI_PIPELINE_SOURCE == 'schedule' diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index f88c0a08a9..d93ba1c2d5 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -16,7 +16,7 @@ # see https://docs.gitlab.com/ee/ci/yaml/#includefile -.templates_sha: &template_sha 184ca628f89f3193c249b4e34e45afee2773a833 +.templates_sha: &template_sha 98b1218f146a1ec96d65e3ce0041f9a6ec5cb5e6 {# Group distros by their common (name,) tuples.#} {% set distro_groups = [] %} @@ -43,6 +43,8 @@ include: ref: *template_sha file: '/templates/{{distro_group.name}}.yml' {% endfor %} + - project: 'freedesktop/ci-templates' + file: '/templates/ci-fairy.yml' stages: - prep @@ -113,8 +115,11 @@ tier{{distro.tier}}:{{distro.name}}:{{version}}@prep: FDO_DISTRIBUTION_VERSION: '{{version}}' FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG FDO_DISTRIBUTION_EXEC: ${{distro.name.upper()}}_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' {% if distro.tier > 1 %} - when: manual + when: manual + allow_failure: true {% endif %} {% endfor %} {% endfor %} @@ -173,6 +178,8 @@ t_{{distro.name}}:{{version}}: {% endif %} needs: - "tier{{distro.tier}}:{{distro.name}}:{{version}}@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' {% endfor %} {% endfor %} @@ -190,6 +197,8 @@ check-patch: FDO_DISTRIBUTION_TAG: ${{default_distro.name.upper()}}_TAG needs: - "tier{{default_distro.tier}}:{{default_distro.name}}:{{default_distro.versions[0]}}@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 script: - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh @@ -203,6 +212,8 @@ check-tree: FDO_DISTRIBUTION_TAG: ${{default_distro.name.upper()}}_TAG needs: - "tier{{default_distro.tier}}:{{default_distro.name}}:{{default_distro.versions[0]}}@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 script: - date '+%Y%m%d-%H%M%S'; clang-format --version @@ -221,8 +232,10 @@ pages: expire_in: 20 days paths: - public - only: - - main + rules: + - if: $CI_PIPELINE_SOURCE == 'schedule' + when: never + - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' dependencies: - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [autotools+gcc+docs+valgrind]" needs: @@ -237,9 +250,22 @@ triage:issues: only: - schedules +# Clean the generated images periodically to get updated snapshots of the distribution images. +# Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type +# 'File' with an authentication token with API access level. +clean-images: + extends: + - .fdo.ci-fairy + stage: prep + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" + script: + - ci-fairy -v --authfile $AUTHFILE delete-image --project NetworkManager/NetworkManager --all + # Have detached MR pipeline (https://docs.gitlab.com/ee/ci/pipelines/merge_request_pipelines.html) # https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/540#what-it-means-for-me-a-maintainer-of-a-project-part-of-gitlabfreedesktoporg workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' + - if: $CI_PIPELINE_SOURCE == 'schedule' From 7a48290dca54d440f029bf5a6a5c751f427ccc48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Thu, 2 May 2024 12:19:45 +0200 Subject: [PATCH 04/47] ci: disable the "triage issues" job This job was supposed to run periodically. However, it stopped working when a "workflow" section was added to .gitlab-ci.yml because it prevented pipelines of the type "scheduled" to be created. 7fa72645e5b4 ('gitlab-ci: make detached MR pipeline for external contributor's pipelines to run') Now, if it's run, it fails with error: multi_xml requires Ruby version >= 3.1.4. The current ruby version is 2.7.8.225. Let's disable the job until we fix it and we decide what triage we want to do. When we do it, we will need to adapt the jobs to be run with the right periodicity, maybe using custom pipeline variables. --- .gitlab-ci.yml | 26 +++++++++++++------------- .gitlab-ci/ci.template | 16 ++++++++-------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2c5d77067a..cd745ae447 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-81dd13f55ef0' - CENTOS_TAG: 'tag-844c9af59d0e' - DEBIAN_TAG: 'tag-29bac6f208bb' - FEDORA_TAG: 'tag-844c9af59d0e' - UBUNTU_TAG: 'tag-29bac6f208bb' + ALPINE_TAG: 'tag-29ef9f73ce6e' + CENTOS_TAG: 'tag-db8e32949a26' + DEBIAN_TAG: 'tag-67262330bdf8' + FEDORA_TAG: 'tag-db8e32949a26' + UBUNTU_TAG: 'tag-67262330bdf8' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -654,14 +654,14 @@ pages: needs: - "t_fedora:40: [autotools+gcc+docs+valgrind]" -triage:issues: - stage: triage - image: ruby:2.7 - script: - - gem install gitlab-triage - - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID - only: - - schedules +# triage:issues: +# stage: triage +# image: ruby:2.7 +# script: +# - gem install gitlab-triage +# - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID +# only: +# - schedules # Clean the generated images periodically to get updated snapshots of the distribution images. # Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index d93ba1c2d5..9d80457474 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -241,14 +241,14 @@ pages: needs: - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [autotools+gcc+docs+valgrind]" -triage:issues: - stage: triage - image: ruby:2.7 - script: - - gem install gitlab-triage - - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID - only: - - schedules +# triage:issues: +# stage: triage +# image: ruby:2.7 +# script: +# - gem install gitlab-triage +# - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID +# only: +# - schedules # Clean the generated images periodically to get updated snapshots of the distribution images. # Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type From d115dcec50975343b3f1f8ff437c26113858c701 Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 29 Apr 2024 11:22:54 +0200 Subject: [PATCH 05/47] build: break autotools configuration to warn about deprecation We are planning on completely dropping Autotools in the future. This breaks the build process with an argument to ignore the deprecation, so that anyone building NM is warned of this change. --- Makefile.am | 1 + NEWS | 5 +++++ configure.ac | 14 ++++++++++++++ contrib/fedora/rpm/NetworkManager.spec | 3 ++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 7eb2b9f865..9f3163004a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -159,6 +159,7 @@ DISTCHECK_CONFIGURE_FLAGS = \ --enable-ifcfg-rh \ --enable-ifupdown \ --disable-dependency-tracking \ + --disable-autotools-deprecation \ $(NULL) dist-configure-check: diff --git a/NEWS b/NEWS index 05f67f716e..baf5a7afd6 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,11 @@ subject to change and not guaranteed to be compatible with the later release. USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! +* Building with autotools is now deprecated and will be completely removed + in the next development cycle. We recommend using meson to build + NetworkManager -- for basic setup, see the CONTRIBUTING.md file. + To ignore this deprecation and still build with Autotools, you can specify + the '--disable-autotools-deprecation' argument when configuring. * Support changing the OpenSSL ciphers for 802.1X authentication via connection property "802-1x.openssl-ciphers". * The reason why a device is unmanaged is now properly set in the diff --git a/configure.ac b/configure.ac index 5e7291d532..361e744dbb 100644 --- a/configure.ac +++ b/configure.ac @@ -16,6 +16,20 @@ AC_INIT([NetworkManager], [nm_version], [http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager], [NetworkManager]) +deprecation_message() { + echo "Building with Autotools is deprecated; meson is the recommended way to build NetworkManager." + echo "To learn more, see the CONTRIBUTING.md file." + echo "To ignore this, pass '--disable-autotools-deprecation' when configuring." + exit 1 +} + +AC_ARG_ENABLE([autotools-deprecation], + AS_HELP_STRING([--disable-autotools-deprecation], + [Building with autotools is deprecated, passing this argument overrides this error.]), + [ test "$enableval" != "no" && deprecation_message ], + [ deprecation_message ] +) + AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 9d78200cf1..e59e7c8008 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -918,7 +918,8 @@ autoreconf --install --force --with-resolvconf=no \ --with-netconfig=no \ --with-config-dns-rc-manager-default=%{dns_rc_manager_default} \ - --with-config-logging-backend-default=%{logging_backend_default} + --with-config-logging-backend-default=%{logging_backend_default} \ + --disable-autotools-deprecation %make_build From 7b4acf938cfcdbc129c8280db1cbc57f35f55699 Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 6 May 2024 14:42:59 +0200 Subject: [PATCH 06/47] contrib/fedora: update scripts to expect autotools deprecation --- contrib/fedora/rpm/build_clean.sh | 1 + contrib/fedora/rpm/configure-for-system.sh | 1 + tools/create-exports-NetworkManager.sh | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/fedora/rpm/build_clean.sh b/contrib/fedora/rpm/build_clean.sh index d06d434141..c1b0f408f6 100755 --- a/contrib/fedora/rpm/build_clean.sh +++ b/contrib/fedora/rpm/build_clean.sh @@ -272,6 +272,7 @@ if [[ $NO_DIST != 1 ]]; then \ --with-iptables=/usr/sbin/iptables \ --with-nft=/usr/sbin/nft \ + --disable-autotools-deprecation \ \ || die "Error autogen.sh" if [[ $QUICK == 1 ]]; then diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index acf5eb9c2f..1af647d51c 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -514,6 +514,7 @@ else --with-netconfig=no \ --with-config-dns-rc-manager-default="$P_DNS_RC_MANAGER_DEFAULT" \ --with-config-logging-backend-default="$P_LOGGING_BACKEND_DEFAULT" \ + --disable-autotools-deprecation \ ; fi diff --git a/tools/create-exports-NetworkManager.sh b/tools/create-exports-NetworkManager.sh index ef4b381a60..855d837520 100755 --- a/tools/create-exports-NetworkManager.sh +++ b/tools/create-exports-NetworkManager.sh @@ -26,7 +26,8 @@ _build() { --with-modem-manager-1 \ --with-ofono \ --with-more-asserts \ - --with-more-logging + --with-more-logging \ + --disable-autotools-deprecation make -j20 } From 5f72b251b19adf22ed602837e69afd1617eeff5e Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 6 May 2024 15:03:39 +0200 Subject: [PATCH 07/47] gitlab-ci: ignore autotools deprecation We still need the tests to run on autotools builds too, so we must pass the argument. --- .gitlab-ci.yml | 12 ++++++------ .gitlab-ci/ci.template | 2 +- contrib/scripts/nm-ci-run.sh | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cd745ae447..d47903aa77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-29ef9f73ce6e' - CENTOS_TAG: 'tag-db8e32949a26' - DEBIAN_TAG: 'tag-67262330bdf8' - FEDORA_TAG: 'tag-db8e32949a26' - UBUNTU_TAG: 'tag-67262330bdf8' + ALPINE_TAG: 'tag-ed94fd969369' + CENTOS_TAG: 'tag-dc93a9c129f8' + DEBIAN_TAG: 'tag-3766b6cf1e7d' + FEDORA_TAG: 'tag-dc93a9c129f8' + UBUNTU_TAG: 'tag-3766b6cf1e7d' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -635,7 +635,7 @@ check-tree: - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh -n - date '+%Y%m%d-%H%M%S'; ci-fairy generate-template && git diff --exit-code - - date '+%Y%m%d-%H%M%S'; ./autogen.sh && [ "$(LANG=C make -C po update-po 2>&1 1>/dev/null | grep -c 'warning:')" = 0 ] + - date '+%Y%m%d-%H%M%S'; ./autogen.sh --disable-autotools-deprecation && [ "$(LANG=C make -C po update-po 2>&1 1>/dev/null | grep -c 'warning:')" = 0 ] pages: stage: deploy diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 9d80457474..28e4ca25e3 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -222,7 +222,7 @@ check-tree: - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh -n - date '+%Y%m%d-%H%M%S'; ci-fairy generate-template && git diff --exit-code - - date '+%Y%m%d-%H%M%S'; ./autogen.sh && [ "$(LANG=C make -C po update-po 2>&1 1>/dev/null | grep -c 'warning:')" = 0 ] + - date '+%Y%m%d-%H%M%S'; ./autogen.sh --disable-autotools-deprecation && [ "$(LANG=C make -C po update-po 2>&1 1>/dev/null | grep -c 'warning:')" = 0 ] pages: stage: deploy diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh index e385ef1e8d..162b9da188 100755 --- a/contrib/scripts/nm-ci-run.sh +++ b/contrib/scripts/nm-ci-run.sh @@ -188,6 +188,7 @@ run_autotools() { \ --enable-ifcfg-rh=yes \ --enable-ifupdown=yes \ + --disable-autotools-deprecation \ \ #end From 7ec363a79ae41a5acf44c91cddde649b9aa52050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 8 May 2024 11:20:28 +0200 Subject: [PATCH 08/47] ip6: revert to using sysctl ipv6.conf.default for ip6-privacy Commit 797f3cafeece ('device: fall back to saved use_tempaddr value instead of rereading /proc') changed the behaviour of how to get the last resort default value for ip6-privacy property. Previously we read it from /proc/sys/net/ipv6/conf/default, buf after this commit we started to read /proc/sys/net/ipv6/conf/ instead, because the user might have set a different value specific for that device. As NetworkManager changes that value on connection activation, we used the value read at the time that NetworkManager was started. Commit 6cb14ae6a6a3 ('device: introduce ipv6.temp-valid-lifetime and ipv6.temp-preferred-lifetime properties') introduced 2 new IPv6 privacy related properties relying on the same mechanism. However, this new behaviour is problematic because it's not predictable nor reliable: - NetworkManager is normally started at boot time. That means that, if a user wants to set a new value to /proc/sys/net/ipv6/conf/, NetworkManager is likely alread running, so the change won't take effect. - If NetworkManager is restarted it will read the value again, but this value can be the one set by NetworkManager itself in the last activation. This means that different values can be used as default in the same system boot depending on the restarts of NetworkManager. Moreover, this weird situation might happen: - Connection A with ip6-privacy=2 is activated - NetworkManager is stopped. The value in /proc/sys/net/ipv6/conf//use_tempaddr remains as 2. - NetworkManager starts. It reads from /proc/sys/... and saves the value '2' as the default. - Connection B with no ip6-privacy setting is activated. The '2' saved as default value is used. The connection didn't specify any value for it, and the value '2' was set by another connection for that specific connection only, not manually by a user that wanted '2' to be the default. A user shouldn't have to think on when NetworkManager starts or restarts to known in an easy and predictable way what the default value for certain property is. It's totally counterintuitive. Revert back to the old behaviour of reading from /proc/sys/net/ipv6/conf/default. Although this value is used by the kernel only for newly created interfaces, and not for already existing ones, it is reasonable to think on these settings as "systemwide defaults" that the user has chosen. Note that setting a different default in NetworkManager.conf still takes precedence. --- man/NetworkManager.conf.xml | 15 +- src/core/devices/nm-device.c | 57 +- src/libnm-core-impl/nm-setting-ip6-config.c | 26 +- src/libnmc-setting/nm-meta-setting-desc.c | 26 + src/libnmc-setting/settings-docs.h.in | 6 +- .../gen-metadata-nm-settings-nmcli.xml.in | 14 +- .../test_003.expected | 492 +++++++-------- .../test_004.expected | 588 +++++++++--------- 8 files changed, 626 insertions(+), 598 deletions(-) diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index fc184ff774..d86523c139 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -1023,23 +1023,20 @@ ipv6.ip6-privacy=0 ipv6.ip6-privacy - If ipv6.ip6-privacy is unset, fall back to the original - value of "/proc/sys/net/ipv6/conf/<iface>/use_tempaddr" from before NetworkManager - started. + If ipv6.ip6-privacy is unset, use the content of + "/proc/sys/net/ipv6/conf/default/use_tempaddr" as last fallback. ipv6.temp-valid-lifetime - If ipv6.temp-valid-lifetime is unset, fall back to the - original value of "/proc/sys/net/ipv6/conf/<iface>/temp_valid_lft" from before - NetworkManager started. + If ipv6.temp-valid-lifetime is unset, use the + content of "/proc/sys/net/ipv6/conf/default/temp_valid_lft" as last fallback. ipv6.temp-preferred-lifetime - If ipv6.temp-preferred-lifetime is unset, fall back to - the original value of "/proc/sys/net/ipv6/conf/<iface>/temp_prefered_lft" from - before NetworkManager started. + If ipv6.temp-preferred-lifetime is unset, use + the content of "/proc/sys/net/ipv6/conf/default/temp_prefered_lft" as last fallback. diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index 5b377529f8..b96adefbd0 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -2273,7 +2273,6 @@ _prop_get_ipv4_dhcp_vendor_class_identifier(NMDevice *self, NMSettingIP4Config * static NMSettingIP6ConfigPrivacy _prop_get_ipv6_ip6_privacy(NMDevice *self) { - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self); NMSettingIP6ConfigPrivacy ip6_privacy; NMConnection *connection; @@ -2307,22 +2306,23 @@ _prop_get_ipv6_ip6_privacy(NMDevice *self) if (!nm_device_get_ip_ifindex(self)) return NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN; - /* 3.) No valid default value configured. Fall back to the original value - * from before NM started. */ - return _ip6_privacy_clamp(_nm_utils_ascii_str_to_int64( - g_hash_table_lookup(priv->ip6_saved_properties, "use_tempaddr"), - 10, - G_MININT32, - G_MAXINT32, - NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN)); + /* 3.) No valid default-value configured. Fallback to reading sysctl. + * + * Instead of reading static config files in /etc, just read the current sysctl value. + * This works as NM only writes to "/proc/sys/net/ipv6/conf/IFNAME/use_tempaddr", but leaves + * the "default" entry untouched. */ + ip6_privacy = nm_platform_sysctl_get_int32( + nm_device_get_platform(self), + NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv6/conf/default/use_tempaddr"), + NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN); + return _ip6_privacy_clamp(ip6_privacy); } static gint32 _prop_get_ipv6_temp_valid_lifetime(NMDevice *self) { - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self); - gint32 temp_valid_lifetime; - NMConnection *connection; + gint32 temp_valid_lifetime; + NMConnection *connection; g_return_val_if_fail(self, 0); @@ -2350,22 +2350,25 @@ _prop_get_ipv6_temp_valid_lifetime(NMDevice *self) if (temp_valid_lifetime) return temp_valid_lifetime; - /* 3.) No valid default value configured. Fall back to the original value - * from before NM started. */ - return _nm_utils_ascii_str_to_int64( - g_hash_table_lookup(priv->ip6_saved_properties, "temp_valid_lft"), + /* 3.) No valid default-value configured. Fallback to reading sysctl. + * + * Instead of reading static config files in /etc, just read the current sysctl value. + * This works as NM only writes to "/proc/sys/net/ipv6/conf/IFNAME/temp_valid_lft", + * but leaves the "default" entry untouched. */ + return nm_platform_sysctl_get_int_checked( + nm_device_get_platform(self), + NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv6/conf/default/temp_valid_lft"), 10, 0, G_MAXINT32, - SECONDS_PER_WEEK /* final hardcoded fallback: 1 week */); + SECONDS_PER_WEEK); } static gint32 _prop_get_ipv6_temp_preferred_lifetime(NMDevice *self) { - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self); - gint32 temp_preferred_lifetime; - NMConnection *connection; + gint32 temp_preferred_lifetime; + NMConnection *connection; g_return_val_if_fail(self, 0); @@ -2393,14 +2396,18 @@ _prop_get_ipv6_temp_preferred_lifetime(NMDevice *self) if (temp_preferred_lifetime) return temp_preferred_lifetime; - /* 3.) No valid default value configured. Fall back to the original value - * from before NM started. */ - return _nm_utils_ascii_str_to_int64( - g_hash_table_lookup(priv->ip6_saved_properties, "temp_prefered_lft"), + /* 3.) No valid default-value configured. Fallback to reading sysctl. + * + * Instead of reading static config files in /etc, just read the current sysctl value. + * This works as NM only writes to "/proc/sys/net/ipv6/conf/IFNAME/temp_prefered_lft", + * but leaves the "default" entry untouched. */ + return nm_platform_sysctl_get_int_checked( + nm_device_get_platform(self), + NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv6/conf/default/temp_prefered_lft"), 10, 0, G_MAXINT32, - SECONDS_PER_DAY /* final hardcoded fallback: 1 day */); + SECONDS_PER_DAY); } static NMSettingIP6ConfigAddrGenMode diff --git a/src/libnm-core-impl/nm-setting-ip6-config.c b/src/libnm-core-impl/nm-setting-ip6-config.c index 335700bf13..2dbf7a3493 100644 --- a/src/libnm-core-impl/nm-setting-ip6-config.c +++ b/src/libnm-core-impl/nm-setting-ip6-config.c @@ -963,11 +963,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass) * 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary * addresses). * - * If set to "-1" (unknown) for a connection, the value is taken from the - * global "ipv6.ip6-privacy" setting. If the global setting is unspecified - * or also set to "-1", the value is set from the original value of - * "/proc/sys/net/ipv6/conf//use_tempaddr" from before NetworkManager - * started. + * Having a 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" @@ -999,11 +997,10 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass) * * The valid lifetime of autogenerated temporary addresses, in seconds. * - * If set to "0" (unknown) for a connection, the value is taken from the - * global "ipv6.temp-valid-lifetime" setting. If the global setting is - * unspecified or also set to "0", the value is set from the original value - * of "/proc/sys/net/ipv6/conf//temp_valid_lft" from before - * NetworkManager started. + * 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". * * Since: 1.48 **/ @@ -1023,11 +1020,10 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass) * * The preferred lifetime of autogenerated temporary addresses, in seconds. * - * If set to "0" (unknown) for a connection, the value is taken from the - * global "ipv6.temp-preferred-lifetime" setting. If the global setting is - * unspecified or also set to "0", the value is set from the original value - * of "/proc/sys/net/ipv6/conf//temp_prefered_lft" from before - * NetworkManager started. + * 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". * * Since: 1.48 **/ diff --git a/src/libnmc-setting/nm-meta-setting-desc.c b/src/libnmc-setting/nm-meta-setting-desc.c index da00c30b0c..b58fb5ce04 100644 --- a/src/libnmc-setting/nm-meta-setting-desc.c +++ b/src/libnmc-setting/nm-meta-setting-desc.c @@ -6620,7 +6620,17 @@ static const NMMetaPropertyInfo *const property_infos_IP6_CONFIG[] = { PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_IP6_PRIVACY, .property_type = &_pt_gobject_enum, .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, + .value_infos = ENUM_VALUE_INFOS( + { + .value = NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN, + .nick = "default", + }, + ), .value_infos_get = ENUM_VALUE_INFOS ( + { + .value = NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN, + .nick = "default", + }, { .value = NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR, .nick = "enabled, prefer public IP", @@ -6634,9 +6644,25 @@ static const NMMetaPropertyInfo *const property_infos_IP6_CONFIG[] = { ), PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TEMP_VALID_LIFETIME, .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE(gobject_int, + .value_infos = INT_VALUE_INFOS( + { + .value.i64 = 0, + .nick = "default" + }, + ), + ), ), PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TEMP_PREFERRED_LIFETIME, .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE(gobject_int, + .value_infos = INT_VALUE_INFOS( + { + .value.i64 = 0, + .nick = "default" + }, + ), + ), ), PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, .property_type = &_pt_gobject_enum, diff --git a/src/libnmc-setting/settings-docs.h.in b/src/libnmc-setting/settings-docs.h.in index fc5299fc4c..f83cfd437f 100644 --- a/src/libnmc-setting/settings-docs.h.in +++ b/src/libnmc-setting/settings-docs.h.in @@ -216,7 +216,7 @@ #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.") -#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IP6_PRIVACY N_("Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64. This enhances privacy, but could cause problems in some applications, on the other hand. The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses). If set to \"-1\" (unknown) for a connection, the value is taken from the global \"ipv6.ip6-privacy\" setting. If the global setting is unspecified or also set to \"-1\", the value is set from the original value of \"/proc/sys/net/ipv6/conf//use_tempaddr\" from before NetworkManager started. 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.") +#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IP6_PRIVACY N_("Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64. This enhances privacy, but could cause problems in some applications, on the other hand. The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses). Having a per-connection setting set to \"-1\" (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.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MAY_FAIL N_("If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out. Note that at least one IP configuration must succeed or overall network configuration will still fail. For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_METHOD N_("The IPv6 connection method.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MTU N_("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-layer MTU. If greater than the link-layer MTU, or greater than zero but less than the minimum IPv6 MTU of 1280, this value has no effect.") @@ -228,8 +228,8 @@ #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_TABLE N_("Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTES N_("Array of IP routes.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTING_RULES N_("A comma separated list of routing rules for policy routing.") -#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_TEMP_PREFERRED_LIFETIME N_("The preferred lifetime of autogenerated temporary addresses, in seconds. If set to \"0\" (unknown) for a connection, the value is taken from the global \"ipv6.temp-preferred-lifetime\" setting. If the global setting is unspecified or also set to \"0\", the value is set from the original value of \"/proc/sys/net/ipv6/conf//temp_prefered_lft\" from before NetworkManager started.") -#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_TEMP_VALID_LIFETIME N_("The valid lifetime of autogenerated temporary addresses, in seconds. If set to \"0\" (unknown) for a connection, the value is taken from the global \"ipv6.temp-valid-lifetime\" setting. If the global setting is unspecified or also set to \"0\", the value is set from the original value of \"/proc/sys/net/ipv6/conf//temp_valid_lft\" from before NetworkManager started.") +#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_TEMP_PREFERRED_LIFETIME N_("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\".") +#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_TEMP_VALID_LIFETIME N_("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\".") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_TOKEN N_("Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 tokenized interface identifiers. Useful with eui64 addr-gen-mode. When set, the token is used as IPv6 interface identifier instead of the hardware address. This only applies to addresses from stateless autoconfiguration, not to IPv6 link local addresses.") #define DESCRIBE_DOC_NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT N_("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 0x1 (ip6-ign-encap-limit) to ip-tunnel flags.") #define DESCRIBE_DOC_NM_SETTING_IP_TUNNEL_FLAGS N_("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.") diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in index 9008214dce..7ac049fc3c 100644 --- a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in +++ b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in @@ -1454,17 +1454,19 @@ values="-1 - 2147483647" special-values="default (-1), infinity (2147483647)" /> + values="unknown/default (-1), disabled (0), prefer-public-addr (1), prefer-temp-addr (2)" /> + values="0 - 2147483647" + special-values="default (0)" /> + values="0 - 2147483647" + special-values="default (0)" /> >> connection.id: con-gsm1 connection.uuid: UUID-con-gsm1-REPLACED-REPLACED-REPL @@ -268,9 +268,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -310,12 +310,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5645 +size: 5665 location: src/tests/client/test-client.py:test_003()/15 cmd: $NMCLI con s con-gsm1 lang: pl_PL.UTF-8 returncode: 0 -stdout: 5502 bytes +stdout: 5522 bytes >>> connection.id: con-gsm1 connection.uuid: UUID-con-gsm1-REPLACED-REPLACED-REPL @@ -396,9 +396,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -468,12 +468,12 @@ gsm:no::::0:xyz.con-gsm1:::0:no::::auto:no: proxy:none:no:: <<< -size: 5595 +size: 5615 location: src/tests/client/test-client.py:test_003()/18 cmd: $NMCLI con s con-gsm2 lang: C returncode: 0 -stdout: 5462 bytes +stdout: 5482 bytes >>> connection.id: con-gsm2 connection.uuid: UUID-con-gsm2-REPLACED-REPLACED-REPL @@ -554,9 +554,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -596,12 +596,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5633 +size: 5653 location: src/tests/client/test-client.py:test_003()/19 cmd: $NMCLI con s con-gsm2 lang: pl_PL.UTF-8 returncode: 0 -stdout: 5490 bytes +stdout: 5510 bytes >>> connection.id: con-gsm2 connection.uuid: UUID-con-gsm2-REPLACED-REPLACED-REPL @@ -682,9 +682,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -754,12 +754,12 @@ gsm:no::::0::::0:no::::auto:no: proxy:none:no:: <<< -size: 5595 +size: 5615 location: src/tests/client/test-client.py:test_003()/22 cmd: $NMCLI con s con-gsm3 lang: C returncode: 0 -stdout: 5462 bytes +stdout: 5482 bytes >>> connection.id: con-gsm3 connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL @@ -840,9 +840,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -882,12 +882,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5633 +size: 5653 location: src/tests/client/test-client.py:test_003()/23 cmd: $NMCLI con s con-gsm3 lang: pl_PL.UTF-8 returncode: 0 -stdout: 5490 bytes +stdout: 5510 bytes >>> connection.id: con-gsm3 connection.uuid: UUID-con-gsm3-REPLACED-REPLACED-REPL @@ -968,9 +968,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -1180,12 +1180,12 @@ UUID NAME UUID-ethernet-REPLACED-REPLACED-REPL ethernet <<< -size: 5347 +size: 5367 location: src/tests/client/test-client.py:test_003()/37 cmd: $NMCLI -f ALL con s ethernet lang: C returncode: 0 -stdout: 5207 bytes +stdout: 5227 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -1281,9 +1281,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -1302,12 +1302,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5382 +size: 5402 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: 5232 bytes +stdout: 5252 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -1403,9 +1403,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -1444,12 +1444,12 @@ stdout: 51 bytes GENERAL.STATE: aktywowano <<< -size: 6049 +size: 6069 location: src/tests/client/test-client.py:test_003()/41 cmd: $NMCLI con s ethernet lang: C returncode: 0 -stdout: 5916 bytes +stdout: 5936 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -1545,9 +1545,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -1579,12 +1579,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6088 +size: 6108 location: src/tests/client/test-client.py:test_003()/42 cmd: $NMCLI con s ethernet lang: pl_PL.UTF-8 returncode: 0 -stdout: 5945 bytes +stdout: 5965 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -1680,9 +1680,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -2200,12 +2200,12 @@ UUID NAME UUID-ethernet-REPLACED-REPLACED-REPL ethernet <<< -size: 5347 +size: 5367 location: src/tests/client/test-client.py:test_003()/62 cmd: $NMCLI -f ALL con s ethernet lang: C returncode: 0 -stdout: 5207 bytes +stdout: 5227 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -2301,9 +2301,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -2322,12 +2322,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5382 +size: 5402 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: 5232 bytes +stdout: 5252 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -2423,9 +2423,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -2468,12 +2468,12 @@ GENERAL.STATE: aktywowano GENERAL.STATE: aktywowano <<< -size: 6759 +size: 6779 location: src/tests/client/test-client.py:test_003()/66 cmd: $NMCLI con s ethernet lang: C returncode: 0 -stdout: 6626 bytes +stdout: 6646 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -2569,9 +2569,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -2617,12 +2617,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6802 +size: 6822 location: src/tests/client/test-client.py:test_003()/67 cmd: $NMCLI con s ethernet lang: pl_PL.UTF-8 returncode: 0 -stdout: 6659 bytes +stdout: 6679 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -2718,9 +2718,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -3274,12 +3274,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL gsm UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet <<< -size: 6762 +size: 6782 location: src/tests/client/test-client.py:test_003()/84 cmd: $NMCLI con s ethernet lang: C returncode: 0 -stdout: 6629 bytes +stdout: 6649 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -3375,9 +3375,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -3423,12 +3423,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6806 +size: 6826 location: src/tests/client/test-client.py:test_003()/85 cmd: $NMCLI con s ethernet lang: pl_PL.UTF-8 returncode: 0 -stdout: 6663 bytes +stdout: 6683 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -3524,9 +3524,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -3572,12 +3572,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6092 +size: 6112 location: src/tests/client/test-client.py:test_003()/86 cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1 lang: C returncode: 0 -stdout: 5919 bytes +stdout: 5939 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -3673,9 +3673,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -3707,12 +3707,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6132 +size: 6152 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: 5949 bytes +stdout: 5969 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -3808,9 +3808,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4052,12 +4052,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL gsm UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet <<< -size: 6774 +size: 6794 location: src/tests/client/test-client.py:test_003()/94 cmd: $NMCLI --color yes con s ethernet lang: C returncode: 0 -stdout: 6629 bytes +stdout: 6649 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -4153,9 +4153,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -4201,12 +4201,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6818 +size: 6838 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: 6663 bytes +stdout: 6683 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -4302,9 +4302,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4350,12 +4350,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6104 +size: 6124 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: 5919 bytes +stdout: 5939 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -4451,9 +4451,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -4485,12 +4485,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6144 +size: 6164 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: 5949 bytes +stdout: 5969 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -4586,9 +4586,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4846,12 +4846,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL gsm UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet <<< -size: 8015 +size: 8035 location: src/tests/client/test-client.py:test_003()/104 cmd: $NMCLI --pretty con s ethernet lang: C returncode: 0 -stdout: 7872 bytes +stdout: 7892 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -4953,9 +4953,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -5011,12 +5011,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 8080 +size: 8100 location: src/tests/client/test-client.py:test_003()/105 cmd: $NMCLI --pretty con s ethernet lang: pl_PL.UTF-8 returncode: 0 -stdout: 7927 bytes +stdout: 7947 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -5118,9 +5118,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -5176,12 +5176,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7033 +size: 7053 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: 6850 bytes +stdout: 6870 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -5283,9 +5283,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -5323,12 +5323,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7086 +size: 7106 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: 6893 bytes +stdout: 6913 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -5430,9 +5430,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -5720,12 +5720,12 @@ UUID-con-gsm3-REPLACED-REPLACED-REPL gsm UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet <<< -size: 8027 +size: 8047 location: src/tests/client/test-client.py:test_003()/114 cmd: $NMCLI --pretty --color yes con s ethernet lang: C returncode: 0 -stdout: 7872 bytes +stdout: 7892 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -5827,9 +5827,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -5885,12 +5885,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 8092 +size: 8112 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: 7927 bytes +stdout: 7947 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -5992,9 +5992,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -6050,12 +6050,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7045 +size: 7065 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: 6850 bytes +stdout: 6870 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -6157,9 +6157,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -6197,12 +6197,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7098 +size: 7118 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: 6893 bytes +stdout: 6913 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -6304,9 +6304,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -8143,7 +8143,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none no -- -- @@ -8174,7 +8174,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none nie -- -- @@ -8205,7 +8205,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none no -- -- @@ -8232,7 +8232,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none nie -- -- @@ -8395,7 +8395,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none no -- -- @@ -8426,7 +8426,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none nie -- -- @@ -8457,7 +8457,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none no -- -- @@ -8484,7 +8484,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script proxy none nie -- -- @@ -8670,7 +8670,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -8717,7 +8717,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -8764,7 +8764,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -8803,7 +8803,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -9018,7 +9018,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -9065,7 +9065,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -9112,7 +9112,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -9151,7 +9151,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name method browser-only pac-url pac-script -------------------------------------------------- @@ -9854,12 +9854,12 @@ UUID: UUID-con-xx1-REPLACED-REPLACED-REPLA TYPE: ethernet <<< -size: 6780 +size: 6800 location: src/tests/client/test-client.py:test_003()/204 cmd: $NMCLI --mode multiline con s ethernet lang: C returncode: 0 -stdout: 6629 bytes +stdout: 6649 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -9955,9 +9955,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -10003,12 +10003,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6824 +size: 6844 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: 6663 bytes +stdout: 6683 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -10104,9 +10104,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -10152,12 +10152,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6110 +size: 6130 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: 5919 bytes +stdout: 5939 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -10253,9 +10253,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -10287,12 +10287,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6150 +size: 6170 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: 5949 bytes +stdout: 5969 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -10388,9 +10388,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -10836,12 +10836,12 @@ UUID: UUID-con-xx1-REPLACED-REPLACED-REPLA TYPE: ethernet <<< -size: 6792 +size: 6812 location: src/tests/client/test-client.py:test_003()/214 cmd: $NMCLI --mode multiline --color yes con s ethernet lang: C returncode: 0 -stdout: 6629 bytes +stdout: 6649 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -10937,9 +10937,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -10985,12 +10985,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6836 +size: 6856 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: 6663 bytes +stdout: 6683 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -11086,9 +11086,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -11134,12 +11134,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6122 +size: 6142 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: 5919 bytes +stdout: 5939 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -11235,9 +11235,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -11269,12 +11269,12 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 6162 +size: 6182 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: 5949 bytes +stdout: 5969 bytes >>> connection.id: ethernet connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL @@ -11370,9 +11370,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -11856,12 +11856,12 @@ TYPE: ethernet ------------------------------------------------------------------------------- <<< -size: 8032 +size: 8052 location: src/tests/client/test-client.py:test_003()/224 cmd: $NMCLI --mode multiline --pretty con s ethernet lang: C returncode: 0 -stdout: 7872 bytes +stdout: 7892 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -11963,9 +11963,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -12021,12 +12021,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 8097 +size: 8117 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: 7927 bytes +stdout: 7947 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -12128,9 +12128,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -12186,12 +12186,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7050 +size: 7070 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: 6850 bytes +stdout: 6870 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -12293,9 +12293,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -12333,12 +12333,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7103 +size: 7123 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: 6893 bytes +stdout: 6913 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -12440,9 +12440,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -12956,12 +12956,12 @@ TYPE: ethernet ------------------------------------------------------------------------------- <<< -size: 8044 +size: 8064 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: 7872 bytes +stdout: 7892 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -13063,9 +13063,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -13121,12 +13121,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 8109 +size: 8129 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: 7927 bytes +stdout: 7947 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -13228,9 +13228,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -13286,12 +13286,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7062 +size: 7082 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: 6850 bytes +stdout: 6870 bytes >>> =============================================================================== Connection profile details (ethernet) @@ -13393,9 +13393,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -13433,12 +13433,12 @@ GENERAL.MASTER-PATH: -- ------------------------------------------------------------------------------- <<< -size: 7115 +size: 7135 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: 6893 bytes +stdout: 6913 bytes >>> =============================================================================== Szczegóły profilu połączenia (ethernet) @@ -13540,9 +13540,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne 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 63e58f1f50..b3703b258a 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: 5578 +size: 5598 location: src/tests/client/test-client.py:test_004()/8 cmd: $NMCLI con s con-xx1 lang: C returncode: 0 -stdout: 5447 bytes +stdout: 5467 bytes >>> connection.id: con-xx1 connection.uuid: UUID-con-xx1-REPLACED-REPLACED-REPLA @@ -161,9 +161,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -182,12 +182,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5613 +size: 5633 location: src/tests/client/test-client.py:test_004()/9 cmd: $NMCLI con s con-xx1 lang: pl_PL.UTF-8 returncode: 0 -stdout: 5472 bytes +stdout: 5492 bytes >>> connection.id: con-xx1 connection.uuid: UUID-con-xx1-REPLACED-REPLACED-REPLA @@ -285,9 +285,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -342,12 +342,12 @@ con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP vpn -- con-xx1 UUID-con-xx1-REPLACED-REPLACED-REPLA wifi -- <<< -size: 5003 +size: 5023 location: src/tests/client/test-client.py:test_004()/13 cmd: $NMCLI con s con-vpn-1 lang: C returncode: 0 -stdout: 4869 bytes +stdout: 4889 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -428,9 +428,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -455,12 +455,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5030 +size: 5050 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: 4886 bytes +stdout: 4906 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -541,9 +541,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -640,12 +640,12 @@ con-xx1 UUID-con-xx1-REPLACED-REPLACED-REPLA wifi wlan0 con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet -- <<< -size: 6131 +size: 6151 location: src/tests/client/test-client.py:test_004()/21 cmd: $NMCLI con s con-vpn-1 lang: C returncode: 0 -stdout: 5997 bytes +stdout: 6017 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -726,9 +726,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -774,12 +774,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6164 +size: 6184 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: 6020 bytes +stdout: 6040 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -860,9 +860,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -1016,12 +1016,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: 6137 +size: 6157 location: src/tests/client/test-client.py:test_004()/27 cmd: $NMCLI con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1102,9 +1102,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -1150,12 +1150,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6174 +size: 6194 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1236,9 +1236,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -1284,12 +1284,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6137 +size: 6157 location: src/tests/client/test-client.py:test_004()/29 cmd: $NMCLI con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1370,9 +1370,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -1418,12 +1418,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6174 +size: 6194 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1504,9 +1504,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -1552,12 +1552,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 5010 +size: 5030 location: src/tests/client/test-client.py:test_004()/31 cmd: $NMCLI -f ALL con s con-vpn-1 lang: C returncode: 0 -stdout: 4869 bytes +stdout: 4889 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1638,9 +1638,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -1665,12 +1665,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5037 +size: 5057 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: 4886 bytes +stdout: 4906 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -1751,9 +1751,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4388,12 +4388,12 @@ connection.type: 802-11-wireless connection.interface-name: -- <<< -size: 6149 +size: 6169 location: src/tests/client/test-client.py:test_004()/77 cmd: $NMCLI --color yes con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -4474,9 +4474,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -4522,12 +4522,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6186 +size: 6206 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -4608,9 +4608,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4656,12 +4656,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6149 +size: 6169 location: src/tests/client/test-client.py:test_004()/79 cmd: $NMCLI --color yes con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -4742,9 +4742,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -4790,12 +4790,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6186 +size: 6206 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -4876,9 +4876,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -4924,12 +4924,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 5022 +size: 5042 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: 4869 bytes +stdout: 4889 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -5010,9 +5010,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -5037,12 +5037,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5049 +size: 5069 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: 4886 bytes +stdout: 4906 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -5123,9 +5123,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -7760,12 +7760,12 @@ connection.type: 802-11-wireless connection.interface-name: -- <<< -size: 7158 +size: 7178 location: src/tests/client/test-client.py:test_004()/127 cmd: $NMCLI --pretty con s con-vpn-1 lang: C returncode: 0 -stdout: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -7851,9 +7851,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -7907,12 +7907,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7208 +size: 7228 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -7998,9 +7998,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -8054,12 +8054,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7158 +size: 7178 location: src/tests/client/test-client.py:test_004()/129 cmd: $NMCLI --pretty con s con-vpn-1 lang: C returncode: 0 -stdout: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -8145,9 +8145,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -8201,12 +8201,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7208 +size: 7228 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -8292,9 +8292,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -8348,12 +8348,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 5639 +size: 5659 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: 5488 bytes +stdout: 5508 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -8439,9 +8439,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -8469,12 +8469,12 @@ proxy.pac-script: -- ------------------------------------------------------------------------------- <<< -size: 5671 +size: 5691 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: 5510 bytes +stdout: 5530 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -8560,9 +8560,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -11804,12 +11804,12 @@ connection.interface-name: -- ------------------------------------------------------------------------------- <<< -size: 7170 +size: 7190 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -11895,9 +11895,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -11951,12 +11951,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7220 +size: 7240 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -12042,9 +12042,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -12098,12 +12098,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7170 +size: 7190 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -12189,9 +12189,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -12245,12 +12245,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7220 +size: 7240 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -12336,9 +12336,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -12392,12 +12392,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 5651 +size: 5671 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: 5488 bytes +stdout: 5508 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -12483,9 +12483,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -12513,12 +12513,12 @@ proxy.pac-script: -- ------------------------------------------------------------------------------- <<< -size: 5683 +size: 5703 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: 5510 bytes +stdout: 5530 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -12604,9 +12604,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -22546,7 +22546,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -22575,7 +22575,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -22604,7 +22604,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -22633,7 +22633,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -22662,7 +22662,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -22686,7 +22686,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -24200,7 +24200,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -24229,7 +24229,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -24258,7 +24258,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -24287,7 +24287,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -24316,7 +24316,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no -- -- -- 0 (default) yes -- -- 0x0 (none) no yes -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 no 0 @@ -24340,7 +24340,7 @@ name method dns dns-search dns-options dns-priority addresses gateway ro ipv4 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie -- -- -- 0 (default) tak -- -- 0x0 (none) nie tak -1 (default) -1 (default) -- 0 (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 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout vpn org.freedesktop.NetworkManager.openvpn -- key1 = val1, key2 = val2, key3 = val3 nie 0 @@ -25860,7 +25860,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -25902,7 +25902,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -25944,7 +25944,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -25986,7 +25986,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -26028,7 +26028,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -26060,7 +26060,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28168,7 +28168,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28210,7 +28210,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28252,7 +28252,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28294,7 +28294,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28336,7 +28336,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (unknown) 0 0 default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) no no no yes -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) auto -- -- -- 0 (default) yes -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -28368,7 +28368,7 @@ ipv4 auto -- -- -- 0 -- -- -- name method dns dns-search dns-options dns-priority addresses gateway routes route-metric route-table routing-rules replace-local-rule dhcp-send-release 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 dhcp-hostname dhcp-hostname-flags auto-route-ext-gw token ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (unknown) 0 0 default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- +ipv6 auto -- -- -- 0 -- -- -- -1 0 (unspec) -- -1 (default) -1 (default) nie nie nie tak -1 (default) -1 (default) 0 (default) 0 (default) default 0 (default) automatyczne -- -- -- 0 (default) tak -- 0x0 (none) -1 (default) -- name service-type user-name data secrets persistent timeout ------------------------------------------------------------------------------------------------------------------------------- @@ -32332,12 +32332,12 @@ UUID-con-xx1-REPLACED-REPLACED-REPLA <<< -size: 6155 +size: 6175 location: src/tests/client/test-client.py:test_004()/627 cmd: $NMCLI --mode multiline con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -32418,9 +32418,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -32466,12 +32466,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6192 +size: 6212 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -32552,9 +32552,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -32600,12 +32600,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6155 +size: 6175 location: src/tests/client/test-client.py:test_004()/629 cmd: $NMCLI --mode multiline con s con-vpn-1 lang: C returncode: 0 -stdout: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -32686,9 +32686,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -32734,12 +32734,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6192 +size: 6212 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -32820,9 +32820,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -32868,12 +32868,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 5028 +size: 5048 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: 4869 bytes +stdout: 4889 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -32954,9 +32954,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -32981,12 +32981,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5055 +size: 5075 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: 4886 bytes +stdout: 4906 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -33067,9 +33067,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -36214,12 +36214,12 @@ connection.type: 802-11-wireless connection.interface-name: -- <<< -size: 6167 +size: 6187 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: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36300,9 +36300,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -36348,12 +36348,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6204 +size: 6224 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36434,9 +36434,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -36482,12 +36482,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6167 +size: 6187 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: 6003 bytes +stdout: 6023 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36568,9 +36568,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -36616,12 +36616,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 6204 +size: 6224 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: 6030 bytes +stdout: 6050 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36702,9 +36702,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -36750,12 +36750,12 @@ VPN.CFG[2]: key2 = val2 VPN.CFG[3]: key3 = val3 <<< -size: 5040 +size: 5060 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: 4869 bytes +stdout: 4889 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36836,9 +36836,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -36863,12 +36863,12 @@ proxy.pac-url: -- proxy.pac-script: -- <<< -size: 5067 +size: 5087 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: 4886 bytes +stdout: 4906 bytes >>> connection.id: con-vpn-1 connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP @@ -36949,9 +36949,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -40096,12 +40096,12 @@ connection.type: 802-11-wireless connection.interface-name: -- <<< -size: 7175 +size: 7195 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -40187,9 +40187,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -40243,12 +40243,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7225 +size: 7245 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -40334,9 +40334,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -40390,12 +40390,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7175 +size: 7195 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -40481,9 +40481,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -40537,12 +40537,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7225 +size: 7245 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -40628,9 +40628,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -40684,12 +40684,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 5656 +size: 5676 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: 5488 bytes +stdout: 5508 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -40775,9 +40775,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -40805,12 +40805,12 @@ proxy.pac-script: -- ------------------------------------------------------------------------------- <<< -size: 5688 +size: 5708 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: 5510 bytes +stdout: 5530 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -40896,9 +40896,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -44680,12 +44680,12 @@ connection.interface-name: -- ------------------------------------------------------------------------------- <<< -size: 7187 +size: 7207 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -44771,9 +44771,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -44827,12 +44827,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7237 +size: 7257 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -44918,9 +44918,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -44974,12 +44974,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7187 +size: 7207 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: 7014 bytes +stdout: 7034 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -45065,9 +45065,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -45121,12 +45121,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 7237 +size: 7257 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: 7054 bytes +stdout: 7074 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -45212,9 +45212,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne @@ -45268,12 +45268,12 @@ VPN.CFG[3]: key3 = val3 ------------------------------------------------------------------------------- <<< -size: 5668 +size: 5688 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: 5488 bytes +stdout: 5508 bytes >>> =============================================================================== Connection profile details (con-vpn-1) @@ -45359,9 +45359,9 @@ ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: auto @@ -45389,12 +45389,12 @@ proxy.pac-script: -- ------------------------------------------------------------------------------- <<< -size: 5700 +size: 5720 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: 5510 bytes +stdout: 5530 bytes >>> =============================================================================== Szczegóły profilu połączenia (con-vpn-1) @@ -45480,9 +45480,9 @@ ipv6.ignore-auto-dns: nie ipv6.never-default: nie ipv6.may-fail: tak ipv6.required-timeout: -1 (default) -ipv6.ip6-privacy: -1 (unknown) -ipv6.temp-valid-lifetime: 0 -ipv6.temp-preferred-lifetime: 0 +ipv6.ip6-privacy: -1 (default) +ipv6.temp-valid-lifetime: 0 (default) +ipv6.temp-preferred-lifetime: 0 (default) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatyczne From a68d2fd7807b8c6f976c45ffa29835b7f8f470ca Mon Sep 17 00:00:00 2001 From: Gris Ge Date: Tue, 14 May 2024 11:39:21 +0800 Subject: [PATCH 09/47] checkpoint: fix port reactivation when controller is deactivating Problem: Given a OVS port with `autoconnect-ports` set to default or false, when reactivation required for checkpoint rollback, previous activated OVS interface will be in deactivate state after checkpoint rollback. The root cause: The `activate_stage1_device_prepare()` will mark the device as failed when controller is deactivating or deactivated. In `activate_stage1_device_prepare()`, the controller device is retrieved from NMActiveConnection, it will be NULL when NMActiveConnection is in deactivated state. This will cause device been set to `NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED` which prevent all follow up `autoconnect` actions. Fix: When noticing controller is deactivating or deactivated with reason `NM_DEVICE_STATE_REASON_NEW_ACTIVATION`, use new function `nm_active_connection_set_controller_dev()` to wait on controller device state between NM_DEVICE_STATE_PREPARE and NM_DEVICE_STATE_ACTIVATED. After that, use existing `nm_active_connection_set_controller()` to use new NMActiveConnection of controller to move on. Resolves: https://issues.redhat.com/browse/RHEL-31972 Signed-off-by: Gris Ge --- src/core/devices/nm-device.c | 8 +++++ src/core/devices/nm-device.h | 3 +- src/core/nm-active-connection.c | 62 +++++++++++++++++++++++++++++++++ src/core/nm-active-connection.h | 1 + src/core/nm-manager.c | 15 +++++++- 5 files changed, 87 insertions(+), 2 deletions(-) diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index b96adefbd0..f3441508ab 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -17205,6 +17205,14 @@ nm_device_get_state(NMDevice *self) return NM_DEVICE_GET_PRIVATE(self)->state; } +NMDeviceStateReason +nm_device_get_state_reason(NMDevice *self) +{ + g_return_val_if_fail(NM_IS_DEVICE(self), NM_DEVICE_STATE_REASON_NONE); + + return NM_DEVICE_GET_PRIVATE(self)->state_reason; +} + /*****************************************************************************/ /** diff --git a/src/core/devices/nm-device.h b/src/core/devices/nm-device.h index ffe6b1af99..ba45497ce2 100644 --- a/src/core/devices/nm-device.h +++ b/src/core/devices/nm-device.h @@ -561,7 +561,8 @@ int nm_device_spec_match_list_full(NMDevice *self, const GSList *specs, int gboolean nm_device_is_activating(NMDevice *dev); gboolean nm_device_autoconnect_allowed(NMDevice *self); -NMDeviceState nm_device_get_state(NMDevice *device); +NMDeviceState nm_device_get_state(NMDevice *device); +NMDeviceStateReason nm_device_get_state_reason(NMDevice *device); gboolean nm_device_get_enabled(NMDevice *device); diff --git a/src/core/nm-active-connection.c b/src/core/nm-active-connection.c index b08d26c28b..7d89251caa 100644 --- a/src/core/nm-active-connection.c +++ b/src/core/nm-active-connection.c @@ -50,6 +50,7 @@ typedef struct _NMActiveConnectionPrivate { NMAuthSubject *subject; NMActiveConnection *controller; + NMDevice *controller_dev; NMActiveConnection *parent; @@ -826,6 +827,31 @@ master_state_cb(NMActiveConnection *master, GParamSpec *pspec, gpointer user_dat } } +static void +controller_dev_state_cb(NMDevice *controller_dev, + NMDeviceState new_state, + NMDeviceState old_state, + NMDeviceStateReason reason, + gpointer user_data) +{ + NMActiveConnection *self = NM_ACTIVE_CONNECTION(user_data); + NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE(self); + NMActRequest *controller_act_request; + NMActiveConnection *controller_ac; + + if (new_state >= NM_DEVICE_STATE_PREPARE && new_state <= NM_DEVICE_STATE_ACTIVATED) { + controller_act_request = nm_device_get_act_request(controller_dev); + if (controller_act_request) { + controller_ac = NM_ACTIVE_CONNECTION(controller_act_request); + g_signal_handlers_disconnect_by_func(controller_dev, + G_CALLBACK(controller_dev_state_cb), + self); + g_clear_object(&priv->controller_dev); + nm_active_connection_set_controller(self, controller_ac); + } + } +} + /** * nm_active_connection_set_controller: * @self: the #NMActiveConnection @@ -867,6 +893,36 @@ nm_active_connection_set_controller(NMActiveConnection *self, NMActiveConnection check_controller_ready(self); } +void +nm_active_connection_set_controller_dev(NMActiveConnection *self, NMDevice *controller_dev) +{ + NMActiveConnectionPrivate *priv; + + g_return_if_fail(NM_IS_ACTIVE_CONNECTION(self)); + g_return_if_fail(NM_IS_DEVICE(controller_dev)); + + priv = NM_ACTIVE_CONNECTION_GET_PRIVATE(self); + + /* Controller device is write-once, and must be set before exporting the object */ + g_return_if_fail(priv->controller_dev == NULL); + g_return_if_fail(!nm_dbus_object_is_exported(NM_DBUS_OBJECT(self))); + if (priv->device) { + g_return_if_fail(priv->device != controller_dev); + } + + _LOGD("set controller device %p, %s(%s), state %s", + controller_dev, + nm_device_get_iface(controller_dev), + nm_device_get_type_desc(controller_dev), + nm_device_state_to_string(nm_device_get_state(controller_dev))); + + priv->controller_dev = g_object_ref(controller_dev); + g_signal_connect(priv->controller_dev, + NM_DEVICE_STATE_CHANGED, + G_CALLBACK(controller_dev_state_cb), + self); +} + NMActivationType nm_active_connection_get_activation_type(NMActiveConnection *self) { @@ -1533,7 +1589,13 @@ dispose(GObject *object) if (priv->controller) { g_signal_handlers_disconnect_by_func(priv->controller, G_CALLBACK(master_state_cb), self); } + if (priv->controller_dev) { + g_signal_handlers_disconnect_by_func(priv->controller_dev, + G_CALLBACK(controller_dev_state_cb), + self); + } g_clear_object(&priv->controller); + g_clear_object(&priv->controller_dev); if (priv->parent) unwatch_parent(self, TRUE); diff --git a/src/core/nm-active-connection.h b/src/core/nm-active-connection.h index 12cb311c97..ba32830257 100644 --- a/src/core/nm-active-connection.h +++ b/src/core/nm-active-connection.h @@ -175,6 +175,7 @@ NMActiveConnection *nm_active_connection_get_controller(NMActiveConnection *self gboolean nm_active_connection_get_controller_ready(NMActiveConnection *self); void nm_active_connection_set_controller(NMActiveConnection *self, NMActiveConnection *controller); +void nm_active_connection_set_controller_dev(NMActiveConnection *self, NMDevice *controller_dev); void nm_active_connection_set_parent(NMActiveConnection *self, NMActiveConnection *parent); diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c index b2a827e38b..2c2834e9fc 100644 --- a/src/core/nm-manager.c +++ b/src/core/nm-manager.c @@ -5943,7 +5943,20 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError ** NM_DEVICE_STATE_REASON_USER_REQUESTED); } - nm_active_connection_set_controller(active, master_ac); + /* If controller NMActiveConnection is deactivating, we should wait on + * controller's NMDevice to have new NMActiveConnection after + * controller device state change to between NM_DEVICE_STATE_PREPARE and + * NM_DEVICE_STATE_ACTIVATED. + */ + if ((nm_active_connection_get_state(master_ac) >= NM_ACTIVE_CONNECTION_STATE_DEACTIVATING) + && master_device + && (nm_device_get_state_reason(master_device) + == NM_DEVICE_STATE_REASON_NEW_ACTIVATION)) { + nm_active_connection_set_controller_dev(active, master_device); + } else { + nm_active_connection_set_controller(active, master_ac); + } + _LOGD(LOGD_CORE, "Activation of '%s' depends on active connection %p %s", nm_settings_connection_get_id(sett_conn), From 4bf11b7d66f392f581d5f5fd2618e138faeefea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 22 May 2024 12:37:41 +0200 Subject: [PATCH 10/47] manager: save timestamps when shutting down Connection timestamps are updated (saved to disk) on connection up and down. This way, the last used connection will take precedence for autoconnect if they have the same priority. But as we don't actually do connection down when NM stops, the last connection timestamp of all active connections is the timestamp of when they were brought up. Then, the activation order might be wrong on next start. One case where timestamps are wrong (although it is not clear how important it is because the connections are activated on different interfaces): 1. Activate con1 <- timestamp updated 2. Activate con2 <- timestamp updated 3. Deactivate con2 <- timestamp updated 4. Stop NM <- timestamp of con2 is higher than con1, but con1 was still active when con2 was brought down. Other case that is reproducible (from https://issues.redhat.com/browse/RHEL-35539): 1. Activate con1 2. Activate con2 on same interface: - As a consequence con1 is deactivated and its timestamp updated - The timestamp of con2 is also updated 3. Stop NM <- timestamp of con1 and con2 is the same, next activation order will be undefined. Fix by saving the timestamps on NM shutdown. --- src/core/nm-manager.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c index 2c2834e9fc..ddbd20218b 100644 --- a/src/core/nm-manager.c +++ b/src/core/nm-manager.c @@ -7960,6 +7960,7 @@ nm_manager_write_device_state_all(NMManager *self) NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE(self); gs_unref_hashtable GHashTable *preserve_ifindexes = NULL; NMDevice *device; + NMActiveConnection *ac; preserve_ifindexes = g_hash_table_new(nm_direct_hash, NULL); @@ -7971,6 +7972,14 @@ nm_manager_write_device_state_all(NMManager *self) } } + /* Save to disk the timestamps of active connections as if we were bringing them down. + * Otherwise they will be wrong on next start and affect the activation order. + */ + c_list_for_each_entry (ac, &priv->active_connections_lst_head, active_connections_lst) { + NMSettingsConnection *sett = nm_active_connection_get_settings_connection(ac); + nm_settings_connection_update_timestamp(sett, (guint64) time(NULL)); + } + nm_config_device_state_prune_stale(preserve_ifindexes, NULL); } From 5472f28a408eca6bfb0600ad1eeef8c1a342e6e1 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 8 May 2024 09:57:35 +0200 Subject: [PATCH 11/47] config: fix crash in assertion during `NetworkManager --print-config` Fixes: f6345180b16f ('core/config: fix duplicate entires in `NetworkManager --print-config` output') --- src/core/nm-config-data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/nm-config-data.c b/src/core/nm-config-data.c index d4498edd88..5b330f24d6 100644 --- a/src/core/nm-config-data.c +++ b/src/core/nm-config-data.c @@ -849,7 +849,7 @@ nm_config_data_log(const NMConfigData *self, /* We require that the default values are grouped by their "group". * That is, all default values for a certain "group" are close to * each other in the list. Assert for that. */ - for (g2 = g + 1; g2 < groups_full->len; g2++) { + for (g2 = g + 1; g2 < G_N_ELEMENTS(default_values); g2++) { nm_assert(!nm_streq(default_values[g - 1].group, default_values[g2].group)); } } From f84282a880a8f5155badaaee2d598db477aae729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Tue, 7 May 2024 08:26:17 +0200 Subject: [PATCH 12/47] po: add nm-setting-generic.c for translation Translatable strings were added to nm-setting-generic.c. Add this file to POTFILES.in. Fixes: 9322c3e9db38 ('libnm: add generic.device-handler property') --- po/POTFILES.in | 1 + 1 file changed, 1 insertion(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 3fe753c98c..d751aef3b7 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -89,6 +89,7 @@ src/libnm-core-impl/nm-setting-cdma.c src/libnm-core-impl/nm-setting-connection.c src/libnm-core-impl/nm-setting-dcb.c src/libnm-core-impl/nm-setting-ethtool.c +src/libnm-core-impl/nm-setting-generic.c src/libnm-core-impl/nm-setting-gsm.c src/libnm-core-impl/nm-setting-hsr.c src/libnm-core-impl/nm-setting-infiniband.c From 22314df2ab9b9f0adbc71ef69d87e3b86d646cee Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 13 May 2024 00:37:13 +0200 Subject: [PATCH 13/47] typo fix: identifer -> identifier Detected by lintian: I: network-manager: typo-in-manual-page identifer identifier [usr/share/man/man5/nm-settings-nmcli.5.gz:3018] I: network-manager: typo-in-manual-page identifer identifier [usr/share/man/man5/nm-settings.5.gz:3018] --- po/ca.po | 2 +- po/de.po | 2 +- po/ka.po | 2 +- po/ru.po | 2 +- po/sv.po | 2 +- po/tr.po | 2 +- po/uk.po | 2 +- src/libnm-core-impl/nm-setting-ip6-config.c | 2 +- src/libnmc-setting/settings-docs.h.in | 2 +- src/nmcli/gen-metadata-nm-settings-nmcli.xml.in | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/po/ca.po b/po/ca.po index 476101788f..828a201627 100644 --- a/po/ca.po +++ b/po/ca.po @@ -7801,7 +7801,7 @@ msgstr "" #: src/libnmc-setting/settings-docs.h.in:190 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/de.po b/po/de.po index 53b82b8d26..5616c7c190 100644 --- a/po/de.po +++ b/po/de.po @@ -8278,7 +8278,7 @@ msgstr "" #: src/libnmc-setting/settings-docs.h.in:192 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/ka.po b/po/ka.po index 9245b74c32..577fa66cd7 100644 --- a/po/ka.po +++ b/po/ka.po @@ -7259,7 +7259,7 @@ msgstr "" #: src/libnmc-setting/settings-docs.h.in:190 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/ru.po b/po/ru.po index 2844510ec0..8688e7ee2c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8634,7 +8634,7 @@ msgstr "Список, через запятую, правил маршрутиз #: src/libnmc-setting/settings-docs.h.in:191 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/sv.po b/po/sv.po index cafc42dca5..ea74c7b479 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8600,7 +8600,7 @@ msgstr "En kommaseparerad lista med routingregler för policyrouting." #: src/libnmc-setting/settings-docs.h.in:195 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/tr.po b/po/tr.po index afc3a6cf6c..603bd35caa 100644 --- a/po/tr.po +++ b/po/tr.po @@ -7839,7 +7839,7 @@ msgstr "" #: src/libnmc-setting/settings-docs.h.in:197 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/po/uk.po b/po/uk.po index a8d14a7de3..02ff3f9d76 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8535,7 +8535,7 @@ msgstr "Список відокремлених комами правил мар #: src/libnmc-setting/settings-docs.h.in:190 msgid "" -"Configure method for creating the IPv6 interface identifer of addresses with " +"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 " diff --git a/src/libnm-core-impl/nm-setting-ip6-config.c b/src/libnm-core-impl/nm-setting-ip6-config.c index 2dbf7a3493..eddac9f103 100644 --- a/src/libnm-core-impl/nm-setting-ip6-config.c +++ b/src/libnm-core-impl/nm-setting-ip6-config.c @@ -1097,7 +1097,7 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass) * property: addr-gen-mode * format: one of "eui64" (0), "stable-privacy" (1), "default" (3) or "default-or-eui64" (2) * description: Configure method for creating the - * IPv6 interface identifer of addresses with RFC4862 IPv6 Stateless + * 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" diff --git a/src/libnmc-setting/settings-docs.h.in b/src/libnmc-setting/settings-docs.h.in index f83cfd437f..8d08faa023 100644 --- a/src/libnmc-setting/settings-docs.h.in +++ b/src/libnmc-setting/settings-docs.h.in @@ -195,7 +195,7 @@ #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_TABLE N_("Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager.") #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTES N_("A list of IPv4 destination addresses, prefix length, optional IPv4 next hop addresses, optional route metric, optional attribute. The valid syntax is: \"ip[/prefix] [next-hop] [metric] [attribute=val]...[,ip[/prefix]...]\". For example \"192.0.2.0/24 10.1.1.1 77, 198.51.100.0/24\".") #define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTING_RULES N_("A comma separated list of routing rules for policy routing.") -#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE N_("Configure method for creating the IPv6 interface identifer 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 constant, making it possible to track the host's presence when it changes networks. The address changes when the interface hardware is replaced. If a duplicate address is detected, there is also no fallback to generate another address. When configured, the \"ipv6.token\" is used instead of the MAC address to generate addresses for stateless autoconfiguration. If the property is set to \"stable-privacy\", the interface identifier is generated as specified by RFC7217. This works by hashing a host specific key (see NetworkManager(8) manual), the interface name, the connection's \"connection.stable-id\" property and the address prefix. This improves privacy by making it harder to use the address to track the host's presence and the address is stable when the network interface hardware is replaced. The special values \"default\" and \"default-or-eui64\" will fallback to the global connection default as documented in the NetworkManager.conf(5) manual. If the global default is not specified, the fallback value is \"stable-privacy\" or \"eui64\", respectively. If not specified, when creating a new profile the default is \"default\". Note that this setting is distinct from the Privacy Extensions as configured by \"ip6-privacy\" property and it does not affect the temporary addresses configured with this option.") +#define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE N_("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 constant, making it possible to track the host's presence when it changes networks. The address changes when the interface hardware is replaced. If a duplicate address is detected, there is also no fallback to generate another address. When configured, the \"ipv6.token\" is used instead of the MAC address to generate addresses for stateless autoconfiguration. If the property is set to \"stable-privacy\", the interface identifier is generated as specified by RFC7217. This works by hashing a host specific key (see NetworkManager(8) manual), the interface name, the connection's \"connection.stable-id\" property and the address prefix. This improves privacy by making it harder to use the address to track the host's presence and the address is stable when the network interface hardware is replaced. The special values \"default\" and \"default-or-eui64\" will fallback to the global connection default as documented in the NetworkManager.conf(5) manual. If the global default is not specified, the fallback value is \"stable-privacy\" or \"eui64\", respectively. If not specified, when creating a new profile the default is \"default\". Note that this setting is distinct from the Privacy Extensions as configured by \"ip6-privacy\" property and it does not affect the temporary addresses configured with this option.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES N_("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:db8:85a3::5/64\". The addresses are listed in decreasing priority, meaning the first address will be the primary address. This can make a difference with IPv6 source address selection (RFC 6724, section 5).") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_AUTO_ROUTE_EXT_GW N_("VPN connections will default to add the route automatically unless this setting is set to FALSE. For other connection types, adding such an automatic route is currently not supported and setting this to TRUE has no effect.") #define DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DAD_TIMEOUT N_("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.") diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in index 7ac049fc3c..27de789302 100644 --- a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in +++ b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in @@ -1468,7 +1468,7 @@ values="0 - 2147483647" special-values="default (0)" /> Date: Mon, 13 May 2024 00:41:17 +0200 Subject: [PATCH 14/47] typo fix: overriden -> overridden Detected by lintian: I: network-manager: typo-in-manual-page overriden overridden [usr/share/man/man5/NetworkManager.conf.5.gz:396] I: network-manager: typo-in-manual-page overriden overridden [usr/share/man/man5/nm-system-settings.conf.5.gz:396] --- NEWS | 2 +- man/NetworkManager.conf.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index baf5a7afd6..40c5173260 100644 --- a/NEWS +++ b/NEWS @@ -791,7 +791,7 @@ This is a new stable release of NetworkManager. Notable changes include: * The libnm-glib library, deprecated in favor of libnm since NetworkManager 1.0, and disabled by default since NetworkManager 1.12, has now been removed. -* The DHCP client now defaults to "internal". The default can be overriden +* The DHCP client now defaults to "internal". The default can be overridden at build time by using the --with-config-dhcp-default option of the configure script or at run time by setting the main.dhcp option in the configuration file. diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index d86523c139..36e10061de 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -492,7 +492,7 @@ no-auto-default=* files without preserving their contents. - The path can also be overriden by pointing to a specific + The path can also be overridden by pointing to a specific existing and writable directory. On the other hand setting this to an empty string or any other value disables the profile conversion mechanism. From b2e8610cc558c058e03b07493b603c2573f78910 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 13 May 2024 00:43:06 +0200 Subject: [PATCH 15/47] typo fix: Uknown -> Unknown Detected by lintian: I: network-manager: spelling-error-in-binary Uknown Unknown [usr/lib/x86_64-linux-gnu/NetworkManager/1.47.90/libnm-device-plugin-wifi.so] --- src/core/devices/wifi/nm-device-iwd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/devices/wifi/nm-device-iwd.c b/src/core/devices/wifi/nm-device-iwd.c index 89444640f8..d6e3ed0808 100644 --- a/src/core/devices/wifi/nm-device-iwd.c +++ b/src/core/devices/wifi/nm-device-iwd.c @@ -3483,7 +3483,7 @@ nm_device_iwd_parse_netconfig(NMDeviceIwd *self, int addr_family, GVariantIter * /* Use SOURCE_DHCP as shorthand for the various autoconfiguration protocols */ source = NM_IP_CONFIG_SOURCE_DHCP; else - _LOGW(LOGD_WIFI, "iwd_parse_netconfig: Uknown Method value \"%s\"", str_value); + _LOGW(LOGD_WIFI, "iwd_parse_netconfig: Unknown Method value \"%s\"", str_value); } if (nm_streq(key, "Addresses")) { @@ -3527,7 +3527,7 @@ nm_device_iwd_parse_netconfig(NMDeviceIwd *self, int addr_family, GVariantIter * else if (nm_streq(str_value, "resolve")) mdns = NM_SETTING_CONNECTION_MDNS_RESOLVE; else - _LOGW(LOGD_WIFI, "iwd_parse_netconfig: Uknown MDNS value \"%s\"", str_value); + _LOGW(LOGD_WIFI, "iwd_parse_netconfig: Unknown MDNS value \"%s\"", str_value); } } From 97f185e1f8e5a60d770711d8bce8bd12a205590f Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 7 May 2024 17:51:19 +0200 Subject: [PATCH 16/47] vpn: allow IP configurations without addresses An IPv4-over-IPv6 (or vice-versa) IPsec VPN can return IP configurations with routes and without addresses. For example, in this scenario: +---------------+ +---------------+ | fd01::10/64 <-- VPN --> fd02::20/64 | | host1 | | host2 | +-------^-------+ +-------^-------+ | | +-------v-------+ +-------v-------+ | subnet1 | | subnet2 | | 172.16.1.0/24 | | 172.16.2.0/24 | +---------------+ +---------------+ host1 and host2 establish a IPv6 tunnel which encapsulates packets between the two IPv4 subnets. Therefore, in routed mode, host1 will need to configure a route like "172.16.2.0/24 via ipsec1" even if the host doesn't have any IPv4 address on the VPN interface. Accept IP configurations without address from the VPN; only check that the address and prefix are sane if they are provided. --- src/core/vpn/nm-vpn-connection.c | 44 ++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/core/vpn/nm-vpn-connection.c b/src/core/vpn/nm-vpn-connection.c index de0c9f7104..4f196e4a09 100644 --- a/src/core/vpn/nm-vpn-connection.c +++ b/src/core/vpn/nm-vpn-connection.c @@ -1988,6 +1988,12 @@ _dbus_signal_ip_config_cb(NMVpnConnection *self, int addr_family, GVariant *dict nm_l3_config_data_set_dns_priority(l3cd, AF_INET, NM_DNS_PRIORITY_DEFAULT_VPN); + _vardict_to_addr(addr_family, + dict, + IS_IPv4 ? NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY + : NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY, + &priv->ip_data_x[IS_IPv4].gw_internal); + if (IS_IPv4) { address.a4 = (NMPlatformIP4Address){ .plen = 24, @@ -1998,16 +2004,17 @@ _dbus_signal_ip_config_cb(NMVpnConnection *self, int addr_family, GVariant *dict }; } - _vardict_to_addr(addr_family, - dict, - IS_IPv4 ? NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY - : NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY, - &priv->ip_data_x[IS_IPv4].gw_internal); - - _vardict_to_addr(addr_family, - dict, - IS_IPv4 ? NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS : NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS, - address.ax.address_ptr); + if (_vardict_to_addr(addr_family, + dict, + IS_IPv4 ? NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS + : NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS, + address.ax.address_ptr) + && nm_ip_addr_is_null(addr_family, &address.ax.address_ptr)) { + _LOGW("invalid IP%c config received: address is zero", + nm_utils_addr_family_to_char(addr_family)); + _check_complete(self, FALSE); + return; + } if (!_vardict_to_addr(addr_family, dict, @@ -2024,17 +2031,20 @@ _dbus_signal_ip_config_cb(NMVpnConnection *self, int addr_family, GVariant *dict &u32)) address.ax.plen = u32; - if (address.ax.plen > 0 && address.ax.plen <= (IS_IPv4 ? 32 : 128) - && !nm_ip_addr_is_null(addr_family, &address.ax.address_ptr)) { - address.ax.addr_source = NM_IP_CONFIG_SOURCE_VPN; - nm_l3_config_data_add_address(l3cd, addr_family, NULL, &address.ax); - } else { - _LOGW("invalid IP%c config received: no valid IP address/prefix", - nm_utils_addr_family_to_char(addr_family)); + if (!nm_ip_addr_is_null(addr_family, &address.ax.address_ptr) + && (address.ax.plen == 0 || address.ax.plen > (IS_IPv4 ? 32 : 128))) { + _LOGW("invalid IP%c config received: invalid prefix %u", + nm_utils_addr_family_to_char(addr_family), + address.ax.plen); _check_complete(self, FALSE); return; } + if (!nm_ip_addr_is_null(addr_family, &address.ax.address_ptr)) { + address.ax.addr_source = NM_IP_CONFIG_SOURCE_VPN; + nm_l3_config_data_add_address(l3cd, addr_family, NULL, &address.ax); + } + if (IS_IPv4) { if (g_variant_lookup(dict, NM_VPN_PLUGIN_IP4_CONFIG_DNS, "au", &var_iter)) { while (g_variant_iter_next(var_iter, "u", &u32)) From b31febea22485d3dd063cfff8fc61c1e3901a7ca Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 8 May 2024 10:49:27 +0200 Subject: [PATCH 17/47] core: rename l3cd's "dhcp_enabled" to "allow_routes_without_address" The name "dhcp_enabled" is misleading because the flag is set for method=auto, which doesn't necessarily imply DHCP. Also, it doesn't convey what the flag is used for. Rename it to "allow_routes_without_address". --- src/core/nm-l3-config-data.c | 68 +++++++++++++++++++----------------- src/core/nm-l3-config-data.h | 3 +- src/core/nm-l3cfg.c | 9 +++-- 3 files changed, 41 insertions(+), 39 deletions(-) diff --git a/src/core/nm-l3-config-data.c b/src/core/nm-l3-config-data.c index a4647116a9..fbee1bf7e8 100644 --- a/src/core/nm-l3-config-data.c +++ b/src/core/nm-l3-config-data.c @@ -157,8 +157,8 @@ struct _NML3ConfigData { bool has_routes_with_type_local_6_set : 1; bool has_routes_with_type_local_4_val : 1; bool has_routes_with_type_local_6_val : 1; - bool dhcp_enabled_4 : 1; - bool dhcp_enabled_6 : 1; + bool allow_routes_without_address_4 : 1; + bool allow_routes_without_address_6 : 1; bool ndisc_hop_limit_set : 1; bool ndisc_reachable_time_msec_set : 1; @@ -678,26 +678,28 @@ nm_l3_config_data_new(NMDedupMultiIndex *multi_idx, int ifindex, NMIPConfigSourc self = g_slice_new(NML3ConfigData); *self = (NML3ConfigData){ - .ref_count = 1, - .ifindex = ifindex, - .multi_idx = nm_dedup_multi_index_ref(multi_idx), - .mdns = NM_SETTING_CONNECTION_MDNS_DEFAULT, - .llmnr = NM_SETTING_CONNECTION_LLMNR_DEFAULT, - .dns_over_tls = NM_SETTING_CONNECTION_DNS_OVER_TLS_DEFAULT, - .flags = NM_L3_CONFIG_DAT_FLAGS_NONE, - .metered = NM_TERNARY_DEFAULT, - .proxy_browser_only = NM_TERNARY_DEFAULT, - .proxy_method = NM_PROXY_CONFIG_METHOD_UNKNOWN, - .route_table_sync_4 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE, - .route_table_sync_6 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE, - .never_default_6 = NM_OPTION_BOOL_DEFAULT, - .never_default_4 = NM_OPTION_BOOL_DEFAULT, - .source = source, - .ip6_privacy = NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN, - .mptcp_flags = NM_MPTCP_FLAGS_NONE, - .ndisc_hop_limit_set = FALSE, - .ndisc_reachable_time_msec_set = FALSE, - .ndisc_retrans_timer_msec_set = FALSE, + .ref_count = 1, + .ifindex = ifindex, + .multi_idx = nm_dedup_multi_index_ref(multi_idx), + .mdns = NM_SETTING_CONNECTION_MDNS_DEFAULT, + .llmnr = NM_SETTING_CONNECTION_LLMNR_DEFAULT, + .dns_over_tls = NM_SETTING_CONNECTION_DNS_OVER_TLS_DEFAULT, + .flags = NM_L3_CONFIG_DAT_FLAGS_NONE, + .metered = NM_TERNARY_DEFAULT, + .proxy_browser_only = NM_TERNARY_DEFAULT, + .proxy_method = NM_PROXY_CONFIG_METHOD_UNKNOWN, + .route_table_sync_4 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE, + .route_table_sync_6 = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE, + .never_default_6 = NM_OPTION_BOOL_DEFAULT, + .never_default_4 = NM_OPTION_BOOL_DEFAULT, + .source = source, + .ip6_privacy = NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN, + .mptcp_flags = NM_MPTCP_FLAGS_NONE, + .ndisc_hop_limit_set = FALSE, + .ndisc_reachable_time_msec_set = FALSE, + .ndisc_retrans_timer_msec_set = FALSE, + .allow_routes_without_address_4 = TRUE, + .allow_routes_without_address_6 = TRUE, }; _idx_type_init(&self->idx_addresses_4, NMP_OBJECT_TYPE_IP4_ADDRESS); @@ -1936,15 +1938,15 @@ nm_l3_config_data_set_mptcp_flags(NML3ConfigData *self, NMMptcpFlags mptcp_flags } gboolean -nm_l3_config_data_get_dhcp_enabled(const NML3ConfigData *self, int addr_family) +nm_l3_config_data_get_allow_routes_without_address(const NML3ConfigData *self, int addr_family) { const int IS_IPv4 = NM_IS_IPv4(addr_family); nm_assert(_NM_IS_L3_CONFIG_DATA(self, TRUE)); if (IS_IPv4) { - return self->dhcp_enabled_4; + return self->allow_routes_without_address_4; } else { - return self->dhcp_enabled_6; + return self->allow_routes_without_address_6; } } @@ -2758,18 +2760,18 @@ _init_from_connection_ip(NML3ConfigData *self, int addr_family, NMConnection *co method = nm_setting_ip_config_get_method(s_ip); if (IS_IPv4) { if (nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) { - self->dhcp_enabled_4 = TRUE; + self->allow_routes_without_address_4 = FALSE; } else { - self->dhcp_enabled_4 = FALSE; + self->allow_routes_without_address_4 = TRUE; } } else { method = nm_setting_ip_config_get_method(s_ip); if (NM_IN_STRSET(method, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) { - self->dhcp_enabled_6 = TRUE; + self->allow_routes_without_address_6 = FALSE; } else { - self->dhcp_enabled_6 = FALSE; + self->allow_routes_without_address_6 = TRUE; } } @@ -3456,11 +3458,11 @@ nm_l3_config_data_merge(NML3ConfigData *self, self->dhcp_lease_x[0] = nm_dhcp_lease_ref(self->dhcp_lease_x[0]); self->dhcp_lease_x[1] = nm_dhcp_lease_ref(self->dhcp_lease_x[1]); } - if (src->dhcp_enabled_4) - self->dhcp_enabled_4 = TRUE; + if (!src->allow_routes_without_address_4) + self->allow_routes_without_address_4 = FALSE; - if (src->dhcp_enabled_6) - self->dhcp_enabled_6 = TRUE; + if (!src->allow_routes_without_address_6) + self->allow_routes_without_address_6 = FALSE; } NML3ConfigData * diff --git a/src/core/nm-l3-config-data.h b/src/core/nm-l3-config-data.h index b55b2f4194..5c8491a704 100644 --- a/src/core/nm-l3-config-data.h +++ b/src/core/nm-l3-config-data.h @@ -554,7 +554,8 @@ NMSettingIP6ConfigPrivacy nm_l3_config_data_get_ip6_privacy(const NML3ConfigData gboolean nm_l3_config_data_set_ip6_privacy(NML3ConfigData *self, NMSettingIP6ConfigPrivacy ip6_privacy); -gboolean nm_l3_config_data_get_dhcp_enabled(const NML3ConfigData *self, int addr_family); +gboolean nm_l3_config_data_get_allow_routes_without_address(const NML3ConfigData *self, + int addr_family); NMProxyConfigMethod nm_l3_config_data_get_proxy_method(const NML3ConfigData *self); diff --git a/src/core/nm-l3cfg.c b/src/core/nm-l3cfg.c index 12357fba12..57baeac25d 100644 --- a/src/core/nm-l3cfg.c +++ b/src/core/nm-l3cfg.c @@ -1301,7 +1301,6 @@ _commit_collect_routes(NML3Cfg *self, const int IS_IPv4 = NM_IS_IPv4(addr_family); const NMDedupMultiHeadEntry *head_entry; const NMDedupMultiEntry *entry; - gboolean is_dhcp_enabled; nm_assert(routes && !*routes); nm_assert(routes_nodev && !*routes_nodev); @@ -1321,10 +1320,10 @@ _commit_collect_routes(NML3Cfg *self, else { nm_assert(NMP_OBJECT_CAST_IP_ROUTE(obj)->ifindex == self->priv.ifindex); - is_dhcp_enabled = - nm_l3_config_data_get_dhcp_enabled(self->priv.p->combined_l3cd_commited, - addr_family); - if (!any_addrs && is_dhcp_enabled) { + if (!any_addrs + && !nm_l3_config_data_get_allow_routes_without_address( + self->priv.p->combined_l3cd_commited, + addr_family)) { /* This is a unicast route (or a similar route, which has an * ifindex). * From a3ce13c947e6eda71fa07de273ede55b806e8d45 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 8 May 2024 11:02:20 +0200 Subject: [PATCH 18/47] core: add nm_l3_config_data_set_allow_routes_without_address() Add a function to set the allow-routes-without-address flag for l3cds. It will be used in the next commit. --- src/core/nm-l3-config-data.c | 15 +++++++++++++++ src/core/nm-l3-config-data.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/core/nm-l3-config-data.c b/src/core/nm-l3-config-data.c index fbee1bf7e8..908c4d65d5 100644 --- a/src/core/nm-l3-config-data.c +++ b/src/core/nm-l3-config-data.c @@ -1950,6 +1950,21 @@ nm_l3_config_data_get_allow_routes_without_address(const NML3ConfigData *self, i } } +void +nm_l3_config_data_set_allow_routes_without_address(NML3ConfigData *self, + int addr_family, + gboolean value) +{ + const int IS_IPv4 = NM_IS_IPv4(addr_family); + + nm_assert(_NM_IS_L3_CONFIG_DATA(self, FALSE)); + if (IS_IPv4) { + self->allow_routes_without_address_4 = value; + } else { + self->allow_routes_without_address_6 = value; + } +} + NMProxyConfigMethod nm_l3_config_data_get_proxy_method(const NML3ConfigData *self) { diff --git a/src/core/nm-l3-config-data.h b/src/core/nm-l3-config-data.h index 5c8491a704..faf4f0bfa9 100644 --- a/src/core/nm-l3-config-data.h +++ b/src/core/nm-l3-config-data.h @@ -557,6 +557,10 @@ gboolean nm_l3_config_data_set_ip6_privacy(NML3ConfigData *self, gboolean nm_l3_config_data_get_allow_routes_without_address(const NML3ConfigData *self, int addr_family); +void nm_l3_config_data_set_allow_routes_without_address(NML3ConfigData *self, + int addr_family, + gboolean value); + NMProxyConfigMethod nm_l3_config_data_get_proxy_method(const NML3ConfigData *self); gboolean nm_l3_config_data_set_proxy_method(NML3ConfigData *self, NMProxyConfigMethod value); From d1ffdb28ebaf3af23ac76b59c35fe7e4672cb5bc Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 8 May 2024 11:04:04 +0200 Subject: [PATCH 19/47] vpn: allow IP configurations with routes and without addresses Usually, when the method is "auto" we want to avoid configuring routes until the automatic method completes. To achieve that, we clear the "allow_routes_without_address" flag of l3cds when the method is "auto". For VPNs, IP configurations with only routes are perfectly valid, therefore set the flag. --- src/core/vpn/nm-vpn-connection.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/vpn/nm-vpn-connection.c b/src/core/vpn/nm-vpn-connection.c index 4f196e4a09..b5a7fc4c29 100644 --- a/src/core/vpn/nm-vpn-connection.c +++ b/src/core/vpn/nm-vpn-connection.c @@ -1433,6 +1433,10 @@ _check_complete(NMVpnConnection *self, gboolean success) l3cd = nm_l3_config_data_new_from_connection(nm_netns_get_multi_idx(priv->netns), nm_vpn_connection_get_ip_ifindex(self, TRUE), connection); + + nm_l3_config_data_set_allow_routes_without_address(l3cd, AF_INET, TRUE); + nm_l3_config_data_set_allow_routes_without_address(l3cd, AF_INET6, TRUE); + _l3cfg_l3cd_set(self, L3CD_TYPE_STATIC, l3cd); _l3cfg_l3cd_gw_extern_update(self); From 3ceeffb6b831c644669df6409f354dc26ed418f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Mon, 6 May 2024 14:08:22 +0200 Subject: [PATCH 20/47] doc: document how to do a release of NM and VPN plugins Although VPN plugins are developed separately, better to document here how to do the release of those that we maintain to avoid having to do the changes on every repository each time. --- MAINTAINERS.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 2eeb75b0ec..865cda3dbc 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -159,14 +159,114 @@ In practice when we want to backport new API from main we have two options: 19d7e66099ee43f47d6be0e740dc710fc365d200. Then, on main we add duplicate symbols with commit 5eade4da11ee38a0e7faf4a87b2c2b5af07c5eeb. -### Reimporting systemd + +NetworkManager release process +------------------------------ + +It's mostly automated by [release.sh](contrib/fedora/rpm/release.sh). + +Before running the script: +- For stable releases, remember to backport all commits with "Fixes:" tag that + are applicable. Use the [find-backports](contrib/scripts/find-backports) + script to find them. +- Start all the jobs in the latest Gitlab pipeline of the right branch. The + script checks that they ran successfully. + Tiers 1 and 2 must pass, failed Tier 3 jobs can be fixed after the release. + +The script also takes care of choosing the right version number depending on the +release type that you specify, like devel, rc1, rc, major, major-post, etc. +Run the script with `--help` to see all options. + +Notes: +- You need access to master.gnome.org, see [here](https://handbook.gnome.org/infrastructure/accounts.html). +- The GPG key used to sign the tags must be exported to a keyserver. + +Versioning scheme, automatically handled by the script (version numbers are +called MAJOR.MINOR.MICRO): +- Development releases has an odd MINOR version number (i.e. `1.47.2`). +- Stable releases has an even MINOR version number (i.e. `1.48.1`). +- Release candidates (RC) are tagged like `1.48-rc1`, `1.48-rc2`, etc. But in + NM's internal code they looks like `1.47.90`, `1.47.91`, etc. (MINOR is one + number less, and MICRO is >= 90). + +The main differences between the different kind of releases are: +- Development releases: for depelopment and testing purposes only. +- Release candidates (RC): stabilization phase before a stable release. Normally + there are one or two RCs with ~2 weeks cadence. More RCs can be releases if + they are needed. +- Stable releases: Releases within the same stable branch should remain very + stable while fixing important bugs, backported from `main`. New features are + added very rarely. + +Stable branches are branched out from `main` to prepare the first release +candidate (RC) of the next stable branch. These branches are called `nm-MAJOR-MINOR` +(i.e. `nm-1-48`). As they are used to release stable versions, the last number +is always even. + +There are some additional tasks that the script doesn't handle: +- For RC releases: + - The NEWS file should reflect a curated summary of the changes that the new + stable release will include. + - The release should be announced on the mailing list. +- For stable releases: + - The official documentation must be updated on the website when there is a new + stable release. Use the [import-docs.sh](https://gitlab.freedesktop.org/NetworkManager/networkmanager.pages.freedesktop.org/-/blob/main/scripts/import-docs.sh) + script from the website's repo. + - The release should be announced on the mailing list. + + +VPN plugins and nm-applet release process +----------------------------------------- + +The same versioning scheme and release process is used for the VPN plugins, +nm-applet (including nm-connection-editor) and libnma. + +Note that each of them is hosted in its own repository, but this is documented +here to avoid duplication, as the process is the same for all (at least for +those that we maintain). + +Also note that there are no stable branches or development versions. Everything +is developed on main, and releases are done on main. + +Versioning scheme (version numbers are called MAJOR.MINOR.MICRO): +- Small changes increments only the MICRO number. +- Bigger changes or new features increments the MINOR number. +- There is no strict criteria to define what change is small or big, but try to + adhere mostly to [semantic versioning](https://semver.org/). +- Use only even numbers for MINOR, skipping odd ones. That way we use the same + versioning scheme than the main NM project despite there are no development + versions here. + +When doing a release, follow this process: +1. Ensure that `NEWS` file is up to date. +2. Increment the version in `configure.ac`, commit and tag the commit. Example: + `git tag -s 1.2.8 -m 'Tag 1.2.8'`. +3. Ensure that you are on the right commit and create the tarball: + `git clean -fdx && ./autogen.sh && make distcheck` +4. Upload the tarball: `scp ./*-*.tar.xz "$user@master.gnome.org:"` +5. Login to `master.gnome.org` and run `ftpadmin install`. + Ensure the new tarballs show up at https://download.gnome.org/sources/ + (happens after a short delay) +6. Announce the release on the mailing list. + +Notes: +- You need access to master.gnome.org, see [here](https://handbook.gnome.org/infrastructure/accounts.html). +- The GPG key used to sign the tags must be exported to a keyserver. + + +Reimporting systemd +------------------- See [here](src/libnm-systemd-shared/README.md#reimport-upstream-code). -### Copr repository + +Copr repository +--------------- See [here](contrib/scripts/nm-copr-build.sh). -### gitlab-ci Pipelines + +Gitlab-ci Pipelines +------------------- See [here](.gitlab-ci/README.md). From 8eb00c09910f8776f26e36af0369a4394b02d3e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Mon, 6 May 2024 14:09:50 +0200 Subject: [PATCH 21/47] release.sh: stop doing "-dev" releases on stable branches Note: here I refer to the numbers in a version as MAJOR.MINOR.MICRO. Having stable and development releases do make sense for the MINOR version, because we maintain separate branches for them and they evolve separately. We have 1.47.z where we put all the changes so anyone can pick the latest development release and test it. At the same time, we have 1.46.z with the latest stable released version. However, it does not make sense to have 1.46.2 and 1.46.3-dev because the latter is not a development version. It is identical to 1.46.2, only the version number has been bumped, there are no changes to test. When we add commits, we will be actually testing 1.46.3-dev + some commits, which is exactly the same as testing 1.46.2 + some commits. So, basically, someone can use the releases of a development BRANCH, like 1.47.4, to test the development version of NM. But using a development MICRO version is exactly the same as using a non-development one. From now on, we will just increment the MICRO version each time we do a release on a stable branch and won't create the '-dev' tag. Update release.sh to do it this way. --- NEWS | 5 +++++ contrib/fedora/rpm/release.sh | 28 ++++++---------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/NEWS b/NEWS index 40c5173260..ac07735a64 100644 --- a/NEWS +++ b/NEWS @@ -27,6 +27,11 @@ USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! when IPv6 device address was not explicitly passed on by ModemManager * Fix a performance issue that was leading to 100% CPU usage by NetworkManager if external programs were doing a big amount of routes updates. +* Patch-level development releases (i.e. 1.48.1-dev) won't be used anymore. + From now on, all the patch releases whithin a stable branch will be normal + releases, like 1.48.0, 1.48.1, 1.48.2, 1.48.3 and so on. + Odd numbers in the minor version number still indicates if it's a development + branch like 1.49 or a stable one like 1.48. ============================================= NetworkManager-1.46 diff --git a/contrib/fedora/rpm/release.sh b/contrib/fedora/rpm/release.sh index 809810f097..fd48f487d4 100755 --- a/contrib/fedora/rpm/release.sh +++ b/contrib/fedora/rpm/release.sh @@ -14,12 +14,11 @@ # - "rc" : further release candidates on RC branch (e.g. from "nm-1-26" branch # tag "1.26-rc2" with version number 1.25.91). # - "major" : on stable branch do a major release (e.g. on "nm-1-26" branch -# release "1.26.0", followed by "1.26.1-dev"). +# release "1.26.0"). # You should do a "major-post" release right a "major" release. # - "major-post": after a "major" release, merge the release branch with main and # do another devel snapshot on main (e.g. do "1.27.1-dev" release). -# - "minor" : on a stable branch do a minor release (e.g. "1.26.4" on "nm-1-26" -# branch and bump to "1.26.5-dev"). +# - "minor" : on a stable branch do a minor release (e.g. "1.26.4" on "nm-1-26"). # # Requisites: # @@ -296,8 +295,7 @@ RC_VERSION= RELEASE_BRANCH= case "$RELEASE_MODE" in minor) - number_is_even "${VERSION_ARR[1]}" && - number_is_odd "${VERSION_ARR[2]}" || die "cannot do minor release on top of version $VERSION_STR" + number_is_even "${VERSION_ARR[1]}" || die "cannot do minor release on top of version $VERSION_STR" [ "$CUR_BRANCH" != main ] || die "cannot do a minor release on main" ;; devel) @@ -431,19 +429,13 @@ case "$RELEASE_MODE" in minor) set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 1)) git commit -m "release: bump version to ${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" -a || die "failed to commit release" - set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 2)) - git commit -m "release: bump version to ${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 2)) (development)" -a || die "failed to commit devel version bump" b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 1))" - git tag -s -a -m "Tag $b" "$b" HEAD~ || die "failed to tag release" + git tag -s -a -m "Tag $b" "$b" HEAD || die "failed to tag release" BRANCHES+=("$b") CLEANUP_REFS+=("refs/tags/$b") BUILD_TAG="$b" - b="${VERSION_ARR[0]}.${VERSION_ARR[1]}.$(("${VERSION_ARR[2]}" + 2))" - git tag -s -a -m "Tag $b (development)" "$b-dev" HEAD || die "failed to tag devel version" - BRANCHES+=("$b-dev") - CLEANUP_REFS+=("refs/tags/$b-dev") - TAR_VERSION="$BUILD_TAG" + TAR_VERSION="$b" ;; devel) set_version_number "${VERSION_ARR[0]}" "${VERSION_ARR[1]}" $(("${VERSION_ARR[2]}" + 1)) @@ -482,20 +474,12 @@ case "$RELEASE_MODE" in ;; major) b="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1)).0" - b2="${VERSION_ARR[0]}.$((${VERSION_ARR[1]} + 1)).1" - set_version_number "${VERSION_ARR[0]}" "$((${VERSION_ARR[1]} + 1))" 0 git commit -m "release: bump version to $b" -a || die "failed to commit major version bump" + git tag -s -a -m "Tag $b" "$b" HEAD || die "failed to tag release" BRANCHES+=("$b") CLEANUP_REFS+=("refs/tags/$b") - - set_version_number "${VERSION_ARR[0]}" "$((${VERSION_ARR[1]} + 1))" 1 - git commit -m "release: bump version to $b2 (development)" -a || die "failed to commit another bump after major version bump" - git tag -s -a -m "Tag $b (development)" "$b2-dev" HEAD || die "failed to tag release" - BRANCHES+=("$b2-dev") - CLEANUP_REFS+=("refs/tags/$b2-dev") - BUILD_TAG="$b" TAR_VERSION="$b" ;; From dfff21f559c9bf68f96c5ce3d446376dc086b889 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Wed, 29 May 2024 15:02:13 +0200 Subject: [PATCH 22/47] gitlab: adjust ci.template The recommendations from freedesktop [1] about how to maintain a Gitlab project changed therefore we must adapt the rules. Solves: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1549 [1] https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/540#what-it-means-for-me-a-maintainer-of-a-project-part-of-gitlabfreedesktoporg --- .gitlab-ci.yml | 14 ++++++++------ .gitlab-ci/ci.template | 4 +++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d47903aa77..6f26ba9b91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-ed94fd969369' - CENTOS_TAG: 'tag-dc93a9c129f8' - DEBIAN_TAG: 'tag-3766b6cf1e7d' - FEDORA_TAG: 'tag-dc93a9c129f8' - UBUNTU_TAG: 'tag-3766b6cf1e7d' + ALPINE_TAG: 'tag-75ecbb5bcef4' + CENTOS_TAG: 'tag-ea45f0a3f632' + DEBIAN_TAG: 'tag-1ccef04c657b' + FEDORA_TAG: 'tag-ea45f0a3f632' + UBUNTU_TAG: 'tag-1ccef04c657b' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -680,5 +680,7 @@ clean-images: workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_PIPELINE_SOURCE == 'push' + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH - if: $CI_PIPELINE_SOURCE == 'schedule' diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 28e4ca25e3..85b3601850 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -267,5 +267,7 @@ clean-images: workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_PIPELINE_SOURCE == 'push' + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH - if: $CI_PIPELINE_SOURCE == 'schedule' From 033cb389ff670cb974c548145d3bf8bae627c068 Mon Sep 17 00:00:00 2001 From: Stanislas FAYE Date: Wed, 29 May 2024 14:34:18 +0200 Subject: [PATCH 23/47] gitlab: Add security vulnerability issue template Add security vulnerability issue template and automatically make the issue confidential with the workflow::triage label. --- .../issue_templates/Security_Vulnerability.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .gitlab/issue_templates/Security_Vulnerability.md diff --git a/.gitlab/issue_templates/Security_Vulnerability.md b/.gitlab/issue_templates/Security_Vulnerability.md new file mode 100644 index 0000000000..b8bb43b33e --- /dev/null +++ b/.gitlab/issue_templates/Security_Vulnerability.md @@ -0,0 +1,26 @@ +/confidential +/label ~"workflow::triage" + +## Summary + +(Summarize the security vulnerability encountered concisely) + +## Version affected + +(Which version of NetworkManager is affected (`nmcli --version`), which distro, and the version of any other relevant software involved) + +## Vulnerability details +* **Type:** (e.g., Buffer overflow, injection flaws, ...) +* **Severity:** (High/Medium/Low) +* **Any other vulnerability details:** + +## Steps to reproduce + +## Actual result + +## Expected result + +## Relevant logs + +(Please see the DEBUGGING section of "[man NetworkManager](https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/NetworkManager.html)" and attach any relevant log) + From 4e50d7d53f6fd60a95c94f8f387fbc136e5a5f63 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Mon, 27 May 2024 10:41:00 +0200 Subject: [PATCH 24/47] gitlab: fix helper scripts to support DNF5 As Fedora 41 (currently Rawhide) is migrating to DNF5 [1], the debuginfo-install command is not available anymore according to the documentation. Instead, the user need to add the package suffix "-debuginfo" when using the install command. The implementation of the debuginfo-install plugin is under development and tracked upstream. [2] [1] https://fedoraproject.org/wiki/Changes/SwitchToDnf5 [2] https://github.com/rpm-software-management/dnf5/issues/389 --- .gitlab-ci.yml | 4 ++-- .gitlab-ci/fedora-install.sh | 16 +++++++++++++++- .gitlab-ci/run-test.sh | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f26ba9b91..b0e8977445 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -60,9 +60,9 @@ variables: # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". ALPINE_TAG: 'tag-75ecbb5bcef4' - CENTOS_TAG: 'tag-ea45f0a3f632' + CENTOS_TAG: 'tag-0de3c2e2d9ed' DEBIAN_TAG: 'tag-1ccef04c657b' - FEDORA_TAG: 'tag-ea45f0a3f632' + FEDORA_TAG: 'tag-0de3c2e2d9ed' UBUNTU_TAG: 'tag-1ccef04c657b' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh index 5ffb461c5e..3bd4698366 100755 --- a/.gitlab-ci/fedora-install.sh +++ b/.gitlab-ci/fedora-install.sh @@ -5,6 +5,7 @@ set -ex IS_FEDORA=0 IS_CENTOS=0 CENTOS_VERSION=0 +FEDORA_VERSION=0 grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1 grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1 if [ $IS_CENTOS = 1 ]; then @@ -45,9 +46,22 @@ yum install -y glibc-langpack-pl ccache clang # to generate proper documentation. yum reinstall -y --setopt='tsflags=' glib2-doc +if [ $IS_FEDORA = 1 ]; then + FEDORA_VERSION=$(cat /etc/os-release | grep '^VERSION_ID=' | sed s\/"VERSION_ID="\/\/) +fi + if command -v dnf &>/dev/null; then dnf install -y python3-dnf-plugins-core - dnf debuginfo-install -y glib2 + # Fedora 41 migrated to DNF5 and the debuginfo-install plugin is not implemented yet + # therefore we need to enable the repo and install the debuginfo subpackage manually + if [ $FEDORA_VERSION -lt "41" ]; then + dnf debuginfo-install -y glib2 + else + dnf install -y dnf5-plugins + dnf config-manager setopt fedora-debuginfo.enabled=1 + dnf config-manager setopt rawhide-debuginfo.enabled=1 || true + dnf install -y glib2-debuginfo + fi else debuginfo-install -y glib2 fi diff --git a/.gitlab-ci/run-test.sh b/.gitlab-ci/run-test.sh index cd12220315..d97163b63d 100755 --- a/.gitlab-ci/run-test.sh +++ b/.gitlab-ci/run-test.sh @@ -40,7 +40,7 @@ uname -a meson --version ! command -v dpkg &>/dev/null || dpkg -l -! command -v yum &>/dev/null || yum list installed +! command -v dnf &>/dev/null || dnf list --installed ! command -v apk &>/dev/null || apk -v info # We have a unit test that check that `ci-fairy generate-template` From a4bbdeaf54c69e20b76c580f568f26246bde5399 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Tue, 28 May 2024 17:27:47 +0200 Subject: [PATCH 25/47] src: fix code formatting to last clang version --- src/core/devices/nm-device-bridge.c | 12 ++- src/core/dhcp/nm-dhcp-options.c | 8 +- src/core/platform/tests/test-common.c | 6 +- .../plugins/ifcfg-rh/nms-ifcfg-rh-utils.c | 7 +- .../nm-supplicant-settings-verify.c | 33 ++++--- src/libnm-client-impl/nm-libnm-utils.h | 17 ++-- src/libnm-client-impl/tests/test-libnm.c | 8 +- src/libnm-core-impl/nm-setting-private.h | 5 +- src/libnm-core-impl/nm-utils.c | 7 +- src/libnm-glib-aux/nm-prioq.h | 11 +-- src/libnm-glib-aux/nm-shared-utils.h | 39 ++++----- src/libnm-platform/nm-platform-utils.c | 16 ++-- src/libnm-platform/nmp-object.c | 3 +- src/libnm-platform/nmp-object.h | 11 +-- src/nmcli/nmcli.c | 87 ++++++++++--------- 15 files changed, 137 insertions(+), 133 deletions(-) diff --git a/src/core/devices/nm-device-bridge.c b/src/core/devices/nm-device-bridge.c index 2405beeaed..82314f1364 100644 --- a/src/core/devices/nm-device-bridge.c +++ b/src/core/devices/nm-device-bridge.c @@ -299,13 +299,11 @@ typedef struct { } Option; #define OPTION(_name, _sysname, ...) \ - { \ - .name = ""_name \ - "", \ - .sysname = ""_sysname \ - "", \ - __VA_ARGS__ \ - } + {.name = ""_name \ + "", \ + .sysname = ""_sysname \ + "", \ + __VA_ARGS__} #define OPTION_TYPE_INT(min, max, def) .nm_min = (min), .nm_max = (max), .nm_default = (def) diff --git a/src/core/dhcp/nm-dhcp-options.c b/src/core/dhcp/nm-dhcp-options.c index 7c47c82e05..f89237c51f 100644 --- a/src/core/dhcp/nm-dhcp-options.c +++ b/src/core/dhcp/nm-dhcp-options.c @@ -11,9 +11,11 @@ /*****************************************************************************/ -#define REQ(_num, _name, _include) \ - { \ - .name = NM_DHCP_OPTION_REQPREFIX ""_name, .option_num = _num, .include = _include, \ +#define REQ(_num, _name, _include) \ + { \ + .name = NM_DHCP_OPTION_REQPREFIX ""_name, \ + .option_num = _num, \ + .include = _include, \ } const NMDhcpOption _nm_dhcp_option_dhcp4_options[] = { diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c index fde7dc0de7..99b8bc45fe 100644 --- a/src/core/platform/tests/test-common.c +++ b/src/core/platform/tests/test-common.c @@ -59,10 +59,8 @@ typedef struct { } IPTunnelModInfo; -#define INF(_module_name, _iftype, _ifname, ...) \ - { \ - .module_name = ""_module_name, .iftype = _iftype, .ifname = ""_ifname, __VA_ARGS__ \ - } +#define INF(_module_name, _iftype, _ifname, ...) \ + {.module_name = ""_module_name, .iftype = _iftype, .ifname = ""_ifname, __VA_ARGS__} static const IPTunnelModInfo ip_tunnel_mod_infos[] = { INF("ip_gre", NM_LINK_TYPE_GRE, "gre0"), diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c index 277d0d5fab..50484405b8 100644 --- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c +++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c @@ -700,9 +700,10 @@ nms_ifcfg_rh_utils_is_numbered_tag_impl(const char *key, /*****************************************************************************/ -#define _KEY_TYPE(key, flags) \ - { \ - .key_name = "" key "", .key_flags = ((NMS_IFCFG_KEY_TYPE_WELL_KNOWN) | (flags)), \ +#define _KEY_TYPE(key, flags) \ + { \ + .key_name = "" key "", \ + .key_flags = ((NMS_IFCFG_KEY_TYPE_WELL_KNOWN) | (flags)), \ } const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = { diff --git a/src/core/supplicant/nm-supplicant-settings-verify.c b/src/core/supplicant/nm-supplicant-settings-verify.c index c7aaf47d9f..7632854153 100644 --- a/src/core/supplicant/nm-supplicant-settings-verify.c +++ b/src/core/supplicant/nm-supplicant-settings-verify.c @@ -20,21 +20,30 @@ struct Opt { typedef gboolean (*validate_func)(const struct Opt *, const char *, const guint32); -#define OPT_INT(_key, _int_low, _int_high) \ - { \ - .key = _key, .type = NM_SUPPL_OPT_TYPE_INT, .int_high = _int_high, .int_low = _int_low, \ +#define OPT_INT(_key, _int_low, _int_high) \ + { \ + .key = _key, \ + .type = NM_SUPPL_OPT_TYPE_INT, \ + .int_high = _int_high, \ + .int_low = _int_low, \ } -#define OPT_BYTES(_key, _int_high) \ - { \ - .key = _key, .type = NM_SUPPL_OPT_TYPE_BYTES, .int_high = _int_high, \ +#define OPT_BYTES(_key, _int_high) \ + { \ + .key = _key, \ + .type = NM_SUPPL_OPT_TYPE_BYTES, \ + .int_high = _int_high, \ } -#define OPT_UTF8(_key, _int_high) \ - { \ - .key = _key, .type = NM_SUPPL_OPT_TYPE_UTF8, .int_high = _int_high, \ +#define OPT_UTF8(_key, _int_high) \ + { \ + .key = _key, \ + .type = NM_SUPPL_OPT_TYPE_UTF8, \ + .int_high = _int_high, \ } -#define OPT_KEYWORD(_key, _str_allowed) \ - { \ - .key = _key, .type = NM_SUPPL_OPT_TYPE_KEYWORD, .str_allowed = _str_allowed, \ +#define OPT_KEYWORD(_key, _str_allowed) \ + { \ + .key = _key, \ + .type = NM_SUPPL_OPT_TYPE_KEYWORD, \ + .str_allowed = _str_allowed, \ } static const struct Opt opt_table[] = { diff --git a/src/libnm-client-impl/nm-libnm-utils.h b/src/libnm-client-impl/nm-libnm-utils.h index d56d0fc136..53fa36be18 100644 --- a/src/libnm-client-impl/nm-libnm-utils.h +++ b/src/libnm-client-impl/nm-libnm-utils.h @@ -379,11 +379,10 @@ typedef struct { } NMLDBusMetaProperty; #define NML_DBUS_META_PROPERTY_INIT(v_dbus_property_name, v_dbus_type, v_obj_properties_idx, ...) \ - { \ - .dbus_property_name = "" v_dbus_property_name "", \ - .dbus_type = NM_G_VARIANT_TYPE("" v_dbus_type ""), \ - .obj_properties_idx = v_obj_properties_idx, ##__VA_ARGS__ \ - } + {.dbus_property_name = "" v_dbus_property_name "", \ + .dbus_type = NM_G_VARIANT_TYPE("" v_dbus_type ""), \ + .obj_properties_idx = v_obj_properties_idx, \ + ##__VA_ARGS__} #define _NML_DBUS_META_PROPERTY_INIT_DEFAULT(v_dbus_type, \ v_exp_type, \ @@ -568,10 +567,10 @@ struct _NMLDBusMetaIface { (sizeof((const NMLDBusMetaProperty[]){__VA_ARGS__}) / sizeof(NMLDBusMetaProperty)) #define NML_DBUS_META_IFACE_INIT(v_dbus_iface_name, v_get_type_fcn, v_interface_prio, ...) \ - { \ - .dbus_iface_name = "" v_dbus_iface_name "", .get_type_fcn = v_get_type_fcn, \ - .interface_prio = v_interface_prio, ##__VA_ARGS__ \ - } + {.dbus_iface_name = "" v_dbus_iface_name "", \ + .get_type_fcn = v_get_type_fcn, \ + .interface_prio = v_interface_prio, \ + ##__VA_ARGS__} #define NML_DBUS_META_IFACE_INIT_PROP(v_dbus_iface_name, v_get_type_fcn, v_interface_prio, ...) \ NML_DBUS_META_IFACE_INIT(v_dbus_iface_name, \ diff --git a/src/libnm-client-impl/tests/test-libnm.c b/src/libnm-client-impl/tests/test-libnm.c index 687e6c1717..f677ad8e6a 100644 --- a/src/libnm-client-impl/tests/test-libnm.c +++ b/src/libnm-client-impl/tests/test-libnm.c @@ -57,9 +57,11 @@ _test_fixup_string(const TestFixupData *data, guint n_data, char *(*func)(const } } -#define T_DATA(_desc, _expected) \ - { \ - .desc = _desc, .expected = _expected, .line = __LINE__, \ +#define T_DATA(_desc, _expected) \ + { \ + .desc = _desc, \ + .expected = _expected, \ + .line = __LINE__, \ } static void diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h index a1ae6825ed..7d49324845 100644 --- a/src/libnm-core-impl/nm-setting-private.h +++ b/src/libnm-core-impl/nm-setting-private.h @@ -484,10 +484,7 @@ void _nm_setting_class_commit(NMSettingClass *setting_class, #define NM_SETT_INFO_SETT_DETAIL(...) (&((const NMSettInfoSettDetail){__VA_ARGS__})) -#define NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(_dbus_type, ...) \ - { \ - .dbus_type = _dbus_type, __VA_ARGS__ \ - } +#define NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(_dbus_type, ...) {.dbus_type = _dbus_type, __VA_ARGS__} #define NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(_dbus_type, ...) \ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(_dbus_type, \ diff --git a/src/libnm-core-impl/nm-utils.c b/src/libnm-core-impl/nm-utils.c index b6e2414106..745b1f3322 100644 --- a/src/libnm-core-impl/nm-utils.c +++ b/src/libnm-core-impl/nm-utils.c @@ -329,9 +329,10 @@ good: typedef const char *const StrvArray4Type[4]; -#define LL(l, ...) \ - { \ - .name = l, .value = {__VA_ARGS__, NULL}, \ +#define LL(l, ...) \ + { \ + .name = l, \ + .value = {__VA_ARGS__, NULL}, \ } /* 5-letter language codes */ diff --git a/src/libnm-glib-aux/nm-prioq.h b/src/libnm-glib-aux/nm-prioq.h index 51e5b059fb..1c16452baa 100644 --- a/src/libnm-glib-aux/nm-prioq.h +++ b/src/libnm-glib-aux/nm-prioq.h @@ -25,11 +25,12 @@ typedef struct { } _priv; } NMPrioq; -#define NM_PRIOQ_ZERO \ - { \ - ._priv = { \ - .compare_func = NULL, \ - }, \ +#define NM_PRIOQ_ZERO \ + { \ + ._priv = \ + { \ + .compare_func = NULL, \ + }, \ } void nm_prioq_init(NMPrioq *q, GCompareFunc compare_func); diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 804034d237..d350d32e41 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -198,14 +198,15 @@ typedef struct { #define _NM_ETHER_ADDR_INIT(a0, a1, a2, a3, a4, a5) \ { \ - .ether_addr_octet = { \ - (a0), \ - (a1), \ - (a2), \ - (a3), \ - (a4), \ - (a5), \ - }, \ + .ether_addr_octet = \ + { \ + (a0), \ + (a1), \ + (a2), \ + (a3), \ + (a4), \ + (a5), \ + }, \ } #define NM_ETHER_ADDR_INIT(...) ((NMEtherAddr) _NM_ETHER_ADDR_INIT(__VA_ARGS__)) @@ -806,7 +807,8 @@ typedef struct { #define NM_UTILS_FLAGS2STR(f, n) \ { \ - .flag = f, .name = "" n, \ + .flag = f, \ + .name = "" n, \ } #define NM_UTILS_FLAGS2STR_DEFINE(fcn_name, flags_type, ...) \ @@ -1749,10 +1751,7 @@ typedef struct { }; } NMUtilsNamedValue; -#define NM_UTILS_NAMED_VALUE_INIT(n, v) \ - { \ - .name = (n), .value_ptr = (v) \ - } +#define NM_UTILS_NAMED_VALUE_INIT(n, v) {.name = (n), .value_ptr = (v)} NMUtilsNamedValue *nm_utils_hash_to_array_full(GHashTable *hash, guint *out_len, @@ -2444,10 +2443,7 @@ int nm_utils_fd_read_loop_exact(int fd, void *buf, size_t nbytes, bool do_po __VA_ARGS__ NULL, \ })) -#define NM_DEFINE_GDBUS_SIGNAL_INFO_INIT(name_, ...) \ - { \ - .ref_count = -1, .name = name_, __VA_ARGS__ \ - } +#define NM_DEFINE_GDBUS_SIGNAL_INFO_INIT(name_, ...) {.ref_count = -1, .name = name_, __VA_ARGS__} #define NM_DEFINE_GDBUS_SIGNAL_INFO(name_, ...) \ ((GDBusSignalInfo *) (&( \ @@ -2458,10 +2454,7 @@ int nm_utils_fd_read_loop_exact(int fd, void *buf, size_t nbytes, bool do_po __VA_ARGS__ NULL, \ })) -#define NM_DEFINE_GDBUS_METHOD_INFO_INIT(name_, ...) \ - { \ - .ref_count = -1, .name = name_, __VA_ARGS__ \ - } +#define NM_DEFINE_GDBUS_METHOD_INFO_INIT(name_, ...) {.ref_count = -1, .name = name_, __VA_ARGS__} #define NM_DEFINE_GDBUS_METHOD_INFO(name_, ...) \ ((GDBusMethodInfo *) (&( \ @@ -2473,9 +2466,7 @@ int nm_utils_fd_read_loop_exact(int fd, void *buf, size_t nbytes, bool do_po })) #define NM_DEFINE_GDBUS_INTERFACE_INFO_INIT(name_, ...) \ - { \ - .ref_count = -1, .name = name_, __VA_ARGS__ \ - } + {.ref_count = -1, .name = name_, __VA_ARGS__} #define NM_DEFINE_GDBUS_INTERFACE_INFO(name_, ...) \ ((GDBusInterfaceInfo *) (&( \ diff --git a/src/libnm-platform/nm-platform-utils.c b/src/libnm-platform/nm-platform-utils.c index 6074c3421f..6f3ad05c94 100644 --- a/src/libnm-platform/nm-platform-utils.c +++ b/src/libnm-platform/nm-platform-utils.c @@ -68,9 +68,10 @@ typedef struct { char ifname[IFNAMSIZ]; } SocketHandle; -#define SOCKET_HANDLE_INIT(_ifindex) \ - { \ - .fd = -1, .ifindex = (_ifindex), \ +#define SOCKET_HANDLE_INIT(_ifindex) \ + { \ + .fd = -1, \ + .ifindex = (_ifindex), \ } static void @@ -430,10 +431,11 @@ ethtool_get_stringset_index(SocketHandle *shandle, int stringset_id, const char /*****************************************************************************/ 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__}), \ +#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 diff --git a/src/libnm-platform/nmp-object.c b/src/libnm-platform/nmp-object.c index cb4e9764d1..4ba9773c2c 100644 --- a/src/libnm-platform/nmp-object.c +++ b/src/libnm-platform/nmp-object.c @@ -2002,7 +2002,8 @@ _vt_dedup_obj_clone(const NMDedupMultiObj *obj) #define DEDUP_MULTI_OBJ_CLASS_INIT() \ { \ - .obj_clone = _vt_dedup_obj_clone, .obj_destroy = _vt_dedup_obj_destroy, \ + .obj_clone = _vt_dedup_obj_clone, \ + .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, \ diff --git a/src/libnm-platform/nmp-object.h b/src/libnm-platform/nmp-object.h index 19cace3de8..9406f65161 100644 --- a/src/libnm-platform/nmp-object.h +++ b/src/libnm-platform/nmp-object.h @@ -38,11 +38,12 @@ G_STATIC_ASSERT(sizeof(NMSockAddrUnion) == sizeof(((NMSockAddrUnion *) NULL)->in /* we initialize the largest union member, to ensure that all fields are initialized. */ -#define NM_SOCK_ADDR_UNION_INIT_UNSPEC \ - { \ - .in6 = { \ - .sin6_family = AF_UNSPEC, \ - }, \ +#define NM_SOCK_ADDR_UNION_INIT_UNSPEC \ + { \ + .in6 = \ + { \ + .sin6_family = AF_UNSPEC, \ + }, \ } int nm_sock_addr_union_cmp(const NMSockAddrUnion *a, const NMSockAddrUnion *b); diff --git a/src/nmcli/nmcli.c b/src/nmcli/nmcli.c index 6de42faa00..a8eb732c53 100644 --- a/src/nmcli/nmcli.c +++ b/src/nmcli/nmcli.c @@ -35,49 +35,50 @@ #define NMCLI_VERSION VERSION #endif -#define _NMC_COLOR_PALETTE_INIT() \ - { \ - .ansi_seq = { \ - [NM_META_COLOR_CONNECTION_ACTIVATED] = "32", \ - [NM_META_COLOR_CONNECTION_ACTIVATING] = "33", \ - [NM_META_COLOR_CONNECTION_DISCONNECTING] = "31", \ - [NM_META_COLOR_CONNECTION_INVISIBLE] = "2", \ - [NM_META_COLOR_CONNECTION_EXTERNAL] = "32;2", \ - [NM_META_COLOR_CONNECTION_DEPRECATED] = "2", \ - [NM_META_COLOR_CONNECTIVITY_FULL] = "32", \ - [NM_META_COLOR_CONNECTIVITY_LIMITED] = "33", \ - [NM_META_COLOR_CONNECTIVITY_NONE] = "31", \ - [NM_META_COLOR_CONNECTIVITY_PORTAL] = "33", \ - [NM_META_COLOR_DEVICE_ACTIVATED] = "32", \ - [NM_META_COLOR_DEVICE_ACTIVATING] = "33", \ - [NM_META_COLOR_DEVICE_DISCONNECTED] = "31", \ - [NM_META_COLOR_DEVICE_FIRMWARE_MISSING] = "31", \ - [NM_META_COLOR_DEVICE_PLUGIN_MISSING] = "31", \ - [NM_META_COLOR_DEVICE_UNAVAILABLE] = "2", \ - [NM_META_COLOR_DEVICE_DISABLED] = "31", \ - [NM_META_COLOR_DEVICE_EXTERNAL] = "32;2", \ - [NM_META_COLOR_MANAGER_RUNNING] = "32", \ - [NM_META_COLOR_MANAGER_STARTING] = "33", \ - [NM_META_COLOR_MANAGER_STOPPED] = "31", \ - [NM_META_COLOR_PERMISSION_AUTH] = "33", \ - [NM_META_COLOR_PERMISSION_NO] = "31", \ - [NM_META_COLOR_PERMISSION_YES] = "32", \ - [NM_META_COLOR_STATE_ASLEEP] = "31", \ - [NM_META_COLOR_STATE_CONNECTED_GLOBAL] = "32", \ - [NM_META_COLOR_STATE_CONNECTED_LOCAL] = "32", \ - [NM_META_COLOR_STATE_CONNECTED_SITE] = "32", \ - [NM_META_COLOR_STATE_CONNECTING] = "33", \ - [NM_META_COLOR_STATE_DISCONNECTED] = "31", \ - [NM_META_COLOR_STATE_DISCONNECTING] = "33", \ - [NM_META_COLOR_WIFI_SIGNAL_EXCELLENT] = "32", \ - [NM_META_COLOR_WIFI_SIGNAL_FAIR] = "35", \ - [NM_META_COLOR_WIFI_SIGNAL_GOOD] = "33", \ - [NM_META_COLOR_WIFI_SIGNAL_POOR] = "36", \ - [NM_META_COLOR_WIFI_SIGNAL_UNKNOWN] = "2", \ - [NM_META_COLOR_WIFI_DEPRECATED] = "2", \ - [NM_META_COLOR_ENABLED] = "32", \ - [NM_META_COLOR_DISABLED] = "31", \ - }, \ +#define _NMC_COLOR_PALETTE_INIT() \ + { \ + .ansi_seq = \ + { \ + [NM_META_COLOR_CONNECTION_ACTIVATED] = "32", \ + [NM_META_COLOR_CONNECTION_ACTIVATING] = "33", \ + [NM_META_COLOR_CONNECTION_DISCONNECTING] = "31", \ + [NM_META_COLOR_CONNECTION_INVISIBLE] = "2", \ + [NM_META_COLOR_CONNECTION_EXTERNAL] = "32;2", \ + [NM_META_COLOR_CONNECTION_DEPRECATED] = "2", \ + [NM_META_COLOR_CONNECTIVITY_FULL] = "32", \ + [NM_META_COLOR_CONNECTIVITY_LIMITED] = "33", \ + [NM_META_COLOR_CONNECTIVITY_NONE] = "31", \ + [NM_META_COLOR_CONNECTIVITY_PORTAL] = "33", \ + [NM_META_COLOR_DEVICE_ACTIVATED] = "32", \ + [NM_META_COLOR_DEVICE_ACTIVATING] = "33", \ + [NM_META_COLOR_DEVICE_DISCONNECTED] = "31", \ + [NM_META_COLOR_DEVICE_FIRMWARE_MISSING] = "31", \ + [NM_META_COLOR_DEVICE_PLUGIN_MISSING] = "31", \ + [NM_META_COLOR_DEVICE_UNAVAILABLE] = "2", \ + [NM_META_COLOR_DEVICE_DISABLED] = "31", \ + [NM_META_COLOR_DEVICE_EXTERNAL] = "32;2", \ + [NM_META_COLOR_MANAGER_RUNNING] = "32", \ + [NM_META_COLOR_MANAGER_STARTING] = "33", \ + [NM_META_COLOR_MANAGER_STOPPED] = "31", \ + [NM_META_COLOR_PERMISSION_AUTH] = "33", \ + [NM_META_COLOR_PERMISSION_NO] = "31", \ + [NM_META_COLOR_PERMISSION_YES] = "32", \ + [NM_META_COLOR_STATE_ASLEEP] = "31", \ + [NM_META_COLOR_STATE_CONNECTED_GLOBAL] = "32", \ + [NM_META_COLOR_STATE_CONNECTED_LOCAL] = "32", \ + [NM_META_COLOR_STATE_CONNECTED_SITE] = "32", \ + [NM_META_COLOR_STATE_CONNECTING] = "33", \ + [NM_META_COLOR_STATE_DISCONNECTED] = "31", \ + [NM_META_COLOR_STATE_DISCONNECTING] = "33", \ + [NM_META_COLOR_WIFI_SIGNAL_EXCELLENT] = "32", \ + [NM_META_COLOR_WIFI_SIGNAL_FAIR] = "35", \ + [NM_META_COLOR_WIFI_SIGNAL_GOOD] = "33", \ + [NM_META_COLOR_WIFI_SIGNAL_POOR] = "36", \ + [NM_META_COLOR_WIFI_SIGNAL_UNKNOWN] = "2", \ + [NM_META_COLOR_WIFI_DEPRECATED] = "2", \ + [NM_META_COLOR_ENABLED] = "32", \ + [NM_META_COLOR_DISABLED] = "31", \ + }, \ } static NmCli nm_cli = { From a07627fdccb467cb009f79b688530e23579103fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 22 May 2024 12:57:51 +0200 Subject: [PATCH 26/47] contrib: configure-for-system: specify meson build dir Instead of forcing to use ./build directory, let's make the the user specify what directory he wants to use. This will allow to have multiple build directories with different configurations as meson is designed to allow, without having to overwrite the existing build one. --- contrib/fedora/rpm/configure-for-system.sh | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index 1af647d51c..638fa0739e 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -30,7 +30,7 @@ vars_with_vals() { } usage() { - echo "$ $0 [-m|--meson] [-a|--autotools] [-s|--show] [-B|--no-build] [-h|--help]" + echo "$ $0 [-m|--meson ] [-a|--autotools] [-s|--show] [-B|--no-build] [-h|--help]" echo "" echo "Configure NetworkManager in a way that is similar to when building" echo "RPMs of NetworkManager for Fedora/RHEL. The effect is that \`make install\`" @@ -150,6 +150,7 @@ P_NOBUILD="${NOBUILD-0}" P_DEBUG="${DEBUG-1}" P_BUILD_TYPE="${BUILD_TYPE-}" +P_MESON_BUILDDIR="${MESON_BUILDDIR-./build}" P_CFLAGS="${CFLAGS-}" P_CC="${CC-$((! command -v gcc && command -v clang) &>/dev/null && echo clang || echo gcc)}" @@ -307,9 +308,9 @@ else fi if [ -z "$P_BUILD_TYPE" ] ; then - if [ -d ./build -a ! -f ./configure ] ; then + if [ -d "$P_MESON_BUILDDIR" -a ! -f ./configure ] ; then P_BUILD_TYPE=meson - elif [ ! -d ./build -a -f ./configure ] ; then + elif [ ! -d "$P_MESON_BUILDDIR" -a -f ./configure ] ; then P_BUILD_TYPE=autotools else P_BUILD_TYPE=autotools @@ -322,6 +323,8 @@ while [[ $# -gt 0 ]] ; do case "$A" in --meson|-m) P_BUILD_TYPE=meson + P_MESON_BUILDDIR="$1" + shift ;; --autotools|-a) P_BUILD_TYPE=autotools @@ -347,7 +350,7 @@ vars_with_vals if [ "$P_BUILD_TYPE" == meson ] ; then MESON_RECONFIGURE= - if test -d "./build/" ; then + if test -d "$P_MESON_BUILDDIR" ; then MESON_RECONFIGURE="--reconfigure" fi @@ -355,7 +358,8 @@ if [ "$P_BUILD_TYPE" == meson ] ; then env \ CC="$P_CC" \ CFLAGS="$P_CFLAGS" \ - meson \ + meson setup\ + $MESON_RECONFIGURE \ --buildtype=plain \ --prefix="$D_PREFIX" \ --libdir="$D_LIBDIR" \ @@ -372,11 +376,6 @@ if [ "$P_BUILD_TYPE" == meson ] ; then --sharedstatedir="$D_SHAREDSTATEDIR" \ --wrap-mode=nodownload \ --auto-features=enabled \ - \ - build \ - \ - $MESON_RECONFIGURE \ - \ -Db_ndebug=false \ --warnlevel 2 \ $(args_enable "$P_TEST" --werror) \ @@ -429,6 +428,8 @@ if [ "$P_BUILD_TYPE" == meson ] ; then -Dnetconfig=no \ -Dconfig_dns_rc_manager_default="$P_DNS_RC_MANAGER_DEFAULT" \ -Dconfig_logging_backend_default="$P_LOGGING_BACKEND_DEFAULT" \ + \ + "$P_MESON_BUILDDIR" \ ; else if ! test -x ./configure ; then @@ -520,7 +521,7 @@ fi if ! bool "$P_NOBUILD" ; then if [ "$P_BUILD_TYPE" == meson ] ; then - $SHOW_CMD ninja -C build + $SHOW_CMD ninja -C "$P_MESON_BUILDDIR" else $SHOW_CMD make -j 10 fi From 714d02697fee3b0a7e95fc56bb01e5cba22c1607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 22 May 2024 13:23:57 +0200 Subject: [PATCH 27/47] contrib: configure-for-system: use meson by default With the deprecation of autotools, use meson by default. For the moment, it's still possible to build with autotools passing -a/--autotools. Additionally, as we allow to specify different build directories other than './build', let's not asume that the user wants to overwrite it by default. Instead, the script will asume ./build if the user doesn't specify the build directory, but only if it doesn't exist. If it does, the user will have to force overwritting it with `--meson ./build`. --- contrib/fedora/rpm/configure-for-system.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index 638fa0739e..37966ae40c 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -149,8 +149,9 @@ P_NOBUILD="${NOBUILD-0}" P_DEBUG="${DEBUG-1}" -P_BUILD_TYPE="${BUILD_TYPE-}" +P_BUILD_TYPE="${BUILD_TYPE-meson}" P_MESON_BUILDDIR="${MESON_BUILDDIR-./build}" +[ -n "$MESON_BUILDDIR" ] && P_MESON_BUILDDIR_FORCE=1 P_CFLAGS="${CFLAGS-}" P_CC="${CC-$((! command -v gcc && command -v clang) &>/dev/null && echo clang || echo gcc)}" @@ -307,16 +308,6 @@ else P_CFLAGS="-g -O2 -fexceptions${P_CFLAGS:+ }$P_CFLAGS" fi -if [ -z "$P_BUILD_TYPE" ] ; then - if [ -d "$P_MESON_BUILDDIR" -a ! -f ./configure ] ; then - P_BUILD_TYPE=meson - elif [ ! -d "$P_MESON_BUILDDIR" -a -f ./configure ] ; then - P_BUILD_TYPE=autotools - else - P_BUILD_TYPE=autotools - fi -fi - while [[ $# -gt 0 ]] ; do A="$1" shift @@ -324,6 +315,7 @@ while [[ $# -gt 0 ]] ; do --meson|-m) P_BUILD_TYPE=meson P_MESON_BUILDDIR="$1" + P_MESON_BUILDDIR_FORCE=1 shift ;; --autotools|-a) @@ -346,6 +338,14 @@ while [[ $# -gt 0 ]] ; do esac done +if [ "$P_BUILD_TYPE" = meson -a "$P_MESON_BUILDDIR_FORCE" != 1 ]; then + if [ -d "$P_MESON_BUILDDIR" ]; then + echo "Build directory '$P_MESON_BUILDDIR' chosen by default, but it exists and will be overwritten." \ + "If you really want that, pass '--meson \"$P_MESON_BUILDDIR\"'." >&2 + exit 1 + fi +fi + vars_with_vals if [ "$P_BUILD_TYPE" == meson ] ; then From 613f16de518deedb4fc20b788c82c7a6343716d0 Mon Sep 17 00:00:00 2001 From: Stanislas FAYE Date: Thu, 23 May 2024 10:26:16 +0200 Subject: [PATCH 28/47] rpm: Disable team and ifcfg-rh only in rhel distros and rhel-10+ Resolves: https://issues.redhat.com/browse/RHEL-32948 --- contrib/fedora/rpm/NetworkManager.spec | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index e59e7c8008..437ecc7c0a 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -26,6 +26,9 @@ %global obsoletes_ppp_plugin 1:1.5.3 %global obsoletes_initscripts_updown 1:1.36.0-0.6 %global obsoletes_ifcfg_rh 1:1.36.2 +%global obsoletes_team 1:1.47.5-3 +%global obsoletes_initscripts_ifcfg_rh 1:1.47.5-3 +%global obsoletes_dispatcher_routing_rules 1:1.47.5-3 %global nmlibdir %{_prefix}/lib/%{name} %global nmplugindir %{_libdir}/%{name}/%{version}-%{release} @@ -259,11 +262,22 @@ Obsoletes: NetworkManager < %{obsoletes_ifcfg_rh} Requires: wpa_supplicant >= 1:1.1 %endif +%if 0%{?rhel} && 0%{?rhel} >= 10 +Obsoletes: NetworkManager-team < %{obsoletes_team} +Obsoletes: NetworkManager-initscripts-ifcfg-rh < %{obsoletes_initscripts_ifcfg_rh} +Obsoletes: NetworkManager-dispatcher-routing-rules < %{obsoletes_dispatcher_routing_rules} +%endif + Conflicts: NetworkManager-vpnc < 1:0.7.0.99-1 Conflicts: NetworkManager-openvpn < 1:0.7.0.99-1 Conflicts: NetworkManager-pptp < 1:0.7.0.99-1 Conflicts: NetworkManager-openconnect < 0:0.7.0.99-1 Conflicts: kde-plasma-networkmanagement < 1:0.9-0.49.20110527git.nm09 +%if 0%{?rhel} && 0%{?rhel} >= 10 +Conflicts: NetworkManager-team <= 1:1.47.5-3 +Conflicts: NetworkManager-initscripts-ifcfg-rh <= 1:1.47.5-3 +Conflicts: NetworkManager-dispatcher-routing-rules <= 1:1.47.5-3 +%endif BuildRequires: make BuildRequires: gcc From 3f3472c971cce6113e306c07275d521752bae9ef Mon Sep 17 00:00:00 2001 From: Stanislas FAYE Date: Mon, 27 May 2024 14:46:09 +0200 Subject: [PATCH 29/47] Use the versions number from which packages are obsoleted directly instead of using global variables --- contrib/fedora/rpm/NetworkManager.spec | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 437ecc7c0a..80ce34d1ac 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -26,9 +26,6 @@ %global obsoletes_ppp_plugin 1:1.5.3 %global obsoletes_initscripts_updown 1:1.36.0-0.6 %global obsoletes_ifcfg_rh 1:1.36.2 -%global obsoletes_team 1:1.47.5-3 -%global obsoletes_initscripts_ifcfg_rh 1:1.47.5-3 -%global obsoletes_dispatcher_routing_rules 1:1.47.5-3 %global nmlibdir %{_prefix}/lib/%{name} %global nmplugindir %{_libdir}/%{name}/%{version}-%{release} @@ -263,9 +260,9 @@ Requires: wpa_supplicant >= 1:1.1 %endif %if 0%{?rhel} && 0%{?rhel} >= 10 -Obsoletes: NetworkManager-team < %{obsoletes_team} -Obsoletes: NetworkManager-initscripts-ifcfg-rh < %{obsoletes_initscripts_ifcfg_rh} -Obsoletes: NetworkManager-dispatcher-routing-rules < %{obsoletes_dispatcher_routing_rules} +Obsoletes: NetworkManager-team < 1:1.47.5-3 +Obsoletes: NetworkManager-initscripts-ifcfg-rh < 1:1.47.5-3 +Obsoletes: NetworkManager-dispatcher-routing-rules < 1:1.47.5-3 %endif Conflicts: NetworkManager-vpnc < 1:0.7.0.99-1 From 10d4557720f7f9624a38e037334a36b9a5d2faf5 Mon Sep 17 00:00:00 2001 From: Stanislas FAYE Date: Mon, 27 May 2024 16:37:58 +0200 Subject: [PATCH 30/47] Make team obsoletes in rhel-10 only if NM-team is not enabled in the rpm --- contrib/fedora/rpm/NetworkManager.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 80ce34d1ac..ee67a05d3e 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -260,7 +260,9 @@ Requires: wpa_supplicant >= 1:1.1 %endif %if 0%{?rhel} && 0%{?rhel} >= 10 +%if 0%{without team} Obsoletes: NetworkManager-team < 1:1.47.5-3 +%endif Obsoletes: NetworkManager-initscripts-ifcfg-rh < 1:1.47.5-3 Obsoletes: NetworkManager-dispatcher-routing-rules < 1:1.47.5-3 %endif @@ -271,7 +273,9 @@ Conflicts: NetworkManager-pptp < 1:0.7.0.99-1 Conflicts: NetworkManager-openconnect < 0:0.7.0.99-1 Conflicts: kde-plasma-networkmanagement < 1:0.9-0.49.20110527git.nm09 %if 0%{?rhel} && 0%{?rhel} >= 10 +%if 0%{without team} Conflicts: NetworkManager-team <= 1:1.47.5-3 +%endif Conflicts: NetworkManager-initscripts-ifcfg-rh <= 1:1.47.5-3 Conflicts: NetworkManager-dispatcher-routing-rules <= 1:1.47.5-3 %endif From dda6e9515f874f8ca950d1dad1df194d9e9f43f7 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Wed, 29 May 2024 15:28:21 +0200 Subject: [PATCH 31/47] gitlab: drop the autotools jobs As we are dropping autotools in 1.50, we can drop the autotools jobs. It would also help to lower the load on freedesktop pipeline. --- .gitlab-ci.yml | 26 ++++++-------------- .gitlab-ci/ci.template | 8 ++---- .gitlab-ci/run-test.sh | 56 ++++++------------------------------------ 3 files changed, 16 insertions(+), 74 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b0e8977445..49afb19d6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-75ecbb5bcef4' - CENTOS_TAG: 'tag-0de3c2e2d9ed' - DEBIAN_TAG: 'tag-1ccef04c657b' - FEDORA_TAG: 'tag-0de3c2e2d9ed' - UBUNTU_TAG: 'tag-1ccef04c657b' + ALPINE_TAG: 'tag-63a17fe29587' + CENTOS_TAG: 'tag-f02bd5ca818e' + DEBIAN_TAG: 'tag-7818bbf1d226' + FEDORA_TAG: 'tag-f02bd5ca818e' + UBUNTU_TAG: 'tag-7818bbf1d226' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -342,13 +342,9 @@ t_fedora:40: parallel: matrix: - NM_TEST_SELECT_RUN: - - autotools+gcc+docs+valgrind - meson+gcc+docs+valgrind - - autotools+clang - meson+clang - - rpm+autotools - rpm+meson - - tarball+autotools - tarball+meson - tarball - subtree @@ -369,13 +365,9 @@ t_fedora:rawhide: parallel: matrix: - NM_TEST_SELECT_RUN: - - autotools+gcc+docs+valgrind - meson+gcc+docs+valgrind - - autotools+clang - meson+clang - - rpm+autotools - rpm+meson - - tarball+autotools - tarball+meson - tarball - subtree @@ -396,13 +388,9 @@ t_centos:stream9: parallel: matrix: - NM_TEST_SELECT_RUN: - - autotools+gcc+docs+valgrind - meson+gcc+docs+valgrind - - autotools+clang - meson+clang - - rpm+autotools - rpm+meson - - tarball+autotools - tarball+meson - tarball - subtree @@ -650,9 +638,9 @@ pages: when: never - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' dependencies: - - "t_fedora:40: [autotools+gcc+docs+valgrind]" + - "t_fedora:40: [meson+gcc+docs+valgrind]" needs: - - "t_fedora:40: [autotools+gcc+docs+valgrind]" + - "t_fedora:40: [meson+gcc+docs+valgrind]" # triage:issues: # stage: triage diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 85b3601850..c6776406e3 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -156,13 +156,9 @@ t_{{distro.name}}:{{version}}: parallel: matrix: - NM_TEST_SELECT_RUN: - - autotools+gcc+docs+valgrind - meson+gcc+docs+valgrind - - autotools+clang - meson+clang - - rpm+autotools - rpm+meson - - tarball+autotools - tarball+meson - tarball - subtree @@ -237,9 +233,9 @@ pages: when: never - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' dependencies: - - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [autotools+gcc+docs+valgrind]" + - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [meson+gcc+docs+valgrind]" needs: - - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [autotools+gcc+docs+valgrind]" + - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [meson+gcc+docs+valgrind]" # triage:issues: # stage: triage diff --git a/.gitlab-ci/run-test.sh b/.gitlab-ci/run-test.sh index d97163b63d..4091cdd40a 100755 --- a/.gitlab-ci/run-test.sh +++ b/.gitlab-ci/run-test.sh @@ -57,13 +57,9 @@ check_run_assert() { # These are the supported $NM_TEST_SELECT_RUN values. local _CHECK_RUN_LIST=( - autotools+gcc+docs+valgrind meson+gcc+docs+valgrind - autotools+clang meson+clang - rpm+autotools rpm+meson - tarball+autotools tarball+meson tarball subtree @@ -110,17 +106,13 @@ check_run_clean() { return 0 } -if check_run_clean autotools+gcc+docs+valgrind ; then - BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh - mv build/INST/share/gtk-doc/html "$ARTIFACT_DIR/docs-html" +if check_run_clean meson+gcc+docs+valgrind ; then + BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh + mv INST/share/gtk-doc/html "$ARTIFACT_DIR/docs-html" fi -check_run_clean meson+gcc+docs+valgrind && BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh -check_run_clean autotools+clang && BUILD_TYPE=autotools CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh -check_run_clean meson+clang && BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh - -check_run_clean rpm+autotools && test $IS_FEDORA = 1 -o $IS_CENTOS = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -W meson -check_run_clean rpm+meson && test $IS_FEDORA = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson +check_run_clean meson+clang && BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh +check_run_clean rpm+meson && test $IS_FEDORA = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson if check_run_clean tarball && [ "$NM_BUILD_TARBALL" = 1 ]; then SIGN_SOURCE=0 ./contrib/fedora/rpm/build_clean.sh -r @@ -129,41 +121,7 @@ if check_run_clean tarball && [ "$NM_BUILD_TARBALL" = 1 ]; then do_clean fi -if check_run_clean tarball+autotools; then - BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 CONFIGURE_ONLY=1 contrib/scripts/nm-ci-run.sh - pushd ./build - # dist & build with autotools - make distcheck -j$(nproc) - - # build with meson - DISTSRC="./distsrc-$RANDOM" - mkdir $DISTSRC - tar xvf ./NetworkManager-1*.tar.xz -C $DISTSRC --strip-components=1 - pushd $DISTSRC - BUILD_TYPE=meson CC=gcc WITH_DOCS=1 ../../contrib/scripts/nm-ci-run.sh - popd - popd - do_clean -fi - -if check_run_clean tarball+meson; then - BUILD_TYPE=meson CC=gcc WITH_DOCS=1 CONFIGURE_ONLY=1 contrib/scripts/nm-ci-run.sh - pushd ./build - # dist with meson/ninja - ninja dist - - # build with autotools - DISTSRC="./distsrc-$RANDOM" - mkdir $DISTSRC - tar xvf ./meson-dist/NetworkManager-1*.tar.xz -C $DISTSRC --strip-components=1 - pushd $DISTSRC - BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 ../../contrib/scripts/nm-ci-run.sh - popd - rm -rf $DISTSRC - popd - do_clean -fi - +check_run_clean tarball+meson && BUILD_TYPE=meson CC=gcc WITH_DOCS=1 CONFIGURE_ONLY=1 contrib/scripts/nm-ci-run.sh ############################################################################### @@ -202,7 +160,7 @@ fi if [ "$NM_BUILD_TARBALL" = 1 ]; then do_clean - if check_run autotools+gcc+docs+valgrind ; then + if check_run meson+gcc+docs+valgrind ; then mv "$ARTIFACT_DIR/docs-html/" ./ fi if check_run tarball ; then From f6be3c0cb1e4079eff49a0ad79ffa11bee236735 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Wed, 29 May 2024 18:24:51 +0200 Subject: [PATCH 32/47] gitlab: move Fedora rawhide and C9S to tier 2 As discussed [1], we are using a lot of resources from freedesktop org. Let's reduce the number of distributions tested in tier1 to just one. [1] https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1549 --- .gitlab-ci.yml | 90 ++++++++++++++++++------------------------- .gitlab-ci/config.yml | 13 ++++--- 2 files changed, 46 insertions(+), 57 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 49afb19d6f..baf4ac1c95 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-63a17fe29587' - CENTOS_TAG: 'tag-f02bd5ca818e' - DEBIAN_TAG: 'tag-7818bbf1d226' - FEDORA_TAG: 'tag-f02bd5ca818e' - UBUNTU_TAG: 'tag-7818bbf1d226' + ALPINE_TAG: 'tag-4cf5505b3b7d' + CENTOS_TAG: 'tag-f78e39f6e045' + DEBIAN_TAG: 'tag-f7bdc50d0819' + FEDORA_TAG: 'tag-f78e39f6e045' + UBUNTU_TAG: 'tag-f7bdc50d0819' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -111,19 +111,7 @@ tier1:fedora:40@prep: rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -tier1:fedora:rawhide@prep: - extends: - - .fdo.container-build@fedora - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'rawhide' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -tier1:centos:stream9@prep: +tier2:centos:stream9@prep: extends: - .fdo.container-build@centos stage: prep @@ -134,6 +122,22 @@ tier1:centos:stream9@prep: FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC rules: - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:fedora:rawhide@prep: + extends: + - .fdo.container-build@fedora + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true tier2:debian:sid@prep: extends: @@ -356,49 +360,31 @@ t_fedora:40: rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_fedora:rawhide: - extends: - - .build@template - - .fdo.distribution-image@fedora - - .nm_artifacts - stage: tier1 - parallel: - matrix: - - NM_TEST_SELECT_RUN: - - meson+gcc+docs+valgrind - - meson+clang - - rpm+meson - - tarball+meson - - tarball - - subtree - variables: - FDO_DISTRIBUTION_VERSION: 'rawhide' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - needs: - - "tier1:fedora:rawhide@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - t_centos:stream9: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug - stage: tier1 - parallel: - matrix: - - NM_TEST_SELECT_RUN: - - meson+gcc+docs+valgrind - - meson+clang - - rpm+meson - - tarball+meson - - tarball - - subtree + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: 'stream9' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "tier1:centos:stream9@prep" + - "tier2:centos:stream9@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_fedora:rawhide: + extends: + - .build@template + - .fdo.distribution-image@fedora + - .nm_artifacts_debug + stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + needs: + - "tier2:fedora:rawhide@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 4e97ecf187..c0f3538342 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -24,14 +24,17 @@ distributions: tier: 1 versions: - '40' - - rawhide - - name: centos - tier: 1 - versions: - - 'stream9' # TIER 2: distribution versions that will or might use the current NM version. # Run when doing a release. + - name: centos + tier: 2 + versions: + - 'stream9' + - name: fedora + tier: 2 + versions: + - rawhide - name: debian tier: 2 versions: From cf86af6cbd70382b782b4f208dee3c5ecee9b776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Thu, 23 May 2024 11:55:52 +0200 Subject: [PATCH 33/47] Explain new issues workflow and add triage automation Add explanation of how to indicate the new issues workflow to MAINTAINERS.md: triage -> investigation -> devel. The different stages are indicated using Gitlab's scoped labels (mutually exclusive). These stages try to hightlight that the issue cannot be fixed and it's not moving forward because more info is needed, already. Also, add a section to CONTRIBUTING.md highlighting the importance of helping in the triage and investigation stages: developers often cannot fix bugs because lack of time to investigate, but even users that doesn't know how to fix it due to lack of knowledge of the code base can help thanks to their knowledge on networking. Finally, make the 'triage:issues' CI job to work again, adding some new policies with new automations. The automation will add or remove the labels: stale, help-needed::{triage, investigation, devel} and unassigned. The labels help-needed::* and unassigned will be automatically added to all issues without an assignee. This reflects better the reality of not having enough time to work on most of the issues unless there is some external help. --- .gitlab-ci.yml | 32 ++++---- .gitlab-ci/ci.template | 22 +++--- .triage-policies.yml | 161 +++++++++++++++++++++++++++++++++++++++-- CONTRIBUTING.md | 38 ++++++++-- MAINTAINERS.md | 53 +++++++++----- README.md | 7 +- 6 files changed, 253 insertions(+), 60 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index baf4ac1c95..3c14e0a2fc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,11 +59,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-4cf5505b3b7d' - CENTOS_TAG: 'tag-f78e39f6e045' - DEBIAN_TAG: 'tag-f7bdc50d0819' - FEDORA_TAG: 'tag-f78e39f6e045' - UBUNTU_TAG: 'tag-f7bdc50d0819' + ALPINE_TAG: 'tag-ec99bc32ed7f' + CENTOS_TAG: 'tag-a76c3f2e9d0f' + DEBIAN_TAG: 'tag-3f6892bcd503' + FEDORA_TAG: 'tag-a76c3f2e9d0f' + UBUNTU_TAG: 'tag-3f6892bcd503' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -628,14 +628,16 @@ pages: needs: - "t_fedora:40: [meson+gcc+docs+valgrind]" -# triage:issues: -# stage: triage -# image: ruby:2.7 -# script: -# - gem install gitlab-triage -# - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID -# only: -# - schedules +triage:issues: + stage: triage + image: ruby:3 + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "daily" + tags: + - placeholder-job # The job mostly waits on network requests, so use only one CPU: https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/1358#note_2457416 + script: + - gem install gitlab-triage + - gitlab-triage --debug --token $API_TOKEN --source-id $CI_PROJECT_ID # Clean the generated images periodically to get updated snapshots of the distribution images. # Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type @@ -645,7 +647,7 @@ clean-images: - .fdo.ci-fairy stage: prep rules: - - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "weekly" script: - ci-fairy -v --authfile $AUTHFILE delete-image --project NetworkManager/NetworkManager --all @@ -654,7 +656,7 @@ clean-images: workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + - if: $CI_PIPELINE_SOURCE == 'schedule' - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never - if: $CI_COMMIT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'schedule' diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index c6776406e3..55df9d9ba6 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -237,14 +237,16 @@ pages: needs: - "t_{{default_distro.name}}:{{default_distro.versions[0]}}: [meson+gcc+docs+valgrind]" -# triage:issues: -# stage: triage -# image: ruby:2.7 -# script: -# - gem install gitlab-triage -# - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID -# only: -# - schedules +triage:issues: + stage: triage + image: ruby:3 + rules: + - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "daily" + tags: + - placeholder-job # The job mostly waits on network requests, so use only one CPU: https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/1358#note_2457416 + script: + - gem install gitlab-triage + - gitlab-triage --debug --token $API_TOKEN --source-id $CI_PROJECT_ID # Clean the generated images periodically to get updated snapshots of the distribution images. # Create an scheduled pipeline to run it, passing an AUTHFILE environment variable of type @@ -254,7 +256,7 @@ clean-images: - .fdo.ci-fairy stage: prep rules: - - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "weekly" script: - ci-fairy -v --authfile $AUTHFILE delete-image --project NetworkManager/NetworkManager --all @@ -263,7 +265,7 @@ clean-images: workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + - if: $CI_PIPELINE_SOURCE == 'schedule' - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never - if: $CI_COMMIT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'schedule' diff --git a/.triage-policies.yml b/.triage-policies.yml index 025333f403..6176b9195a 100644 --- a/.triage-policies.yml +++ b/.triage-policies.yml @@ -3,21 +3,167 @@ host_url: https://gitlab.freedesktop.org resource_rules: issues: rules: + - name: Set initial workflow stage + conditions: + state: opened + forbidden_labels: + - workflow::triage + - workflow::investigation + - workflow::devel + actions: + labels: + - workflow::triage + + - name: Ensure that only one workflow label is used (1/2) + conditions: + state: opened + labels: + - workflow::triage + - workflow::investigation + forbidden_labels: + - workflow::devel + actions: + remove_labels: + - workflow::triage + + - name: Ensure that only one workflow label is used (1/2) + conditions: + state: opened + labels: + - workflow::{triage, investigation} + - workflow::devel + actions: + remove_labels: + - workflow::triage + - workflow::investigation + + - name: Remove help-needed::* and unassigned labels on assigned issue + conditions: + state: opened + ruby: resource["assignees"].length > 0 + labels: + - help-needed::{triage, investigation, devel} + - unassigned + actions: + remove_labels: + - help-needed::triage + - help-needed::investigation + - help-needed::devel + - unassigned + + - name: Add help-needed::triage and unassigned labels on unassigned issues + conditions: + state: opened + ruby: resource["assignees"].length == 0 + labels: + - workflow::triage + forbidden_labels: + - help-needed::triage + - unassigned + actions: + labels: + - help-needed::triage + - unassigned + + - name: Remove wrong help-needed::* labels for issues on triage stage + conditions: + state: opened + labels: + - workflow::triage + - help-needed::{investigation, devel} + actions: + remove_labels: + - help-needed::investigation + - help-needed::devel + + - name: Add help-needed::investigation and unassigned labels on unassigned issues + conditions: + state: opened + ruby: resource["assignees"].length == 0 + labels: + - workflow::investigation + forbidden_labels: + - help-needed::investigation + - unassigned + actions: + labels: + - help-needed::investigation + - unassigned + + - name: Remove wrong help-needed::* labels for issues on investigation stage + conditions: + state: opened + labels: + - workflow::investigation + - help-needed::{triage, devel} + actions: + remove_labels: + - help-needed::triage + - help-needed::devel + + - name: Add help-needed::devel and unassigned labels on unassigned issues + conditions: + state: opened + ruby: resource["assignees"].length == 0 + labels: + - workflow::devel + forbidden_labels: + - help-needed::devel + - unassigned + actions: + labels: + - help-needed::devel + - unassigned + + - name: Remove wrong help-needed::* labels for issues on devel stage + conditions: + state: opened + labels: + - workflow::devel + - help-needed::{triage, investigation} + actions: + remove_labels: + - help-needed::triage + - help-needed::investigation + + - name: Remove triage::* labels if the issue is not triaged + conditions: + state: opened + labels: + - workflow::triage + - triaged::{bug, RFE} + actions: + remove_labels: + - triaged::bug + - triaged::RFE + + - name: Ensure that only one triaged::* label is used + conditions: + state: opened + labels: + - triaged::bug + - triaged::RFE + actions: + remove_labels: + - triaged::RFE + - name: Mark issue as stale with no activity for 4 months conditions: + state: opened date: attribute: updated_at condition: older_than interval_type: months interval: 4 - state: opened forbidden_labels: - stale actions: - comment: | - This issue has been inactive for 4 months and got stale. Contributions welcome to move it forward. + comment: >- + This issue has been inactive for 4 months and got stale. + Contributions welcome to move it forward. labels: - - stale + - stale + merge_requests: rules: - name: Mark merge-request as stale after no activity for 2 months @@ -31,7 +177,8 @@ resource_rules: forbidden_labels: - stale actions: - comment: | - This merge-request has been inactive for 2 months and got stale. Work is necessary to move it forward. + comment: >- + This merge-request has been inactive for 2 months and got stale. + Work is necessary to move it forward. labels: - - stale + - stale diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e1851f2f58..215298e16b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,8 +33,35 @@ and you still need to review them. You can also personally hand over the logfile to a NM developer to treat it confidential. -Contribute ----------- +Help with issues triage +----------------------- + +The big amount of reported issues is difficult to handle by the small team of +developers actively working on the project. Many bugs remain unfixed because +there is no enough time to investigate them. + +Working on issues triage and investigation is a very useful help that many +people can provide very effectively, even if they can't do the fix in the +code afterwards. + +This is the kind of help that may facilitate other developers to prepare a fix: +- Investigate if it's a real bug or if it's expected behaviour. +- Provide information and context to explain why it is a bug and what the + expected behaviour would be. +- Create reproducers. +- Investigate where the failure might be in the code, even if you don't know + how to fix it. +- In a general sense, provide any information that might be useful later. + +Find issues with the `help-needed::triage` and `help-needed::investigation` +label in our [issue tracker](https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues) +and help with them. Issues in "investigation" stage has been triaged, i.e. +identified as a bug, but there is not enough information to start working on it +yet. + + +Contribute patches +------------------ Send patches to our repository at [gitlab.freedesktop.org](https://gitlab.freedesktop.org/NetworkManager/NetworkManager/). If you are willing to contribute, please read these guidelines first: @@ -43,11 +70,8 @@ If you are willing to contribute, please read these guidelines first: - Work on any issue you want, but please put a comment to indicate that you are willing to work on it so others don't do the same work in parallel, or to - check whether anyone is already doing so. - -- Issues marked as `help-wanted` are those where the NetworkManager developers - are explicitly asking for contributors' help, probably due to lack of capacity - to work on it. + check whether anyone is already doing so. You can find issues waiting for a + developer to work on it searching for the `help-needed::devel` label. - Issues marked as `good-first-issue` indicate that they are probably quite simple fixes, well suited for first time contributors. diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 865cda3dbc..5a75ee81fe 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -6,38 +6,51 @@ Issue tracker: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/is Help other maintainers with the triage following these guidelines. This way, it will be easier to find issues that require attention. -- Assign an issue to yourself if you are going to take care of providing the - required help. Assign it to another person if he/she is more suitable to help, - but do this quite rarely so we take care of not overloading to anyone. +- Workflow: indicate the current stage with the corresponding label: -- Add suitable labels to indicate the state of open issues: + - `workflow::triage`: needs triage to determine whether is a bug, an RFE or we + should close it. + + - `workflow::investigation`: has been triaged but more info is needed to start + working on a fix. This step can be skipped if enough information is provided + during triage. + + - `workflow::devel`: on development (or waiting for it). + + - Closed: the issue is already solved, either via a code fix or via providing + the required info. Also if the request is clearly incorrect or doesn't fit + at all in the project. + +- Assignee: assign the issue to the person that is working on it. This will + remove the `unassigned` and `help-needed::*` labels. + +- Manual labels: add suitable labels to indicate the state of open issues: - `need-info`: waiting for info or feedback from anyone. + - `good-first-issue`: the task is simple and well suited for a first time + contributor. + + - `triaged::bug` / `triaged::RFE`: type of issue. + - `need-discussion`: something is not clear about what to do, or about if something has to be done at all. The problem should be discussed by the maintainers and/or with the reporter and/or other interested parts. - - `triaged`: if the problem is properly explained and understood. Add also - one of the labels `bug` or `RFE` as corresponds. - - - `help-wanted`: request external contributors to work on this. If it's a - simple fix, add `good-first-issue` too. - - - `work-in-progress`: anyone is already working on a Merge Request, so others. - - `blocked`: the issue is waiting for something that blocks its progress - `close-proposed`: there are good reasons to reject the request (explain - those reasons when adding the label). If after a reasonable time there is no - additional info that is good enouch to reconsider it, the issue will be - closed. - It is not mandatory to always use this tag before closing an issue, but - usually desirable. + those reasons when adding the label) but a chance to others to provide + reasons against it is desired. + It is not mandatory to always use this tag. + + - `Spam`: mark as spam, blocking the author. See [damspam](https://gitlab.freedesktop.org/freedesktop/damspam/-/blob/main/README.md?ref_type=heads). -- Close an issue if the problem is already solved, either via a code fix or via - some information that has been provided. Also if the request is clearly - incorrect or doesn't fit at all in the project. +- Automatic labels: some labels are automatically added and removed by a bot and + the maintainers don't need to care much about them. The label `stale` is + used for issues without activity for a long time. The labels `unassigned` and + `help-needed::{triage, investigation, devel}` are used for issues without an + assignee. Merging Merge Requests diff --git a/README.md b/README.md index 7eed9c9f80..f536295a9f 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,12 @@ Report bugs or feature request in our [issue tracker](https://gitlab.freedesktop See [Report issues](https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/CONTRIBUTING.md?ref_type=heads#report-issues) for details about how to do it. -To get involved, see [CONTRIBUTING.md](CONTRIBUTING.md) + +Contribute +---------- + +To get involved, see [CONTRIBUTING.md](CONTRIBUTING.md) to find different ways +to contribute. License From 0583e1f8436e4c8a4e462a643c711b69d157b938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Mon, 3 Jun 2024 14:29:15 +0200 Subject: [PATCH 34/47] vpn: handle hint tags in the daemon Commit 345bd1b18731 ('libnmc: fix secrets request on 2nd stage of 2FA authentication') and commit 27c701ebfbc9 ('libnmc: allow user input in ECHO mode for 2FA challenges') introduced 2 new tags that hints for the secret agents can have as prefix. These tags were processed (and removed) in the secret agents, not in the daemon. This is wrong because a system with an updated VPN plugin but a not yet updated secret agent (like nm-plasma) will fail: it won't remove the prefix and the daemon will save the secret with the prefix, i.e. "x-dynamic-challenge:challenge-response" instead of just "challenge-response". Then, VPN plugins doesn't recognize it, failing the profile's activation. This is, in fact, an API break. Also, if the VPN connection already existed before updating NM and the VPN plugin, the secret flags are not added to the profile (they are only added when the profile is created or modified). This causes the user's first time response is saved to the profile, so the activation fails the second and next times. See: - https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1536 - https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/-/issues/142 Anyway, in a good design the daemon should contain almost all the logic and the clients should keep as simple as possible. Fix above's problems by letting the daemon to receive the secret names with the prefix already included. The daemon will strip it and will know what it means. Note that this is done only in the functions that saves the secrets from the data received via D-Bus. For example, nm_setting_vpn_add_secret doesn't need to do it because this value shouldn't come from VPN plugin's hints. --- src/libnm-core-impl/nm-setting-vpn.c | 55 ++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/src/libnm-core-impl/nm-setting-vpn.c b/src/libnm-core-impl/nm-setting-vpn.c index b867d01860..65a14866c8 100644 --- a/src/libnm-core-impl/nm-setting-vpn.c +++ b/src/libnm-core-impl/nm-setting-vpn.c @@ -577,14 +577,48 @@ verify(NMSetting *setting, NMConnection *connection, GError **error) return TRUE; } +static gboolean +_parse_secret_hint_tag(const char *secret_name, + const char **out_secret_name, + NMSettingSecretFlags *out_implied_flags) +{ + NMSettingSecretFlags implied_flags = NM_SETTING_SECRET_FLAG_NONE; + gboolean ret = FALSE; + + nm_assert(secret_name); + + if (g_str_has_prefix(secret_name, NM_SECRET_TAG_DYNAMIC_CHALLENGE)) { + secret_name += NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE); + implied_flags |= NM_SETTING_SECRET_FLAG_NOT_SAVED; + ret = TRUE; + } else if (g_str_has_prefix(secret_name, NM_SECRET_TAG_DYNAMIC_CHALLENGE_ECHO)) { + secret_name += NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE_ECHO); + implied_flags |= NM_SETTING_SECRET_FLAG_NOT_SAVED; + ret = TRUE; + } + + NM_SET_OUT(out_secret_name, secret_name); + NM_SET_OUT(out_implied_flags, implied_flags); + return ret; +} + static NMSettingUpdateSecretResult update_secret_string(NMSetting *setting, const char *key, const char *value, GError **error) { NMSettingVpnPrivate *priv = NM_SETTING_VPN_GET_PRIVATE(setting); + NMSettingSecretFlags hint_implied_flags, flags; g_return_val_if_fail(key && key[0], NM_SETTING_UPDATE_SECRET_ERROR); g_return_val_if_fail(value, NM_SETTING_UPDATE_SECRET_ERROR); + /* If the name is prefixed with a hint tag, process it before saving: + * remove the prefix and apply the flags that it implies */ + _parse_secret_hint_tag(key, &key, &hint_implied_flags); + if (hint_implied_flags) { + nm_setting_get_secret_flags(setting, key, &flags, NULL); + nm_setting_set_secret_flags(setting, key, flags | hint_implied_flags, NULL); + } + if (nm_streq0(nm_g_hash_table_lookup(priv->secrets, key), value)) return NM_SETTING_UPDATE_SECRET_SUCCESS_UNCHANGED; @@ -599,6 +633,7 @@ update_secret_dict(NMSetting *setting, GVariant *secrets, GError **error) GVariantIter iter; const char *name, *value; NMSettingUpdateSecretResult result = NM_SETTING_UPDATE_SECRET_SUCCESS_UNCHANGED; + NMSettingSecretFlags hint_implied_flags, flags; g_return_val_if_fail(secrets != NULL, NM_SETTING_UPDATE_SECRET_ERROR); @@ -618,6 +653,14 @@ update_secret_dict(NMSetting *setting, GVariant *secrets, GError **error) /* Now add the items to the settings' secrets list */ g_variant_iter_init(&iter, secrets); while (g_variant_iter_next(&iter, "{&s&s}", &name, &value)) { + /* If the name is prefixed with a hint tag, process it before saving: + * remove the prefix and apply the flags that it implies */ + _parse_secret_hint_tag(name, &name, &hint_implied_flags); + if (hint_implied_flags) { + nm_setting_get_secret_flags(setting, name, &flags, NULL); + nm_setting_set_secret_flags(setting, name, flags | hint_implied_flags, NULL); + } + if (nm_streq0(nm_g_hash_table_lookup(priv->secrets, name), value)) continue; @@ -727,6 +770,7 @@ get_secret_flags(NMSetting *setting, GError **error) { NMSettingVpnPrivate *priv = NM_SETTING_VPN_GET_PRIVATE(setting); + NMSettingSecretFlags implied_flags = NM_SETTING_SECRET_FLAG_NONE; gs_free char *flags_key_free = NULL; const char *flags_key; const char *flags_val; @@ -734,6 +778,10 @@ get_secret_flags(NMSetting *setting, nm_assert(secret_name); + /* Secrets received via D-Bus from VPN plugins might be prefixed by a hint tag. If + * that's the case, process it first: remove the tag and get the flags that it implies */ + _parse_secret_hint_tag(secret_name, &secret_name, &implied_flags); + if (!secret_name[0]) { g_set_error(error, NM_CONNECTION_ERROR, @@ -746,7 +794,7 @@ get_secret_flags(NMSetting *setting, if (!priv->data || !g_hash_table_lookup_extended(priv->data, flags_key, NULL, (gpointer *) &flags_val)) { - NM_SET_OUT(out_flags, NM_SETTING_SECRET_FLAG_NONE); + NM_SET_OUT(out_flags, implied_flags); /* having no secret flag for the secret is fine, as long as there * is the secret itself... */ @@ -772,7 +820,7 @@ get_secret_flags(NMSetting *setting, return TRUE; } - NM_SET_OUT(out_flags, (NMSettingSecretFlags) i64); + NM_SET_OUT(out_flags, (NMSettingSecretFlags) i64 | implied_flags); return TRUE; } @@ -783,7 +831,8 @@ set_secret_flags(NMSetting *setting, GError **error) { nm_assert(secret_name); - + nm_assert(!_parse_secret_hint_tag(secret_name, NULL, NULL)); /* Accept hint tags only via D-Bus, + saved by update_one_secret */ if (!secret_name[0]) { g_set_error(error, NM_CONNECTION_ERROR, From 18240bb72d191c987afe150d3a5023fe79d994dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 29 May 2024 16:50:10 +0200 Subject: [PATCH 35/47] libnmc: don't strip prefix tags from secret names The daemon is now capable of understanding and removing these prefix tags by itself. It is better than this is not a responsibility of the secret agent because it requires changes in all secret agents to work properly (see https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1536). If the secret agent knows what these prefix tags are, it can remove them only in the text that is displayed in the UI, but maintaining the original string as the secret name that is returned to the daemon. Secret agents that doesn't know what these prefix tags are won't do anything with them, and they will also return the same string as secret name, as expected. The only drawback is that they might display the full string to the user, which is not a nice UX but it will at least work. Also, allow to translate the secret name for the UI in libnmc. --- src/libnmc-base/nm-secret-agent-simple.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libnmc-base/nm-secret-agent-simple.c b/src/libnmc-base/nm-secret-agent-simple.c index 4bb77c9802..9d1a2ae962 100644 --- a/src/libnmc-base/nm-secret-agent-simple.c +++ b/src/libnmc-base/nm-secret-agent-simple.c @@ -431,7 +431,7 @@ add_vpn_secrets(RequestData *request, GPtrArray *secrets, char **msg) const NmcVpnPasswordName *p; const char *vpn_msg = NULL; char **iter; - char *secret_name; + char *ui_name; bool is_challenge = FALSE; bool force_echo; @@ -442,19 +442,19 @@ add_vpn_secrets(RequestData *request, GPtrArray *secrets, char **msg) vpn_msg = &(*iter)[NM_STRLEN(NM_SECRET_TAG_VPN_MSG)]; } else { if (NM_STR_HAS_PREFIX(*iter, NM_SECRET_TAG_DYNAMIC_CHALLENGE)) { - secret_name = &(*iter)[NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE)]; + ui_name = &(*iter)[NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE)]; is_challenge = TRUE; force_echo = FALSE; } else if (NM_STR_HAS_PREFIX(*iter, NM_SECRET_TAG_DYNAMIC_CHALLENGE_ECHO)) { - secret_name = &(*iter)[NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE_ECHO)]; + ui_name = &(*iter)[NM_STRLEN(NM_SECRET_TAG_DYNAMIC_CHALLENGE_ECHO)]; is_challenge = TRUE; force_echo = TRUE; } else { - secret_name = *iter; - force_echo = FALSE; + ui_name = *iter; + force_echo = FALSE; } - add_vpn_secret_helper(secrets, s_vpn, secret_name, secret_name, force_echo); + add_vpn_secret_helper(secrets, s_vpn, *iter, ui_name, force_echo); } } } From 6c5faf60547f868f35ac6db4ccb7c019e16e6604 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 19 Jun 2024 10:59:43 +0200 Subject: [PATCH 36/47] NEWS: update for 1.50 --- NEWS | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index ac07735a64..4abb6fc1d5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ ============================================= -NetworkManager-1.48 -Overview of changes since NetworkManager-1.46 +NetworkManager-1.50 +Overview of changes since NetworkManager-1.48 ============================================= This is a snapshot of NetworkManager development. The API is @@ -8,6 +8,11 @@ subject to change and not guaranteed to be compatible with the later release. USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! +============================================= +NetworkManager-1.48 +Overview of changes since NetworkManager-1.46 +============================================= + * Building with autotools is now deprecated and will be completely removed in the next development cycle. We recommend using meson to build NetworkManager -- for basic setup, see the CONTRIBUTING.md file. From 1b08fa88e13854010933592ee329a4f2197edd0e Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 25 Mar 2024 15:54:51 +0100 Subject: [PATCH 37/47] core/logging: remove unused nm_logging_init_pre() function This function is not being used anywhere and is triggering an alert in Coverity scans. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1902 --- src/libnm-log-core/nm-logging.c | 35 --------------------------------- src/libnm-log-core/nm-logging.h | 2 -- 2 files changed, 37 deletions(-) diff --git a/src/libnm-log-core/nm-logging.c b/src/libnm-log-core/nm-logging.c index 0909e7992a..a2bd2a272a 100644 --- a/src/libnm-log-core/nm-logging.c +++ b/src/libnm-log-core/nm-logging.c @@ -92,7 +92,6 @@ typedef struct { typedef struct { NMLogLevel log_level; bool uses_syslog : 1; - bool init_pre_done : 1; bool init_done : 1; bool debug_stderr : 1; const char *prefix; @@ -926,40 +925,6 @@ nm_logging_syslog_enabled(void) return gl.imm.uses_syslog; } -void -nm_logging_init_pre(const char *syslog_identifier, char *prefix_take) -{ - /* this function may be called zero or one times, and only - * - on the main thread - * - not after nm_logging_init(). */ - - NM_ASSERT_ON_MAIN_THREAD(); - - if (gl.imm.init_pre_done) - g_return_if_reached(); - - if (gl.imm.init_done) - g_return_if_reached(); - - if (!_syslog_identifier_valid_domain(syslog_identifier)) - g_return_if_reached(); - - if (!prefix_take || !prefix_take[0]) - g_return_if_reached(); - - G_LOCK(log); - - gl.mut.init_pre_done = TRUE; - - gl.mut.syslog_identifier = g_strdup_printf("SYSLOG_IDENTIFIER=%s", syslog_identifier); - nm_assert(_syslog_identifier_assert(gl.imm.syslog_identifier)); - - /* we pass the allocated string on and never free it. */ - gl.mut.prefix = prefix_take; - - G_UNLOCK(log); -} - void nm_logging_init(const char *logging_backend, gboolean debug) { diff --git a/src/libnm-log-core/nm-logging.h b/src/libnm-log-core/nm-logging.h index 8071967552..82d8fc2d9a 100644 --- a/src/libnm-log-core/nm-logging.h +++ b/src/libnm-log-core/nm-logging.h @@ -145,8 +145,6 @@ const char *nm_logging_all_domains_to_string(void); gboolean nm_logging_setup(const char *level, const char *domains, char **bad_domains, GError **error); -void nm_logging_init_pre(const char *syslog_identifier, char *prefix_take); - void nm_logging_init(const char *logging_backend, gboolean debug); gboolean nm_logging_syslog_enabled(void); From 334177bdc30caf7f8dc9577e3380a5739244ab35 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 22 Apr 2024 17:46:26 +0200 Subject: [PATCH 38/47] wifi-p2p: don't add pending action for group interface The group interface is only used during activation; there is no need to add a pending action for it, because when the device is in activating state it already delays "startup-complete" via other pending actions. --- src/core/devices/wifi/nm-device-wifi-p2p.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/devices/wifi/nm-device-wifi-p2p.c b/src/core/devices/wifi/nm-device-wifi-p2p.c index 981811a3b1..a8a70485a5 100644 --- a/src/core/devices/wifi/nm-device-wifi-p2p.c +++ b/src/core/devices/wifi/nm-device-wifi-p2p.c @@ -774,7 +774,6 @@ supplicant_group_iface_is_ready(NMDeviceWifiP2P *self) return; } - _set_is_waiting_for_supplicant(self, FALSE); check_group_iface_ready(self); } @@ -875,7 +874,6 @@ supplicant_iface_group_started_cb(NMSupplicantInterface *iface, state = nm_supplicant_interface_get_state(priv->group_iface); if (state == NM_SUPPLICANT_INTERFACE_STATE_STARTING) { - _set_is_waiting_for_supplicant(self, TRUE); return; } From 6a9f61122e27dbe83f34873b9af502ed5960a09d Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 22 Apr 2024 17:48:55 +0200 Subject: [PATCH 39/47] wifi-p2p: implement get_enabled()/set_enabled() Add function to set and report the rfkill state. For now, only print a message; the state will be used in the next commit. --- src/core/devices/wifi/nm-device-wifi-p2p.c | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/core/devices/wifi/nm-device-wifi-p2p.c b/src/core/devices/wifi/nm-device-wifi-p2p.c index a8a70485a5..58fcd370e7 100644 --- a/src/core/devices/wifi/nm-device-wifi-p2p.c +++ b/src/core/devices/wifi/nm-device-wifi-p2p.c @@ -54,6 +54,7 @@ typedef struct { guint peer_missing_id; bool is_waiting_for_supplicant : 1; + bool enabled : 1; } NMDeviceWifiP2PPrivate; struct _NMDeviceWifiP2P { @@ -1120,6 +1121,28 @@ impl_device_wifi_p2p_stop_find(NMDBusObject *obj, NULL); } +static gboolean +get_enabled(NMDevice *device) +{ + return NM_DEVICE_WIFI_P2P_GET_PRIVATE(device)->enabled; +} + +static void +set_enabled(NMDevice *device, gboolean enabled) +{ + NMDeviceWifiP2P *self = NM_DEVICE_WIFI_P2P(device); + NMDeviceWifiP2PPrivate *priv = NM_DEVICE_WIFI_P2P_GET_PRIVATE(self); + + enabled = !!enabled; + + if (priv->enabled == enabled) + return; + + priv->enabled = enabled; + + _LOGD(LOGD_DEVICE | LOGD_WIFI, "device now %s", enabled ? "enabled" : "disabled"); +} + /*****************************************************************************/ NMSupplicantInterface * @@ -1336,6 +1359,8 @@ nm_device_wifi_p2p_class_init(NMDeviceWifiP2PClass *klass) device_class->get_configured_mtu = get_configured_mtu; device_class->get_auto_ip_config_method = get_auto_ip_config_method; device_class->act_stage3_ip_config = act_stage3_ip_config; + device_class->set_enabled = set_enabled; + device_class->get_enabled = get_enabled; device_class->deactivate = deactivate; device_class->unmanaged_on_quit = unmanaged_on_quit; From 82032955dd5dfa3d9b96515cd2009ac819ce58fd Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 22 Apr 2024 17:59:50 +0200 Subject: [PATCH 40/47] wifi-p2p: consider if the device is enabled when adding pending action If the device gets rfkill-blocked, remove the pending action "waiting-for-supplicant", as it can prevent reaching "startup-complete". https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1004 --- src/core/devices/wifi/nm-device-wifi-p2p.c | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/core/devices/wifi/nm-device-wifi-p2p.c b/src/core/devices/wifi/nm-device-wifi-p2p.c index 58fcd370e7..f06383b102 100644 --- a/src/core/devices/wifi/nm-device-wifi-p2p.c +++ b/src/core/devices/wifi/nm-device-wifi-p2p.c @@ -916,7 +916,7 @@ supplicant_interfaces_release(NMDeviceWifiP2P *self, gboolean set_is_waiting) supplicant_group_interface_release(self); - if (set_is_waiting) + if (set_is_waiting && priv->enabled) _set_is_waiting_for_supplicant(self, TRUE); } @@ -947,9 +947,10 @@ device_state_changed(NMDevice *device, case NM_DEVICE_STATE_UNMANAGED: break; case NM_DEVICE_STATE_UNAVAILABLE: - if (!priv->mgmt_iface - || !nm_supplicant_interface_state_is_operational( - nm_supplicant_interface_get_state(priv->mgmt_iface))) + if (priv->enabled + && (!priv->mgmt_iface + || !nm_supplicant_interface_state_is_operational( + nm_supplicant_interface_get_state(priv->mgmt_iface)))) _set_is_waiting_for_supplicant(self, TRUE); break; case NM_DEVICE_STATE_NEED_AUTH: @@ -1141,6 +1142,10 @@ set_enabled(NMDevice *device, gboolean enabled) priv->enabled = enabled; _LOGD(LOGD_DEVICE | LOGD_WIFI, "device now %s", enabled ? "enabled" : "disabled"); + + if (!enabled) { + _set_is_waiting_for_supplicant(self, FALSE); + } } /*****************************************************************************/ @@ -1193,10 +1198,12 @@ done: nm_device_queue_recheck_available(NM_DEVICE(self), NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - _set_is_waiting_for_supplicant(self, - !priv->mgmt_iface - || !nm_supplicant_interface_state_is_operational( - nm_supplicant_interface_get_state(priv->mgmt_iface))); + _set_is_waiting_for_supplicant( + self, + priv->enabled + && (!priv->mgmt_iface + || !nm_supplicant_interface_state_is_operational( + nm_supplicant_interface_get_state(priv->mgmt_iface)))); } void From ee5f4402bf459c9512a559c677fbd45d7152106f Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 7 May 2024 08:48:52 +0200 Subject: [PATCH 41/47] libnm-core: fix memory leak in nm_setting_to_string() Fixes: f957ea2b3438 ('core/setting: rework nm_connection_dump()') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1934 --- src/libnm-core-impl/nm-setting.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c index bbaa6fcda2..a97edc2aae 100644 --- a/src/libnm-core-impl/nm-setting.c +++ b/src/libnm-core-impl/nm-setting.c @@ -3745,6 +3745,7 @@ nm_setting_to_string(NMSetting *setting) value_str = g_variant_print(value, FALSE); g_string_append_printf(string, "\t%s : %s\n", name, value_str); + g_variant_unref(child); } return g_string_free(string, FALSE); From 439ddc5101213d52c1bc71ba40207bc217a54359 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 8 May 2024 10:14:15 +0200 Subject: [PATCH 42/47] contrib/rpm: rename section in "22-wifi-mac-addr.conf" For [connection*] and [device*] sections, any suffix is allowed in the group. However (at least for configuration snippets we ship upstream), we want to give a suffix that matches the name of the configuration snippet. It seems more common to use [connection-*] instead of [connection.]. See also "examples/nm-conf.d/*.conf" and "15-carrier-timeout.conf" file which contains a [device-15-carrier-timeout] section. Note that this file (in Fedora) is not configuration (installed in /usr/lib). It is thus not problematic to modify. Fixes: ea8dbd7a6d0f ('contrib/rpm: add "22-wifi-mac-addr.conf" to F40+') --- contrib/fedora/rpm/22-wifi-mac-addr.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/fedora/rpm/22-wifi-mac-addr.conf b/contrib/fedora/rpm/22-wifi-mac-addr.conf index 2e329c8895..7389a3de73 100644 --- a/contrib/fedora/rpm/22-wifi-mac-addr.conf +++ b/contrib/fedora/rpm/22-wifi-mac-addr.conf @@ -23,7 +23,7 @@ # # See `man 5 nm-settings` for "wifi.cloned-mac-address" and "connection.stable-id". -[connection.22-wifi-mac-addr] +[connection-22-wifi-mac-addr] match-device=type:wifi wifi.cloned-mac-address=stable-ssid From fe65ca77d728f36e4615074608dde1ee8eb3402f Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Wed, 5 Jun 2024 16:16:53 +0200 Subject: [PATCH 43/47] service: remove a misleading comment The comment makes it sounds as if we could do without CAP_DAC_OVERRIDE if we don't use OpenVSwitch, which is not true. At the very least it's needed by the VPN plugins we spawn to access cert/key material from users' homes. --- data/NetworkManager.service.in | 1 - 1 file changed, 1 deletion(-) diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in index f09ae86ceb..8cd2ac87a3 100644 --- a/data/NetworkManager.service.in +++ b/data/NetworkManager.service.in @@ -19,7 +19,6 @@ KillMode=process # With a huge number of interfaces, starting can take a long time. TimeoutStartSec=600 -# CAP_DAC_OVERRIDE: required to open /run/openvswitch/db.sock socket. CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT ProtectSystem=true From bdb2a488c397dbf11fd9503fd6cee13a75fd3fc9 Mon Sep 17 00:00:00 2001 From: Anders Jonsson Date: Sun, 16 Jun 2024 15:34:18 +0200 Subject: [PATCH 44/47] libnm: fix typo --- src/libnm-core-impl/nm-team-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libnm-core-impl/nm-team-utils.c b/src/libnm-core-impl/nm-team-utils.c index 83452569b0..171194e03f 100644 --- a/src/libnm-core-impl/nm-team-utils.c +++ b/src/libnm-core-impl/nm-team-utils.c @@ -2235,7 +2235,7 @@ _team_setting_verify_properties(const NMTeamSetting *self, GError **error) g_set_error(error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_SETTING, - _("value out or range")); + _("value out of range")); _team_setting_prefix_error_plain(self->d.is_port, attr_data->property_name, error); From 7d0115ea98fb2fd86152b7145b84833101c743c9 Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Thu, 6 Jun 2024 14:02:54 +0200 Subject: [PATCH 45/47] gen-metadata-nm-settings-nmcli: add missing va_end in _prop_log() after using vaargs It was missing before. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1970 Fixes: af5c1c801958 ('man nm-settings-nmcli: autogenerate the "Format" field') --- src/nmcli/gen-metadata-nm-settings-nmcli.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.c b/src/nmcli/gen-metadata-nm-settings-nmcli.c index babf1f064b..1764da735c 100644 --- a/src/nmcli/gen-metadata-nm-settings-nmcli.c +++ b/src/nmcli/gen-metadata-nm-settings-nmcli.c @@ -34,6 +34,8 @@ static void G_GNUC_PRINTF(3, 4) prop_info->property_name, (int) prop_info->property_type->doc_format, msg); + va_end(vaargs); + if (fatal) g_error("%s", msg_full); else From a5333f14b50ab3f0a743f927f152edc36da1d403 Mon Sep 17 00:00:00 2001 From: Jan Vaclav Date: Mon, 17 Jun 2024 12:06:29 +0200 Subject: [PATCH 46/47] nm-in-container: create conf.d file instead of modifying journald.conf Currently, the Dockerfile expects /etc/systemd/journald.conf to exist on the base container, but sometimes this may not be the case, for example on Fedora 40, which causes the build process to fail if the host machine is also running Fedora 40. Update the dockerfile to create a conf.d file instead, which has higher precedence. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1972 --- tools/nm-in-container | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/nm-in-container b/tools/nm-in-container index 7ff073d013..c6884cd584 100755 --- a/tools/nm-in-container +++ b/tools/nm-in-container @@ -359,7 +359,8 @@ RUN chmod 700 /var/lib/NetworkManager RUN echo -n "nm-in-container-secret-key" > /var/lib/NetworkManager/secret_key RUN chmod 600 /var/lib/NetworkManager/secret_key -RUN sed 's/.*RateLimitBurst=.*/RateLimitBurst=0/' /etc/systemd/journald.conf -i +RUN mkdir -p /etc/systemd/journald.conf.d/ && \ + echo "RateLimitBurst=0" > /etc/systemd/journald.conf.d/no-rate-limit.conf $RUN_LN_BASEDIR_NM $RUN_LN_SYMLINK_CMDS From be28a1173537f664e2bf14c73db1715a60ade7f0 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 20 Jun 2024 16:49:59 +0200 Subject: [PATCH 47/47] ovs: allow specifying a system OVS interface by MAC address The OVS interface can be matched via MAC address; in that case, the "connection.interface-name" property of the connection is empty. When populating the ovsdb, we need to pass the actual interface name from the device, not the one from the connection. Fixes: 830a5a14cb29 ('device: add support for OpenVSwitch devices') https://issues.redhat.com/browse/RHEL-34617 --- NEWS | 2 ++ src/core/devices/ovs/nm-ovsdb.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 4abb6fc1d5..716b90546a 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,8 @@ subject to change and not guaranteed to be compatible with the later release. USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! +* Support matching a OVS system interface by MAC address. + ============================================= NetworkManager-1.48 Overview of changes since NetworkManager-1.46 diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c index 68366f7398..8e32cff57c 100644 --- a/src/core/devices/ovs/nm-ovsdb.c +++ b/src/core/devices/ovs/nm-ovsdb.c @@ -461,7 +461,7 @@ ovsdb_call_method(NMOvsdb *self, "new: add-interface bridge=%s port=%s interface=%s", nm_connection_get_interface_name(call->payload.add_interface.bridge), nm_connection_get_interface_name(call->payload.add_interface.port), - nm_connection_get_interface_name(call->payload.add_interface.interface)); + nm_device_get_iface(call->payload.add_interface.interface_device)); break; case OVSDB_DEL_INTERFACE: call->payload.del_interface.ifname = g_strdup(payload->del_interface.ifname); @@ -945,7 +945,7 @@ _insert_interface(json_t *params, row = json_pack("{s:s, s:s, s:o, s:o, s:o}", "name", - nm_connection_get_interface_name(interface), + nm_device_get_iface(interface_device), "type", type ?: "", "options", @@ -1196,7 +1196,7 @@ _add_interface(NMOvsdb *self, bridge_name = nm_connection_get_interface_name(bridge); port_name = nm_connection_get_interface_name(port); - interface_name = nm_connection_get_interface_name(interface); + interface_name = nm_device_get_iface(interface_device); interface_is_local = nm_streq0(bridge_name, interface_name); /* Determine cloned MAC addresses */