summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-02-23 18:15:10 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2017-03-27 21:51:55 +0200
commit52b1f0415d558d02afb62f01c8abac75a2ee245b (patch)
treefaab2249d78e54545b264b45bd997e338bed98b8
parent6e1616ba69e58d52a217d6be36d26e1d4e3fec16 (diff)
downloadNetworkManager-52b1f0415d558d02afb62f01c8abac75a2ee245b.tar.gz
manager: check that slaves connection have a compatible device
When slave connections are autoactivated as dependency to master we don't check if a compatible device is available before trying to activate them, leading to the following failed assertion: nm_act_request_new: assertion 'NM_IS_DEVICE (device)' failed
-rw-r--r--src/nm-manager.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 6c74a770ee..5b749bdcb2 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -2947,6 +2947,7 @@ autoconnect_slaves (NMManager *self,
while (iter) {
NMSettingsConnection *slave_connection = iter->data;
const char *uuid;
+ NMDevice *slave_device;
iter = iter->next;
@@ -2974,6 +2975,20 @@ autoconnect_slaves (NMManager *self,
g_strdup (uuid),
g_free);
+ slave_device = nm_manager_get_best_device_for_connection (self,
+ NM_CONNECTION (slave_connection),
+ FALSE);
+ if (!slave_device) {
+ _LOGD (LOGD_CORE,
+ "will NOT activate slave connection '%s' (%s) as a dependency for master '%s' (%s): "
+ "no compatible device found",
+ nm_settings_connection_get_id (slave_connection),
+ nm_settings_connection_get_uuid (slave_connection),
+ nm_settings_connection_get_id (master_connection),
+ nm_settings_connection_get_uuid (master_connection));
+ continue;
+ }
+
_LOGD (LOGD_CORE, "will activate slave connection '%s' (%s) as a dependency for master '%s' (%s)",
nm_settings_connection_get_id (slave_connection),
nm_settings_connection_get_uuid (slave_connection),
@@ -2985,7 +3000,7 @@ autoconnect_slaves (NMManager *self,
slave_connection,
NULL,
NULL,
- nm_manager_get_best_device_for_connection (self, NM_CONNECTION (slave_connection), FALSE),
+ slave_device,
subject,
NM_ACTIVATION_TYPE_MANAGED,
&local_err);