From 87d61411bb3453587d21487da04fcf770fee7d55 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 13 May 2022 15:11:15 +0200 Subject: New upstream version 1.38.0 --- NEWS | 5 - configure | 28 +-- configure.ac | 4 +- docs/api/html/index.html | 2 +- docs/api/html/nm-dbus-types.html | 2 +- docs/api/version.xml | 2 +- docs/libnm/html/NMClient.html | 2 +- docs/libnm/html/NMDevice.html | 4 +- docs/libnm/html/NMDeviceWifi.html | 2 +- docs/libnm/html/NMDeviceWifiP2P.html | 2 +- docs/libnm/html/NMDeviceWimax.html | 2 +- docs/libnm/html/api-index-full.html | 350 ++++++++++++++-------------- docs/libnm/html/index.html | 2 +- docs/libnm/html/usage.html | 2 +- docs/libnm/version.xml | 2 +- man/NetworkManager-dispatcher.8 | 4 +- man/NetworkManager-wait-online.service.8 | 4 +- man/NetworkManager.8 | 6 +- man/NetworkManager.conf.5 | 6 +- man/nm-cloud-setup.8 | 6 +- man/nm-initrd-generator.8 | 6 +- man/nm-online.1 | 6 +- man/nm-openvswitch.7 | 6 +- man/nm-settings-dbus.5 | 6 +- man/nm-settings-dbus.xml | 2 +- man/nm-settings-ifcfg-rh.5 | 6 +- man/nm-settings-ifcfg-rh.xml | 2 +- man/nm-settings-keyfile.5 | 6 +- man/nm-settings-keyfile.xml | 2 +- man/nm-settings-nmcli.5 | 6 +- man/nm-settings-nmcli.xml | 2 +- man/nmcli-examples.7 | 6 +- man/nmcli.1 | 6 +- man/nmtui.1 | 6 +- meson.build | 2 +- src/core/devices/nm-device.c | 3 +- src/core/dhcp/nm-dhcp-dhclient.c | 21 +- src/core/dhcp/nm-dhcp-systemd.c | 74 +++--- src/core/dhcp/nm-dhcp-utils.c | 12 +- src/core/ndisc/tests/test-ndisc-fake.c | 6 +- src/core/nm-audit-manager.c | 7 +- src/core/nm-l3cfg.c | 35 ++- src/libnm-core-impl/nm-setting-infiniband.c | 34 ++- src/libnm-core-public/nm-version-macros.h | 4 +- src/libnm-glib-aux/nm-shared-utils.h | 6 + src/libnm-platform/nm-platform.c | 91 ++++++-- src/libnm-platform/nm-platform.h | 42 +--- src/n-dhcp4/src/n-dhcp4-c-probe.c | 3 +- src/nm-cloud-setup/nmcs-provider-aliyun.c | 109 ++++++--- src/nm-cloud-setup/nmcs-provider-azure.c | 4 +- src/nm-cloud-setup/nmcs-provider-ec2.c | 33 ++- src/nm-cloud-setup/nmcs-provider-gcp.c | 4 +- src/nm-cloud-setup/nmcs-provider.c | 32 ++- src/nm-cloud-setup/nmcs-provider.h | 43 +++- src/nmcli/connections.c | 11 +- src/nmcli/connections.h | 2 + src/nmcli/devices.c | 8 +- 57 files changed, 641 insertions(+), 450 deletions(-) diff --git a/NEWS b/NEWS index 2f703b3a..8aae2324 100644 --- a/NEWS +++ b/NEWS @@ -3,11 +3,6 @@ NetworkManager-1.38 Overview of changes since NetworkManager-1.36 ============================================= -This is a snapshot of NetworkManager development. The API is -subject to change and not guaranteed to be compatible with -the later release. -USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! - * Add support for route type "throw". * Fix bug setting priority for IP addresses. * Static IPv6 addresses from "ipv6.addresses" are now preferred over diff --git a/configure b/configure index 20631292..40aec3a2 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.37.92. +# Generated by GNU Autoconf 2.69 for NetworkManager 1.38.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='NetworkManager' PACKAGE_TARNAME='NetworkManager' -PACKAGE_VERSION='1.37.92' -PACKAGE_STRING='NetworkManager 1.37.92' +PACKAGE_VERSION='1.38.0' +PACKAGE_STRING='NetworkManager 1.38.0' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager' PACKAGE_URL='' @@ -1744,7 +1744,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.37.92 to adapt to many kinds of systems. +\`configure' configures NetworkManager 1.38.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1816,7 +1816,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of NetworkManager 1.37.92:";; + short | recursive ) echo "Configuration of NetworkManager 1.38.0:";; esac cat <<\_ACEOF @@ -2167,7 +2167,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -NetworkManager configure 1.37.92 +NetworkManager configure 1.38.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2940,7 +2940,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.37.92, which was +It was created by NetworkManager $as_me 1.38.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3810,7 +3810,7 @@ fi # Define the identity of the package. PACKAGE='NetworkManager' - VERSION='1.37.92' + VERSION='1.38.0' cat >>confdefs.h <<_ACEOF @@ -17993,9 +17993,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu NM_MAJOR_VERSION=1 -NM_MINOR_VERSION=37 -NM_MICRO_VERSION=92 -NM_VERSION=1.37.92 +NM_MINOR_VERSION=38 +NM_MICRO_VERSION=0 +NM_VERSION=1.38.0 @@ -18003,7 +18003,7 @@ NM_VERSION=1.37.92 -NM_GIT_SHA=a845a3425f9500f85fad62a9f2f08f320241b0fa +NM_GIT_SHA=5704730a6c4e6851d4ba5471ea439502f7b72949 if test """" != "no-config-h" ; then @@ -30460,7 +30460,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.37.92, which was +This file was extended by NetworkManager $as_me 1.38.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -30526,7 +30526,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.37.92 +NetworkManager config.status 1.38.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 038cda33..09c69720 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], [37]) -m4_define([nm_micro_version], [92]) +m4_define([nm_minor_version], [38]) +m4_define([nm_micro_version], [0]) 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 1fbe7a13..34b74087 100644 --- a/docs/api/html/index.html +++ b/docs/api/html/index.html @@ -16,7 +16,7 @@

- for NetworkManager 1.37.92 + for NetworkManager 1.38.0 The latest version of this documentation can be found on-line at https://networkmanager.dev/docs/api/latest/. diff --git a/docs/api/html/nm-dbus-types.html b/docs/api/html/nm-dbus-types.html index 6ee39f84..673eb0e4 100644 --- a/docs/api/html/nm-dbus-types.html +++ b/docs/api/html/nm-dbus-types.html @@ -3070,7 +3070,7 @@


enum NMMetered

-

The NMMetered enum has two different purposes: one is to configure "connection.metered" setting of a connection profile in NMSettingConnection, and the other is to express the actual metered state of the NMDevice at a given moment.

+

The NMMetered enum has two different purposes: one is to configure "connection.metered" setting of a connection profile in NMSettingConnection, and the other is to express the actual metered state of the NMDevice at a given moment.

For the connection profile only NM_METERED_UNKNOWN, NM_METERED_NO and NM_METERED_YES are allowed.

The device's metered state at runtime is determined by the profile which is currently active. If the profile explicitly specifies NM_METERED_NO or NM_METERED_YES, then the device's metered state is as such. If the connection profile leaves it undecided at NM_METERED_UNKNOWN (the default), then NetworkManager tries to guess the metered state, for example based on the device type or on DHCP options (like Android devices exposing a "ANDROID_METERED" DHCP vendor option). This then leads to either NM_METERED_GUESS_NO or NM_METERED_GUESS_YES.

Most applications probably should treat the runtime state NM_METERED_GUESS_YES like NM_METERED_YES, and all other states as not metered.

diff --git a/docs/api/version.xml b/docs/api/version.xml index f2363fea..ebeef2f2 100644 --- a/docs/api/version.xml +++ b/docs/api/version.xml @@ -1 +1 @@ -1.37.92 +1.38.0 diff --git a/docs/libnm/html/NMClient.html b/docs/libnm/html/NMClient.html index 2e9f557a..f74bf1f3 100644 --- a/docs/libnm/html/NMClient.html +++ b/docs/libnm/html/NMClient.html @@ -2885,7 +2885,7 @@ nm_client_get_active_connections (

Returns

a GPtrArray -containing all the active NMActiveConnections. +containing all the active NMActiveConnections. The returned array is owned by the client and should not be modified.

[transfer none][element-type NMActiveConnection]

diff --git a/docs/libnm/html/NMDevice.html b/docs/libnm/html/NMDevice.html index 98ecddb8..c12e7f5c 100644 --- a/docs/libnm/html/NMDevice.html +++ b/docs/libnm/html/NMDevice.html @@ -1439,7 +1439,7 @@ not part of an active connection.

nm_device_get_available_connections ()

const GPtrArray *
 nm_device_get_available_connections (NMDevice *device);
-

Gets the NMRemoteConnections currently known to the daemon that could +

Gets the NMRemoteConnections currently known to the daemon that could be activated on device .

@@ -1460,7 +1460,7 @@ be activated on device

Returns

the GPtrArray -containing NMRemoteConnections. This is the internal copy used by +containing NMRemoteConnections. This is the internal copy used by the connection, and must not be modified.

[element-type NMRemoteConnection]

diff --git a/docs/libnm/html/NMDeviceWifi.html b/docs/libnm/html/NMDeviceWifi.html index b479313b..4654723b 100644 --- a/docs/libnm/html/NMDeviceWifi.html +++ b/docs/libnm/html/NMDeviceWifi.html @@ -424,7 +424,7 @@ nm_device_wifi_get_access_points (

Returns

a GPtrArray containing all the -scanned NMAccessPoints. +scanned NMAccessPoints. The returned array is owned by the client and should not be modified.

[element-type NMAccessPoint]

diff --git a/docs/libnm/html/NMDeviceWifiP2P.html b/docs/libnm/html/NMDeviceWifiP2P.html index e40f0699..eaccdedf 100644 --- a/docs/libnm/html/NMDeviceWifiP2P.html +++ b/docs/libnm/html/NMDeviceWifiP2P.html @@ -191,7 +191,7 @@ nm_device_wifi_p2p_get_peers (

Returns

a GPtrArray containing all the -found NMWifiP2PPeers. +found NMWifiP2PPeers. The returned array is owned by the client and should not be modified.

[element-type NMWifiP2PPeer]

diff --git a/docs/libnm/html/NMDeviceWimax.html b/docs/libnm/html/NMDeviceWimax.html index dea41ffe..f863b3d3 100644 --- a/docs/libnm/html/NMDeviceWimax.html +++ b/docs/libnm/html/NMDeviceWimax.html @@ -287,7 +287,7 @@ nm_device_wimax_get_nsps (

Returns

a GPtrArray containing -all the scanned NMWimaxNsps. +all the scanned NMWimaxNsps. The returned array is owned by the client and should not be modified.

[element-type NMWimaxNsp]

diff --git a/docs/libnm/html/api-index-full.html b/docs/libnm/html/api-index-full.html index 7f5d1fe9..77648858 100644 --- a/docs/libnm/html/api-index-full.html +++ b/docs/libnm/html/api-index-full.html @@ -49,7 +49,7 @@ NETWORKMANAGER_COMPILATION, macro in nm-default-libnm
-NMAccessPoint, struct in NMDeviceOvs +NMAccessPoint, struct in NMDeviceOvs
@@ -101,11 +101,11 @@ NMAccessPoint, struct in NMDeviceOvs
-NMActiveConnection, struct in NMDeviceOvs +NMActiveConnection, struct in NMDeviceOvs
-NMActiveConnection::state-changed, object signal in NMDeviceOvs +NMActiveConnection::state-changed, object signal in NMDeviceOvs
@@ -149,7 +149,7 @@ NMActiveConnection::state-changed, object signal in NMDeviceOvs
-NMActiveConnection:specific-object-path, object property in NMDeviceOvs +NMActiveConnection:specific-object-path, object property in NMDeviceOvs
@@ -157,7 +157,7 @@ NMActiveConnection:specific-object-path, object property in NMDeviceOvs
-NMActiveConnection:state-flags, object property in NMDeviceOvs +NMActiveConnection:state-flags, object property in NMDeviceOvs
@@ -197,19 +197,19 @@ NMActiveConnectionClass, struct in
-NMCheckpoint, struct in NMDeviceOvs +NMCheckpoint, struct in NMDeviceOvs
-NMCheckpoint:created, object property in NMDeviceOvs +NMCheckpoint:created, object property in NMDeviceOvs
-NMCheckpoint:devices, object property in NMDeviceOvs +NMCheckpoint:devices, object property in NMDeviceOvs
-NMCheckpoint:rollback-timeout, object property in NMDeviceOvs +NMCheckpoint:rollback-timeout, object property in NMDeviceOvs
@@ -217,15 +217,15 @@ NMCheckpoint:rollback-timeout, object property in NMDeviceOvs
-NMClient, struct in NMDeviceOvs +NMClient, struct in NMDeviceOvs
-NMClient::active-connection-added, object signal in NMDeviceOvs +NMClient::active-connection-added, object signal in NMDeviceOvs
-NMClient::active-connection-removed, object signal in NMDeviceOvs +NMClient::active-connection-removed, object signal in NMDeviceOvs
@@ -237,11 +237,11 @@ NMClient::active-connection-removed, object signal in NMDeviceOvs
-NMClient::connection-added, object signal in NMDeviceOvs +NMClient::connection-added, object signal in NMDeviceOvs
-NMClient::connection-removed, object signal in NMDeviceOvs +NMClient::connection-removed, object signal in NMDeviceOvs
@@ -269,19 +269,19 @@ NMClient::connection-removed, object signal in NMDeviceOvs
-NMClient:can-modify, object property in NMDeviceOvs +NMClient:can-modify, object property in NMDeviceOvs
-NMClient:capabilities, object property in NMDeviceOvs +NMClient:capabilities, object property in NMDeviceOvs
-NMClient:checkpoints, object property in NMDeviceOvs +NMClient:checkpoints, object property in NMDeviceOvs
-NMClient:connections, object property in NMDeviceOvs +NMClient:connections, object property in NMDeviceOvs
@@ -289,23 +289,23 @@ NMClient:connections, object property in NMDeviceOvs
-NMClient:connectivity-check-available, object property in NMDeviceOvs +NMClient:connectivity-check-available, object property in NMDeviceOvs
-NMClient:connectivity-check-enabled, object property in NMDeviceOvs +NMClient:connectivity-check-enabled, object property in NMDeviceOvs
-NMClient:connectivity-check-uri, object property in NMDeviceOvs +NMClient:connectivity-check-uri, object property in NMDeviceOvs
-NMClient:dbus-connection, object property in NMDeviceOvs +NMClient:dbus-connection, object property in NMDeviceOvs
-NMClient:dbus-name-owner, object property in NMDeviceOvs +NMClient:dbus-name-owner, object property in NMDeviceOvs
@@ -313,27 +313,27 @@ NMClient:dbus-name-owner, object property in NMDeviceOvs
-NMClient:dns-configuration, object property in NMDeviceOvs +NMClient:dns-configuration, object property in NMDeviceOvs
-NMClient:dns-mode, object property in NMDeviceOvs +NMClient:dns-mode, object property in NMDeviceOvs
-NMClient:dns-rc-manager, object property in NMDeviceOvs +NMClient:dns-rc-manager, object property in NMDeviceOvs
-NMClient:hostname, object property in NMDeviceOvs +NMClient:hostname, object property in NMDeviceOvs
-NMClient:instance-flags, object property in NMDeviceOvs +NMClient:instance-flags, object property in NMDeviceOvs
-NMClient:metered, object property in NMDeviceOvs +NMClient:metered, object property in NMDeviceOvs
@@ -341,11 +341,11 @@ NMClient:metered, object property in NMDeviceOvs
-NMClient:nm-running, object property in NMDeviceOvs +NMClient:nm-running, object property in NMDeviceOvs
-NMClient:permissions-state, object property in NMDeviceOvs +NMClient:permissions-state, object property in NMDeviceOvs
@@ -353,7 +353,7 @@ NMClient:permissions-state, object property in NMDeviceOvs
-NMClient:radio-flags, object property in NMDeviceOvs +NMClient:radio-flags, object property in NMDeviceOvs
@@ -469,15 +469,15 @@ NMClientNotifyEventWithPtrCb, user_function in NMDevice, struct in NMDeviceOvs
-NMDevice6Lowpan, struct in NMDeviceOvs +NMDevice6Lowpan, struct in NMDeviceOvs
-NMDevice6Lowpan:parent, object property in NMDeviceOvs +NMDevice6Lowpan:parent, object property in NMDeviceOvs
@@ -529,7 +529,7 @@ NMDevice6Lowpan:parent, object property in NMDeviceOvs
-NMDevice:hw-address, object property in NMDeviceOvs +NMDevice:hw-address, object property in NMDeviceOvs
@@ -537,7 +537,7 @@ NMDevice:hw-address, object property in NMDeviceOvs
-NMDevice:interface-flags, object property in NMDeviceOvs +NMDevice:interface-flags, object property in NMDeviceOvs
@@ -549,7 +549,7 @@ NMDevice:interface-flags, object property in NMDeviceOvs
-NMDevice:ip4-connectivity, object property in NMDeviceOvs +NMDevice:ip4-connectivity, object property in NMDeviceOvs
@@ -557,11 +557,11 @@ NMDevice:ip4-connectivity, object property in NMDeviceOvs
-NMDevice:ip6-connectivity, object property in NMDeviceOvs +NMDevice:ip6-connectivity, object property in NMDeviceOvs
-NMDevice:lldp-neighbors, object property in NMDeviceOvs +NMDevice:lldp-neighbors, object property in NMDeviceOvs
@@ -569,7 +569,7 @@ NMDevice:lldp-neighbors, object property in NMDeviceOvs
-NMDevice:metered, object property in NMDeviceOvs +NMDevice:metered, object property in NMDeviceOvs
@@ -577,11 +577,11 @@ NMDevice:metered, object property in NMDeviceOvs
-NMDevice:nm-plugin-missing, object property in NMDeviceOvs +NMDevice:nm-plugin-missing, object property in NMDeviceOvs
-NMDevice:path, object property in NMDeviceOvs +NMDevice:path, object property in NMDeviceOvs
@@ -589,7 +589,7 @@ NMDevice:path, object property in NMDeviceOvs
-NMDevice:ports, object property in NMDeviceOvs +NMDevice:ports, object property in NMDeviceOvs
@@ -617,7 +617,7 @@ NMDevice:ports, object property in NMDeviceOvs
-NMDeviceAdsl, struct in NMDeviceOvs +NMDeviceAdsl, struct in NMDeviceOvs
@@ -625,7 +625,7 @@ NMDeviceAdsl, struct in NMDeviceOvs
-NMDeviceBond, struct in NMDeviceOvs +NMDeviceBond, struct in NMDeviceOvs
@@ -637,7 +637,7 @@ NMDeviceBond, struct in NMDeviceOvs
-NMDeviceBridge, struct in NMDeviceOvs +NMDeviceBridge, struct in NMDeviceOvs
@@ -649,7 +649,7 @@ NMDeviceBridge, struct in NMDeviceOvs
-NMDeviceBt, struct in NMDeviceOvs +NMDeviceBt, struct in NMDeviceOvs
@@ -669,7 +669,7 @@ NMDeviceClass, struct in NMDeviceDummy, struct in NMDeviceOvs
@@ -677,7 +677,7 @@ NMDeviceDummy, struct in NMDeviceOvs
-NMDeviceEthernet, struct in NMDeviceOvs +NMDeviceEthernet, struct in NMDeviceOvs
@@ -689,7 +689,7 @@ NMDeviceEthernet, struct in NMDeviceOvs
-NMDeviceEthernet:s390-subchannels, object property in NMDeviceOvs +NMDeviceEthernet:s390-subchannels, object property in NMDeviceOvs
@@ -701,7 +701,7 @@ NMDeviceEthernetClass, struct in NMDeviceGeneric, struct in NMDeviceOvs
@@ -709,7 +709,7 @@ NMDeviceGeneric, struct in NMDeviceOvs
-NMDeviceInfiniband, struct in NMDeviceOvs +NMDeviceInfiniband, struct in NMDeviceOvs
@@ -721,139 +721,139 @@ NMDeviceInfiniband, struct in NMDeviceOvs
-NMDeviceIPTunnel, struct in NMDeviceOvs +NMDeviceIPTunnel, struct in NMDeviceOvs
-NMDeviceIPTunnel:encapsulation-limit, object property in NMDeviceOvs +NMDeviceIPTunnel:encapsulation-limit, object property in NMDeviceOvs
-NMDeviceIPTunnel:flags, object property in NMDeviceOvs +NMDeviceIPTunnel:flags, object property in NMDeviceOvs
-NMDeviceIPTunnel:flow-label, object property in NMDeviceOvs +NMDeviceIPTunnel:flow-label, object property in NMDeviceOvs
-NMDeviceIPTunnel:input-key, object property in NMDeviceOvs +NMDeviceIPTunnel:input-key, object property in NMDeviceOvs
-NMDeviceIPTunnel:local, object property in NMDeviceOvs +NMDeviceIPTunnel:local, object property in NMDeviceOvs
-NMDeviceIPTunnel:mode, object property in NMDeviceOvs +NMDeviceIPTunnel:mode, object property in NMDeviceOvs
-NMDeviceIPTunnel:output-key, object property in NMDeviceOvs +NMDeviceIPTunnel:output-key, object property in NMDeviceOvs
-NMDeviceIPTunnel:parent, object property in NMDeviceOvs +NMDeviceIPTunnel:parent, object property in NMDeviceOvs
-NMDeviceIPTunnel:path-mtu-discovery, object property in NMDeviceOvs +NMDeviceIPTunnel:path-mtu-discovery, object property in NMDeviceOvs
-NMDeviceIPTunnel:remote, object property in NMDeviceOvs +NMDeviceIPTunnel:remote, object property in NMDeviceOvs
-NMDeviceIPTunnel:tos, object property in NMDeviceOvs +NMDeviceIPTunnel:tos, object property in NMDeviceOvs
-NMDeviceIPTunnel:ttl, object property in NMDeviceOvs +NMDeviceIPTunnel:ttl, object property in NMDeviceOvs
-NMDeviceMacsec, struct in NMDeviceOvs +NMDeviceMacsec, struct in NMDeviceOvs
-NMDeviceMacsec:cipher-suite, object property in NMDeviceOvs +NMDeviceMacsec:cipher-suite, object property in NMDeviceOvs
-NMDeviceMacsec:encoding-sa, object property in NMDeviceOvs +NMDeviceMacsec:encoding-sa, object property in NMDeviceOvs
-NMDeviceMacsec:encrypt, object property in NMDeviceOvs +NMDeviceMacsec:encrypt, object property in NMDeviceOvs
-NMDeviceMacsec:es, object property in NMDeviceOvs +NMDeviceMacsec:es, object property in NMDeviceOvs
-NMDeviceMacsec:icv-length, object property in NMDeviceOvs +NMDeviceMacsec:icv-length, object property in NMDeviceOvs
-NMDeviceMacsec:include-sci, object property in NMDeviceOvs +NMDeviceMacsec:include-sci, object property in NMDeviceOvs
-NMDeviceMacsec:parent, object property in NMDeviceOvs +NMDeviceMacsec:parent, object property in NMDeviceOvs
-NMDeviceMacsec:protect, object property in NMDeviceOvs +NMDeviceMacsec:protect, object property in NMDeviceOvs
-NMDeviceMacsec:replay-protect, object property in NMDeviceOvs +NMDeviceMacsec:replay-protect, object property in NMDeviceOvs
-NMDeviceMacsec:scb, object property in NMDeviceOvs +NMDeviceMacsec:scb, object property in NMDeviceOvs
-NMDeviceMacsec:sci, object property in NMDeviceOvs +NMDeviceMacsec:sci, object property in NMDeviceOvs
-NMDeviceMacsec:validation, object property in NMDeviceOvs +NMDeviceMacsec:validation, object property in NMDeviceOvs
-NMDeviceMacsec:window, object property in NMDeviceOvs +NMDeviceMacsec:window, object property in NMDeviceOvs
-NMDeviceMacvlan, struct in NMDeviceOvs +NMDeviceMacvlan, struct in NMDeviceOvs
-NMDeviceMacvlan:mode, object property in NMDeviceOvs +NMDeviceMacvlan:mode, object property in NMDeviceOvs
-NMDeviceMacvlan:no-promisc, object property in NMDeviceOvs +NMDeviceMacvlan:no-promisc, object property in NMDeviceOvs
-NMDeviceMacvlan:parent, object property in NMDeviceOvs +NMDeviceMacvlan:parent, object property in NMDeviceOvs
-NMDeviceMacvlan:tap, object property in NMDeviceOvs +NMDeviceMacvlan:tap, object property in NMDeviceOvs
-NMDeviceModem, struct in NMDeviceOvs +NMDeviceModem, struct in NMDeviceOvs
-NMDeviceModem:apn, object property in NMDeviceOvs +NMDeviceModem:apn, object property in NMDeviceOvs
@@ -861,7 +861,7 @@ NMDeviceModem:apn, object property in NMDeviceOvs
-NMDeviceModem:device-id, object property in NMDeviceOvs +NMDeviceModem:device-id, object property in NMDeviceOvs
@@ -869,7 +869,7 @@ NMDeviceModem:device-id, object property in NMDeviceOvs
-NMDeviceModem:operator-code, object property in NMDeviceOvs +NMDeviceModem:operator-code, object property in NMDeviceOvs
@@ -877,7 +877,7 @@ NMDeviceModem:operator-code, object property in NMDeviceOvs
-NMDeviceOlpcMesh, struct in NMDeviceOvs +NMDeviceOlpcMesh, struct in NMDeviceOvs
@@ -889,27 +889,27 @@ NMDeviceOlpcMesh, struct in NMDeviceOvs
-NMDeviceOvsBridge, struct in NMDeviceOvs +NMDeviceOvsBridge, struct in NMDeviceOvs
-NMDeviceOvsBridge:slaves, object property in NMDeviceOvs +NMDeviceOvsBridge:slaves, object property in NMDeviceOvs
-NMDeviceOvsInterface, struct in NMDeviceOvs +NMDeviceOvsInterface, struct in NMDeviceOvs
-NMDeviceOvsPort, struct in NMDeviceOvs +NMDeviceOvsPort, struct in NMDeviceOvs
-NMDeviceOvsPort:slaves, object property in NMDeviceOvs +NMDeviceOvsPort:slaves, object property in NMDeviceOvs
-NMDevicePpp, struct in NMDeviceOvs +NMDevicePpp, struct in NMDeviceOvs
@@ -921,7 +921,7 @@ NMDevicePpp, struct in NMDeviceOvs
-NMDeviceTeam, struct in NMDeviceOvs +NMDeviceTeam, struct in NMDeviceOvs
@@ -929,7 +929,7 @@ NMDeviceTeam, struct in NMDeviceOvs
-NMDeviceTeam:config, object property in NMDeviceOvs +NMDeviceTeam:config, object property in NMDeviceOvs
@@ -937,31 +937,31 @@ NMDeviceTeam:config, object property in NMDeviceOvs
-NMDeviceTun, struct in NMDeviceOvs +NMDeviceTun, struct in NMDeviceOvs
-NMDeviceTun:group, object property in NMDeviceOvs +NMDeviceTun:group, object property in NMDeviceOvs
-NMDeviceTun:mode, object property in NMDeviceOvs +NMDeviceTun:mode, object property in NMDeviceOvs
-NMDeviceTun:multi-queue, object property in NMDeviceOvs +NMDeviceTun:multi-queue, object property in NMDeviceOvs
-NMDeviceTun:no-pi, object property in NMDeviceOvs +NMDeviceTun:no-pi, object property in NMDeviceOvs
-NMDeviceTun:owner, object property in NMDeviceOvs +NMDeviceTun:owner, object property in NMDeviceOvs
-NMDeviceTun:vnet-hdr, object property in NMDeviceOvs +NMDeviceTun:vnet-hdr, object property in NMDeviceOvs
@@ -969,15 +969,15 @@ NMDeviceTun:vnet-hdr, object property in NMDeviceOvs
-NMDeviceVeth, struct in NMDeviceOvs +NMDeviceVeth, struct in NMDeviceOvs
-NMDeviceVeth:peer, object property in NMDeviceOvs +NMDeviceVeth:peer, object property in NMDeviceOvs
-NMDeviceVlan, struct in NMDeviceOvs +NMDeviceVlan, struct in NMDeviceOvs
@@ -993,87 +993,87 @@ NMDeviceVlan, struct in NMDeviceOvs
-NMDeviceVrf, struct in NMDeviceOvs +NMDeviceVrf, struct in NMDeviceOvs
-NMDeviceVrf:table, object property in NMDeviceOvs +NMDeviceVrf:table, object property in NMDeviceOvs
-NMDeviceVxlan, struct in NMDeviceOvs +NMDeviceVxlan, struct in NMDeviceOvs
-NMDeviceVxlan:ageing, object property in NMDeviceOvs +NMDeviceVxlan:ageing, object property in NMDeviceOvs
-NMDeviceVxlan:carrier, object property in NMDeviceOvs +NMDeviceVxlan:carrier, object property in NMDeviceOvs
-NMDeviceVxlan:dst-port, object property in NMDeviceOvs +NMDeviceVxlan:dst-port, object property in NMDeviceOvs
-NMDeviceVxlan:group, object property in NMDeviceOvs +NMDeviceVxlan:group, object property in NMDeviceOvs
-NMDeviceVxlan:id, object property in NMDeviceOvs +NMDeviceVxlan:id, object property in NMDeviceOvs
-NMDeviceVxlan:l2miss, object property in NMDeviceOvs +NMDeviceVxlan:l2miss, object property in NMDeviceOvs
-NMDeviceVxlan:l3miss, object property in NMDeviceOvs +NMDeviceVxlan:l3miss, object property in NMDeviceOvs
-NMDeviceVxlan:learning, object property in NMDeviceOvs +NMDeviceVxlan:learning, object property in NMDeviceOvs
-NMDeviceVxlan:limit, object property in NMDeviceOvs +NMDeviceVxlan:limit, object property in NMDeviceOvs
-NMDeviceVxlan:local, object property in NMDeviceOvs +NMDeviceVxlan:local, object property in NMDeviceOvs
-NMDeviceVxlan:parent, object property in NMDeviceOvs +NMDeviceVxlan:parent, object property in NMDeviceOvs
-NMDeviceVxlan:proxy, object property in NMDeviceOvs +NMDeviceVxlan:proxy, object property in NMDeviceOvs
-NMDeviceVxlan:rsc, object property in NMDeviceOvs +NMDeviceVxlan:rsc, object property in NMDeviceOvs
-NMDeviceVxlan:src-port-max, object property in NMDeviceOvs +NMDeviceVxlan:src-port-max, object property in NMDeviceOvs
-NMDeviceVxlan:src-port-min, object property in NMDeviceOvs +NMDeviceVxlan:src-port-min, object property in NMDeviceOvs
-NMDeviceVxlan:tos, object property in NMDeviceOvs +NMDeviceVxlan:tos, object property in NMDeviceOvs
-NMDeviceVxlan:ttl, object property in NMDeviceOvs +NMDeviceVxlan:ttl, object property in NMDeviceOvs
-NMDeviceWifi, struct in NMDeviceOvs +NMDeviceWifi, struct in NMDeviceOvs
@@ -1097,7 +1097,7 @@ NMDeviceWifi, struct in NMDeviceOvs
-NMDeviceWifi:last-scan, object property in NMDeviceOvs +NMDeviceWifi:last-scan, object property in NMDeviceOvs
@@ -1117,23 +1117,23 @@ NMDeviceWifi:last-scan, object property in NMDeviceOvs
-NMDeviceWifiP2P, struct in NMDeviceOvs +NMDeviceWifiP2P, struct in NMDeviceOvs
-NMDeviceWifiP2P::peer-added, object signal in NMDeviceOvs +NMDeviceWifiP2P::peer-added, object signal in NMDeviceOvs
-NMDeviceWifiP2P::peer-removed, object signal in NMDeviceOvs +NMDeviceWifiP2P::peer-removed, object signal in NMDeviceOvs
-NMDeviceWifiP2P:peers, object property in NMDeviceOvs +NMDeviceWifiP2P:peers, object property in NMDeviceOvs
-NMDeviceWimax, struct in NMDeviceOvs +NMDeviceWimax, struct in NMDeviceOvs
@@ -1177,35 +1177,35 @@ NMDeviceWimax, struct in NMDeviceOvs
-NMDeviceWireGuard, struct in NMDeviceOvs +NMDeviceWireGuard, struct in NMDeviceOvs
-NMDeviceWireGuard:fwmark, object property in NMDeviceOvs +NMDeviceWireGuard:fwmark, object property in NMDeviceOvs
-NMDeviceWireGuard:listen-port, object property in NMDeviceOvs +NMDeviceWireGuard:listen-port, object property in NMDeviceOvs
-NMDeviceWireGuard:public-key, object property in NMDeviceOvs +NMDeviceWireGuard:public-key, object property in NMDeviceOvs
-NMDeviceWpan, struct in NMDeviceOvs +NMDeviceWpan, struct in NMDeviceOvs
-NMDhcpConfig, struct in NMDeviceOvs +NMDhcpConfig, struct in NMDeviceOvs
-NMDhcpConfig:family, object property in NMDeviceOvs +NMDhcpConfig:family, object property in NMDeviceOvs
-NMDhcpConfig:options, object property in NMDeviceOvs +NMDhcpConfig:options, object property in NMDeviceOvs
@@ -1221,39 +1221,39 @@ NMDhcpConfigClass, struct in NMIPConfig, struct in NMDeviceOvs
-NMIPConfig:addresses, object property in NMDeviceOvs +NMIPConfig:addresses, object property in NMDeviceOvs
-NMIPConfig:domains, object property in NMDeviceOvs +NMIPConfig:domains, object property in NMDeviceOvs
-NMIPConfig:family, object property in NMDeviceOvs +NMIPConfig:family, object property in NMDeviceOvs
-NMIPConfig:gateway, object property in NMDeviceOvs +NMIPConfig:gateway, object property in NMDeviceOvs
-NMIPConfig:nameservers, object property in NMDeviceOvs +NMIPConfig:nameservers, object property in NMDeviceOvs
-NMIPConfig:routes, object property in NMDeviceOvs +NMIPConfig:routes, object property in NMDeviceOvs
-NMIPConfig:searches, object property in NMDeviceOvs +NMIPConfig:searches, object property in NMDeviceOvs
-NMIPConfig:wins-servers, object property in NMDeviceOvs +NMIPConfig:wins-servers, object property in NMDeviceOvs
@@ -1581,15 +1581,15 @@ NML_NMCLIENT_LOG_W, macro in NMObject, struct in NMDeviceOvs
-NMObject:client, object property in NMDeviceOvs +NMObject:client, object property in NMDeviceOvs
-NMObject:path, object property in NMDeviceOvs +NMObject:path, object property in NMDeviceOvs
@@ -1613,15 +1613,15 @@ _NMObjectClassFieldInfo, struct in
-NMRemoteConnection, struct in NMDeviceOvs +NMRemoteConnection, struct in NMDeviceOvs
-NMRemoteConnection:filename, object property in NMDeviceOvs +NMRemoteConnection:filename, object property in NMDeviceOvs
-NMRemoteConnection:flags, object property in NMDeviceOvs +NMRemoteConnection:flags, object property in NMDeviceOvs
@@ -1629,7 +1629,7 @@ NMRemoteConnection:flags, object property in NMDeviceOvs
-NMRemoteConnection:visible, object property in NMDeviceOvs +NMRemoteConnection:visible, object property in NMDeviceOvs
@@ -3721,19 +3721,19 @@ NMUtilsPredicateStr, user_function in NMSettingOvs
-NMVpnConnection, struct in NMDeviceOvs +NMVpnConnection, struct in NMDeviceOvs
-NMVpnConnection::vpn-state-changed, object signal in NMDeviceOvs +NMVpnConnection::vpn-state-changed, object signal in NMDeviceOvs
-NMVpnConnection:banner, object property in NMDeviceOvs +NMVpnConnection:banner, object property in NMDeviceOvs
-NMVpnConnection:vpn-state, object property in NMDeviceOvs +NMVpnConnection:vpn-state, object property in NMDeviceOvs
@@ -3913,51 +3913,51 @@ NMVpnConnection:vpn-state, object property in NMDeviceOvs
-NMWifiP2PPeer, struct in NMDeviceOvs +NMWifiP2PPeer, struct in NMDeviceOvs
-NMWifiP2PPeer:flags, object property in NMDeviceOvs +NMWifiP2PPeer:flags, object property in NMDeviceOvs
-NMWifiP2PPeer:hw-address, object property in NMDeviceOvs +NMWifiP2PPeer:hw-address, object property in NMDeviceOvs
-NMWifiP2PPeer:last-seen, object property in NMDeviceOvs +NMWifiP2PPeer:last-seen, object property in NMDeviceOvs
-NMWifiP2PPeer:manufacturer, object property in NMDeviceOvs +NMWifiP2PPeer:manufacturer, object property in NMDeviceOvs
-NMWifiP2PPeer:model, object property in NMDeviceOvs +NMWifiP2PPeer:model, object property in NMDeviceOvs
-NMWifiP2PPeer:model-number, object property in NMDeviceOvs +NMWifiP2PPeer:model-number, object property in NMDeviceOvs
-NMWifiP2PPeer:name, object property in NMDeviceOvs +NMWifiP2PPeer:name, object property in NMDeviceOvs
-NMWifiP2PPeer:serial, object property in NMDeviceOvs +NMWifiP2PPeer:serial, object property in NMDeviceOvs
-NMWifiP2PPeer:strength, object property in NMDeviceOvs +NMWifiP2PPeer:strength, object property in NMDeviceOvs
-NMWifiP2PPeer:wfd-ies, object property in NMDeviceOvs +NMWifiP2PPeer:wfd-ies, object property in NMDeviceOvs
-NMWimaxNsp, struct in NMDeviceOvs +NMWimaxNsp, struct in NMDeviceOvs
diff --git a/docs/libnm/html/index.html b/docs/libnm/html/index.html index 4299ae49..c43edfd5 100644 --- a/docs/libnm/html/index.html +++ b/docs/libnm/html/index.html @@ -15,7 +15,7 @@

- for libnm 1.37.92 + for libnm 1.38.0 The latest version of this documentation can be found on-line at https://networkmanager.dev/docs/libnm/latest/. diff --git a/docs/libnm/html/usage.html b/docs/libnm/html/usage.html index afb7ceb1..eb8c2bb8 100644 --- a/docs/libnm/html/usage.html +++ b/docs/libnm/html/usage.html @@ -96,7 +96,7 @@

$ cc $(pkg-config --libs --cflags libnm) -o hello-nm hello-nm.c
   $ ./hello-nm
-  NetworkManager version: 1.37.92
+  NetworkManager version: 1.38.0
 
   $ 

diff --git a/docs/libnm/version.xml b/docs/libnm/version.xml index f2363fea..ebeef2f2 100644 --- a/docs/libnm/version.xml +++ b/docs/libnm/version.xml @@ -1 +1 @@ -1.37.92 +1.38.0 diff --git a/man/NetworkManager-dispatcher.8 b/man/NetworkManager-dispatcher.8 index b992cf3b..7fd3a192 100644 --- a/man/NetworkManager-dispatcher.8 +++ b/man/NetworkManager-dispatcher.8 @@ -2,9 +2,9 @@ .\" Title: NetworkManager-dispatcher .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Network management daemons -.\" Source: NetworkManager-dispatcher 1.37.92 +.\" Source: NetworkManager-dispatcher 1.38.0 .\" Language: English .\" .TH "NETWORKMANAGER\-DISPATCHER" "8" "" "NetworkManager\-dispatcher 1\&" "Network management daemons" diff --git a/man/NetworkManager-wait-online.service.8 b/man/NetworkManager-wait-online.service.8 index 3b1be909..07d562d5 100644 --- a/man/NetworkManager-wait-online.service.8 +++ b/man/NetworkManager-wait-online.service.8 @@ -2,9 +2,9 @@ .\" Title: NetworkManager-wait-online.service .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Network management daemons -.\" Source: NetworkManager-wait-online.service 1.37.92 +.\" Source: NetworkManager-wait-online.service 1.38.0 .\" Language: English .\" .TH "NETWORKMANAGER\-WAIT\-ONLINE\&" "8" "" "NetworkManager\-wait\-online\&" "Network management daemons" diff --git a/man/NetworkManager.8 b/man/NetworkManager.8 index 504aba97..c3947f1e 100644 --- a/man/NetworkManager.8 +++ b/man/NetworkManager.8 @@ -2,12 +2,12 @@ .\" Title: NetworkManager .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Network management daemons -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.37\&.92" "Network management daemons" +.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.38\&.0" "Network management daemons" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5 index 48c85f81..361b6c4a 100644 --- a/man/NetworkManager.conf.5 +++ b/man/NetworkManager.conf.5 @@ -2,12 +2,12 @@ .\" Title: NetworkManager.conf .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Configuration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.37\&.92" "Configuration" +.TH "NETWORKMANAGER\&.CONF" "5" "" "NetworkManager 1\&.38\&.0" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-cloud-setup.8 b/man/nm-cloud-setup.8 index 6d5a7e1d..4edd192d 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Automatic Network Configuration in Cloud with NetworkManager -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-CLOUD\-SETUP" "8" "" "NetworkManager 1\&.37\&.92" "Automatic Network Configuratio" +.TH "NM\-CLOUD\-SETUP" "8" "" "NetworkManager 1\&.38\&.0" "Automatic Network Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-initrd-generator.8 b/man/nm-initrd-generator.8 index 9eaf533b..1ea9b588 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: System Administration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-INITRD\-GENERATOR" "8" "" "NetworkManager 1\&.37\&.92" "System Administration" +.TH "NM\-INITRD\-GENERATOR" "8" "" "NetworkManager 1\&.38\&.0" "System Administration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-online.1 b/man/nm-online.1 index c3460319..0ca058e2 100644 --- a/man/nm-online.1 +++ b/man/nm-online.1 @@ -2,12 +2,12 @@ .\" Title: nm-online .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.37\&.92" "General Commands Manual" +.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.38\&.0" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-openvswitch.7 b/man/nm-openvswitch.7 index 975bd18d..f46b7dca 100644 --- a/man/nm-openvswitch.7 +++ b/man/nm-openvswitch.7 @@ -2,12 +2,12 @@ .\" Title: nm-openvswitch .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Open vSwitch support overview -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.37\&.92" "Open vSwitch support overview" +.TH "NM\-OPENVSWITCH" "7" "" "NetworkManager 1\&.38\&.0" "Open vSwitch support overview" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-dbus.5 b/man/nm-settings-dbus.5 index d664fa95..d979773f 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Configuration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-SETTINGS\-DBUS" "5" "" "NetworkManager 1\&.37\&.92" "Configuration" +.TH "NM\-SETTINGS\-DBUS" "5" "" "NetworkManager 1\&.38\&.0" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-dbus.xml b/man/nm-settings-dbus.xml index 590bd892..20ca0b7e 100644 --- a/man/nm-settings-dbus.xml +++ b/man/nm-settings-dbus.xml @@ -1,6 +1,6 @@ -nm-settings-dbusNetworkManager developersnm-settings-dbus5NetworkManagerConfiguration1.37.92nm-settings-dbusDescription of settings and properties of NetworkManager connection profiles on the D-Bus APIDescription +nm-settings-dbusNetworkManager developersnm-settings-dbus5NetworkManagerConfiguration1.38.0nm-settings-dbusDescription of settings and properties of NetworkManager connection profiles on the D-Bus APIDescription 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 3edc7f2a..d7611706 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Configuration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.37\&.92" "Configuration" +.TH "NM\-SETTINGS\-IFCFG\-RH" "5" "" "NetworkManager 1\&.38\&.0" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-ifcfg-rh.xml b/man/nm-settings-ifcfg-rh.xml index b1643a0a..86d0a841 100644 --- a/man/nm-settings-ifcfg-rh.xml +++ b/man/nm-settings-ifcfg-rh.xml @@ -1,6 +1,6 @@ -nm-settings-ifcfg-rhNetworkManager developersnm-settings-ifcfg-rh5NetworkManagerConfiguration1.37.92nm-settings-ifcfg-rhDescription of ifcfg-rh settings pluginDescription +nm-settings-ifcfg-rhNetworkManager developersnm-settings-ifcfg-rh5NetworkManagerConfiguration1.38.0nm-settings-ifcfg-rhDescription of ifcfg-rh settings pluginDescription NetworkManager is based on the concept of connection profiles that contain network configuration (see nm-settings5 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 26acc9c8..16a6dd0f 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Configuration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.37\&.92" "Configuration" +.TH "NM\-SETTINGS\-KEYFILE" "5" "" "NetworkManager 1\&.38\&.0" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-keyfile.xml b/man/nm-settings-keyfile.xml index c66cc34b..8c763a7c 100644 --- a/man/nm-settings-keyfile.xml +++ b/man/nm-settings-keyfile.xml @@ -1,6 +1,6 @@ -nm-settings-keyfileNetworkManager developersnm-settings-keyfile5NetworkManagerConfiguration1.37.92nm-settings-keyfileDescription of keyfile settings pluginDescription +nm-settings-keyfileNetworkManager developersnm-settings-keyfile5NetworkManagerConfiguration1.38.0nm-settings-keyfileDescription of keyfile settings pluginDescription NetworkManager is based on the concept of connection profiles that contain network configuration (see nm-settings5 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 1be2d443..d330957f 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 -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Configuration -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NM\-SETTINGS\-NMCLI" "5" "" "NetworkManager 1\&.37\&.92" "Configuration" +.TH "NM\-SETTINGS\-NMCLI" "5" "" "NetworkManager 1\&.38\&.0" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-nmcli.xml b/man/nm-settings-nmcli.xml index bec71310..cf5f825d 100644 --- a/man/nm-settings-nmcli.xml +++ b/man/nm-settings-nmcli.xml @@ -1,6 +1,6 @@ -nm-settings-nmcliNetworkManager developersnm-settings-nmcli5NetworkManagerConfiguration1.37.92nm-settings-nmcliDescription of settings and properties of NetworkManager connection profiles for nmcliDescription +nm-settings-nmcliNetworkManager developersnm-settings-nmcli5NetworkManagerConfiguration1.38.0nm-settings-nmcliDescription of settings and properties of NetworkManager connection profiles for nmcliDescription 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 06b7e27e..6f2c9961 100644 --- a/man/nmcli-examples.7 +++ b/man/nmcli-examples.7 @@ -2,12 +2,12 @@ .\" Title: nmcli-examples .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: Examples -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.37\&.92" "Examples" +.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.38\&.0" "Examples" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nmcli.1 b/man/nmcli.1 index b041795f..6a861766 100644 --- a/man/nmcli.1 +++ b/man/nmcli.1 @@ -2,12 +2,12 @@ .\" Title: nmcli .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NMCLI" "1" "" "NetworkManager 1\&.37\&.92" "General Commands Manual" +.TH "NMCLI" "1" "" "NetworkManager 1\&.38\&.0" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nmtui.1 b/man/nmtui.1 index bede5b9a..09088cd9 100644 --- a/man/nmtui.1 +++ b/man/nmtui.1 @@ -2,12 +2,12 @@ .\" Title: nmtui .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/04/2022 +.\" Date: 05/13/2022 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.37.92 +.\" Source: NetworkManager 1.38.0 .\" Language: English .\" -.TH "NMTUI" "1" "" "NetworkManager 1\&.37\&.92" "General Commands Manual" +.TH "NMTUI" "1" "" "NetworkManager 1\&.38\&.0" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/meson.build b/meson.build index df7eb948..7a7eb176 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.37.92', + version: '1.38.0', license: 'GPL2+', default_options: [ 'buildtype=debugoptimized', diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index 1d9f235a..70b52b1a 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -6585,7 +6585,8 @@ device_link_changed(gpointer user_data) * so that it theoretically would also work for NMVpnConnection (although, * NMVpnConnection should become like a regular device, akin to NMDevicePpp). */ - if (!nm_device_sys_iface_state_is_external(self)) + if (priv->state >= NM_DEVICE_STATE_IP_CONFIG && priv->state <= NM_DEVICE_STATE_ACTIVATED + && !nm_device_sys_iface_state_is_external(self)) nm_device_l3cfg_commit(self, NM_L3_CFG_COMMIT_TYPE_REAPPLY, FALSE); } diff --git a/src/core/dhcp/nm-dhcp-dhclient.c b/src/core/dhcp/nm-dhcp-dhclient.c index 28d40c07..d0cd5ebd 100644 --- a/src/core/dhcp/nm-dhcp-dhclient.c +++ b/src/core/dhcp/nm-dhcp-dhclient.c @@ -330,7 +330,7 @@ create_dhclient_config(NMDhcpDhclient *self, static gboolean dhclient_start(NMDhcpClient *client, - const char *mode_opt, + gboolean set_mode, gboolean release, pid_t *out_pid, GError **error) @@ -439,14 +439,19 @@ dhclient_start(NMDhcpClient *client, } if (addr_family == AF_INET6) { - guint prefixes = client_config->v6.needed_prefixes; + guint prefixes = client_config->v6.needed_prefixes; + const char *mode_opt; g_ptr_array_add(argv, (gpointer) "-6"); - if (prefixes > 0 && nm_streq0(mode_opt, "-S")) { - /* -S is incompatible with -P, only use the latter */ + if (!set_mode) + mode_opt = NULL; + else if (!client_config->v6.info_only) + mode_opt = "-N"; + else if (prefixes == 0) + mode_opt = "-S"; + else mode_opt = NULL; - } if (mode_opt) g_ptr_array_add(argv, (gpointer) mode_opt); @@ -546,7 +551,7 @@ ip4_start(NMDhcpClient *client, GError **error) nm_assert(!client_config->client_id); nm_dhcp_client_set_effective_client_id(client, new_client_id); } - return dhclient_start(client, NULL, FALSE, NULL, error); + return dhclient_start(client, FALSE, FALSE, NULL, error); } static gboolean @@ -581,7 +586,7 @@ ip6_start(NMDhcpClient *client, const struct in6_addr *ll_addr, GError **error) return FALSE; } - return dhclient_start(client, config->v6.needed_prefixes ? "-S" : "-N", FALSE, NULL, error); + return dhclient_start(client, TRUE, FALSE, NULL, error); } static void @@ -615,7 +620,7 @@ stop(NMDhcpClient *client, gboolean release) if (release) { pid_t rpid = -1; - if (dhclient_start(client, NULL, TRUE, &rpid, NULL)) { + if (dhclient_start(client, FALSE, TRUE, &rpid, NULL)) { /* Wait a few seconds for the release to happen */ nm_dhcp_client_stop_pid(rpid, nm_dhcp_client_get_iface(client)); } diff --git a/src/core/dhcp/nm-dhcp-systemd.c b/src/core/dhcp/nm-dhcp-systemd.c index 14a121e7..4a718de9 100644 --- a/src/core/dhcp/nm-dhcp-systemd.c +++ b/src/core/dhcp/nm-dhcp-systemd.c @@ -751,14 +751,12 @@ lease_to_ip6_config(NMDedupMultiIndex *multi_idx, gs_unref_hashtable GHashTable *options = NULL; struct in6_addr tmp_addr; const struct in6_addr *dns; - uint32_t lft_pref, lft_valid; char addr_str[NM_UTILS_INET_ADDRSTRLEN]; char **domains; char **ntp_fqdns; const struct in6_addr *ntp_addrs; const char *s; - nm_auto_free_gstring GString *str = NULL; - gboolean has_any_addresses = FALSE; + nm_auto_free_gstring GString *str = NULL; int num, i; nm_assert(lease); @@ -767,36 +765,45 @@ lease_to_ip6_config(NMDedupMultiIndex *multi_idx, options = nm_dhcp_option_create_options_dict(); - sd_dhcp6_lease_reset_address_iter(lease); - nm_gstring_prepare(&str); - while (sd_dhcp6_lease_get_address(lease, &tmp_addr, &lft_pref, &lft_valid) >= 0) { - const NMPlatformIP6Address address = { - .plen = 128, - .address = tmp_addr, - .timestamp = ts, - .lifetime = lft_valid, - .preferred = lft_pref, - .addr_source = NM_IP_CONFIG_SOURCE_DHCP, - }; - - nm_l3_config_data_add_address_6(l3cd, &address); + if (!info_only) { + gboolean has_any_addresses = FALSE; + uint32_t lft_pref; + uint32_t lft_valid; - _nm_utils_inet6_ntop(&tmp_addr, addr_str); - g_string_append(nm_gstring_add_space_delimiter(str), addr_str); + sd_dhcp6_lease_reset_address_iter(lease); + nm_gstring_prepare(&str); + while (sd_dhcp6_lease_get_address(lease, &tmp_addr, &lft_pref, &lft_valid) >= 0) { + const NMPlatformIP6Address address = { + .plen = 128, + .address = tmp_addr, + .timestamp = ts, + .lifetime = lft_valid, + .preferred = lft_pref, + .addr_source = NM_IP_CONFIG_SOURCE_DHCP, + }; + + nm_l3_config_data_add_address_6(l3cd, &address); + + _nm_utils_inet6_ntop(&tmp_addr, addr_str); + g_string_append(nm_gstring_add_space_delimiter(str), addr_str); - has_any_addresses = TRUE; - } + has_any_addresses = TRUE; + } - if (str->len) { - nm_dhcp_option_add_option(options, AF_INET6, NM_DHCP_OPTION_DHCP6_NM_IP_ADDRESS, str->str); - } + if (str->len) { + nm_dhcp_option_add_option(options, + AF_INET6, + NM_DHCP_OPTION_DHCP6_NM_IP_ADDRESS, + str->str); + } - if (!info_only && !has_any_addresses) { - g_set_error_literal(error, - NM_MANAGER_ERROR, - NM_MANAGER_ERROR_FAILED, - "no address received in managed mode"); - return NULL; + if (!has_any_addresses) { + g_set_error_literal(error, + NM_MANAGER_ERROR, + NM_MANAGER_ERROR_FAILED, + "no address received in managed mode"); + return NULL; + } } num = sd_dhcp6_lease_get_dns(lease, &dns); @@ -966,11 +973,10 @@ ip6_start(NMDhcpClient *client, const struct in6_addr *ll_addr, GError **error) _LOGT("dhcp-client6: set %p", sd_client); - if (client_config->v6.info_only) { - sd_dhcp6_client_set_address_request(sd_client, 0); - if (client_config->v6.needed_prefixes == 0) - sd_dhcp6_client_set_information_request(sd_client, 1); - } + sd_dhcp6_client_set_address_request(sd_client, !client_config->v6.info_only); + sd_dhcp6_client_set_information_request(sd_client, + client_config->v6.info_only + && client_config->v6.needed_prefixes == 0); r = sd_dhcp6_client_set_iaid(sd_client, client_config->v6.iaid); if (r < 0) { diff --git a/src/core/dhcp/nm-dhcp-utils.c b/src/core/dhcp/nm-dhcp-utils.c index a0eec6e0..081e2841 100644 --- a/src/core/dhcp/nm-dhcp-utils.c +++ b/src/core/dhcp/nm-dhcp-utils.c @@ -669,8 +669,13 @@ nm_dhcp_utils_ip6_config_from_options(NMDedupMultiIndex *multi_idx, _LOG2I(LOGD_DHCP6, iface, " preferred_lft %u", address.preferred); } - str = g_hash_table_lookup(options, "ip6_address"); - if (str) { + if (!info_only) { + str = g_hash_table_lookup(options, "ip6_address"); + if (!str) { + /* No address in Managed mode is a hard error */ + return NULL; + } + if (!inet_pton(AF_INET6, str, &tmp_addr)) { _LOG2W(LOGD_DHCP6, iface, "(%s): DHCP returned invalid address '%s'", iface, str); return NULL; @@ -680,9 +685,6 @@ nm_dhcp_utils_ip6_config_from_options(NMDedupMultiIndex *multi_idx, address.addr_source = NM_IP_CONFIG_SOURCE_DHCP; nm_l3_config_data_add_address_6(l3cd, &address); _LOG2I(LOGD_DHCP6, iface, " address %s", str); - } else if (info_only == FALSE) { - /* No address in Managed mode is a hard error */ - return NULL; } str = g_hash_table_lookup(options, "host_name"); diff --git a/src/core/ndisc/tests/test-ndisc-fake.c b/src/core/ndisc/tests/test-ndisc-fake.c index 0763b64e..457dcf19 100644 --- a/src/core/ndisc/tests/test-ndisc-fake.c +++ b/src/core/ndisc/tests/test-ndisc-fake.c @@ -646,7 +646,11 @@ test_dns_solicit_loop(void) nm_ndisc_start(NM_NDISC(ndisc)); if (nmtst_main_loop_run(data.loop, 10000)) g_error("we expect to run the loop until timeout. What is wrong?"); - g_assert_cmpint(data.counter, ==, 3); + if (data.counter == 2) { + /* Hm. I saw this too. Odd. But as there are dependencies on the run time, + * I guess it can just happen. It's probably fine. */ + } else + g_assert_cmpint(data.counter, ==, 3); g_assert_cmpint(data.rs_counter, ==, 1); } diff --git a/src/core/nm-audit-manager.c b/src/core/nm-audit-manager.c index dd96d834..4e134d1a 100644 --- a/src/core/nm-audit-manager.c +++ b/src/core/nm-audit-manager.c @@ -135,10 +135,13 @@ build_message(NMStrBuf *strbuf, AuditBackend backend, GPtrArray *fields) #if HAVE_LIBAUDIT if (backend == BACKEND_AUDITD) { if (field->need_encoding) { - gs_free char *value = NULL; + nm_auto_free char *value = NULL; value = audit_encode_nv_string(field->name, str, 0); - nm_str_buf_append(strbuf, value); + if (value) + nm_str_buf_append(strbuf, value); + else + nm_str_buf_append_printf(strbuf, "%s=???", field->name); } else nm_str_buf_append_printf(strbuf, "%s=%s", field->name, str); continue; diff --git a/src/core/nm-l3cfg.c b/src/core/nm-l3cfg.c index 6b7e6f4b..38b9d822 100644 --- a/src/core/nm-l3cfg.c +++ b/src/core/nm-l3cfg.c @@ -4186,6 +4186,7 @@ _l3_commit_one(NML3Cfg *self, gboolean final_failure_for_temporary_not_available = FALSE; char sbuf_commit_type[50]; gboolean success = TRUE; + guint i; nm_assert(NM_IS_L3CFG(self)); nm_assert(NM_IN_SET(commit_type, @@ -4218,11 +4219,35 @@ _l3_commit_one(NML3Cfg *self, route_table_sync = NM_IP_ROUTE_TABLE_SYNC_MODE_MAIN; if (commit_type == NM_L3_CFG_COMMIT_TYPE_REAPPLY) { - addresses_prune = nm_platform_ip_address_get_prune_list(self->priv.platform, - addr_family, - self->priv.ifindex, - TRUE); - routes_prune = nm_platform_ip_route_get_prune_list(self->priv.platform, + gs_unref_array GArray *ipv6_temp_addrs_keep = NULL; + + nm_platform_process_events(self->priv.platform); + + if (!IS_IPv4 && addresses) { + for (i = 0; i < addresses->len; i++) { + const NMPlatformIP6Address *addr = NMP_OBJECT_CAST_IP6_ADDRESS(addresses->pdata[i]); + + if (!NM_FLAGS_HAS(addr->n_ifa_flags, IFA_F_MANAGETEMPADDR)) + continue; + + nm_assert(addr->plen == 64); + + /* Construct a list of all IPv6 prefixes for which we (still) set + * IFA_F_MANAGETEMPADDR (that is, for which we will have temporary addresses). + * Those should not be pruned during reapply. */ + if (!ipv6_temp_addrs_keep) + ipv6_temp_addrs_keep = g_array_new(FALSE, FALSE, sizeof(struct in6_addr)); + g_array_append_val(ipv6_temp_addrs_keep, addr->address); + } + } + addresses_prune = + nm_platform_ip_address_get_prune_list(self->priv.platform, + addr_family, + self->priv.ifindex, + nm_g_array_data(ipv6_temp_addrs_keep), + nm_g_array_len(ipv6_temp_addrs_keep)); + + routes_prune = nm_platform_ip_route_get_prune_list(self->priv.platform, addr_family, self->priv.ifindex, route_table_sync); diff --git a/src/libnm-core-impl/nm-setting-infiniband.c b/src/libnm-core-impl/nm-setting-infiniband.c index eb6c9536..787b838b 100644 --- a/src/libnm-core-impl/nm-setting-infiniband.c +++ b/src/libnm-core-impl/nm-setting-infiniband.c @@ -241,6 +241,14 @@ verify(NMSetting *setting, NMConnection *connection, GError **error) g_prefix_error(error, "%s: ", NM_SETTING_INFINIBAND_PARENT); return FALSE; } + if (NM_IN_SET(priv->p_key, 0, 0x8000)) { + g_set_error_literal(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("the values 0 and 0x8000 are not allowed")); + g_prefix_error(error, "%s: ", NM_SETTING_INFINIBAND_P_KEY); + return FALSE; + } } if (connection) @@ -254,17 +262,27 @@ verify(NMSetting *setting, NMConnection *connection, GError **error) virtual_iface_name = nm_setting_infiniband_get_virtual_interface_name(NM_SETTING_INFINIBAND(setting)); - if (!nm_streq(interface_name, virtual_iface_name)) { + if (!nm_streq0(interface_name, virtual_iface_name)) { /* We don't support renaming software infiniband devices. Later we might, but * for now just reject such connections. **/ - g_set_error(error, - NM_CONNECTION_ERROR, - NM_CONNECTION_ERROR_INVALID_PROPERTY, - _("interface name of software infiniband device must be '%s' or unset " - "(instead it is '%s')"), - virtual_iface_name, - interface_name); + if (virtual_iface_name) { + g_set_error( + error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("interface name of software infiniband device must be '%s' or unset " + "(instead it is '%s')"), + virtual_iface_name, + interface_name); + } else { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("interface name of software infiniband device with MAC address " + "must be unset (instead it is '%s')"), + interface_name); + } g_prefix_error(error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, diff --git a/src/libnm-core-public/nm-version-macros.h b/src/libnm-core-public/nm-version-macros.h index b10be844..07c259a7 100644 --- a/src/libnm-core-public/nm-version-macros.h +++ b/src/libnm-core-public/nm-version-macros.h @@ -22,7 +22,7 @@ * Evaluates to the minor version number of NetworkManager which this source * is compiled against. */ -#define NM_MINOR_VERSION (37) +#define NM_MINOR_VERSION (38) /** * NM_MICRO_VERSION: @@ -30,7 +30,7 @@ * Evaluates to the micro version number of NetworkManager which this source * compiled against. */ -#define NM_MICRO_VERSION (92) +#define NM_MICRO_VERSION (0) /** * NM_CHECK_VERSION: diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 941312bd..daefa068 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -2127,6 +2127,12 @@ char *nm_utils_g_slist_strlist_join(const GSList *a, const char *separator); /*****************************************************************************/ +static inline gpointer +nm_g_array_data(const GArray *arr) +{ + return arr ? arr->data : NULL; +} + static inline guint nm_g_array_len(const GArray *arr) { diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c index 8866a436..090af26d 100644 --- a/src/libnm-platform/nm-platform.c +++ b/src/libnm-platform/nm-platform.c @@ -4459,15 +4459,25 @@ gboolean nm_platform_ip_address_flush(NMPlatform *self, int addr_family, int ifindex) { gboolean success = TRUE; + int IS_IPv4; _CHECK_SELF(self, klass, FALSE); - nm_assert(NM_IN_SET(addr_family, AF_UNSPEC, AF_INET, AF_INET6)); + nm_assert_addr_family_or_unspec(addr_family); + + for (IS_IPv4 = 1; IS_IPv4 >= 0; IS_IPv4--) { + gs_unref_ptrarray GPtrArray *addresses_prune = NULL; + const int addr_family2 = IS_IPv4 ? AF_INET : AF_INET6; + + if (!NM_IN_SET(addr_family, AF_UNSPEC, addr_family2)) + continue; - if (NM_IN_SET(addr_family, AF_UNSPEC, AF_INET)) - success &= nm_platform_ip4_address_sync(self, ifindex, NULL); - if (NM_IN_SET(addr_family, AF_UNSPEC, AF_INET6)) - success &= nm_platform_ip6_address_sync(self, ifindex, NULL, TRUE); + addresses_prune = + nm_platform_ip_address_get_prune_list(self, addr_family2, ifindex, NULL, 0); + + if (!nm_platform_ip_address_sync(self, addr_family2, ifindex, NULL, addresses_prune)) + success = FALSE; + } return success; } @@ -4509,17 +4519,31 @@ _err_inval_due_to_ipv6_tentative_pref_src(NMPlatform *self, const NMPObject *obj return TRUE; } -GPtrArray * -nm_platform_ip_address_get_prune_list(NMPlatform *self, - int addr_family, - int ifindex, - gboolean exclude_ipv6_temporary_addrs) +static guint +_ipv6_temporary_addr_prefixes_keep_hash(gconstpointer ptr) { - const int IS_IPv4 = NM_IS_IPv4(addr_family); - const NMDedupMultiHeadEntry *head_entry; - NMPLookup lookup; - GPtrArray *result = NULL; - CList *iter; + return nm_hash_mem(1161670183u, ptr, 8); +} + +static gboolean +_ipv6_temporary_addr_prefixes_keep_equal(gconstpointer ptr_a, gconstpointer ptr_b) +{ + return !memcmp(ptr_a, ptr_b, 8); +} + +GPtrArray * +nm_platform_ip_address_get_prune_list(NMPlatform *self, + int addr_family, + int ifindex, + const struct in6_addr *ipv6_temporary_addr_prefixes_keep, + guint ipv6_temporary_addr_prefixes_keep_len) +{ + gs_unref_hashtable GHashTable *ipv6_temporary_addr_prefixes_keep_idx = NULL; + const int IS_IPv4 = NM_IS_IPv4(addr_family); + const NMDedupMultiHeadEntry *head_entry; + NMPLookup lookup; + GPtrArray *result = NULL; + CList *iter; nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(NM_IS_IPv4(addr_family)), ifindex); @@ -4532,9 +4556,40 @@ nm_platform_ip_address_get_prune_list(NMPlatform *self, const NMPObject *obj = c_list_entry(iter, NMDedupMultiEntry, lst_entries)->obj; if (!IS_IPv4) { - if (exclude_ipv6_temporary_addrs - && NM_FLAGS_HAS(NMP_OBJECT_CAST_IP_ADDRESS(obj)->n_ifa_flags, IFA_F_SECONDARY)) - continue; + const NMPlatformIP6Address *a6 = NMP_OBJECT_CAST_IP6_ADDRESS(obj); + + if (NM_FLAGS_HAS(a6->n_ifa_flags, IFA_F_SECONDARY) + && ipv6_temporary_addr_prefixes_keep_len > 0 && a6->plen == 64) { + gboolean keep = FALSE; + guint i; + + if (ipv6_temporary_addr_prefixes_keep_len < 10) { + for (i = 0; i < ipv6_temporary_addr_prefixes_keep_len; i++) { + if (memcmp(&ipv6_temporary_addr_prefixes_keep[i], &a6->address, 8) == 0) { + keep = TRUE; + break; + } + } + } else { + /* We have a larger number of addresses. We want that our functions are O(n), + * so build a lookup index. */ + if (!ipv6_temporary_addr_prefixes_keep_idx) { + ipv6_temporary_addr_prefixes_keep_idx = + g_hash_table_new(_ipv6_temporary_addr_prefixes_keep_hash, + _ipv6_temporary_addr_prefixes_keep_equal); + for (i = 0; i < ipv6_temporary_addr_prefixes_keep_len; i++) { + g_hash_table_add(ipv6_temporary_addr_prefixes_keep_idx, + (gpointer) &ipv6_temporary_addr_prefixes_keep[i]); + } + } + if (g_hash_table_contains(ipv6_temporary_addr_prefixes_keep_idx, &a6->address)) + keep = TRUE; + } + if (keep) { + /* This IPv6 temporary address has a prefix that we want to keep. */ + continue; + } + } } if (!result) diff --git a/src/libnm-platform/nm-platform.h b/src/libnm-platform/nm-platform.h index 246d6ff6..5c72fade 100644 --- a/src/libnm-platform/nm-platform.h +++ b/src/libnm-platform/nm-platform.h @@ -2187,42 +2187,12 @@ gboolean nm_platform_ip_address_sync(NMPlatform *self, GPtrArray *known_addresses, GPtrArray *addresses_prune); -GPtrArray *nm_platform_ip_address_get_prune_list(NMPlatform *self, - int addr_family, - int ifindex, - gboolean exclude_ipv6_temporary_addrs); - -static inline gboolean -_nm_platform_ip_address_sync(NMPlatform *self, - int addr_family, - int ifindex, - GPtrArray *known_addresses, - gboolean full_sync) -{ - gs_unref_ptrarray GPtrArray *addresses_prune = NULL; - - addresses_prune = nm_platform_ip_address_get_prune_list(self, addr_family, ifindex, !full_sync); - return nm_platform_ip_address_sync(self, - addr_family, - ifindex, - known_addresses, - addresses_prune); -} - -static inline gboolean -nm_platform_ip4_address_sync(NMPlatform *self, int ifindex, GPtrArray *known_addresses) -{ - return _nm_platform_ip_address_sync(self, AF_INET, ifindex, known_addresses, TRUE); -} - -static inline gboolean -nm_platform_ip6_address_sync(NMPlatform *self, - int ifindex, - GPtrArray *known_addresses, - gboolean full_sync) -{ - return _nm_platform_ip_address_sync(self, AF_INET6, ifindex, known_addresses, full_sync); -} +GPtrArray * +nm_platform_ip_address_get_prune_list(NMPlatform *self, + int addr_family, + int ifindex, + const struct in6_addr *ipv6_temporary_addr_prefixes_keep, + guint ipv6_temporary_addr_prefixes_keep_len); gboolean nm_platform_ip_address_flush(NMPlatform *self, int addr_family, int ifindex); diff --git a/src/n-dhcp4/src/n-dhcp4-c-probe.c b/src/n-dhcp4/src/n-dhcp4-c-probe.c index 7f20ac05..283c1693 100644 --- a/src/n-dhcp4/src/n-dhcp4-c-probe.c +++ b/src/n-dhcp4/src/n-dhcp4-c-probe.c @@ -995,14 +995,13 @@ static int n_dhcp4_client_probe_transition_nak(NDhcp4ClientProbe *probe) { case N_DHCP4_CLIENT_PROBE_STATE_RENEWING: case N_DHCP4_CLIENT_PROBE_STATE_REBINDING: - /* XXX */ - r = n_dhcp4_client_probe_raise(probe, NULL, N_DHCP4_CLIENT_EVENT_RETRACTED); if (r) return r; + probe->current_lease = n_dhcp4_client_lease_unref(probe->current_lease); probe->state = N_DHCP4_CLIENT_PROBE_STATE_INIT; probe->ns_deferred = n_dhcp4_gettime(CLOCK_BOOTTIME) + probe->ns_nak_restart_delay; probe->ns_nak_restart_delay = C_CLAMP(probe->ns_nak_restart_delay * 2u, diff --git a/src/nm-cloud-setup/nmcs-provider-aliyun.c b/src/nm-cloud-setup/nmcs-provider-aliyun.c index 31c9830d..1a5e5459 100644 --- a/src/nm-cloud-setup/nmcs-provider-aliyun.c +++ b/src/nm-cloud-setup/nmcs-provider-aliyun.c @@ -123,29 +123,26 @@ detect(NMCSProvider *provider, GTask *task) typedef enum { GET_CONFIG_FETCH_DONE_TYPE_SUBNET_VPC_CIDR_BLOCK, GET_CONFIG_FETCH_DONE_TYPE_PRIVATE_IPV4S, + GET_CONFIG_FETCH_DONE_TYPE_PRIMARY_IP_ADDRESS, GET_CONFIG_FETCH_DONE_TYPE_NETMASK, GET_CONFIG_FETCH_DONE_TYPE_GATEWAY, } GetConfigFetchDoneType; static void -_get_config_fetch_done_cb(NMHttpClient *http_client, - GAsyncResult *result, - gpointer user_data, - GetConfigFetchDoneType fetch_type) +_get_config_fetch_done_cb(NMHttpClient *http_client, + GAsyncResult *result, + NMCSProviderGetConfigIfaceData *config_iface_data, + GetConfigFetchDoneType fetch_type) { - NMCSProviderGetConfigTaskData *get_config_data; - gs_unref_bytes GBytes *response = NULL; - gs_free_error GError *error = NULL; - NMCSProviderGetConfigIfaceData *config_iface_data; - in_addr_t tmp_addr; - int tmp_prefix; - in_addr_t netmask_bin; - in_addr_t gateway_bin; - gs_free const char **s_addrs = NULL; - gsize i; - gsize len; - - nm_utils_user_data_unpack(user_data, &get_config_data, &config_iface_data); + gs_unref_bytes GBytes *response = NULL; + gs_free_error GError *error = NULL; + in_addr_t tmp_addr; + int tmp_prefix; + in_addr_t netmask_bin; + in_addr_t gateway_bin; + gs_free const char **s_addrs = NULL; + gsize i; + gsize len; nm_http_client_poll_get_finish(http_client, result, NULL, &response, &error); @@ -177,6 +174,16 @@ _get_config_fetch_done_cb(NMHttpClient *http_client, } break; + case GET_CONFIG_FETCH_DONE_TYPE_PRIMARY_IP_ADDRESS: + + if (nm_utils_parse_inaddr_bin(AF_INET, g_bytes_get_data(response, NULL), NULL, &tmp_addr)) { + nm_assert(config_iface_data->priv.aliyun.primary_ip_address == 0); + nm_assert(!config_iface_data->priv.aliyun.has_primary_ip_address); + config_iface_data->priv.aliyun.primary_ip_address = tmp_addr; + config_iface_data->priv.aliyun.has_primary_ip_address = TRUE; + } + break; + case GET_CONFIG_FETCH_DONE_TYPE_SUBNET_VPC_CIDR_BLOCK: if (nm_utils_parse_inaddr_prefix_bin(AF_INET, @@ -212,9 +219,30 @@ _get_config_fetch_done_cb(NMHttpClient *http_client, break; } + if (!config_iface_data->priv.aliyun.ipv4s_arr_ordered + && config_iface_data->priv.aliyun.has_primary_ip_address + && config_iface_data->ipv4s_len > 0) { + for (i = 0; i < config_iface_data->ipv4s_len; i++) { + if (config_iface_data->ipv4s_arr[i] + != config_iface_data->priv.aliyun.primary_ip_address) + continue; + if (i > 0) { + /* OK, at position [i] we found the primary address. + * Move the elements from [0..(i-1)] to [1..i] and then set [0]. */ + memmove(&config_iface_data->ipv4s_arr[1], + &config_iface_data->ipv4s_arr[0], + i * sizeof(in_addr_t)); + config_iface_data->ipv4s_arr[0] = config_iface_data->priv.aliyun.primary_ip_address; + } + break; + } + config_iface_data->priv.aliyun.ipv4s_arr_ordered = TRUE; + } + out: - get_config_data->n_pending--; - _nmcs_provider_get_config_task_maybe_return(get_config_data, g_steal_pointer(&error)); + config_iface_data->get_config_data->n_pending--; + _nmcs_provider_get_config_task_maybe_return(config_iface_data->get_config_data, + g_steal_pointer(&error)); } static void @@ -235,6 +263,17 @@ _get_config_fetch_done_cb_private_ipv4s(GObject *source, GAsyncResult *result, g GET_CONFIG_FETCH_DONE_TYPE_PRIVATE_IPV4S); } +static void +_get_config_fetch_done_cb_primary_ip_address(GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + _get_config_fetch_done_cb(NM_HTTP_CLIENT(source), + result, + user_data, + GET_CONFIG_FETCH_DONE_TYPE_PRIMARY_IP_ADDRESS); +} + static void _get_config_fetch_done_cb_netmask(GObject *source, GAsyncResult *result, gpointer user_data) { @@ -297,6 +336,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us gs_free char *uri2 = NULL; gs_free char *uri3 = NULL; gs_free char *uri4 = NULL; + gs_free char *uri5 = NULL; config_iface_data = g_hash_table_lookup(get_config_data->result_dict, v_hwaddr); @@ -309,9 +349,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us } config_iface_data = - nmcs_provider_get_config_iface_data_create(get_config_data->result_dict, - FALSE, - v_hwaddr); + nmcs_provider_get_config_iface_data_create(get_config_data, FALSE, v_hwaddr); } nm_assert(config_iface_data->iface_idx == -1); @@ -338,7 +376,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_vpc_cidr_block, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); get_config_data->n_pending++; nm_http_client_poll_get( @@ -355,12 +393,29 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_private_ipv4s, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); get_config_data->n_pending++; nm_http_client_poll_get( http_client, (uri3 = _aliyun_uri_interfaces(v_mac_data->path, + NM_STR_HAS_SUFFIX(v_mac_data->path, "/") ? "" : "/", + "primary-ip-address")), + HTTP_TIMEOUT_MS, + 512 * 1024, + 10000, + 1000, + NULL, + get_config_data->intern_cancellable, + NULL, + NULL, + _get_config_fetch_done_cb_primary_ip_address, + config_iface_data); + + get_config_data->n_pending++; + nm_http_client_poll_get( + http_client, + (uri4 = _aliyun_uri_interfaces(v_mac_data->path, NM_STR_HAS_SUFFIX(v_mac_data->path, "/") ? "" : "/", "netmask")), HTTP_TIMEOUT_MS, @@ -372,12 +427,12 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_netmask, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); get_config_data->n_pending++; nm_http_client_poll_get( http_client, - (uri4 = _aliyun_uri_interfaces(v_mac_data->path, + (uri5 = _aliyun_uri_interfaces(v_mac_data->path, NM_STR_HAS_SUFFIX(v_mac_data->path, "/") ? "" : "/", "gateway")), HTTP_TIMEOUT_MS, @@ -389,7 +444,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_gateway, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); } _nmcs_provider_get_config_task_maybe_return(get_config_data, NULL); diff --git a/src/nm-cloud-setup/nmcs-provider-azure.c b/src/nm-cloud-setup/nmcs-provider-azure.c index 06f23ea7..9b27af28 100644 --- a/src/nm-cloud-setup/nmcs-provider-azure.c +++ b/src/nm-cloud-setup/nmcs-provider-azure.c @@ -387,9 +387,7 @@ _get_config_iface_cb(GObject *source, GAsyncResult *result, gpointer user_data) goto out_done; } iface_data->iface_get_config = - nmcs_provider_get_config_iface_data_create(get_config_data->result_dict, - FALSE, - v_hwaddr); + nmcs_provider_get_config_iface_data_create(get_config_data, FALSE, v_hwaddr); } else { if (iface_data->iface_get_config->iface_idx >= 0) { _LOGI("interface[%" G_GSSIZE_FORMAT "]: duplicate MAC address %s returned", diff --git a/src/nm-cloud-setup/nmcs-provider-ec2.c b/src/nm-cloud-setup/nmcs-provider-ec2.c index ee4e2a95..d6fa0311 100644 --- a/src/nm-cloud-setup/nmcs-provider-ec2.c +++ b/src/nm-cloud-setup/nmcs-provider-ec2.c @@ -116,19 +116,15 @@ detect(NMCSProvider *provider, GTask *task) /*****************************************************************************/ static void -_get_config_fetch_done_cb(NMHttpClient *http_client, - GAsyncResult *result, - gpointer user_data, - gboolean is_local_ipv4) +_get_config_fetch_done_cb(NMHttpClient *http_client, + GAsyncResult *result, + NMCSProviderGetConfigIfaceData *config_iface_data, + gboolean is_local_ipv4) { - NMCSProviderGetConfigTaskData *get_config_data; - gs_unref_bytes GBytes *response = NULL; - gs_free_error GError *error = NULL; - NMCSProviderGetConfigIfaceData *config_iface_data; - in_addr_t tmp_addr; - int tmp_prefix; - - nm_utils_user_data_unpack(user_data, &get_config_data, &config_iface_data); + gs_unref_bytes GBytes *response = NULL; + gs_free_error GError *error = NULL; + in_addr_t tmp_addr; + int tmp_prefix; nm_http_client_poll_get_finish(http_client, result, NULL, &response, &error); @@ -173,8 +169,9 @@ _get_config_fetch_done_cb(NMHttpClient *http_client, } out: - get_config_data->n_pending--; - _nmcs_provider_get_config_task_maybe_return(get_config_data, g_steal_pointer(&error)); + config_iface_data->get_config_data->n_pending--; + _nmcs_provider_get_config_task_maybe_return(config_iface_data->get_config_data, + g_steal_pointer(&error)); } static void @@ -244,9 +241,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us continue; } config_iface_data = - nmcs_provider_get_config_iface_data_create(get_config_data->result_dict, - FALSE, - v_hwaddr); + nmcs_provider_get_config_iface_data_create(get_config_data, FALSE, v_hwaddr); } nm_assert(config_iface_data->iface_idx == -1); @@ -273,7 +268,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_subnet_ipv4_cidr_block, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); get_config_data->n_pending++; nm_http_client_poll_get( @@ -290,7 +285,7 @@ _get_config_metadata_ready_cb(GObject *source, GAsyncResult *result, gpointer us NULL, NULL, _get_config_fetch_done_cb_local_ipv4s, - nm_utils_user_data_pack(get_config_data, config_iface_data)); + config_iface_data); } _nmcs_provider_get_config_task_maybe_return(get_config_data, NULL); diff --git a/src/nm-cloud-setup/nmcs-provider-gcp.c b/src/nm-cloud-setup/nmcs-provider-gcp.c index 0df2bdd6..a325f31a 100644 --- a/src/nm-cloud-setup/nmcs-provider-gcp.c +++ b/src/nm-cloud-setup/nmcs-provider-gcp.c @@ -282,9 +282,7 @@ _get_config_iface_cb(GObject *source, GAsyncResult *result, gpointer user_data) goto out_done; } iface_data->iface_get_config = - nmcs_provider_get_config_iface_data_create(get_config_data->result_dict, - FALSE, - v_hwaddr); + nmcs_provider_get_config_iface_data_create(get_config_data, FALSE, v_hwaddr); is_requested = FALSE; } else { if (iface_data->iface_get_config->iface_idx >= 0) { diff --git a/src/nm-cloud-setup/nmcs-provider.c b/src/nm-cloud-setup/nmcs-provider.c index f14a3d02..fd9a61b8 100644 --- a/src/nm-cloud-setup/nmcs-provider.c +++ b/src/nm-cloud-setup/nmcs-provider.c @@ -174,24 +174,38 @@ nmcs_provider_detect_finish(NMCSProvider *self, GAsyncResult *result, GError **e /*****************************************************************************/ NMCSProviderGetConfigIfaceData * -nmcs_provider_get_config_iface_data_create(GHashTable *iface_datas, - gboolean was_requested, - const char *hwaddr) +nmcs_provider_get_config_iface_data_create(NMCSProviderGetConfigTaskData *get_config_data, + gboolean was_requested, + const char *hwaddr) { NMCSProviderGetConfigIfaceData *iface_data; nm_assert(hwaddr); + nm_assert(get_config_data); + nm_assert(NMCS_IS_PROVIDER(get_config_data->self)); iface_data = g_slice_new(NMCSProviderGetConfigIfaceData); *iface_data = (NMCSProviderGetConfigIfaceData){ - .hwaddr = g_strdup(hwaddr), - .iface_idx = -1, - .was_requested = was_requested, + .get_config_data = get_config_data, + .hwaddr = g_strdup(hwaddr), + .iface_idx = -1, + .was_requested = was_requested, }; + /* "priv" is a union, and according to C, it might not be properly initialized + * that all union members are set to false/0/NULL/0.0. We need to know which + * union field we are going to use, and that depends on the type of "self". + * Also, knowing the type would allow us to initialize to something other than + * false/0/NULL/0.0. */ + if (G_OBJECT_TYPE(get_config_data->self) == nmcs_provider_aliyun_get_type()) { + iface_data->priv.aliyun = (typeof(iface_data->priv.aliyun)){ + .has_primary_ip_address = FALSE, + }; + } + /* the has does not own the key (iface_datta->hwaddr), the lifetime of the * key is associated with the iface_data instance. */ - g_hash_table_replace(iface_datas, (char *) iface_data->hwaddr, iface_data); + g_hash_table_replace(get_config_data->result_dict, (char *) iface_data->hwaddr, iface_data); return iface_data; } @@ -280,6 +294,8 @@ nmcs_provider_get_config(NMCSProvider *self, get_config_data = g_slice_new(NMCSProviderGetConfigTaskData); *get_config_data = (NMCSProviderGetConfigTaskData){ + /* "self" is kept alive by "task". */ + .self = self, .task = nm_g_task_new(self, cancellable, nmcs_provider_get_config, callback, user_data), .any = any, .result_dict = g_hash_table_new_full(nm_str_hash, g_str_equal, NULL, _iface_data_free), @@ -288,7 +304,7 @@ nmcs_provider_get_config(NMCSProvider *self, nmcs_wait_for_objects_register(get_config_data->task); for (; hwaddrs && hwaddrs[0]; hwaddrs++) - nmcs_provider_get_config_iface_data_create(get_config_data->result_dict, TRUE, hwaddrs[0]); + nmcs_provider_get_config_iface_data_create(get_config_data, TRUE, hwaddrs[0]); if (cancellable) { gulong cancelled_id; diff --git a/src/nm-cloud-setup/nmcs-provider.h b/src/nm-cloud-setup/nmcs-provider.h index bce41dcb..502f1d03 100644 --- a/src/nm-cloud-setup/nmcs-provider.h +++ b/src/nm-cloud-setup/nmcs-provider.h @@ -9,11 +9,16 @@ /*****************************************************************************/ +struct _NMCSProvider; +struct _NMCSProviderGetConfigTaskData; + typedef struct { /* And it's exactly the same pointer that is also the key for the iface_datas * dictionary. */ const char *hwaddr; + struct _NMCSProviderGetConfigTaskData *get_config_data; + in_addr_t *ipv4s_arr; gsize ipv4s_len; @@ -36,6 +41,18 @@ typedef struct { * nmcs_provider_get_config(). */ bool was_requested : 1; + /* Usually we would want that the parent class NMCSProvider is not aware about + * the implementations. However, it's convenient to track implementation specific data + * here, thus we violate such separation. In practice, all subclasses are known + * at compile time, and it will be simpler this way. */ + union { + struct { + in_addr_t primary_ip_address; + bool has_primary_ip_address : 1; + bool ipv4s_arr_ordered : 1; + } aliyun; + } priv; + } NMCSProviderGetConfigIfaceData; static inline gboolean @@ -45,10 +62,6 @@ nmcs_provider_get_config_iface_data_is_valid(const NMCSProviderGetConfigIfaceDat && ((config_data->has_ipv4s && config_data->has_cidr) || config_data->iproutes_len); } -NMCSProviderGetConfigIfaceData *nmcs_provider_get_config_iface_data_create(GHashTable *iface_datas, - gboolean was_requested, - const char *hwaddr); - /*****************************************************************************/ typedef struct { @@ -83,9 +96,11 @@ NM_AUTO_DEFINE_FCN0(NMCSProviderGetConfigResult *, /*****************************************************************************/ -typedef struct { +typedef struct _NMCSProviderGetConfigTaskData { GTask *task; + struct _NMCSProvider *self; + GHashTable *result_dict; /* this cancellable should be used for the provider implementation @@ -105,6 +120,15 @@ typedef struct { bool any : 1; } NMCSProviderGetConfigTaskData; +/*****************************************************************************/ + +NMCSProviderGetConfigIfaceData * +nmcs_provider_get_config_iface_data_create(NMCSProviderGetConfigTaskData *get_config_data, + gboolean was_requested, + const char *hwaddr); + +/*****************************************************************************/ + #define NMCS_TYPE_PROVIDER (nmcs_provider_get_type()) #define NMCS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NMCS_TYPE_PROVIDER, NMCSProvider)) #define NMCS_PROVIDER_CLASS(klass) \ @@ -118,7 +142,7 @@ typedef struct { struct _NMCSProviderPrivate; -typedef struct { +typedef struct _NMCSProvider { GObject parent; struct _NMCSProviderPrivate *_priv; } NMCSProvider; @@ -167,4 +191,11 @@ void nmcs_provider_get_config(NMCSProvider *provider, NMCSProviderGetConfigResult * nmcs_provider_get_config_finish(NMCSProvider *provider, GAsyncResult *result, GError **error); +/*****************************************************************************/ + +/* Forward declare the implemented gtype getters so we can use it at a few places without requiring + * to include the full header. The other parts of those headers should not be used aside where they + * are necessary. */ +GType nmcs_provider_aliyun_get_type(void); + #endif /* __NMCS_PROVIDER_H__ */ diff --git a/src/nmcli/connections.c b/src/nmcli/connections.c index ecf8e2e2..d093823b 100644 --- a/src/nmcli/connections.c +++ b/src/nmcli/connections.c @@ -513,8 +513,8 @@ _con_show_fcn_get_type(NMConnection *c, NMActiveConnection *ac, NMMetaAccessorGe return connection_type_to_display(s, get_type); } -static const char * -_connection_check_deprecated(NMConnection *c) +const char * +nmc_connection_check_deprecated(NMConnection *c) { NMSettingWirelessSecurity *s_wsec; const char *key_mgmt; @@ -541,7 +541,7 @@ _connection_to_color(NMConnection *c, NMActiveConnection *ac) if (ac) return nmc_active_connection_state_to_color(ac); - if (_connection_check_deprecated(c)) + if (nmc_connection_check_deprecated(c)) return NM_META_COLOR_CONNECTION_DEPRECATED; return NM_META_COLOR_CONNECTION_UNKNOWN; @@ -1923,7 +1923,8 @@ con_show_get_items_cmp(gconstpointer pa, gconstpointer pb, gpointer user_data) } } - NM_CMP_DIRECT(!!_connection_check_deprecated(c_a), !!_connection_check_deprecated(c_b)); + NM_CMP_DIRECT(!!nmc_connection_check_deprecated(c_a), + !!nmc_connection_check_deprecated(c_b)); NM_CMP_DIRECT_STRCMP0(nm_connection_get_uuid(c_a), nm_connection_get_uuid(c_b)); NM_CMP_DIRECT_STRCMP0(nm_connection_get_path(c_a), nm_connection_get_path(c_b)); } @@ -5260,7 +5261,7 @@ connection_warnings(NmCli *nmc, NMConnection *connection) const char *id; const char *deprecated; - deprecated = _connection_check_deprecated(NM_CONNECTION(connection)); + deprecated = nmc_connection_check_deprecated(NM_CONNECTION(connection)); if (deprecated) g_printerr(_("Warning: %s.\n"), deprecated); diff --git a/src/nmcli/connections.h b/src/nmcli/connections.h index 782c4eaf..c610766a 100644 --- a/src/nmcli/connections.h +++ b/src/nmcli/connections.h @@ -10,6 +10,8 @@ void monitor_connections(NmCli *nmc); +const char *nmc_connection_check_deprecated(NMConnection *c); + gboolean nmc_process_connection_properties(NmCli *nmc, NMConnection *connection, int *argc, diff --git a/src/nmcli/devices.c b/src/nmcli/devices.c index 2bfc4cec..6fce9de7 100644 --- a/src/nmcli/devices.c +++ b/src/nmcli/devices.c @@ -1238,7 +1238,7 @@ compare_aps(gconstpointer a, gconstpointer b, gpointer user_data) NMAccessPoint *apb = *(NMAccessPoint **) b; /* Sort the deprecated WEP connections last. */ - NM_CMP_DIRECT(_ap_is_wep(apb), _ap_is_wep(apa)); + NM_CMP_DIRECT(_ap_is_wep(apa), _ap_is_wep(apb)); NM_CMP_DIRECT(nm_access_point_get_strength(apb), nm_access_point_get_strength(apa)); NM_CMP_DIRECT(nm_access_point_get_frequency(apa), nm_access_point_get_frequency(apb)); @@ -2127,6 +2127,7 @@ add_and_activate_cb(GObject *client, GAsyncResult *result, gpointer user_data) NmCli *nmc = info->nmc; gs_unref_object NMActiveConnection *active = NULL; gs_free_error GError *error = NULL; + const char *deprecated; if (info->create) active = nm_client_add_and_activate_connection_finish(NM_CLIENT(client), result, &error); @@ -2152,6 +2153,11 @@ add_and_activate_cb(GObject *client, GAsyncResult *result, gpointer user_data) return; } + deprecated = + nmc_connection_check_deprecated(NM_CONNECTION(nm_active_connection_get_connection(active))); + if (deprecated) + g_printerr(_("Warning: %s.\n"), deprecated); + if (nmc->nowait_flag) { quit(); return; -- cgit 1.3.0-6-gf8a5 From 7180d4b2afcd738496ee25b94434266ec15e8ba0 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 13 May 2022 15:12:36 +0200 Subject: New upstream version 1.38.0 --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index c4466b6d..209092f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +network-manager (1.38.0-1) UNRELEASED; urgency=medium + + * New upstream version 1.38.0 + + -- Michael Biebl Fri, 13 May 2022 15:12:34 +0200 + network-manager (1.37.92-1) unstable; urgency=medium * New upstream version 1.37.92 (1.38 rc3) -- cgit 1.3.0-6-gf8a5 From 1b0c5b7ddb3f1143767beb87cd18f1be3ae4de18 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 13 May 2022 15:42:23 +0200 Subject: Bump symbol versions to final 1.38.0 release --- debian/libnm0.symbols | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/libnm0.symbols b/debian/libnm0.symbols index 4808948d..f90d3ac2 100644 --- a/debian/libnm0.symbols +++ b/debian/libnm0.symbols @@ -29,7 +29,7 @@ libnm.so.0 libnm0 #MINVER# libnm_1_32_4@libnm_1_32_4 1.32.12 libnm_1_34_0@libnm_1_34_0 1.34.0 libnm_1_36_0@libnm_1_36_0 1.36.0 - libnm_1_38_0@libnm_1_38_0 1.37.92 + libnm_1_38_0@libnm_1_38_0 1.38.0 libnm_1_4_0@libnm_1_4_0 1.4.0 libnm_1_6_0@libnm_1_6_0 1.6.0 libnm_1_8_0@libnm_1_8_0 1.8.0 @@ -157,7 +157,7 @@ libnm.so.0 libnm0 #MINVER# nm_client_get_permission_result@libnm_1_0_0 1.0.0 nm_client_get_permissions_state@libnm_1_24_0 1.24.0 nm_client_get_primary_connection@libnm_1_0_0 1.0.0 - nm_client_get_radio_flags@libnm_1_38_0 1.37.92 + nm_client_get_radio_flags@libnm_1_38_0 1.38.0 nm_client_get_startup@libnm_1_0_0 1.0.0 nm_client_get_state@libnm_1_0_0 1.0.0 nm_client_get_type@libnm_1_0_0 1.0.0 @@ -632,7 +632,7 @@ libnm.so.0 libnm0 #MINVER# nm_object_get_client@libnm_1_24_0 1.24.0 nm_object_get_path@libnm_1_0_0 1.0.0 nm_object_get_type@libnm_1_0_0 1.0.0 - nm_radio_flags_get_type@libnm_1_38_0 1.37.92 + nm_radio_flags_get_type@libnm_1_38_0 1.38.0 nm_remote_connection_commit_changes@libnm_1_0_0 1.0.0 nm_remote_connection_commit_changes_async@libnm_1_0_0 1.0.0 nm_remote_connection_commit_changes_finish@libnm_1_0_0 1.0.0 -- cgit 1.3.0-6-gf8a5 From 1a31bc3c63474ca02c83b02add85ea4e740e5597 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 13 May 2022 15:42:45 +0200 Subject: Release version 1.38.0-1 to unstable --- debian/changelog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 209092f0..ebbfb8a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,9 @@ -network-manager (1.38.0-1) UNRELEASED; urgency=medium +network-manager (1.38.0-1) unstable; urgency=medium * New upstream version 1.38.0 + * Bump symbol versions to final 1.38.0 release - -- Michael Biebl Fri, 13 May 2022 15:12:34 +0200 + -- Michael Biebl Fri, 13 May 2022 15:42:33 +0200 network-manager (1.37.92-1) unstable; urgency=medium -- cgit 1.3.0-6-gf8a5 From 133423d532ca75a3fc51e675288d9721d78ffdb0 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Wed, 18 May 2022 18:40:15 +0200 Subject: Cherry-pick a couple of fixes from upstream nm-1-38 branch --- .../c-rbtree-fix-alignment-assertion-on-m64k.patch | 56 ++++++++++++++++++++++ ...n-t-require-a-hardware-address-for-DHCPv6.patch | 36 ++++++++++++++ debian/patches/series | 2 + 3 files changed, 94 insertions(+) create mode 100644 debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch create mode 100644 debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch diff --git a/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch b/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch new file mode 100644 index 00000000..c00cd520 --- /dev/null +++ b/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch @@ -0,0 +1,56 @@ +From: David Rheinsberg +Date: Wed, 18 May 2022 11:31:45 +0200 +Subject: c-rbtree: fix alignment assertion on m64k + +We want to assert that our alignment-guarantees do not exceed the +guarantees of the system-linker or system-allocator on the target +platform. Hence, we check against max_align_t. This is a lower bound, +but not the exact check we actually want. And as it turns out, on m64k +it is too low. Add a static check against 4-byte alignment for m64k as +a workaround. + +Reported-by: Michael Biebl +Signed-off-by: David Rheinsberg + +https://github.com/c-util/c-rbtree/issues/9 +https://github.com/c-util/c-rbtree/commit/eb778d39694a0f3389f2438bbc45fb21685a047d +(cherry picked from commit 78831d127fa169b26783ccaa6b534edfbb0adad4) +(cherry picked from commit a83c884fb6e13aad783d547691620d43bed4db84) +--- + src/c-rbtree/src/c-rbtree.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/src/c-rbtree/src/c-rbtree.c b/src/c-rbtree/src/c-rbtree.c +index 2f0e608..28de4d9 100644 +--- a/src/c-rbtree/src/c-rbtree.c ++++ b/src/c-rbtree/src/c-rbtree.c +@@ -35,12 +35,25 @@ + * CRBNode is 4-byte aligned, so the lower 2 bits are actually unused. We also + * sometimes store a pointer to the root-node, so make sure this one is also 4 + * byte aligned. +- * Note that there are actually some architectures where `max_align_t` is 4, so +- * we do not have much wiggle-room to extend this flag-set. ++ * ++ * Additionally, we want to avoid an alignment that is bigger than the ++ * alignment guaranteed by the system allocator or supported by the system ++ * linker. As there is no standard way to check this, we simply verify against ++ * `alignof(max_align_t)`, as this alignment must be supported by the ++ * toolchain. ++ * ++ * m64k is special here, as it only has a 2-byte max-alignment, but still ++ * guarantees a >=4-byte alignment on allocations. So hard-code the maximum for ++ * it. + */ +-static_assert(alignof(CRBNode) <= alignof(max_align_t), "Invalid RBNode alignment"); ++#ifdef __m68k__ ++# define C_RBTREE_MAX_ALIGN (C_MAX(4, alignof(max_align_t))) ++#else ++# define C_RBTREE_MAX_ALIGN (alignof(max_align_t)) ++#endif ++static_assert(alignof(CRBNode) <= C_RBTREE_MAX_ALIGN, "Invalid RBNode alignment"); + static_assert(alignof(CRBNode) >= 4, "Invalid CRBNode alignment"); +-static_assert(alignof(CRBTree) <= alignof(max_align_t), "Invalid RBTree alignment"); ++static_assert(alignof(CRBTree) <= C_RBTREE_MAX_ALIGN, "Invalid RBTree alignment"); + static_assert(alignof(CRBTree) >= 4, "Invalid CRBTree alignment"); + + /** diff --git a/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch b/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch new file mode 100644 index 00000000..09d48282 --- /dev/null +++ b/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch @@ -0,0 +1,36 @@ +From: Beniamino Galvani +Date: Mon, 16 May 2022 17:53:51 +0200 +Subject: device: don't require a hardware address for DHCPv6 + +DHCPv4 requires a hardware address, while DHCPv6 does not. + +Anyway, the DHCP manager already checks that an address is available +when needed, so drop the check here. + +Fixes: 58287cbcc0c8 ('core: rework IP configuration in NetworkManager using layer 3 configuration') + +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1228 +(cherry picked from commit 9bc7278da369d9dd69cc7687a5d050dfea793faa) +(cherry picked from commit 1dbcc1c4412de43c6c5def417eef221b84535d7a) +--- + src/core/devices/nm-device.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c +index 70b52b1..9e2c1f9 100644 +--- a/src/core/devices/nm-device.c ++++ b/src/core/devices/nm-device.c +@@ -10117,13 +10117,6 @@ _dev_ipdhcpx_start(NMDevice *self, int addr_family) + + hwaddr = nmp_link_address_get_as_bytes(&pllink->l_address); + +- if (!IS_IPv4) { +- if (!hwaddr) { +- fail_reason = "interface has no MAC address to start DHCPv6"; +- goto out_fail; +- } +- } +- + request_broadcast = FALSE; + if (pllink) { + str = nmp_object_link_udev_device_get_property_value(NMP_OBJECT_UP_CAST(pllink), diff --git a/debian/patches/series b/debian/patches/series index a2d7e06d..cf412f3b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,3 @@ Force-online-state-with-unmanaged-devices.patch +c-rbtree-fix-alignment-assertion-on-m64k.patch +device-don-t-require-a-hardware-address-for-DHCPv6.patch -- cgit 1.3.0-6-gf8a5 From a91f0f62f9ba4c9ee5909d3f0ed8d4d6abfd99d9 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Wed, 18 May 2022 23:03:48 +0200 Subject: Install additional config examples found in examples/nm-conf.d/ Closes: #1010889 --- debian/network-manager.examples | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/network-manager.examples b/debian/network-manager.examples index a1fc8a10..aba68cd6 100644 --- a/debian/network-manager.examples +++ b/debian/network-manager.examples @@ -1 +1,2 @@ -debian/tmp/usr/share/doc/NetworkManager/examples/server.conf +usr/share/doc/NetworkManager/examples/server.conf +examples/nm-conf.d/ -- cgit 1.3.0-6-gf8a5 From b3b81846241e51b3e2bfb34c1b5af385cdcdf894 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Wed, 18 May 2022 23:05:24 +0200 Subject: Release version 1.38.0-2 to unstable --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index ebbfb8a0..d0b455e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +network-manager (1.38.0-2) unstable; urgency=medium + + * Cherry-pick a couple of fixes from upstream nm-1-38 branch + * Install additional config examples found in examples/nm-conf.d/ + (Closes: #1010889) + + -- Michael Biebl Wed, 18 May 2022 23:05:00 +0200 + network-manager (1.38.0-1) unstable; urgency=medium * New upstream version 1.38.0 -- cgit 1.3.0-6-gf8a5