mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 11:19:16 +02:00
manager: unrealize device again after failure
If the device was realized in _internal_activate_device() and the
activation failed to start, unrealize the device again so that it
doesn't stay around.
Fixes-test: @ovs_delete_connecting_interface
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2263
(cherry picked from commit 7242c478a1)
This commit is contained in:
parent
7e1c72fa63
commit
de46cf1ee9
1 changed files with 10 additions and 3 deletions
|
|
@ -5718,6 +5718,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
GError *local = NULL;
|
GError *local = NULL;
|
||||||
NMConnectionMultiConnect multi_connect;
|
NMConnectionMultiConnect multi_connect;
|
||||||
const char *parent_spec;
|
const char *parent_spec;
|
||||||
|
gboolean did_realize = FALSE;
|
||||||
|
|
||||||
g_return_val_if_fail(NM_IS_MANAGER(self), FALSE);
|
g_return_val_if_fail(NM_IS_MANAGER(self), FALSE);
|
||||||
g_return_val_if_fail(NM_IS_ACTIVE_CONNECTION(active), FALSE);
|
g_return_val_if_fail(NM_IS_ACTIVE_CONNECTION(active), FALSE);
|
||||||
|
|
@ -5892,6 +5893,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
nm_device_get_iface(device));
|
nm_device_get_iface(device));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
did_realize = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5923,7 +5925,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
"The controller connection '%s' is not compatible with '%s'",
|
"The controller connection '%s' is not compatible with '%s'",
|
||||||
nm_settings_connection_get_id(controller_connection),
|
nm_settings_connection_get_id(controller_connection),
|
||||||
nm_settings_connection_get_id(sett_conn));
|
nm_settings_connection_get_id(sett_conn));
|
||||||
return FALSE;
|
goto err_unrealize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!controller_ac) {
|
if (!controller_ac) {
|
||||||
|
|
@ -5946,7 +5948,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
"Controller connection '%s' can't be activated: ",
|
"Controller connection '%s' can't be activated: ",
|
||||||
nm_settings_connection_get_id(controller_connection));
|
nm_settings_connection_get_id(controller_connection));
|
||||||
}
|
}
|
||||||
return FALSE;
|
goto err_unrealize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6040,7 +6042,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
NM_MANAGER_ERROR,
|
NM_MANAGER_ERROR,
|
||||||
NM_MANAGER_ERROR_DEPENDENCY_FAILED,
|
NM_MANAGER_ERROR_DEPENDENCY_FAILED,
|
||||||
"Activation failed because the device is unmanaged");
|
"Activation failed because the device is unmanaged");
|
||||||
return FALSE;
|
goto err_unrealize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6048,6 +6050,11 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
||||||
active_connection_add(self, active);
|
active_connection_add(self, active);
|
||||||
nm_device_queue_activation(device, NM_ACT_REQUEST(active));
|
nm_device_queue_activation(device, NM_ACT_REQUEST(active));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
err_unrealize:
|
||||||
|
if (did_realize)
|
||||||
|
nm_device_unrealize(device, TRUE, NULL);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue