Update to 1.41.8 release (development)
Related: #2134897 Resolves: #2081302 Resolves: #2117352 Resolves: #2151455
This commit is contained in:
parent
24813ceb94
commit
60541e5f8a
1
.gitignore
vendored
1
.gitignore
vendored
@ -423,3 +423,4 @@ network-manager-applet-0.8.1.tar.bz2
|
|||||||
/NetworkManager-1.41.5.tar.xz
|
/NetworkManager-1.41.5.tar.xz
|
||||||
/NetworkManager-1.41.6.tar.xz
|
/NetworkManager-1.41.6.tar.xz
|
||||||
/NetworkManager-1.41.7.tar.xz
|
/NetworkManager-1.41.7.tar.xz
|
||||||
|
/NetworkManager-1.41.8.tar.xz
|
||||||
|
@ -1,340 +0,0 @@
|
|||||||
From bf6cb14a53592bf2f2c51a653d5c82648c6e2386 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Haller <thaller@redhat.com>
|
|
||||||
Date: Tue, 20 Dec 2022 16:11:16 +0100
|
|
||||||
Subject: [PATCH 1/1] Revert "policy: track the autoconnect retries in devices
|
|
||||||
for multi-connect"
|
|
||||||
|
|
||||||
With multi-connect enabled, this can cause infinite retries to autoconnect,
|
|
||||||
see [1].
|
|
||||||
|
|
||||||
That has bad consequences for example in initrd, where
|
|
||||||
nm-wait-online-initrd.service would wait up to one hour before failing
|
|
||||||
and blocking boot.
|
|
||||||
|
|
||||||
This reverts commit 1656d82045343b5af5b86cf129d4f2b12540b277.
|
|
||||||
|
|
||||||
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2039734#c5
|
|
||||||
|
|
||||||
Fixes: 1656d8204534 ('policy: track the autoconnect retries in devices for multi-connect')
|
|
||||||
(cherry picked from commit aec7ae8279cc9b3de7e75140b75fe997f43700fc)
|
|
||||||
---
|
|
||||||
src/core/devices/nm-device.c | 50 ----------------
|
|
||||||
src/core/devices/nm-device.h | 5 --
|
|
||||||
src/core/nm-policy.c | 112 ++++-------------------------------
|
|
||||||
3 files changed, 10 insertions(+), 157 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
|
|
||||||
index 921c0103402b..b23a34b2f054 100644
|
|
||||||
--- a/src/core/devices/nm-device.c
|
|
||||||
+++ b/src/core/devices/nm-device.c
|
|
||||||
@@ -97,8 +97,6 @@
|
|
||||||
#define NM_DEVICE_AUTH_RETRIES_INFINITY -2
|
|
||||||
#define NM_DEVICE_AUTH_RETRIES_DEFAULT 3
|
|
||||||
|
|
||||||
-#define AUTOCONNECT_RESET_RETRIES_TIMER 300
|
|
||||||
-
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
typedef void (*ActivationHandleFunc)(NMDevice *self);
|
|
||||||
@@ -764,9 +762,6 @@ typedef struct _NMDevicePrivate {
|
|
||||||
|
|
||||||
GVariant *ports_variant; /* Array of port devices D-Bus path */
|
|
||||||
char *prop_ip_iface; /* IP interface D-Bus property */
|
|
||||||
-
|
|
||||||
- int autoconnect_retries;
|
|
||||||
- gint32 autoconnect_retries_blocked_until;
|
|
||||||
} NMDevicePrivate;
|
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE(NMDevice, nm_device, NM_TYPE_DBUS_OBJECT)
|
|
||||||
@@ -16936,49 +16931,6 @@ nm_device_get_initial_hw_address(NMDevice *self)
|
|
||||||
return NM_DEVICE_GET_PRIVATE(self)->hw_addr_initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
-nm_device_set_autoconnect_retries(NMDevice *self, int tries)
|
|
||||||
-{
|
|
||||||
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
|
||||||
-
|
|
||||||
- if (priv->autoconnect_retries != tries) {
|
|
||||||
- _LOGT(LOGD_DEVICE, "autoconnect: retries set %d", tries);
|
|
||||||
- priv->autoconnect_retries = tries;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (tries)
|
|
||||||
- priv->autoconnect_retries_blocked_until = 0; /* we are not blocked anymore */
|
|
||||||
- else
|
|
||||||
- priv->autoconnect_retries_blocked_until =
|
|
||||||
- nm_utils_get_monotonic_timestamp_sec() + AUTOCONNECT_RESET_RETRIES_TIMER;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-int
|
|
||||||
-nm_device_get_autoconnect_retries(NMDevice *self)
|
|
||||||
-{
|
|
||||||
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
|
||||||
-
|
|
||||||
- return priv->autoconnect_retries;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-gint32
|
|
||||||
-nm_device_autoconnect_retries_blocked_until(NMDevice *self)
|
|
||||||
-{
|
|
||||||
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
|
||||||
-
|
|
||||||
- return priv->autoconnect_retries_blocked_until;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void
|
|
||||||
-nm_device_autoconnect_retries_reset(NMDevice *self)
|
|
||||||
-{
|
|
||||||
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
|
||||||
-
|
|
||||||
- /* default value, we will sync. with connection value when needed */
|
|
||||||
- priv->autoconnect_retries = -2;
|
|
||||||
- priv->autoconnect_retries_blocked_until = 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/**
|
|
||||||
* nm_device_spec_match_list:
|
|
||||||
* @self: an #NMDevice
|
|
||||||
@@ -17742,8 +17694,6 @@ nm_device_init(NMDevice *self)
|
|
||||||
priv->sys_iface_state_ = NM_DEVICE_SYS_IFACE_STATE_EXTERNAL;
|
|
||||||
|
|
||||||
priv->promisc_reset = NM_OPTION_BOOL_DEFAULT;
|
|
||||||
-
|
|
||||||
- priv->autoconnect_retries = -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GObject *
|
|
||||||
diff --git a/src/core/devices/nm-device.h b/src/core/devices/nm-device.h
|
|
||||||
index 4234788e7eb4..64e484360be3 100644
|
|
||||||
--- a/src/core/devices/nm-device.h
|
|
||||||
+++ b/src/core/devices/nm-device.h
|
|
||||||
@@ -466,11 +466,6 @@ const char *nm_device_get_permanent_hw_address_full(NMDevice *self,
|
|
||||||
gboolean *out_is_fake);
|
|
||||||
const char *nm_device_get_initial_hw_address(NMDevice *dev);
|
|
||||||
|
|
||||||
-void nm_device_set_autoconnect_retries(NMDevice *self, int tries);
|
|
||||||
-int nm_device_get_autoconnect_retries(NMDevice *self);
|
|
||||||
-gint32 nm_device_autoconnect_retries_blocked_until(NMDevice *self);
|
|
||||||
-void nm_device_autoconnect_retries_reset(NMDevice *self);
|
|
||||||
-
|
|
||||||
NMDhcpConfig *nm_device_get_dhcp_config(NMDevice *dev, int addr_family);
|
|
||||||
|
|
||||||
NML3Cfg *nm_device_get_l3cfg(NMDevice *self);
|
|
||||||
diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c
|
|
||||||
index 09e1ee8a20f1..4192808a7bd3 100644
|
|
||||||
--- a/src/core/nm-policy.c
|
|
||||||
+++ b/src/core/nm-policy.c
|
|
||||||
@@ -1591,7 +1591,6 @@ nm_policy_unblock_failed_ovs_interfaces(NMPolicy *self)
|
|
||||||
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
||||||
NMSettingsConnection *const *connections = NULL;
|
|
||||||
guint i;
|
|
||||||
- gboolean multiconnect = FALSE;
|
|
||||||
|
|
||||||
_LOGT(LOGD_DEVICE, "unblocking failed OVS interfaces");
|
|
||||||
|
|
||||||
@@ -1599,13 +1598,6 @@ nm_policy_unblock_failed_ovs_interfaces(NMPolicy *self)
|
|
||||||
for (i = 0; connections[i]; i++) {
|
|
||||||
NMSettingsConnection *sett_conn = connections[i];
|
|
||||||
NMConnection *connection = nm_settings_connection_get_connection(sett_conn);
|
|
||||||
- NMSettingConnection *s_con = nm_connection_get_setting_connection(connection);
|
|
||||||
-
|
|
||||||
- /* Check if any connection is connect multiple */
|
|
||||||
- if (s_con
|
|
||||||
- && nm_setting_connection_get_multi_connect(s_con)
|
|
||||||
- == NM_CONNECTION_MULTI_CONNECT_MULTIPLE)
|
|
||||||
- multiconnect = TRUE;
|
|
||||||
|
|
||||||
if (nm_connection_get_setting_ovs_interface(connection)) {
|
|
||||||
nm_settings_connection_autoconnect_retries_reset(sett_conn);
|
|
||||||
@@ -1615,18 +1607,6 @@ nm_policy_unblock_failed_ovs_interfaces(NMPolicy *self)
|
|
||||||
FALSE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- /* There is, at least, one multiconnect connection with an OVS setting.
|
|
||||||
- * Let's check the OVS devices retries */
|
|
||||||
- if (multiconnect) {
|
|
||||||
- NMDevice *device;
|
|
||||||
- GHashTableIter h_iter;
|
|
||||||
- g_hash_table_iter_init(&h_iter, priv->devices);
|
|
||||||
- while (g_hash_table_iter_next(&h_iter, (gpointer *) &device, NULL)) {
|
|
||||||
- if (nm_device_get_device_type(device) == NM_DEVICE_TYPE_OVS_INTERFACE)
|
|
||||||
- nm_device_autoconnect_retries_reset(device);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
@@ -1638,8 +1618,7 @@ reset_autoconnect_all(
|
|
||||||
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
||||||
NMSettingsConnection *const *connections = NULL;
|
|
||||||
guint i;
|
|
||||||
- gboolean changed = FALSE;
|
|
||||||
- gboolean multiconnect = FALSE;
|
|
||||||
+ gboolean changed = FALSE;
|
|
||||||
|
|
||||||
_LOGD(LOGD_DEVICE,
|
|
||||||
"re-enabling autoconnect for all connections%s%s%s",
|
|
||||||
@@ -1650,8 +1629,6 @@ reset_autoconnect_all(
|
|
||||||
connections = nm_settings_get_connections(priv->settings, NULL);
|
|
||||||
for (i = 0; connections[i]; i++) {
|
|
||||||
NMSettingsConnection *sett_conn = connections[i];
|
|
||||||
- NMSettingConnection *s_con =
|
|
||||||
- nm_connection_get_setting_connection(nm_settings_connection_get_connection(sett_conn));
|
|
||||||
|
|
||||||
if (device
|
|
||||||
&& !nm_device_check_connection_compatible(
|
|
||||||
@@ -1660,11 +1637,6 @@ reset_autoconnect_all(
|
|
||||||
NULL))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- if (s_con
|
|
||||||
- && nm_setting_connection_get_multi_connect(s_con)
|
|
||||||
- == NM_CONNECTION_MULTI_CONNECT_MULTIPLE)
|
|
||||||
- multiconnect = TRUE;
|
|
||||||
-
|
|
||||||
if (only_no_secrets) {
|
|
||||||
/* we only reset the no-secrets blocked flag. */
|
|
||||||
if (nm_settings_connection_autoconnect_blocked_reason_set(
|
|
||||||
@@ -1693,20 +1665,6 @@ reset_autoconnect_all(
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- /* There is, at least, one multiconnect connection. Let's check the devices retries */
|
|
||||||
- if (multiconnect) {
|
|
||||||
- NMDevice *device_iter;
|
|
||||||
- GHashTableIter h_iter;
|
|
||||||
- g_hash_table_iter_init(&h_iter, priv->devices);
|
|
||||||
- while (g_hash_table_iter_next(&h_iter, (gpointer *) &device_iter, NULL)) {
|
|
||||||
- if (nm_device_get_autoconnect_retries(device_iter) != -2) {
|
|
||||||
- nm_device_autoconnect_retries_reset(device_iter);
|
|
||||||
- changed = TRUE;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
return changed;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1769,8 +1727,7 @@ reset_connections_retries(gpointer user_data)
|
|
||||||
NMSettingsConnection *const *connections = NULL;
|
|
||||||
guint i;
|
|
||||||
gint32 con_stamp, min_stamp, now;
|
|
||||||
- gboolean changed = FALSE;
|
|
||||||
- gboolean multiconnect = FALSE;
|
|
||||||
+ gboolean changed = FALSE;
|
|
||||||
|
|
||||||
priv->reset_retries_id = 0;
|
|
||||||
|
|
||||||
@@ -1779,14 +1736,6 @@ reset_connections_retries(gpointer user_data)
|
|
||||||
connections = nm_settings_get_connections(priv->settings, NULL);
|
|
||||||
for (i = 0; connections[i]; i++) {
|
|
||||||
NMSettingsConnection *connection = connections[i];
|
|
||||||
- NMSettingConnection *s_con =
|
|
||||||
- nm_connection_get_setting_connection(nm_settings_connection_get_connection(connection));
|
|
||||||
-
|
|
||||||
- /* Check if any connection is connect multiple */
|
|
||||||
- if (s_con
|
|
||||||
- && nm_setting_connection_get_multi_connect(s_con)
|
|
||||||
- == NM_CONNECTION_MULTI_CONNECT_MULTIPLE)
|
|
||||||
- multiconnect = TRUE;
|
|
||||||
|
|
||||||
con_stamp = nm_settings_connection_autoconnect_retries_blocked_until(connection);
|
|
||||||
if (con_stamp == 0)
|
|
||||||
@@ -1799,25 +1748,6 @@ reset_connections_retries(gpointer user_data)
|
|
||||||
min_stamp = con_stamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* There is, at least, one multiconnect connection. Let's check the devices retries */
|
|
||||||
- if (multiconnect) {
|
|
||||||
- NMDevice *device;
|
|
||||||
- GHashTableIter h_iter;
|
|
||||||
- g_hash_table_iter_init(&h_iter, priv->devices);
|
|
||||||
- while (g_hash_table_iter_next(&h_iter, (gpointer *) &device, NULL)) {
|
|
||||||
- con_stamp = nm_device_autoconnect_retries_blocked_until(device);
|
|
||||||
-
|
|
||||||
- /* default value in device is -2, which means, we do not care */
|
|
||||||
- if (con_stamp <= 0)
|
|
||||||
- continue;
|
|
||||||
- if (con_stamp <= now) {
|
|
||||||
- nm_device_autoconnect_retries_reset(device);
|
|
||||||
- changed = TRUE;
|
|
||||||
- } else if (min_stamp == 0 || min_stamp > con_stamp)
|
|
||||||
- min_stamp = con_stamp;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
/* Schedule the handler again if there are some stamps left */
|
|
||||||
if (min_stamp != 0)
|
|
||||||
priv->reset_retries_id =
|
|
||||||
@@ -1831,31 +1761,21 @@ reset_connections_retries(gpointer user_data)
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-_connection_autoconnect_retries_set(NMPolicy *self,
|
|
||||||
- NMSettingsConnection *connection,
|
|
||||||
- NMDevice *device,
|
|
||||||
- int tries)
|
|
||||||
+_connection_autoconnect_retries_set(NMPolicy *self, NMSettingsConnection *connection, int tries)
|
|
||||||
{
|
|
||||||
- NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
||||||
- NMSettingConnection *s_con;
|
|
||||||
- gint32 retry_time;
|
|
||||||
+ NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
||||||
|
|
||||||
nm_assert(NM_IS_SETTINGS_CONNECTION(connection));
|
|
||||||
nm_assert(tries >= 0);
|
|
||||||
|
|
||||||
- s_con = nm_connection_get_setting_connection(nm_settings_connection_get_connection(connection));
|
|
||||||
- if (s_con
|
|
||||||
- && nm_setting_connection_get_multi_connect(s_con) == NM_CONNECTION_MULTI_CONNECT_MULTIPLE) {
|
|
||||||
- nm_device_set_autoconnect_retries(device, tries);
|
|
||||||
- retry_time = nm_device_autoconnect_retries_blocked_until(device);
|
|
||||||
- } else {
|
|
||||||
- nm_settings_connection_autoconnect_retries_set(connection, tries);
|
|
||||||
- retry_time = nm_settings_connection_autoconnect_retries_blocked_until(connection);
|
|
||||||
- }
|
|
||||||
+ nm_settings_connection_autoconnect_retries_set(connection, tries);
|
|
||||||
|
|
||||||
if (tries == 0) {
|
|
||||||
/* Schedule a handler to reset retries count */
|
|
||||||
if (!priv->reset_retries_id) {
|
|
||||||
+ gint32 retry_time =
|
|
||||||
+ nm_settings_connection_autoconnect_retries_blocked_until(connection);
|
|
||||||
+
|
|
||||||
g_warn_if_fail(retry_time != 0);
|
|
||||||
priv->reset_retries_id =
|
|
||||||
g_timeout_add_seconds(MAX(0, retry_time - nm_utils_get_monotonic_timestamp_sec()),
|
|
||||||
@@ -2117,25 +2037,13 @@ device_state_changed(NMDevice *device,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!blocked) {
|
|
||||||
- s_con = nm_connection_get_setting_connection(
|
|
||||||
- nm_settings_connection_get_connection(sett_conn));
|
|
||||||
- if (s_con
|
|
||||||
- && nm_setting_connection_get_multi_connect(s_con)
|
|
||||||
- == NM_CONNECTION_MULTI_CONNECT_MULTIPLE) {
|
|
||||||
- if (nm_device_get_autoconnect_retries(device) == -2)
|
|
||||||
- nm_device_set_autoconnect_retries(
|
|
||||||
- device,
|
|
||||||
- nm_settings_connection_autoconnect_retries_get(sett_conn));
|
|
||||||
-
|
|
||||||
- tries = nm_device_get_autoconnect_retries(device);
|
|
||||||
- } else
|
|
||||||
- tries = nm_settings_connection_autoconnect_retries_get(sett_conn);
|
|
||||||
+ tries = nm_settings_connection_autoconnect_retries_get(sett_conn);
|
|
||||||
if (tries > 0) {
|
|
||||||
_LOGD(LOGD_DEVICE,
|
|
||||||
"connection '%s' failed to autoconnect; %d tries left",
|
|
||||||
nm_settings_connection_get_id(sett_conn),
|
|
||||||
tries - 1);
|
|
||||||
- _connection_autoconnect_retries_set(self, sett_conn, device, tries - 1);
|
|
||||||
+ _connection_autoconnect_retries_set(self, sett_conn, tries - 1);
|
|
||||||
} else if (tries != 0) {
|
|
||||||
_LOGD(LOGD_DEVICE,
|
|
||||||
"connection '%s' failed to autoconnect; infinite tries left",
|
|
||||||
--
|
|
||||||
2.38.1
|
|
||||||
|
|
@ -4,9 +4,9 @@
|
|||||||
%global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad)
|
%global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad)
|
||||||
|
|
||||||
%global epoch_version 1
|
%global epoch_version 1
|
||||||
%global real_version 1.41.7
|
%global real_version 1.41.8
|
||||||
%global rpm_version %{real_version}
|
%global rpm_version %{real_version}
|
||||||
%global release_version 2
|
%global release_version 1
|
||||||
%global snapshot %{nil}
|
%global snapshot %{nil}
|
||||||
%global git_sha %{nil}
|
%global git_sha %{nil}
|
||||||
%global bcond_default_debug 0
|
%global bcond_default_debug 0
|
||||||
@ -194,7 +194,6 @@ Source7: readme-ifcfg-rh.txt
|
|||||||
|
|
||||||
# Bugfixes that are only relevant until next rebase of the package.
|
# Bugfixes that are only relevant until next rebase of the package.
|
||||||
# Patch1001: 1001-some.patch
|
# Patch1001: 1001-some.patch
|
||||||
Patch1001: 1001-Revert-policy-track-the-autoconnect-retries-in-devic.patch
|
|
||||||
|
|
||||||
Requires(post): systemd
|
Requires(post): systemd
|
||||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||||
@ -1230,6 +1229,12 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jan 11 2023 Beniamino Galvani <bgalvani@redhat.com> - 1:1.41.8-1
|
||||||
|
- Update to 1.41.8 release (development)
|
||||||
|
- core: add support for equal-cost multi-path (ECMP) routes (rh #2081302)
|
||||||
|
- device: preserve the DHCP lease during reapply (rh #2117352)
|
||||||
|
- ovs: add support for 'other_config' settings (rh #2151455)
|
||||||
|
|
||||||
* Wed Dec 21 2022 Thomas Haller <thaller@redhat.com> - 1:1.41.7-2
|
* Wed Dec 21 2022 Thomas Haller <thaller@redhat.com> - 1:1.41.7-2
|
||||||
- core: avoid infinite autoconnect with multi-connect profiles (rh #2150000)
|
- core: avoid infinite autoconnect with multi-connect profiles (rh #2150000)
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (NetworkManager-1.41.7.tar.xz) = c7101b2767572d34b507d94b550729011f023e9ca8d8845b0613cb29cf9747fc3709ceb531d7e26aad08de99334de9079936108bc460d17061c562e6b45919b7
|
SHA512 (NetworkManager-1.41.8.tar.xz) = 5c4595e86c5f92b5e184a769e62041bbffcb2e801852241595831c9bca9b9de97a3cc0b35196296cd9f5d148e1230b7bdb32bb300db37aeaf784e4f34488bd1a
|
||||||
|
Loading…
Reference in New Issue
Block a user