mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 03:25:20 +00:00
Add a second URI parameter to virDomainMigratePerform3 method
The virDomainMigratePerform3 currently has a single URI parameter whose meaning varies. It is either - A QEMU migration URI (normal migration) - A libvirtd connection URI (peer2peer migration) Unfortunately when using peer2peer migration, without also using tunnelled migration, it is possible that both URIs are required. This adds a second URI parameter to the virDomainMigratePerform3 method, to cope with this scenario. Each parameter how has a fixed meaning. NB, there is no way to actually take advantage of this yet, since virDomainMigrate/virDomainMigrateToURI do not have any way to provide the 2 separate URIs * daemon/remote.c, src/remote/remote_driver.c, src/remote/remote_protocol.x, src/remote_protocol-structs: Add the second URI parameter to perform3 message * src/driver.h, src/libvirt.c, src/libvirt_internal.h: Add the second URI parameter to Perform3 method * src/libvirt_internal.h, src/qemu/qemu_migration.c, src/qemu/qemu_migration.h: Update to handle URIs correctly
This commit is contained in:
parent
7ad4b6b9cc
commit
f9f2d4e147
@ -3292,6 +3292,8 @@ remoteDispatchDomainMigratePerform3(struct qemud_server *server ATTRIBUTE_UNUSED
|
||||
virDomainPtr dom = NULL;
|
||||
char *xmlin;
|
||||
char *dname;
|
||||
char *uri;
|
||||
char *dconnuri;
|
||||
char *cookieout = NULL;
|
||||
int cookieoutlen = 0;
|
||||
int rv = -1;
|
||||
@ -3306,12 +3308,14 @@ remoteDispatchDomainMigratePerform3(struct qemud_server *server ATTRIBUTE_UNUSED
|
||||
|
||||
xmlin = args->xmlin == NULL ? NULL : *args->xmlin;
|
||||
dname = args->dname == NULL ? NULL : *args->dname;
|
||||
uri = args->uri == NULL ? NULL : *args->uri;
|
||||
dconnuri = args->dconnuri == NULL ? NULL : *args->dconnuri;
|
||||
|
||||
if (virDomainMigratePerform3(dom, xmlin,
|
||||
args->cookie_in.cookie_in_val,
|
||||
args->cookie_in.cookie_in_len,
|
||||
&cookieout, &cookieoutlen,
|
||||
args->uri,
|
||||
dconnuri, uri,
|
||||
args->flags, dname, args->resource) < 0)
|
||||
goto cleanup;
|
||||
|
||||
@ -3343,6 +3347,8 @@ remoteDispatchDomainMigrateFinish3(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
virDomainPtr dom = NULL;
|
||||
char *cookieout = NULL;
|
||||
int cookieoutlen = 0;
|
||||
char *uri;
|
||||
char *dconnuri;
|
||||
int rv = -1;
|
||||
|
||||
if (!conn) {
|
||||
@ -3350,11 +3356,14 @@ remoteDispatchDomainMigrateFinish3(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
uri = args->uri == NULL ? NULL : *args->uri;
|
||||
dconnuri = args->dconnuri == NULL ? NULL : *args->dconnuri;
|
||||
|
||||
if (virDomainMigrateFinish3(conn, args->dname,
|
||||
args->cookie_in.cookie_in_val,
|
||||
args->cookie_in.cookie_in_len,
|
||||
&cookieout, &cookieoutlen,
|
||||
args->uri,
|
||||
dconnuri, uri,
|
||||
args->flags,
|
||||
args->cancelled,
|
||||
&dom) < 0)
|
||||
|
@ -581,6 +581,7 @@ typedef int
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -594,6 +595,7 @@ typedef int
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
int cancelled,
|
||||
|
@ -3792,9 +3792,10 @@ virDomainMigrateVersion3(virDomainPtr domain,
|
||||
cookieinlen = cookieoutlen;
|
||||
cookieout = NULL;
|
||||
cookieoutlen = 0;
|
||||
/* dconnuri not relevant in non-P2P modes, so left NULL here */
|
||||
ret = domain->conn->driver->domainMigratePerform3
|
||||
(domain, NULL, cookiein, cookieinlen,
|
||||
&cookieout, &cookieoutlen,
|
||||
&cookieout, &cookieoutlen, NULL,
|
||||
uri, flags, dname, bandwidth);
|
||||
|
||||
/* Perform failed. Make sure Finish doesn't overwrite the error */
|
||||
@ -3822,7 +3823,7 @@ finish:
|
||||
dname = dname ? dname : domain->name;
|
||||
ret = dconn->driver->domainMigrateFinish3
|
||||
(dconn, dname, cookiein, cookieinlen, &cookieout, &cookieoutlen,
|
||||
uri, flags, cancelled, &ddomain);
|
||||
NULL, uri, flags, cancelled, &ddomain);
|
||||
|
||||
/* If ret is 0 then 'ddomain' indicates whether the VM is
|
||||
* running on the dest. If not running, we can restart
|
||||
@ -3877,6 +3878,7 @@ virDomainMigratePeer2Peer (virDomainPtr domain,
|
||||
const char *xmlin,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long bandwidth)
|
||||
{
|
||||
@ -3888,7 +3890,7 @@ virDomainMigratePeer2Peer (virDomainPtr domain,
|
||||
return -1;
|
||||
}
|
||||
|
||||
tempuri = xmlParseURI(uri);
|
||||
tempuri = xmlParseURI(dconnuri);
|
||||
if (!tempuri) {
|
||||
virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
|
||||
virDispatchError(domain->conn);
|
||||
@ -3915,6 +3917,7 @@ virDomainMigratePeer2Peer (virDomainPtr domain,
|
||||
0, /* cookieinlen */
|
||||
NULL, /* cookieoutlen */
|
||||
NULL, /* cookieoutlen */
|
||||
dconnuri,
|
||||
uri,
|
||||
flags,
|
||||
dname,
|
||||
@ -3926,10 +3929,15 @@ virDomainMigratePeer2Peer (virDomainPtr domain,
|
||||
_("Unable to change target guest XML during migration"));
|
||||
return -1;
|
||||
}
|
||||
if (uri) {
|
||||
virLibConnError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Unable to override peer2peer migration URI"));
|
||||
return -1;
|
||||
}
|
||||
return domain->conn->driver->domainMigratePerform(domain,
|
||||
NULL, /* cookie */
|
||||
0, /* cookielen */
|
||||
uri,
|
||||
dconnuri,
|
||||
flags,
|
||||
dname,
|
||||
bandwidth);
|
||||
@ -3968,12 +3976,15 @@ virDomainMigrateDirect (virDomainPtr domain,
|
||||
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
|
||||
VIR_DRV_FEATURE_MIGRATION_V3)) {
|
||||
VIR_DEBUG("Using migration protocol 3");
|
||||
/* dconn URI not relevant in direct migration, since no
|
||||
* target libvirtd is involved */
|
||||
return domain->conn->driver->domainMigratePerform3(domain,
|
||||
xmlin,
|
||||
NULL, /* cookiein */
|
||||
0, /* cookieinlen */
|
||||
NULL, /* cookieoutlen */
|
||||
NULL, /* cookieoutlen */
|
||||
NULL, /* dconnuri */
|
||||
uri,
|
||||
flags,
|
||||
dname,
|
||||
@ -4110,7 +4121,7 @@ virDomainMigrate (virDomainPtr domain,
|
||||
|
||||
VIR_DEBUG("Using peer2peer migration");
|
||||
if (virDomainMigratePeer2Peer(domain, NULL, flags, dname,
|
||||
uri ? uri : dstURI, bandwidth) < 0) {
|
||||
uri ? uri : dstURI, NULL, bandwidth) < 0) {
|
||||
VIR_FREE(dstURI);
|
||||
goto error;
|
||||
}
|
||||
@ -4256,7 +4267,7 @@ virDomainMigrateToURI (virDomainPtr domain,
|
||||
VIR_DRV_FEATURE_MIGRATION_P2P)) {
|
||||
VIR_DEBUG("Using peer2peer migration");
|
||||
if (virDomainMigratePeer2Peer(domain, NULL, flags,
|
||||
dname, duri, bandwidth) < 0)
|
||||
dname, duri, NULL, bandwidth) < 0)
|
||||
goto error;
|
||||
} else {
|
||||
/* No peer to peer migration supported */
|
||||
@ -4758,6 +4769,7 @@ virDomainMigratePerform3(virDomainPtr domain,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -4766,11 +4778,11 @@ virDomainMigratePerform3(virDomainPtr domain,
|
||||
virConnectPtr conn;
|
||||
|
||||
VIR_DOMAIN_DEBUG(domain, "xmlin=%s cookiein=%p, cookieinlen=%d, "
|
||||
"cookieout=%p, cookieoutlen=%p, "
|
||||
"cookieout=%p, cookieoutlen=%p, dconnuri=%s, "
|
||||
"uri=%s, flags=%lu, dname=%s, bandwidth=%lu",
|
||||
NULLSTR(xmlin), cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
uri, flags, NULLSTR(dname), bandwidth);
|
||||
cookieout, cookieoutlen, NULLSTR(dconnuri),
|
||||
NULLSTR(uri), flags, NULLSTR(dname), bandwidth);
|
||||
|
||||
virResetLastError();
|
||||
|
||||
@ -4791,7 +4803,7 @@ virDomainMigratePerform3(virDomainPtr domain,
|
||||
ret = conn->driver->domainMigratePerform3(domain, xmlin,
|
||||
cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
uri,
|
||||
dconnuri, uri,
|
||||
flags, dname, bandwidth);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
@ -4817,15 +4829,16 @@ virDomainMigrateFinish3(virConnectPtr dconn,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
int cancelled,
|
||||
virDomainPtr *newdom)
|
||||
{
|
||||
VIR_DEBUG("dconn=%p, dname=%s, cookiein=%p, cookieinlen=%d, cookieout=%p,"
|
||||
"cookieoutlen=%p, uri=%s, flags=%lu, retcode=%d newdom=%p",
|
||||
"cookieoutlen=%p, dconnuri=%s, uri=%s, flags=%lu, retcode=%d newdom=%p",
|
||||
dconn, NULLSTR(dname), cookiein, cookieinlen, cookieout,
|
||||
cookieoutlen, uri, flags, cancelled, newdom);
|
||||
cookieoutlen, NULLSTR(dconnuri), NULLSTR(uri), flags, cancelled, newdom);
|
||||
|
||||
virResetLastError();
|
||||
|
||||
@ -4845,7 +4858,7 @@ virDomainMigrateFinish3(virConnectPtr dconn,
|
||||
ret = dconn->driver->domainMigrateFinish3(dconn, dname,
|
||||
cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
uri, flags,
|
||||
dconnuri, uri, flags,
|
||||
cancelled,
|
||||
newdom);
|
||||
if (ret < 0)
|
||||
|
@ -161,7 +161,8 @@ int virDomainMigratePerform3(virDomainPtr dom,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *uri,
|
||||
const char *dconnuri, /* libvirtd URI if Peer2Peer, NULL otherwise */
|
||||
const char *uri, /* VM Migration URI */
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
unsigned long resource);
|
||||
@ -172,7 +173,8 @@ int virDomainMigrateFinish3(virConnectPtr dconn,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *uri,
|
||||
const char *dconnuri, /* libvirtd URI if Peer2Peer, NULL otherwise */
|
||||
const char *uri, /* VM Migration URI, NULL in tunnelled case */
|
||||
unsigned long flags,
|
||||
int cancelled, /* Kill the dst VM */
|
||||
virDomainPtr *newdom);
|
||||
|
@ -5946,6 +5946,7 @@ qemudDomainMigratePerform (virDomainPtr dom,
|
||||
struct qemud_driver *driver = dom->conn->privateData;
|
||||
virDomainObjPtr vm;
|
||||
int ret = -1;
|
||||
const char *dconnuri = NULL;
|
||||
|
||||
virCheckFlags(VIR_MIGRATE_LIVE |
|
||||
VIR_MIGRATE_PEER2PEER |
|
||||
@ -5966,6 +5967,11 @@ qemudDomainMigratePerform (virDomainPtr dom,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (flags & VIR_MIGRATE_PEER2PEER) {
|
||||
dconnuri = uri;
|
||||
uri = NULL;
|
||||
}
|
||||
|
||||
/* Do not output cookies in v2 protocol, since the cookie
|
||||
* length was not sufficiently large, causing failures
|
||||
* migrating between old & new libvirtd.
|
||||
@ -5973,7 +5979,7 @@ qemudDomainMigratePerform (virDomainPtr dom,
|
||||
* Consume any cookie we were able to decode though
|
||||
*/
|
||||
ret = qemuMigrationPerform(driver, dom->conn, vm,
|
||||
NULL, uri, cookie, cookielen,
|
||||
NULL, dconnuri, uri, cookie, cookielen,
|
||||
NULL, NULL, /* No output cookies in v2 */
|
||||
flags, dname, resource, true);
|
||||
|
||||
@ -6194,6 +6200,7 @@ qemuDomainMigratePerform3(virDomainPtr dom,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -6223,7 +6230,7 @@ qemuDomainMigratePerform3(virDomainPtr dom,
|
||||
}
|
||||
|
||||
ret = qemuMigrationPerform(driver, dom->conn, vm, xmlin,
|
||||
uri, cookiein, cookieinlen,
|
||||
dconnuri, uri, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
flags, dname, resource, false);
|
||||
|
||||
@ -6240,6 +6247,7 @@ qemuDomainMigrateFinish3(virConnectPtr dconn,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri ATTRIBUTE_UNUSED,
|
||||
const char *uri ATTRIBUTE_UNUSED,
|
||||
unsigned long flags,
|
||||
int cancelled,
|
||||
|
@ -1652,7 +1652,7 @@ static int doPeer2PeerMigrate2(struct qemud_driver *driver,
|
||||
virConnectPtr sconn,
|
||||
virConnectPtr dconn,
|
||||
virDomainObjPtr vm,
|
||||
const char *uri,
|
||||
const char *dconnuri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
unsigned long resource)
|
||||
@ -1753,7 +1753,7 @@ finish:
|
||||
qemuDomainObjEnterRemoteWithDriver(driver, vm);
|
||||
ddomain = dconn->driver->domainMigrateFinish2
|
||||
(dconn, dname, cookie, cookielen,
|
||||
uri_out ? uri_out : uri, flags, cancelled);
|
||||
uri_out ? uri_out : dconnuri, flags, cancelled);
|
||||
qemuDomainObjExitRemoteWithDriver(driver, vm);
|
||||
|
||||
cleanup:
|
||||
@ -1787,6 +1787,7 @@ static int doPeer2PeerMigrate3(struct qemud_driver *driver,
|
||||
virConnectPtr dconn,
|
||||
virDomainObjPtr vm,
|
||||
const char *xmlin,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -1832,7 +1833,7 @@ static int doPeer2PeerMigrate3(struct qemud_driver *driver,
|
||||
qemuDomainObjEnterRemoteWithDriver(driver, vm);
|
||||
ret = dconn->driver->domainMigratePrepare3
|
||||
(dconn, cookiein, cookieinlen, &cookieout, &cookieoutlen,
|
||||
NULL, &uri_out, flags, dname, resource, dom_xml);
|
||||
uri, &uri_out, flags, dname, resource, dom_xml);
|
||||
qemuDomainObjExitRemoteWithDriver(driver, vm);
|
||||
}
|
||||
VIR_FREE(dom_xml);
|
||||
@ -1852,7 +1853,7 @@ static int doPeer2PeerMigrate3(struct qemud_driver *driver,
|
||||
* running, but in paused state until the destination can
|
||||
* confirm migration completion.
|
||||
*/
|
||||
VIR_DEBUG("Perform3 %p uri=%s", sconn, uri_out);
|
||||
VIR_DEBUG("Perform3 %p uri=%s uri_out=%s", sconn, uri, uri_out);
|
||||
VIR_FREE(cookiein);
|
||||
cookiein = cookieout;
|
||||
cookieinlen = cookieoutlen;
|
||||
@ -1895,7 +1896,7 @@ finish:
|
||||
qemuDomainObjEnterRemoteWithDriver(driver, vm);
|
||||
ret = dconn->driver->domainMigrateFinish3
|
||||
(dconn, dname, cookiein, cookieinlen, &cookieout, &cookieoutlen,
|
||||
uri_out ? uri_out : uri, flags, cancelled, &ddomain);
|
||||
dconnuri, uri_out ? uri_out : uri, flags, cancelled, &ddomain);
|
||||
qemuDomainObjExitRemoteWithDriver(driver, vm);
|
||||
|
||||
/* If ret is 0 then 'ddomain' indicates whether the VM is
|
||||
@ -1952,6 +1953,7 @@ static int doPeer2PeerMigrate(struct qemud_driver *driver,
|
||||
virConnectPtr sconn,
|
||||
virDomainObjPtr vm,
|
||||
const char *xmlin,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -1967,7 +1969,7 @@ static int doPeer2PeerMigrate(struct qemud_driver *driver,
|
||||
*/
|
||||
|
||||
qemuDomainObjEnterRemoteWithDriver(driver, vm);
|
||||
dconn = virConnectOpen(uri);
|
||||
dconn = virConnectOpen(dconnuri);
|
||||
qemuDomainObjExitRemoteWithDriver(driver, vm);
|
||||
if (dconn == NULL) {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
@ -1997,10 +1999,10 @@ static int doPeer2PeerMigrate(struct qemud_driver *driver,
|
||||
|
||||
if (v3)
|
||||
ret = doPeer2PeerMigrate3(driver, sconn, dconn, vm, xmlin,
|
||||
uri, flags, dname, resource);
|
||||
dconnuri, uri, flags, dname, resource);
|
||||
else
|
||||
ret = doPeer2PeerMigrate2(driver, sconn, dconn, vm,
|
||||
uri, flags, dname, resource);
|
||||
dconnuri, flags, dname, resource);
|
||||
|
||||
cleanup:
|
||||
/* don't call virConnectClose(), because that resets any pending errors */
|
||||
@ -2016,6 +2018,7 @@ int qemuMigrationPerform(struct qemud_driver *driver,
|
||||
virConnectPtr conn,
|
||||
virDomainObjPtr vm,
|
||||
const char *xmlin,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
const char *cookiein,
|
||||
int cookieinlen,
|
||||
@ -2059,10 +2062,15 @@ int qemuMigrationPerform(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
if (doPeer2PeerMigrate(driver, conn, vm, xmlin,
|
||||
uri, flags, dname, resource) < 0)
|
||||
dconnuri, uri, flags, dname, resource) < 0)
|
||||
/* doPeer2PeerMigrate already set the error, so just get out */
|
||||
goto endjob;
|
||||
} else {
|
||||
if (dconnuri) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("Unexpected dconnuri parameter with non-peer2peer migration"));
|
||||
goto endjob;
|
||||
}
|
||||
if (doNativeMigrate(driver, vm, uri, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
flags, dname, resource) < 0)
|
||||
|
@ -63,6 +63,7 @@ int qemuMigrationPerform(struct qemud_driver *driver,
|
||||
virConnectPtr conn,
|
||||
virDomainObjPtr vm,
|
||||
const char *xmlin,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
const char *cookiein,
|
||||
int cookieinlen,
|
||||
|
@ -5174,6 +5174,7 @@ remoteDomainMigratePerform3(virDomainPtr dom,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
const char *dname,
|
||||
@ -5194,9 +5195,10 @@ remoteDomainMigratePerform3(virDomainPtr dom,
|
||||
args.xmlin = xmlin == NULL ? NULL : (char **) &xmlin;
|
||||
args.cookie_in.cookie_in_val = (char *)cookiein;
|
||||
args.cookie_in.cookie_in_len = cookieinlen;
|
||||
args.uri = (char *) uri;
|
||||
args.flags = flags;
|
||||
args.dname = dname == NULL ? NULL : (char **) &dname;
|
||||
args.uri = uri == NULL ? NULL : (char **) &uri;
|
||||
args.dconnuri = dconnuri == NULL ? NULL : (char **) &dconnuri;
|
||||
args.resource = resource;
|
||||
|
||||
if (call (dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3,
|
||||
@ -5233,6 +5235,7 @@ remoteDomainMigrateFinish3(virConnectPtr dconn,
|
||||
int cookieinlen,
|
||||
char **cookieout,
|
||||
int *cookieoutlen,
|
||||
const char *dconnuri,
|
||||
const char *uri,
|
||||
unsigned long flags,
|
||||
int cancelled,
|
||||
@ -5252,7 +5255,8 @@ remoteDomainMigrateFinish3(virConnectPtr dconn,
|
||||
args.cookie_in.cookie_in_val = (char *)cookiein;
|
||||
args.cookie_in.cookie_in_len = cookieinlen;
|
||||
args.dname = (char *) dname;
|
||||
args.uri = (char *) uri;
|
||||
args.uri = uri == NULL ? NULL : (char **) &uri;
|
||||
args.dconnuri = dconnuri == NULL ? NULL : (char **) &dconnuri;
|
||||
args.flags = flags;
|
||||
args.cancelled = cancelled;
|
||||
|
||||
|
@ -2014,7 +2014,8 @@ struct remote_domain_migrate_perform3_args {
|
||||
remote_nonnull_domain dom;
|
||||
remote_string xmlin;
|
||||
opaque cookie_in<REMOTE_MIGRATE_COOKIE_MAX>;
|
||||
remote_nonnull_string uri;
|
||||
remote_string dconnuri;
|
||||
remote_string uri;
|
||||
unsigned hyper flags;
|
||||
remote_string dname;
|
||||
unsigned hyper resource;
|
||||
@ -2027,7 +2028,8 @@ struct remote_domain_migrate_perform3_ret {
|
||||
struct remote_domain_migrate_finish3_args {
|
||||
remote_nonnull_string dname;
|
||||
opaque cookie_in<REMOTE_MIGRATE_COOKIE_MAX>;
|
||||
remote_nonnull_string uri;
|
||||
remote_string dconnuri;
|
||||
remote_string uri;
|
||||
unsigned hyper flags;
|
||||
int cancelled;
|
||||
};
|
||||
|
@ -1510,7 +1510,8 @@ struct remote_domain_migrate_perform3_args {
|
||||
u_int cookie_in_len;
|
||||
char * cookie_in_val;
|
||||
} cookie_in;
|
||||
remote_nonnull_string uri;
|
||||
remote_string dconnuri;
|
||||
remote_string uri;
|
||||
uint64_t flags;
|
||||
remote_string dname;
|
||||
uint64_t resource;
|
||||
@ -1527,7 +1528,8 @@ struct remote_domain_migrate_finish3_args {
|
||||
u_int cookie_in_len;
|
||||
char * cookie_in_val;
|
||||
} cookie_in;
|
||||
remote_nonnull_string uri;
|
||||
remote_string dconnuri;
|
||||
remote_string uri;
|
||||
uint64_t flags;
|
||||
int cancelled;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user