mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 08:20:08 +01: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;
|
||||
NMConnectionMultiConnect multi_connect;
|
||||
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_ACTIVE_CONNECTION(active), FALSE);
|
||||
|
|
@ -5892,6 +5893,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
|||
nm_device_get_iface(device));
|
||||
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'",
|
||||
nm_settings_connection_get_id(controller_connection),
|
||||
nm_settings_connection_get_id(sett_conn));
|
||||
return FALSE;
|
||||
goto err_unrealize;
|
||||
}
|
||||
|
||||
if (!controller_ac) {
|
||||
|
|
@ -5946,7 +5948,7 @@ _internal_activate_device(NMManager *self, NMActiveConnection *active, GError **
|
|||
"Controller connection '%s' can't be activated: ",
|
||||
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_DEPENDENCY_FAILED,
|
||||
"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);
|
||||
nm_device_queue_activation(device, NM_ACT_REQUEST(active));
|
||||
return TRUE;
|
||||
|
||||
err_unrealize:
|
||||
if (did_realize)
|
||||
nm_device_unrealize(device, TRUE, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue