137 lines
6.0 KiB
Diff
137 lines
6.0 KiB
Diff
From d1545823e467aec816ed0073c4eec1bec669e98f Mon Sep 17 00:00:00 2001
|
|
From: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
|
Date: Wed, 12 Feb 2025 10:58:39 +0100
|
|
Subject: [PATCH] policy: always reset retries when unblocking children or
|
|
ports
|
|
|
|
When calling activate_port_or_children_connections() we are unblocking
|
|
the ports and children but we are not resetting the number of retries if
|
|
it is an internal activation.
|
|
|
|
This is wrong as even if it's an internal activation the number of
|
|
retries should be reset. It won't interferfe with other blocking reasons
|
|
like USER_REQUESTED or MISSING_SECRETS.
|
|
|
|
(cherry picked from commit 7acc66699af9a1546c602082b6994b98cfea7c80)
|
|
(cherry picked from commit 2daeef668d7d1e31d6165b89ef4222ce51ddeb89)
|
|
(cherry picked from commit 52ed8567e2084a21727ac89c26dcd110be19c35a)
|
|
(cherry picked from commit b870c94a4c319d1927f01107e01590c6ccc8342a)
|
|
---
|
|
src/core/nm-policy.c | 33 +++++++++------------------------
|
|
1 file changed, 9 insertions(+), 24 deletions(-)
|
|
|
|
diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c
|
|
index 93b52526a2..e01a13fb8b 100644
|
|
--- a/src/core/nm-policy.c
|
|
+++ b/src/core/nm-policy.c
|
|
@@ -1873,8 +1873,7 @@ unblock_autoconnect_for_children(NMPolicy *self,
|
|
const char *parent_device,
|
|
const char *parent_uuid_settings,
|
|
const char *parent_uuid_applied,
|
|
- const char *parent_mac_addr,
|
|
- gboolean reset_devcon_autoconnect)
|
|
+ const char *parent_mac_addr)
|
|
{
|
|
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
NMSettingsConnection *const *connections;
|
|
@@ -1915,10 +1914,8 @@ unblock_autoconnect_for_children(NMPolicy *self,
|
|
parent_mac_addr))
|
|
continue;
|
|
|
|
- if (reset_devcon_autoconnect) {
|
|
- if (nm_manager_devcon_autoconnect_retries_reset(priv->manager, NULL, sett_conn))
|
|
- changed = TRUE;
|
|
- }
|
|
+ if (nm_manager_devcon_autoconnect_retries_reset(priv->manager, NULL, sett_conn))
|
|
+ changed = TRUE;
|
|
|
|
/* unblock the devices associated with that connection */
|
|
if (nm_manager_devcon_autoconnect_blocked_reason_set(
|
|
@@ -1940,8 +1937,7 @@ static void
|
|
unblock_autoconnect_for_ports(NMPolicy *self,
|
|
const char *controller_device,
|
|
const char *controller_uuid_settings,
|
|
- const char *controller_uuid_applied,
|
|
- gboolean reset_devcon_autoconnect)
|
|
+ const char *controller_uuid_applied)
|
|
{
|
|
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
|
|
NMSettingsConnection *const *connections;
|
|
@@ -1959,7 +1955,6 @@ unblock_autoconnect_for_ports(NMPolicy *self,
|
|
"\"",
|
|
""));
|
|
|
|
- changed = FALSE;
|
|
connections = nm_settings_get_connections(priv->settings, NULL);
|
|
for (i = 0; connections[i]; i++) {
|
|
NMSettingsConnection *sett_conn = connections[i];
|
|
@@ -1977,10 +1972,8 @@ unblock_autoconnect_for_ports(NMPolicy *self,
|
|
controller_uuid_settings))
|
|
continue;
|
|
|
|
- if (reset_devcon_autoconnect) {
|
|
- if (nm_manager_devcon_autoconnect_retries_reset(priv->manager, NULL, sett_conn))
|
|
- changed = TRUE;
|
|
- }
|
|
+ if (nm_manager_devcon_autoconnect_retries_reset(priv->manager, NULL, sett_conn))
|
|
+ changed = TRUE;
|
|
|
|
/* unblock the devices associated with that connection */
|
|
if (nm_manager_devcon_autoconnect_blocked_reason_set(
|
|
@@ -2015,7 +2008,7 @@ unblock_autoconnect_for_ports_for_sett_conn(NMPolicy *self, NMSettingsConnection
|
|
controller_uuid_settings = nm_setting_connection_get_uuid(s_con);
|
|
controller_device = nm_setting_connection_get_interface_name(s_con);
|
|
|
|
- unblock_autoconnect_for_ports(self, controller_device, controller_uuid_settings, NULL, TRUE);
|
|
+ unblock_autoconnect_for_ports(self, controller_device, controller_uuid_settings, NULL);
|
|
}
|
|
|
|
static void
|
|
@@ -2028,7 +2021,6 @@ activate_port_or_children_connections(NMPolicy *self,
|
|
const char *controller_uuid_applied = NULL;
|
|
const char *parent_mac_addr = NULL;
|
|
NMActRequest *req;
|
|
- gboolean internal_activation = FALSE;
|
|
|
|
controller_device = nm_device_get_iface(device);
|
|
nm_assert(controller_device);
|
|
@@ -2039,7 +2031,6 @@ activate_port_or_children_connections(NMPolicy *self,
|
|
if (req) {
|
|
NMConnection *connection;
|
|
NMSettingsConnection *sett_conn;
|
|
- NMAuthSubject *subject;
|
|
|
|
sett_conn = nm_active_connection_get_settings_connection(NM_ACTIVE_CONNECTION(req));
|
|
if (sett_conn)
|
|
@@ -2051,25 +2042,19 @@ activate_port_or_children_connections(NMPolicy *self,
|
|
|
|
if (nm_streq0(controller_uuid_settings, controller_uuid_applied))
|
|
controller_uuid_applied = NULL;
|
|
-
|
|
- subject = nm_active_connection_get_subject(NM_ACTIVE_CONNECTION(req));
|
|
- internal_activation =
|
|
- subject && (nm_auth_subject_get_subject_type(subject) == NM_AUTH_SUBJECT_TYPE_INTERNAL);
|
|
}
|
|
|
|
if (!activate_children_connections_only) {
|
|
unblock_autoconnect_for_ports(self,
|
|
controller_device,
|
|
controller_uuid_settings,
|
|
- controller_uuid_applied,
|
|
- !internal_activation);
|
|
+ controller_uuid_applied);
|
|
}
|
|
unblock_autoconnect_for_children(self,
|
|
controller_device,
|
|
controller_uuid_settings,
|
|
controller_uuid_applied,
|
|
- parent_mac_addr,
|
|
- !internal_activation);
|
|
+ parent_mac_addr);
|
|
}
|
|
|
|
static gboolean
|
|
--
|
|
2.48.1
|
|
|