From 9a27da19fd91cc92d445b94b49dad353842b5666 Mon Sep 17 00:00:00 2001
From: eillon <1377437556@qq.com>
Date: Thu, 15 Aug 2024 10:12:00 +0800
Subject: [PATCH] migration: support 'urma' protocol header type

Support a new network communication protocol type 'urma'.
After this patch, we can do migration as this:

    virsh migrate --migrateuri urma://IP

Signed-off-by: eillon <yezhenyu2@huawei.com>
---
 src/qemu/qemu_migration.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index ada8bfecd1..a2cc258e4d 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2229,6 +2229,8 @@ qemuMigrationDstCheckProtocol(virQEMUCaps *qemuCaps,
             return -1;
         }
     } else if (!STRPREFIX(migrateFrom, "tcp") &&
+               !STRPREFIX(migrateFrom, "hcom") &&
+               !STRPREFIX(migrateFrom, "urma") &&
                !STRPREFIX(migrateFrom, "exec") &&
                !STRPREFIX(migrateFrom, "fd") &&
                !STRPREFIX(migrateFrom, "unix") &&
@@ -3790,6 +3792,8 @@ qemuMigrationDstPrepareDirect(virQEMUDriver *driver,
         }
 
         if (STRNEQ(uri->scheme, "tcp") &&
+            STRNEQ(uri->scheme, "hcom") &&
+            STRNEQ(uri->scheme, "urma") &&
             STRNEQ(uri->scheme, "rdma") &&
             STRNEQ(uri->scheme, "unix")) {
             virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
@@ -5206,7 +5210,10 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver,
         /* RDMA and multi-fd migration requires QEMU to connect to the destination
          * itself.
          */
-        if (STREQ(uribits->scheme, "rdma") || (flags & VIR_MIGRATE_PARALLEL))
+        if (STREQ(uribits->scheme, "rdma") ||
+            STREQ(uribits->scheme, "hcom") ||
+            STREQ(uribits->scheme, "urma") ||
+            (flags & VIR_MIGRATE_PARALLEL))
             spec.destType = MIGRATION_DEST_HOST;
         else
             spec.destType = MIGRATION_DEST_CONNECT_HOST;
-- 
2.51.0.windows.1