about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2022-03-23 11:51:40 +0100
committerMichael Biebl <biebl@debian.org>2022-03-23 11:51:40 +0100
commit8c623dddbdebe354cb94bfc559a5371a14865317 (patch)
treeb8c48e415a98834ca1e19c8fa677ac04b9c51d4a
parent4f887bccf1cde84106588536584a2d54a5b4e6e5 (diff)
New upstream version 1.36.4 upstream/1.36.4
-rw-r--r--NEWS12
-rwxr-xr-xconfigure26
-rw-r--r--configure.ac2
-rw-r--r--docs/api/html/index.html2
-rw-r--r--docs/api/html/nmcli.html8
-rw-r--r--docs/api/version.xml2
-rw-r--r--docs/libnm/html/index.html2
-rw-r--r--docs/libnm/html/usage.html2
-rw-r--r--docs/libnm/version.xml2
-rw-r--r--man/NetworkManager-dispatcher.84
-rw-r--r--man/NetworkManager.86
-rw-r--r--man/NetworkManager.conf.56
-rw-r--r--man/nm-cloud-setup.86
-rw-r--r--man/nm-initrd-generator.86
-rw-r--r--man/nm-online.16
-rw-r--r--man/nm-openvswitch.76
-rw-r--r--man/nm-settings-dbus.56
-rw-r--r--man/nm-settings-dbus.xml2
-rw-r--r--man/nm-settings-ifcfg-rh.56
-rw-r--r--man/nm-settings-ifcfg-rh.xml2
-rw-r--r--man/nm-settings-keyfile.56
-rw-r--r--man/nm-settings-keyfile.xml2
-rw-r--r--man/nm-settings-nmcli.56
-rw-r--r--man/nm-settings-nmcli.xml2
-rw-r--r--man/nmcli-examples.76
-rw-r--r--man/nmcli.116
-rw-r--r--man/nmcli.xml14
-rw-r--r--man/nmtui.16
-rw-r--r--meson.build2
-rw-r--r--src/core/devices/nm-device-ethernet.c37
-rw-r--r--src/core/devices/nm-device-ppp.c7
-rw-r--r--src/core/devices/team/nm-device-team.c2
-rw-r--r--src/core/dhcp/nm-dhcp-client.c1
-rw-r--r--src/core/dhcp/nm-dhcp-dhcpcd.c2
-rw-r--r--src/core/nm-connectivity.c47
-rw-r--r--src/core/supplicant/nm-supplicant-manager.c4
-rw-r--r--src/libnm-client-impl/nm-client.c15
-rw-r--r--src/libnm-core-public/nm-version-macros.h2
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.c20
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h4
-rw-r--r--src/n-dhcp4/src/n-dhcp4-c-connection.c19
-rw-r--r--src/n-dhcp4/src/n-dhcp4-private.h1
-rw-r--r--src/nm-cloud-setup/nm-http-client.c1
-rw-r--r--src/nmcli/connections.c20
44 files changed, 241 insertions, 115 deletions
diff --git a/NEWS b/NEWS
index 84c6c044..4ed50b5a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,15 @@
+===============================================
+NetworkManager-1.36.4
+Overview of changes since NetworkManager-1.36.2
+===============================================
+
+* The internal DHCPv4 client now discards NAKs packets coming
+  from servers different from the one that sent the offer.
+* Fix activation of PPPoE connections with "pppoe.parent" unset.
+* Fix potential libnm crash when the client object initialization gets
+  canceled.
+* Other various fixes and improvements.
+
 =============================================
 NetworkManager-1.36.2
 Overview of changes since NetworkManager-1.36
diff --git a/configure b/configure
index b41d9e55..08f511a1 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for NetworkManager 1.36.2.
+# Generated by GNU Autoconf 2.69 for NetworkManager 1.36.4.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NetworkManager'
 PACKAGE_TARNAME='NetworkManager'
-PACKAGE_VERSION='1.36.2'
-PACKAGE_STRING='NetworkManager 1.36.2'
+PACKAGE_VERSION='1.36.4'
+PACKAGE_STRING='NetworkManager 1.36.4'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager'
 PACKAGE_URL=''
 
@@ -1747,7 +1747,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures NetworkManager 1.36.2 to adapt to many kinds of systems.
+\`configure' configures NetworkManager 1.36.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1819,7 +1819,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NetworkManager 1.36.2:";;
+     short | recursive ) echo "Configuration of NetworkManager 1.36.4:";;
    esac
   cat <<\_ACEOF
 
@@ -2170,7 +2170,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NetworkManager configure 1.36.2
+NetworkManager configure 1.36.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2943,7 +2943,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by NetworkManager $as_me 1.36.2, which was
+It was created by NetworkManager $as_me 1.36.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3813,7 +3813,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='NetworkManager'
- VERSION='1.36.2'
+ VERSION='1.36.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17997,8 +17997,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 NM_MAJOR_VERSION=1
 NM_MINOR_VERSION=36
-NM_MICRO_VERSION=2
-NM_VERSION=1.36.2
+NM_MICRO_VERSION=4
+NM_VERSION=1.36.4
 
 
 
@@ -18006,7 +18006,7 @@ NM_VERSION=1.36.2
 
 
 
-NM_GIT_SHA=ae06ec5207cec126ca767020238c32598b8bfc5d
+NM_GIT_SHA=4e8e5bdfc2ab6b51b9f8626512089a1f0c94cce6
 
 if test """" != "no-config-h" ; then
 
@@ -30512,7 +30512,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by NetworkManager $as_me 1.36.2, which was
+This file was extended by NetworkManager $as_me 1.36.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30578,7 +30578,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-NetworkManager config.status 1.36.2
+NetworkManager config.status 1.36.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index f6429cb2..60d3bc5c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,7 @@ dnl    "shared/nm-version-macros.h.in"
 dnl  - update number in meson.build
 m4_define([nm_major_version], [1])
 m4_define([nm_minor_version], [36])
-m4_define([nm_micro_version], [2])
+m4_define([nm_micro_version], [4])
 m4_define([nm_version],
           [nm_major_version.nm_minor_version.nm_micro_version])
 
diff --git a/docs/api/html/index.html b/docs/api/html/index.html
index 32de3f6d..e215b5e9 100644
--- a/docs/api/html/index.html
+++ b/docs/api/html/index.html
@@ -16,7 +16,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for NetworkManager 1.36.2
+      for NetworkManager 1.36.4
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://networkmanager.dev/docs/api/latest/" target="_top">https://networkmanager.dev/docs/api/latest/</a>.
diff --git a/docs/api/html/nmcli.html b/docs/api/html/nmcli.html
index d33f9424..2c63c69b 100644
--- a/docs/api/html/nmcli.html
+++ b/docs/api/html/nmcli.html
@@ -1349,6 +1349,10 @@
 <td><p>Connection that is being disconnected.</p></td>
 </tr>
 <tr>
+<td><p><span class="term"><code class="option">connection-external</code></span></p></td>
+<td><p>Connection representing configuration created externally to NetworkManager.</p></td>
+</tr>
+<tr>
 <td><p><span class="term"><code class="option">connection-invisible</code></span></p></td>
 <td><p>Connection whose details is the user not permitted to see.</p></td>
 </tr>
@@ -1385,6 +1389,10 @@
 <td><p>Device that is not connected.</p></td>
 </tr>
 <tr>
+<td><p><span class="term"><code class="option">device-external</code></span></p></td>
+<td><p>Device configured externally to NetworkManager.</p></td>
+</tr>
+<tr>
 <td><p><span class="term"><code class="option">device-firmware-missing</code></span></p></td>
 <td><p>Warning of a missing device firmware.</p></td>
 </tr>
diff --git a/docs/api/version.xml b/docs/api/version.xml
index c6a567b8..08a6a38d 100644
--- a/docs/api/version.xml
+++ b/docs/api/version.xml
@@ -1 +1 @@
-1.36.2
+1.36.4
diff --git a/docs/libnm/html/index.html b/docs/libnm/html/index.html
index 2f3aa6c0..fef68d26 100644
--- a/docs/libnm/html/index.html
+++ b/docs/libnm/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm 1.36.2
+      for libnm 1.36.4
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://networkmanager.dev/docs/libnm/latest/" target="_top">https://networkmanager.dev/docs/libnm/latest/</a>.
diff --git a/docs/libnm/html/usage.html b/docs/libnm/html/usage.html
index 0bddc793..6d2c0654 100644
--- a/docs/libnm/html/usage.html
+++ b/docs/libnm/html/usage.html
@@ -96,7 +96,7 @@
         </p>
 <pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>cc $(pkg-config --libs --cflags libnm) -o hello-nm hello-nm.c</code></strong>
   <code class="prompt">$ </code><strong class="userinput"><code>./hello-nm</code></strong>
-  NetworkManager version: 1.36.2
+  NetworkManager version: 1.36.4
 
   <code class="prompt">$ </code></pre>
 <p>
diff --git a/docs/libnm/version.xml b/docs/libnm/version.xml
index c6a567b8..08a6a38d 100644
--- a/docs/libnm/version.xml
+++ b/docs/libnm/version.xml
@@ -1 +1 @@
-1.36.2
+1.36.4
diff --git a/man/NetworkManager-dispatcher.8 b/man/NetworkManager-dispatcher.8
index e96d6f7a..e5d23832 100644
--- a/man/NetworkManager-dispatcher.8
+++ b/man/NetworkManager-dispatcher.8
@@ -2,9 +2,9 @@
 .\"     Title: NetworkManager-dispatcher
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Network management daemons
-.\"    Source: NetworkManager-dispatcher 1.36.2
+.\"    Source: NetworkManager-dispatcher 1.36.4
 .\"  Language: English
 .\"
 .TH "NETWORKMANAGER\-DISPATCHER" "8" "" "NetworkManager\-dispatcher 1\&" "Network management daemons"
diff --git a/man/NetworkManager.8 b/man/NetworkManager.8
index e905b383..78e6c26d 100644
--- a/man/NetworkManager.8
+++ b/man/NetworkManager.8
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Network management daemons
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.36\&.2" "Network management daemons"
+.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.36\&.4" "Network management daemons"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5
index 30eb544f..3bb3593e 100644
--- a/man/NetworkManager.conf.5
+++ b/man/NetworkManager.conf.5
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager.conf
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.36\&.2" "Configuration"
+.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.36\&.4" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-cloud-setup.8 b/man/nm-cloud-setup.8
index 4f563207..5e223431 100644
--- a/man/nm-cloud-setup.8
+++ b/man/nm-cloud-setup.8
@@ -2,12 +2,12 @@
 .\"     Title: nm-cloud-setup
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Automatic Network Configuration in Cloud with NetworkManager
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-CLOUD\-SETUP" "8" "" "NetworkManager 1\&.36\&.2" "Automatic Network Configuratio"
+.TH "NM\-CLOUD\-SETUP" "8" "" "NetworkManager 1\&.36\&.4" "Automatic Network Configuratio"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-initrd-generator.8 b/man/nm-initrd-generator.8
index 7d2e0b93..0e74d95a 100644
--- a/man/nm-initrd-generator.8
+++ b/man/nm-initrd-generator.8
@@ -2,12 +2,12 @@
 .\"     Title: nm-initrd-generator
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: System Administration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-INITRD\-GENERATOR" "8" "" "NetworkManager 1\&.36\&.2" "System Administration"
+.TH "NM\-INITRD\-GENERATOR" "8" "" "NetworkManager 1\&.36\&.4" "System Administration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-online.1 b/man/nm-online.1
index 46f5ef6b..63eb50e9 100644
--- a/man/nm-online.1
+++ b/man/nm-online.1
@@ -2,12 +2,12 @@
 .\"     Title: nm-online
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.36\&.2" "General Commands Manual"
+.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.36\&.4" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-openvswitch.7 b/man/nm-openvswitch.7
index 35a9c5d0..7d4e4ddc 100644
--- a/man/nm-openvswitch.7
+++ b/man/nm-openvswitch.7
@@ -2,12 +2,12 @@
 .\"     Title: nm-openvswitch
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Open vSwitch support overview
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.36\&.2" "Open vSwitch support overview"
+.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.36\&.4" "Open vSwitch support overview"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-dbus.5 b/man/nm-settings-dbus.5
index 789c7ad6..48f7b30a 100644
--- a/man/nm-settings-dbus.5
+++ b/man/nm-settings-dbus.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-dbus
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-DBUS" "5" "" "NetworkManager 1\&.36\&.2" "Configuration"
+.TH "NM\-SETTINGS\-DBUS" "5" "" "NetworkManager 1\&.36\&.4" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-dbus.xml b/man/nm-settings-dbus.xml
index 8226ca58..6602acc1 100644
--- a/man/nm-settings-dbus.xml
+++ b/man/nm-settings-dbus.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-dbus"><refentryinfo><title>nm-settings-dbus</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-dbus</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.2</refmiscinfo></refmeta><refnamediv><refname>nm-settings-dbus</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles on the D-Bus API</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-dbus"><refentryinfo><title>nm-settings-dbus</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-dbus</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-dbus</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles on the D-Bus API</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on a concept of connection profiles, sometimes referred to as
           connections only. These connection profiles contain a network configuration. When
           NetworkManager activates a connection profile on a network device the configuration will
diff --git a/man/nm-settings-ifcfg-rh.5 b/man/nm-settings-ifcfg-rh.5
index 26ebfd6d..5b5f1592 100644
--- a/man/nm-settings-ifcfg-rh.5
+++ b/man/nm-settings-ifcfg-rh.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-ifcfg-rh
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.36\&.2" "Configuration"
+.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.36\&.4" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-ifcfg-rh.xml b/man/nm-settings-ifcfg-rh.xml
index 397c53da..07372617 100644
--- a/man/nm-settings-ifcfg-rh.xml
+++ b/man/nm-settings-ifcfg-rh.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.2</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
diff --git a/man/nm-settings-keyfile.5 b/man/nm-settings-keyfile.5
index 6ffd9ea3..cd40469b 100644
--- a/man/nm-settings-keyfile.5
+++ b/man/nm-settings-keyfile.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-keyfile
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.36\&.2" "Configuration"
+.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.36\&.4" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-keyfile.xml b/man/nm-settings-keyfile.xml
index 3b831651..90a99b3f 100644
--- a/man/nm-settings-keyfile.xml
+++ b/man/nm-settings-keyfile.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.2</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
diff --git a/man/nm-settings-nmcli.5 b/man/nm-settings-nmcli.5
index b04b0817..d512ae8f 100644
--- a/man/nm-settings-nmcli.5
+++ b/man/nm-settings-nmcli.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-nmcli
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-NMCLI" "5" "" "NetworkManager 1\&.36\&.2" "Configuration"
+.TH "NM\-SETTINGS\-NMCLI" "5" "" "NetworkManager 1\&.36\&.4" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-nmcli.xml b/man/nm-settings-nmcli.xml
index 3d1e76d5..b14d4eee 100644
--- a/man/nm-settings-nmcli.xml
+++ b/man/nm-settings-nmcli.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-nmcli"><refentryinfo><title>nm-settings-nmcli</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-nmcli</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.2</refmiscinfo></refmeta><refnamediv><refname>nm-settings-nmcli</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles for nmcli</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-nmcli"><refentryinfo><title>nm-settings-nmcli</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-nmcli</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.36.4</refmiscinfo></refmeta><refnamediv><refname>nm-settings-nmcli</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles for nmcli</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on a concept of connection profiles, sometimes referred to as
           connections only. These connection profiles contain a network configuration. When
           NetworkManager activates a connection profile on a network device the configuration will
diff --git a/man/nmcli-examples.7 b/man/nmcli-examples.7
index 23bccee0..f3786a94 100644
--- a/man/nmcli-examples.7
+++ b/man/nmcli-examples.7
@@ -2,12 +2,12 @@
 .\"     Title: nmcli-examples
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: Examples
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.36\&.2" "Examples"
+.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.36\&.4" "Examples"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nmcli.1 b/man/nmcli.1
index d96d9e7b..217f8e41 100644
--- a/man/nmcli.1
+++ b/man/nmcli.1
@@ -2,12 +2,12 @@
 .\"     Title: nmcli
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NMCLI" "1" "" "NetworkManager 1\&.36\&.2" "General Commands Manual"
+.TH "NMCLI" "1" "" "NetworkManager 1\&.36\&.4" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1551,6 +1551,11 @@ Connection that is being activated\&.
 Connection that is being disconnected\&.
 .RE
 .PP
+\fBconnection\-external\fR
+.RS 4
+Connection representing configuration created externally to NetworkManager\&.
+.RE
+.PP
 \fBconnection\-invisible\fR
 .RS 4
 Connection whose details is the user not permitted to see\&.
@@ -1596,6 +1601,11 @@ Device that is being configured\&.
 Device that is not connected\&.
 .RE
 .PP
+\fBdevice\-external\fR
+.RS 4
+Device configured externally to NetworkManager\&.
+.RE
+.PP
 \fBdevice\-firmware\-missing\fR
 .RS 4
 Warning of a missing device firmware\&.
diff --git a/man/nmcli.xml b/man/nmcli.xml
index c2b867dd..fad874f6 100644
--- a/man/nmcli.xml
+++ b/man/nmcli.xml
@@ -1867,6 +1867,13 @@
       </varlistentry>
 
       <varlistentry>
+        <term><option>connection-external</option></term>
+        <listitem>
+          <para>Connection representing configuration created externally to NetworkManager.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><option>connection-invisible</option></term>
         <listitem>
           <para>Connection whose details is the user not permitted to see.</para>
@@ -1930,6 +1937,13 @@
       </varlistentry>
 
       <varlistentry>
+        <term><option>device-external</option></term>
+        <listitem>
+          <para>Device configured externally to NetworkManager.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><option>device-firmware-missing</option></term>
         <listitem>
           <para>Warning of a missing device firmware.</para>
diff --git a/man/nmtui.1 b/man/nmtui.1
index fd227960..9c963f45 100644
--- a/man/nmtui.1
+++ b/man/nmtui.1
@@ -2,12 +2,12 @@
 .\"     Title: nmtui
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/07/2022
+.\"      Date: 03/22/2022
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.36.2
+.\"    Source: NetworkManager 1.36.4
 .\"  Language: English
 .\"
-.TH "NMTUI" "1" "" "NetworkManager 1\&.36\&.2" "General Commands Manual"
+.TH "NMTUI" "1" "" "NetworkManager 1\&.36\&.4" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/meson.build b/meson.build
index d0cec83d..f14aa62c 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project(
 #  - add corresponding NM_VERSION_x_y_z macros in
 #    "src/libnm-core-public/nm-version-macros.h.in"
 #  - update number in configure.ac
-  version: '1.36.2',
+  version: '1.36.4',
   license: 'GPL2+',
   default_options: [
     'buildtype=debugoptimized',
diff --git a/src/core/devices/nm-device-ethernet.c b/src/core/devices/nm-device-ethernet.c
index 6e18d119..407f8ab8 100644
--- a/src/core/devices/nm-device-ethernet.c
+++ b/src/core/devices/nm-device-ethernet.c
@@ -1160,14 +1160,12 @@ _ppp_mgr_callback(NMPppMgr *ppp_mgr, const NMPppMgrCallbackData *callback_data,
 
     if (device_state < NM_DEVICE_STATE_IP_CONFIG) {
         if (callback_data->data.state >= NM_PPP_MGR_STATE_HAVE_IFINDEX) {
-            gs_free char         *old_name = NULL;
-            gs_free_error GError *error    = NULL;
+            gs_free char *old_name = NULL;
 
-            if (!nm_device_take_over_link(device, callback_data->data.ifindex, &old_name, &error)) {
+            if (!nm_device_set_ip_ifindex(device, callback_data->data.ifindex)) {
                 _LOGW(LOGD_DEVICE | LOGD_PPP,
-                      "could not take control of link %d: %s",
-                      callback_data->data.ifindex,
-                      error->message);
+                      "could not set ip-ifindex %d",
+                      callback_data->data.ifindex);
                 _ppp_mgr_cleanup(self);
                 nm_device_state_changed(device,
                                         NM_DEVICE_STATE_FAILED,
@@ -1892,6 +1890,32 @@ is_available(NMDevice *device, NMDeviceCheckDevAvailableFlags flags)
     return !!nm_device_get_initial_hw_address(device);
 }
 
+static const char *
+get_ip_method_auto(NMDevice *device, int addr_family)
+{
+    NMSettingConnection *s_con;
+
+    s_con = nm_device_get_applied_setting(device, NM_TYPE_SETTING_CONNECTION);
+    g_return_val_if_fail(s_con,
+                         NM_IS_IPv4(addr_family) ? NM_SETTING_IP4_CONFIG_METHOD_AUTO
+                                                 : NM_SETTING_IP6_CONFIG_METHOD_AUTO);
+
+    if (!nm_streq(nm_setting_connection_get_connection_type(s_con),
+                  NM_SETTING_PPPOE_SETTING_NAME)) {
+        return NM_DEVICE_CLASS(nm_device_ethernet_parent_class)
+            ->get_ip_method_auto(device, addr_family);
+    }
+
+    if (NM_IS_IPv4(addr_family)) {
+        /* We cannot do DHCPv4 on a PPP link, instead we get "auto" IP addresses
+         * by pppd. Return "manual" here, which has the suitable effect to a
+         * (zero) manual addresses in addition. */
+        return NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
+    }
+
+    return NM_SETTING_IP6_CONFIG_METHOD_AUTO;
+}
+
 static gboolean
 can_reapply_change(NMDevice   *device,
                    const char *setting_name,
@@ -2047,6 +2071,7 @@ nm_device_ethernet_class_init(NMDeviceEthernetClass *klass)
     device_class->act_stage2_config                              = act_stage2_config;
     device_class->act_stage3_ip_config                           = act_stage3_ip_config;
     device_class->get_configured_mtu                             = get_configured_mtu;
+    device_class->get_ip_method_auto                             = get_ip_method_auto;
     device_class->deactivate                                     = deactivate;
     device_class->get_s390_subchannels                           = get_s390_subchannels;
     device_class->update_connection                              = update_connection;
diff --git a/src/core/devices/nm-device-ppp.c b/src/core/devices/nm-device-ppp.c
index 5ff32401..61e32348 100644
--- a/src/core/devices/nm-device-ppp.c
+++ b/src/core/devices/nm-device-ppp.c
@@ -222,10 +222,9 @@ get_ip_method_auto(NMDevice *device, int addr_family)
         return NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
     }
 
-    /* We can do autoconf6 on an PPP link, but we should already get an IPv6
-     * address from pppd. Use that instead. We however do want to generate our
-     * (own) IPv6 link local address, so return "link-local". */
-    return NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL;
+    /* We get a interface identifier via IPV6CP, used to construct a link-local
+     * address. Method auto means autoconf6 as usual.*/
+    return NM_SETTING_IP6_CONFIG_METHOD_AUTO;
 }
 
 static gboolean
diff --git a/src/core/devices/team/nm-device-team.c b/src/core/devices/team/nm-device-team.c
index 16cd2e87..b67c7100 100644
--- a/src/core/devices/team/nm-device-team.c
+++ b/src/core/devices/team/nm-device-team.c
@@ -957,7 +957,7 @@ constructed(GObject *object)
     NMDeviceTeamPrivate   *priv    = NM_DEVICE_TEAM_GET_PRIVATE(device);
     gs_free char          *tmp_str = NULL;
     gs_unref_object GFile *file    = NULL;
-    GError                *error;
+    gs_free_error GError  *error   = NULL;
 
     G_OBJECT_CLASS(nm_device_team_parent_class)->constructed(object);
 
diff --git a/src/core/dhcp/nm-dhcp-client.c b/src/core/dhcp/nm-dhcp-client.c
index ec910389..85e48ff7 100644
--- a/src/core/dhcp/nm-dhcp-client.c
+++ b/src/core/dhcp/nm-dhcp-client.c
@@ -1209,6 +1209,7 @@ dispose(GObject *object)
 
     nm_clear_g_source_inst(&priv->no_lease_timeout_source);
     nm_clear_g_source_inst(&priv->ipv6_lladdr_timeout_source);
+    nm_clear_pointer(&priv->effective_client_id, g_bytes_unref);
 
     G_OBJECT_CLASS(nm_dhcp_client_parent_class)->dispose(object);
 }
diff --git a/src/core/dhcp/nm-dhcp-dhcpcd.c b/src/core/dhcp/nm-dhcp-dhcpcd.c
index 45f96ec9..4b3429ef 100644
--- a/src/core/dhcp/nm-dhcp-dhcpcd.c
+++ b/src/core/dhcp/nm-dhcp-dhcpcd.c
@@ -70,7 +70,7 @@ ip4_start(NMDhcpClient *client, GError **error)
     const NMDhcpClientConfig    *client_config;
     gs_unref_ptrarray GPtrArray *argv = NULL;
     pid_t                        pid;
-    GError                      *local;
+    GError                      *local   = NULL;
     gs_free char                *cmd_str = NULL;
     const char                  *dhcpcd_path;
 
diff --git a/src/core/nm-connectivity.c b/src/core/nm-connectivity.c
index 7199c9a2..c84d8a56 100644
--- a/src/core/nm-connectivity.c
+++ b/src/core/nm-connectivity.c
@@ -15,6 +15,7 @@
 #include <linux/rtnetlink.h>
 
 #include "c-list/src/c-list.h"
+#include "libnm-glib-aux/nm-str-buf.h"
 #include "libnm-platform/nmp-object.h"
 #include "libnm-core-intern/nm-core-internal.h"
 #include "nm-config.h"
@@ -89,7 +90,7 @@ struct _NMConnectivityCheckHandle {
 
     int addr_family;
 
-    guint timeout_id;
+    GSource *timeout_source;
 
     NMConnectivityState completed_state;
     const char         *completed_reason;
@@ -245,7 +246,7 @@ cb_data_complete(NMConnectivityCheckHandle *cb_data,
     nm_clear_g_cancellable(&cb_data->concheck.resolve_cancellable);
 #endif
 
-    nm_clear_g_source(&cb_data->timeout_id);
+    nm_clear_g_source_inst(&cb_data->timeout_source);
 
     _LOG2D("check completed: %s; %s", nm_connectivity_state_to_string(state), log_message);
 
@@ -633,9 +634,9 @@ _idle_cb(gpointer user_data)
                               &cb_data->handles_lst));
     nm_assert(cb_data->completed_reason);
 
-    cb_data->timeout_id = 0;
+    nm_clear_g_source_inst(&cb_data->timeout_source);
     cb_data_complete(cb_data, cb_data->completed_state, cb_data->completed_reason);
-    return G_SOURCE_REMOVE;
+    return G_SOURCE_CONTINUE;
 }
 
 #if WITH_CONCHECK
@@ -662,7 +663,7 @@ do_curl_request(NMConnectivityCheckHandle *cb_data)
     cb_data->concheck.curl_mhandle    = mhandle;
     cb_data->concheck.curl_ehandle    = ehandle;
     cb_data->concheck.request_headers = curl_slist_append(NULL, "Connection: close");
-    cb_data->timeout_id               = g_timeout_add_seconds(20, _timeout_cb, cb_data);
+    cb_data->timeout_source           = nm_g_timeout_add_seconds_source(20, _timeout_cb, cb_data);
 
     curl_multi_setopt(mhandle, CURLMOPT_SOCKETFUNCTION, multi_socket_cb);
     curl_multi_setopt(mhandle, CURLMOPT_SOCKETDATA, cb_data);
@@ -694,6 +695,7 @@ do_curl_request(NMConnectivityCheckHandle *cb_data)
     curl_easy_setopt(ehandle, CURLOPT_INTERFACE, cb_data->ifspec);
     curl_easy_setopt(ehandle, CURLOPT_RESOLVE, cb_data->concheck.hosts);
     curl_easy_setopt(ehandle, CURLOPT_IPRESOLVE, resolve);
+    curl_easy_setopt(ehandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
 
     curl_multi_add_handle(mhandle, ehandle);
 }
@@ -709,7 +711,8 @@ resolve_cb(GObject *object, GAsyncResult *res, gpointer user_data)
     int                        addr_family;
     gsize                      len = 0;
     gsize                      i;
-    gs_free_error GError      *error = NULL;
+    gs_free_error GError      *error        = NULL;
+    nm_auto_str_buf NMStrBuf   strbuf_hosts = NM_STR_BUF_INIT(0, FALSE);
 
     result = g_dbus_connection_call_finish(G_DBUS_CONNECTION(object), res, &error);
     if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
@@ -732,25 +735,35 @@ resolve_cb(GObject *object, GAsyncResult *res, gpointer user_data)
     for (i = 0; i < no_addresses; i++) {
         gs_unref_variant GVariant *address = NULL;
         char                       str_addr[NM_UTILS_INET_ADDRSTRLEN];
-        gs_free char              *host_entry = NULL;
         const guchar              *address_buf;
 
         g_variant_get_child(addresses, i, "(ii@ay)", &ifindex, &addr_family, &address);
 
+        if (!NM_IN_SET(addr_family, AF_INET, AF_INET6))
+            continue;
+
         if (cb_data->addr_family != AF_UNSPEC && cb_data->addr_family != addr_family)
             continue;
 
         address_buf = g_variant_get_fixed_array(address, &len, 1);
-        if ((addr_family == AF_INET && len != sizeof(struct in_addr))
-            || (addr_family == AF_INET6 && len != sizeof(struct in6_addr)))
+        if (len != nm_utils_addr_family_to_size(addr_family))
             continue;
 
-        host_entry              = g_strdup_printf("%s:%s:%s",
+        if (strbuf_hosts.len == 0) {
+            nm_str_buf_append_printf(&strbuf_hosts,
+                                     "%s:%s:",
                                      cb_data->concheck.con_config->host,
-                                     cb_data->concheck.con_config->port ?: "80",
-                                     nm_utils_inet_ntop(addr_family, address_buf, str_addr));
-        cb_data->concheck.hosts = curl_slist_append(cb_data->concheck.hosts, host_entry);
-        _LOG2T("adding '%s' to curl resolve list", host_entry);
+                                     cb_data->concheck.con_config->port ?: "80");
+        } else
+            nm_str_buf_append_c(&strbuf_hosts, ',');
+
+        nm_str_buf_append(&strbuf_hosts, nm_utils_inet_ntop(addr_family, address_buf, str_addr));
+    }
+    if (strbuf_hosts.len > 0) {
+        const char *s = nm_str_buf_get_str(&strbuf_hosts);
+
+        cb_data->concheck.hosts = curl_slist_append(NULL, s);
+        _LOG2T("set curl resolve list to '%s'", s);
     }
 
     do_curl_request(cb_data);
@@ -874,7 +887,7 @@ nm_connectivity_check_start(NMConnectivity             *self,
                 _LOG2D("skip connectivity check due to %s", reason);
                 cb_data->completed_state  = state;
                 cb_data->completed_reason = reason;
-                cb_data->timeout_id       = g_idle_add(_idle_cb, cb_data);
+                cb_data->timeout_source   = nm_g_idle_add_source(_idle_cb, cb_data);
                 return cb_data;
             }
         }
@@ -910,7 +923,7 @@ nm_connectivity_check_start(NMConnectivity             *self,
                 _LOG2D("start fake request (fail due to no D-Bus connection)");
                 cb_data->completed_state  = NM_CONNECTIVITY_ERROR;
                 cb_data->completed_reason = "no D-Bus connection";
-                cb_data->timeout_id       = g_idle_add(_idle_cb, cb_data);
+                cb_data->timeout_source   = nm_g_idle_add_source(_idle_cb, cb_data);
                 return cb_data;
             }
 
@@ -953,7 +966,7 @@ nm_connectivity_check_start(NMConnectivity             *self,
         cb_data->completed_reason = "fake result";
     }
     _LOG2D("start fake request (%s)", cb_data->completed_reason);
-    cb_data->timeout_id = g_idle_add(_idle_cb, cb_data);
+    cb_data->timeout_source = nm_g_idle_add_source(_idle_cb, cb_data);
 
     return cb_data;
 }
diff --git a/src/core/supplicant/nm-supplicant-manager.c b/src/core/supplicant/nm-supplicant-manager.c
index 1f8f0105..9de845f0 100644
--- a/src/core/supplicant/nm-supplicant-manager.c
+++ b/src/core/supplicant/nm-supplicant-manager.c
@@ -993,6 +993,7 @@ _dbus_get_capabilities_cb(GVariant *res, GError *error, gpointer user_data)
           " MESH%c"
           " FAST%c"
           " WFD%c"
+          " SUITEB192%c"
           "",
           NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_AP),
           NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_PMF),
@@ -1002,7 +1003,8 @@ _dbus_get_capabilities_cb(GVariant *res, GError *error, gpointer user_data)
           NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_SHA384),
           NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_MESH),
           NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_FAST),
-          NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_WFD));
+          NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_WFD),
+          NM_SUPPL_CAP_TO_CHAR(priv->capabilities, NM_SUPPL_CAP_TYPE_SUITEB192));
 
     nm_assert(g_hash_table_size(priv->supp_ifaces) == 0);
     nm_assert(c_list_is_empty(&priv->supp_lst_head));
diff --git a/src/libnm-client-impl/nm-client.c b/src/libnm-client-impl/nm-client.c
index 2cf12db5..cd2aa730 100644
--- a/src/libnm-client-impl/nm-client.c
+++ b/src/libnm-client-impl/nm-client.c
@@ -764,7 +764,7 @@ _nm_client_set_property_sync_legacy(NMClient   *self,
                 NMClientPrivate *_priv = NM_CLIENT_GET_PRIVATE(self);         \
                                                                               \
                 nm_assert(g_source_get_context(_source) == _priv->x_context); \
-                nm_assert(g_main_context_is_owner(_priv->x_context));         \
+                nm_assert(nm_g_main_context_can_acquire(_priv->x_context));   \
             }                                                                 \
         }                                                                     \
     }                                                                         \
@@ -778,7 +778,7 @@ _nm_client_set_property_sync_legacy(NMClient   *self,
                                                                                         \
             nm_assert((g_main_context_get_thread_default() ?: g_main_context_default()) \
                       == _priv->x_context);                                             \
-            nm_assert(g_main_context_is_owner(_priv->x_context));                       \
+            nm_assert(nm_g_main_context_can_acquire(_priv->x_context));                 \
         }                                                                               \
     }                                                                                   \
     G_STMT_END
@@ -6261,7 +6261,6 @@ nm_client_get_capabilities(NMClient *client, gsize *length)
     NMClientPrivate *priv;
 
     g_return_val_if_fail(NM_IS_CLIENT(client), NULL);
-    g_return_val_if_fail(length, NULL);
 
     priv = NM_CLIENT_GET_PRIVATE(client);
 
@@ -7306,9 +7305,9 @@ _init_start_check_complete(NMClient *self)
 static void
 _init_start_cancelled_cb(GCancellable *cancellable, gpointer user_data)
 {
-    NMClient        *self = user_data;
-    NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE(self);
-    GError          *error;
+    NMClient        *self  = user_data;
+    NMClientPrivate *priv  = NM_CLIENT_GET_PRIVATE(self);
+    GError          *error = NULL;
 
     nm_assert(NM_IS_CLIENT(self));
     nm_assert(priv->init_data);
@@ -7328,8 +7327,8 @@ _init_start_cancelled_cb(GCancellable *cancellable, gpointer user_data)
 static gboolean
 _init_start_cancel_on_idle_cb(gpointer user_data)
 {
-    NMClient *self = user_data;
-    GError   *error;
+    NMClient *self  = user_data;
+    GError   *error = NULL;
 
     nm_utils_error_set_cancelled(&error, FALSE, NULL);
     _init_start_complete(self, error);
diff --git a/src/libnm-core-public/nm-version-macros.h b/src/libnm-core-public/nm-version-macros.h
index 8cb7ef49..0aff11b9 100644
--- a/src/libnm-core-public/nm-version-macros.h
+++ b/src/libnm-core-public/nm-version-macros.h
@@ -30,7 +30,7 @@
  * Evaluates to the micro version number of NetworkManager which this source
  * compiled against.
  */
-#define NM_MICRO_VERSION (2)
+#define NM_MICRO_VERSION (4)
 
 /**
  * NM_CHECK_VERSION:
diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c
index 6e6fed12..563b7cc2 100644
--- a/src/libnm-glib-aux/nm-shared-utils.c
+++ b/src/libnm-glib-aux/nm-shared-utils.c
@@ -6680,3 +6680,23 @@ nm_g_main_context_iterate_for_msec(GMainContext *context, guint timeout_msec)
     while (source)
         g_main_context_iteration(context, TRUE);
 }
+
+/*****************************************************************************/
+
+gboolean
+nm_g_main_context_can_acquire(GMainContext *context)
+{
+    /* Fast path. Usually we don't pass contexts between threads
+     * and operate while iterating the context. Hence, usually we
+     * already acquired the context. Check that first. */
+    if (g_main_context_is_owner(context))
+        return TRUE;
+
+    /* Either the context is not owned, or owned by somebody else. Only
+     * one way to find out. */
+    if (!g_main_context_acquire(context))
+        return FALSE;
+
+    g_main_context_release(context);
+    return TRUE;
+}
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 54550f27..a953140b 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -1789,7 +1789,7 @@ nm_g_idle_add_source(GSourceFunc func, gpointer user_data)
     /* A convenience function to attach a new timeout source to the default GMainContext.
      * In that sense it's very similar to g_idle_add() except that it returns a
      * reference to the new source.  */
-    return nm_g_source_attach(nm_g_idle_source_new(G_PRIORITY_DEFAULT, func, user_data, NULL),
+    return nm_g_source_attach(nm_g_idle_source_new(G_PRIORITY_DEFAULT_IDLE, func, user_data, NULL),
                               NULL);
 }
 
@@ -1931,6 +1931,8 @@ nm_g_main_context_iterate_ready(GMainContext *context)
 
 void nm_g_main_context_iterate_for_msec(GMainContext *context, guint timeout_msec);
 
+gboolean nm_g_main_context_can_acquire(GMainContext *context);
+
 /*****************************************************************************/
 
 static inline int
diff --git a/src/n-dhcp4/src/n-dhcp4-c-connection.c b/src/n-dhcp4/src/n-dhcp4-c-connection.c
index 4aba9739..2f660e3b 100644
--- a/src/n-dhcp4/src/n-dhcp4-c-connection.c
+++ b/src/n-dhcp4/src/n-dhcp4-c-connection.c
@@ -705,6 +705,7 @@ int n_dhcp4_c_connection_select_new(NDhcp4CConnection *connection,
         message->userdata.start_time = offer->userdata.start_time;
         message->userdata.base_time = offer->userdata.base_time;
         message->userdata.client_addr = client.s_addr;
+        message->userdata.server_id = server.s_addr;
         n_dhcp4_incoming_get_xid(offer, &xid);
         n_dhcp4_outgoing_set_xid(message, xid);
 
@@ -1224,6 +1225,24 @@ int n_dhcp4_c_connection_dispatch_io(NDhcp4CConnection *connection,
                                       serv_addr, sizeof(serv_addr)));
         }
 
+        if (type == N_DHCP4_MESSAGE_NAK &&
+            connection->request->userdata.server_id != INADDR_ANY) {
+                struct in_addr server;
+
+                r = n_dhcp4_incoming_query_server_identifier(message, &server);
+                if (r)
+                        return N_DHCP4_E_AGAIN;
+
+                if (connection->request->userdata.server_id != server.s_addr) {
+                        n_dhcp4_log(connection->log_queue,
+                                    LOG_DEBUG,
+                                    "discarded NAK with wrong server-id %s",
+                                    inet_ntop(AF_INET, &server,
+                                              serv_addr, sizeof(serv_addr)));
+                        return N_DHCP4_E_AGAIN;
+                }
+        }
+
         switch (type) {
         case N_DHCP4_MESSAGE_OFFER:
         case N_DHCP4_MESSAGE_ACK:
diff --git a/src/n-dhcp4/src/n-dhcp4-private.h b/src/n-dhcp4/src/n-dhcp4-private.h
index db7b24ff..191e946e 100644
--- a/src/n-dhcp4/src/n-dhcp4-private.h
+++ b/src/n-dhcp4/src/n-dhcp4-private.h
@@ -202,6 +202,7 @@ struct NDhcp4Outgoing {
                 uint8_t type;
                 uint8_t message_type;
                 uint32_t client_addr;
+                uint32_t server_id;
                 uint64_t start_time;
                 uint64_t base_time;
                 uint64_t send_time;
diff --git a/src/nm-cloud-setup/nm-http-client.c b/src/nm-cloud-setup/nm-http-client.c
index 2f71cefa..7ef9f38d 100644
--- a/src/nm-cloud-setup/nm-http-client.c
+++ b/src/nm-cloud-setup/nm-http-client.c
@@ -305,6 +305,7 @@ nm_http_client_get(NMHttpClient       *self,
     curl_easy_setopt(edata->ehandle, CURLOPT_WRITEFUNCTION, _get_writefunction_cb);
     curl_easy_setopt(edata->ehandle, CURLOPT_WRITEDATA, edata);
     curl_easy_setopt(edata->ehandle, CURLOPT_PRIVATE, edata);
+    curl_easy_setopt(edata->ehandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
 
     if (http_headers) {
         for (i = 0; http_headers[i]; ++i) {
diff --git a/src/nmcli/connections.c b/src/nmcli/connections.c
index 559dc7db..025f96a1 100644
--- a/src/nmcli/connections.c
+++ b/src/nmcli/connections.c
@@ -4211,16 +4211,16 @@ set_option(NmCli                    *nmc,
     if (option && option->check_and_set) {
         return option->check_and_set(nmc, connection, option, value, error);
     } else if (value || allow_reset) {
-        set_property(nmc->client,
-                     connection,
-                     setting_name,
-                     property_name,
-                     value,
-                     !value ? NM_META_ACCESSOR_MODIFIER_DEL
-                            : (inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI
-                                   ? NM_META_ACCESSOR_MODIFIER_ADD
-                                   : NM_META_ACCESSOR_MODIFIER_SET),
-                     error);
+        return set_property(nmc->client,
+                            connection,
+                            setting_name,
+                            property_name,
+                            value,
+                            !value ? NM_META_ACCESSOR_MODIFIER_DEL
+                                   : (inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI
+                                          ? NM_META_ACCESSOR_MODIFIER_ADD
+                                          : NM_META_ACCESSOR_MODIFIER_SET),
+                            error);
     }
 
     return TRUE;