From patchwork Fri Jul 21 14:49:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Het Gala X-Patchwork-Id: 13322099 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D7539C0015E for ; Fri, 21 Jul 2023 14:50:15 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qMrRq-00033N-6v; Fri, 21 Jul 2023 10:49:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qMrRl-0002nR-7l for qemu-devel@nongnu.org; Fri, 21 Jul 2023 10:49:35 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qMrRj-0004mT-Bf for qemu-devel@nongnu.org; Fri, 21 Jul 2023 10:49:33 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 36LCwD6q029460; Fri, 21 Jul 2023 07:49:30 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= from:to:cc:subject:date:message-id:references:in-reply-to :content-type:content-id:content-transfer-encoding:mime-version; s=proofpoint20171006; bh=LdFPeWHVioB1e7qZ7C2aafcMAQvP9Z+ahpshtJ 0ONDQ=; b=Pr8poepAKrOprH5Xib/yK6e/i1OatkL9z7Y3wcW6PA5enR8EwFcyNQ ycgO30LbK8r/uOGQapPQQy9slGx/nftVp7ZL2vci1Df5eMqOMgLhfzF4fC6wmT54 8Rh6P4GbTH+lmd+h+4oCZ8zJZiWr0s6n0zkmqISVOQ+g0uAjoTeh59FHmWjDeYud YLnn0icAEQK+WvbwLF5XdEUIC7rKfbU7RlIENSXM9y4BZsey4K1kzvYHyqMhgrOa 9r4HPfZhhdsZykael9WouVLWARjyAbudKziz4ETUOIk2DI5/4e+qR30pRS9fcPR+ RWex6lkoQTqANDAP7vnEJ2KioDARFwEw== Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2046.outbound.protection.outlook.com [104.47.51.46]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3rx319phvm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Jul 2023 07:49:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NZIfhVDxMKPcauGgWMkXZf2yx7JKgkNl/mzCuQ2o+EQlsJagIqRY00puLTLz850EABgHJn8VPmb7WgIjOvwKSDqK8AgTTpF/bno/hcG+ckRySpByjhmt8uNYD5h3OvVbE05SZDf2IHkpFXnu9yVDpspmaLGX+0qDhOSInCjeWuClXfEN1LPPmpsXgKSM2pjVuk1UqV5QNuo1n4byRNFmHoUBBOk5FtC70HevVNU1r4LiEhi1mpnuaROk8Dky0mn1Ducpm4uY0dcIpIQR3+byvdarVH3fy/hDfrrMIIJ12gXpUsZZyc8ZN1I44e86nx0SYDXKAoQO6W1SApQQGgSrLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LdFPeWHVioB1e7qZ7C2aafcMAQvP9Z+ahpshtJ0ONDQ=; b=NljYJvv78XS2bZMniKxjZ+ccp25Jf9VuN3i8GV07mTQA5NqZP4nzEjpAKYVqkm+mjFIF9JPCL/N+B5DXNHke10yhWZzoKzfWUICTxTWNKtp9IA4+Bwh50a6CLf81fZR3Ibj2jBA+q6xsx3VHLuXwZLgsfNU7t/2aICqqrX7yiFK8zSwDBGeY2pdAEQDyhY6dS8W4WQXefaj5P/Sh3Ov3Ha3BidAm+s809wjwqSagcAdQl846oeDAk9qxnMQW1cjzDoSLH1yCkiiLkOv6KvgeG6/GyT3c7K6wasW5loSvmbtEmnYtYJkNReGfEprAKM1OfJCdMIm8vMU7J73n/zf06g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LdFPeWHVioB1e7qZ7C2aafcMAQvP9Z+ahpshtJ0ONDQ=; b=Q2gKN3dcSX+esTKPfguoxI6K7Hz6Wvdr1RYdpzaYoycYXL/tCAwGV/zPB/sGH1Uzox/p9xOzPcVYg4CIxDszjfCGtoWhkhKlMrYtgncdJXNeR7ZFB9KnB4zQbK4DJYS9pXtSLF+UYJeMPGCBjGizx4/nmLRPAjYJJuioJjhOj7dNrRvuxluSTkw7bVNq1ycowaCqhhtRL6hA089JPIDASDawCcINxQq0WMnlpmT85/S8Ybqwz7yig6p9jPIdSRQePsHUbB1PBsuX0svAAHuZKLPYF9nDa9cUKXwjeJoyc4aGJvokFBTjnRj1g/kGWHyAg9EU1GYrdP81fVseSZ7qEA== Received: from BYAPR02MB4343.namprd02.prod.outlook.com (2603:10b6:a03:57::18) by SA2PR02MB7561.namprd02.prod.outlook.com (2603:10b6:806:140::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.24; Fri, 21 Jul 2023 14:49:27 +0000 Received: from BYAPR02MB4343.namprd02.prod.outlook.com ([fe80::89a1:d75c:813:618e]) by BYAPR02MB4343.namprd02.prod.outlook.com ([fe80::89a1:d75c:813:618e%7]) with mapi id 15.20.6609.022; Fri, 21 Jul 2023 14:49:27 +0000 From: Het Gala To: "qemu-devel@nongnu.org" CC: Prerna Saxena , "quintela@redhat.com" , "dgilbert@redhat.com" , "pbonzini@redhat.com" , "berrange@redhat.com" , "armbru@redhat.com" , "eblake@redhat.com" , Manish Mishra , Aravind Retnakaran , Het Gala Subject: [PATCH v9 04/10] migration: convert rdma backend to accept MigrateAddress Thread-Topic: [PATCH v9 04/10] migration: convert rdma backend to accept MigrateAddress Thread-Index: Adm74oxc2BvHNvUF/UiT5VPJngsiqw== Date: Fri, 21 Jul 2023 14:49:27 +0000 Message-ID: <20230721144914.170991-5-het.gala@nutanix.com> References: <20230721144914.170991-1-het.gala@nutanix.com> In-Reply-To: <20230721144914.170991-1-het.gala@nutanix.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: PH0P220CA0028.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::17) To BYAPR02MB4343.namprd02.prod.outlook.com (2603:10b6:a03:57::18) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BYAPR02MB4343:EE_|SA2PR02MB7561:EE_ x-ms-office365-filtering-correlation-id: 7feff78c-f31a-4c6d-9e09-08db89f9aedb x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4vpSAAJ9D7EXPH2tfWJdIvcsPuXMueTw041EpipEDAwlxcEC0uhDk2D0raajP45i2OEqQ+wnjI3dpPBWXSB6iBRvNlTHsUBwDsPlVAPgd0PFPQzee/qd0jFJGm5aKaILWbGUXnLj4Wew6lDFi9r0ViAIZ6uY5dNyMzO8iUW47VzzHW1MqWps04tmNGqCn1JkLKSULoEqQispWcfJwFWvVLe9lsLXuBejtUhEGdNXr7shWIMVTeckfnenuj+DuRQABwGIeGfYoCUQzjvURd4A8CpM9/lxLTaHUWp/a5Sx2K/TnXaxFRuDyGIkikY/7Y7d0Y8fmgEyJErW6Majy484/jRW+XA8MD9AyRNWPwhOpHL3Tpg/CkaIHwppW1cj515hg9+vre9yuJOZk4hwJNtjYUJu7bGywm8H7iN4MI1HVUuCCYeeD1mpX3YarE5Ti0OlVlXobDXw9xkrOvjcd8q2mRYUQ+j6MR2K4TWyAmOy8QmJyPbsSJFZW1GcmO0wJ1e/DZnNqxj1DIm+3XSdIVQV4aOPi9G6eBrSurT5g7GDS1dp+Nt+KrL9EB/5ldgMuVGu6XwVxNqHw3268xQaiIgakMdC1hc7G8PvlXoVN/fiSQSS0bhfjtCDPtgMOC6gpdUe x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR02MB4343.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(39860400002)(366004)(376002)(136003)(346002)(451199021)(2616005)(6486002)(52116002)(6512007)(71200400001)(478600001)(86362001)(26005)(1076003)(107886003)(6506007)(36756003)(5660300002)(4326008)(44832011)(6916009)(41300700001)(8936002)(8676002)(316002)(2906002)(122000001)(38100700002)(54906003)(64756008)(66476007)(66556008)(66446008)(66946007)(38350700002)(186003)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?GKctlElpkrBtlHRszBkTzmm8vEYT?= =?utf-8?q?VYH6l8L6WBB/LLU19RusPevgSw/gGFTWEKz7Llu0fZc/E7/zfCGvlzAz+LqKejqpJ?= =?utf-8?q?a1K5XTnOC6Kt+/2NlO1aEA839MMRfLRg8Qbee0/rscRUlNQJWzXtAMJhRPm3Bwgt4?= =?utf-8?q?Du33vrgTT+W14g5sztilpFBjU2fWPj8+ojIhMgUKPHKEaiFWO7yd3zO8vi5H7E9uC?= =?utf-8?q?s9b/eZUHZpuI7Mr7QVRAWYCa8MgnFjiarkSiGyAGz3ydNkI5+61+wPUCYZzTzcf5X?= =?utf-8?q?RkJNM3rI5tPcfL4UrLzCTrghEVSIogf9DPZBBzKtZ0bSNsK4hm5CgMTMDd3Tl8kyO?= =?utf-8?q?9j6k2npfIwUbJ17P9ZW2qtlFD1chQzrBeolk0CKCQISJY6ed939wBeQK/5xGCrwGV?= =?utf-8?q?F/khJRyq1L7xhJ5c74v4+AOhTYNhhgT4BQG/n9IfWJLoJI73CeZr6GOvBE0NyNk+a?= =?utf-8?q?HoKxsZMlZLiJQpnoyfXEZpBjnFm2A7IEWktA5SdKO5pRuJmJhKjga42AxiG17wxuV?= =?utf-8?q?872Wkx4LVRGZmfQbn1f7+MH8z89pT4u/wSgM73wR3Ab79h/x8y7I5nTKahtisPQYP?= =?utf-8?q?xIyaZiOpMl5nfw+MES9ICRcXElsIh9aHxhJPNFaXqgjNueHwAyolIm1iRIJuPWraM?= =?utf-8?q?dvt1adkATWeM6506mcDLVAtYYHhoQPfSns7ZFa/AijpbHeqqAycw+vkXiq/+UWNk/?= =?utf-8?q?S6U74JmGn/TT4M63JGRgudPQDvTq0wFGRLcTe+I7N4Otuwsef/eLEZBVl50XNtMIr?= =?utf-8?q?QLJfG1qyCihUb2A+YDswbxx6FPvqthQzeWlL3cM/omQ5bVIMXcZZw+MffwGoqbAbV?= =?utf-8?q?SGFqkJvwD7NDgG4LTfyyWnlg42vR3CN9R7UioAIxIjFVzqo/MrZHFnkOknWJZ//7z?= =?utf-8?q?56x2ZZYF6W5U2x4+vSlMXqZuPYGaCaZr4O9yh+d69CifIacLkVqUb4cNm6IIObc8s?= =?utf-8?q?m9ooYQyAPhdOtN2gPK5QrGEggNvBq1+6hjZIQnwWaoCyn/i0/T1uO8rvC5urPGCEV?= =?utf-8?q?VRRk3mEgnPzjkCtdzJo+fVF+3dKRXqxj6Tj/5iL/HLGsUE/3wOlc0LiIGy+a7huai?= =?utf-8?q?S/7x26+KSsiOSREWkfeNUK+p0GmXv/hqKwxxtHTrIUJX12qc3nqt26E1am8AJvbx1?= =?utf-8?q?kLjYmrgZ8lV5L9/MnNKj2ygutaEvJ8bhqFT+huMrAUi1XjDcnT6l87q/nGk85ngnH?= =?utf-8?q?49RZBNnPVa8C/1V6k1zJIlWOQC+uBD3kkEAUvxJvkROyIVo1oFt8QznnEk6LNpp4Y?= =?utf-8?q?vMn3wFN5tVIVmyR/YON8vODauoLmA2UUOKyImLnZS69EorcUFOBH0AyYYhvIk8vJe?= =?utf-8?q?oPwjSm6Wb6hcAhtk+g2W1Oq42ZejErJHgMYB4mIfbC7m6JQ+ne8byt0TGUNqflMgk?= =?utf-8?q?7/vWnpScYCuxTFxiI3getO0Ya1aijbtEVh1Jqaa+K5Ih6JC3LelX8DE+e4qE71D7D?= =?utf-8?q?hklFjkKY5fbtWsit9aY+KHLJSZh6ZQlqG02ufCFn+KJGaCdpKBHmjtj9zgL68Wacg?= =?utf-8?q?lFV0acRb7yhxOkvY/wCpS8c3WFCcm+90dw=3D=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR02MB4343.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7feff78c-f31a-4c6d-9e09-08db89f9aedb X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jul 2023 14:49:27.6200 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HcnByRoAt+IAL1iN5tO6XE4qyqQbDTy1B93LhZYybfb86QfcdSBHWfzngP2bAf6ms7QWSRACBpMZbHXJe5NYAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR02MB7561 X-Proofpoint-GUID: UOm6NfzKrNWaoUWfXsZmCb_8dNNKp9l6 X-Proofpoint-ORIG-GUID: UOm6NfzKrNWaoUWfXsZmCb_8dNNKp9l6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-21_09,2023-07-20_01,2023-05-22_02 X-Proofpoint-Spam-Reason: safe Received-SPF: pass client-ip=148.163.151.68; envelope-from=het.gala@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RDMA based transport backend for 'migrate'/'migrate-incoming' QAPIs accept new wire protocol of MigrateAddress struct. It is achived by parsing 'uri' string and storing migration parameters required for RDMA connection into well defined InetSocketAddress struct. Suggested-by: Aravind Retnakaran Signed-off-by: Het Gala Reviewed-by: Daniel P. Berrangé --- migration/migration.c | 8 ++++---- migration/rdma.c | 34 ++++++++++++---------------------- migration/rdma.h | 6 ++++-- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index c4bcf8bbd7..8012f93f1b 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -491,8 +491,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) fd_start_incoming_migration(saddr->u.fd.str, errp); } #ifdef CONFIG_RDMA - } else if (strstart(uri, "rdma:", &p)) { - rdma_start_incoming_migration(p, errp); + } else if (channel->transport == MIGRATION_ADDRESS_TYPE_RDMA) { + rdma_start_incoming_migration(&channel->u.rdma, errp); #endif } else if (strstart(uri, "exec:", &p)) { exec_start_incoming_migration(p, errp); @@ -1728,8 +1728,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, fd_start_outgoing_migration(s, saddr->u.fd.str, &local_err); } #ifdef CONFIG_RDMA - } else if (strstart(uri, "rdma:", &p)) { - rdma_start_outgoing_migration(s, p, &local_err); + } else if (channel->transport == MIGRATION_ADDRESS_TYPE_RDMA) { + rdma_start_outgoing_migration(s, &channel->u.rdma, &local_err); #endif } else if (strstart(uri, "exec:", &p)) { exec_start_outgoing_migration(s, p, &local_err); diff --git a/migration/rdma.c b/migration/rdma.c index dd1c039e6c..4d64fae492 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -319,7 +319,6 @@ typedef struct RDMALocalBlocks { typedef struct RDMAContext { char *host; int port; - char *host_port; RDMAWorkRequestData wr_data[RDMA_WRID_MAX]; @@ -2455,9 +2454,7 @@ static void qemu_rdma_cleanup(RDMAContext *rdma) rdma->channel = NULL; } g_free(rdma->host); - g_free(rdma->host_port); rdma->host = NULL; - rdma->host_port = NULL; } @@ -2739,28 +2736,17 @@ static void qemu_rdma_return_path_dest_init(RDMAContext *rdma_return_path, rdma_return_path->is_return_path = true; } -static void *qemu_rdma_data_init(const char *host_port, Error **errp) +static void *qemu_rdma_data_init(InetSocketAddress *saddr, Error **errp) { RDMAContext *rdma = NULL; - InetSocketAddress *addr; - if (host_port) { + if (saddr) { rdma = g_new0(RDMAContext, 1); rdma->current_index = -1; rdma->current_chunk = -1; - addr = g_new(InetSocketAddress, 1); - if (!inet_parse(addr, host_port, NULL)) { - rdma->port = atoi(addr->port); - rdma->host = g_strdup(addr->host); - rdma->host_port = g_strdup(host_port); - } else { - ERROR(errp, "bad RDMA migration address '%s'", host_port); - g_free(rdma); - rdma = NULL; - } - - qapi_free_InetSocketAddress(addr); + rdma->host = g_strdup(saddr->host); + rdma->port = atoi(saddr->port); } return rdma; @@ -3359,6 +3345,7 @@ static int qemu_rdma_accept(RDMAContext *rdma) .private_data_len = sizeof(cap), }; RDMAContext *rdma_return_path = NULL; + g_autoptr(InetSocketAddress) isock = g_new0(InetSocketAddress, 1); struct rdma_cm_event *cm_event; struct ibv_context *verbs; int ret = -EINVAL; @@ -3374,13 +3361,16 @@ static int qemu_rdma_accept(RDMAContext *rdma) goto err_rdma_dest_wait; } + isock->host = rdma->host; + isock->port = g_strdup_printf("%d", rdma->port); + /* * initialize the RDMAContext for return path for postcopy after first * connection request reached. */ if ((migrate_postcopy() || migrate_return_path()) && !rdma->is_return_path) { - rdma_return_path = qemu_rdma_data_init(rdma->host_port, NULL); + rdma_return_path = qemu_rdma_data_init(isock, NULL); if (rdma_return_path == NULL) { rdma_ack_cm_event(cm_event); goto err_rdma_dest_wait; @@ -4113,7 +4103,8 @@ static void rdma_accept_incoming_migration(void *opaque) } } -void rdma_start_incoming_migration(const char *host_port, Error **errp) +void rdma_start_incoming_migration(InetSocketAddress *host_port, + Error **errp) { int ret; RDMAContext *rdma; @@ -4159,13 +4150,12 @@ err: error_propagate(errp, local_err); if (rdma) { g_free(rdma->host); - g_free(rdma->host_port); } g_free(rdma); } void rdma_start_outgoing_migration(void *opaque, - const char *host_port, Error **errp) + InetSocketAddress *host_port, Error **errp) { MigrationState *s = opaque; RDMAContext *rdma_return_path = NULL; diff --git a/migration/rdma.h b/migration/rdma.h index de2ba09dc5..ee89296555 100644 --- a/migration/rdma.h +++ b/migration/rdma.h @@ -14,12 +14,14 @@ * */ +#include "qemu/sockets.h" + #ifndef QEMU_MIGRATION_RDMA_H #define QEMU_MIGRATION_RDMA_H -void rdma_start_outgoing_migration(void *opaque, const char *host_port, +void rdma_start_outgoing_migration(void *opaque, InetSocketAddress *host_port, Error **errp); -void rdma_start_incoming_migration(const char *host_port, Error **errp); +void rdma_start_incoming_migration(InetSocketAddress *host_port, Error **errp); #endif