]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu-migration: prevent migration if slirp cannot be migrated
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 8 Aug 2019 14:55:09 +0000 (18:55 +0400)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 6 Sep 2019 10:47:47 +0000 (12:47 +0200)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_migration.c

index d1553b126a4dd517481b4160eb8f2e4b29909a59..3c45ba35e6a536246dbb8176f163c0f488688c3a 100644 (file)
@@ -39,6 +39,7 @@
 #include "qemu_hotplug.h"
 #include "qemu_blockjob.h"
 #include "qemu_security.h"
+#include "qemu_slirp.h"
 #include "qemu_block.h"
 
 #include "domain_audit.h"
@@ -1141,6 +1142,17 @@ qemuMigrationSrcIsAllowed(virQEMUDriverPtr driver,
         return false;
     }
 
+    for (i = 0; i < vm->def->nnets; i++) {
+        virDomainNetDefPtr net = vm->def->nets[i];
+        qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
+
+        if (slirp && !qemuSlirpHasFeature(slirp, QEMU_SLIRP_FEATURE_MIGRATE)) {
+            virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+                           _("a slirp-helper cannot be migrated"));
+            return false;
+        }
+    }
+
     /* following checks don't make sense for offline migration */
     if (!(flags & VIR_MIGRATE_OFFLINE)) {
         if (qemuProcessAutoDestroyActive(driver, vm)) {