const char *dom_xml)
{
virQEMUDriverPtr driver = dconn->privateData;
+ virCapsPtr caps = NULL;
+ virDomainDefPtr def = NULL;
int ret = -1;
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
goto cleanup;
}
+ if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if (!(def = virDomainDefParseString(dom_xml, caps, driver->xmlopt,
+ QEMU_EXPECTED_VIRT_TYPES,
+ VIR_DOMAIN_XML_INACTIVE)))
+ goto cleanup;
+
+ if (dname) {
+ VIR_FREE(def->name);
+ if (!(def->name = strdup(dname))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ }
+
ret = qemuMigrationPrepareTunnel(driver, dconn,
NULL, 0, NULL, NULL, /* No cookies in v2 */
- st, dname, dom_xml, flags);
+ st, def, flags);
+ def = NULL;
cleanup:
+ virDomainDefFree(def);
+ virObjectUnref(caps);
return ret;
}
const char *dom_xml)
{
virQEMUDriverPtr driver = dconn->privateData;
+ virCapsPtr caps = NULL;
+ virDomainDefPtr def = NULL;
int ret = -1;
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
goto cleanup;
}
+ if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if (!(def = virDomainDefParseString(dom_xml, caps, driver->xmlopt,
+ QEMU_EXPECTED_VIRT_TYPES,
+ VIR_DOMAIN_XML_INACTIVE)))
+ goto cleanup;
+
+ if (dname) {
+ VIR_FREE(def->name);
+ if (!(def->name = strdup(dname))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ }
+
/* Do not use cookies in v2 protocol, since the cookie
* length was not sufficiently large, causing failures
* migrating between old & new libvirtd
ret = qemuMigrationPrepareDirect(driver, dconn,
NULL, 0, NULL, NULL, /* No cookies */
uri_in, uri_out,
- dname, dom_xml, flags);
+ def, flags);
+ def = NULL;
cleanup:
+ virDomainDefFree(def);
+ virObjectUnref(caps);
return ret;
}
const char *dom_xml)
{
virQEMUDriverPtr driver = dconn->privateData;
+ virCapsPtr caps = NULL;
+ virDomainDefPtr def = NULL;
int ret = -1;
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
goto cleanup;
}
+ if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if (!(def = virDomainDefParseString(dom_xml, caps, driver->xmlopt,
+ QEMU_EXPECTED_VIRT_TYPES,
+ VIR_DOMAIN_XML_INACTIVE)))
+ goto cleanup;
+
+ if (dname) {
+ VIR_FREE(def->name);
+ if (!(def->name = strdup(dname))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ }
+
ret = qemuMigrationPrepareDirect(driver, dconn,
cookiein, cookieinlen,
cookieout, cookieoutlen,
uri_in, uri_out,
- dname, dom_xml, flags);
+ def, flags);
+ def = NULL;
cleanup:
+ virDomainDefFree(def);
+ virObjectUnref(caps);
return ret;
}
const char *dom_xml)
{
virQEMUDriverPtr driver = dconn->privateData;
+ virCapsPtr caps = NULL;
+ virDomainDefPtr def = NULL;
int ret = -1;
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
goto cleanup;
}
+ if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if (!(def = virDomainDefParseString(dom_xml, caps, driver->xmlopt,
+ QEMU_EXPECTED_VIRT_TYPES,
+ VIR_DOMAIN_XML_INACTIVE)))
+ goto cleanup;
+
+ if (dname) {
+ VIR_FREE(def->name);
+ if (!(def->name = strdup(dname))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ }
+
ret = qemuMigrationPrepareTunnel(driver, dconn,
cookiein, cookieinlen,
cookieout, cookieoutlen,
- st, dname, dom_xml, flags);
+ st, def, flags);
+ def = NULL;
cleanup:
+ virDomainDefFree(def);
+ virObjectUnref(caps);
return ret;
}
int cookieinlen,
char **cookieout,
int *cookieoutlen,
- const char *dname,
- const char *dom_xml,
+ virDomainDefPtr def,
virStreamPtr st,
unsigned int port,
unsigned long flags)
{
- virDomainDefPtr def = NULL;
virDomainObjPtr vm = NULL;
virDomainEventPtr event = NULL;
int ret = -1;
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (!(def = virDomainDefParseString(dom_xml, caps, driver->xmlopt,
- QEMU_EXPECTED_VIRT_TYPES,
- VIR_DOMAIN_XML_INACTIVE)))
- goto cleanup;
-
if (!qemuMigrationIsAllowed(driver, NULL, def, true))
goto cleanup;
- /* Target domain name, maybe renamed. */
- if (dname) {
- origname = def->name;
- def->name = strdup(dname);
- if (def->name == NULL)
- goto cleanup;
- }
-
/* Let migration hook filter domain XML */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
char *xml;
char **cookieout,
int *cookieoutlen,
virStreamPtr st,
- const char *dname,
- const char *dom_xml,
+ virDomainDefPtr def,
unsigned long flags)
{
int ret;
VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
- "cookieout=%p, cookieoutlen=%p, st=%p, dname=%s, dom_xml=%s "
+ "cookieout=%p, cookieoutlen=%p, st=%p, def=%p, "
"flags=%lx",
driver, dconn, NULLSTR(cookiein), cookieinlen,
- cookieout, cookieoutlen, st, NULLSTR(dname), dom_xml, flags);
+ cookieout, cookieoutlen, st, def, flags);
ret = qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen,
- cookieout, cookieoutlen, dname, dom_xml,
+ cookieout, cookieoutlen, def,
st, 0, flags);
return ret;
}
int *cookieoutlen,
const char *uri_in,
char **uri_out,
- const char *dname,
- const char *dom_xml,
+ virDomainDefPtr def,
unsigned long flags)
{
static int port = 0;
VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, uri_in=%s, uri_out=%p, "
- "dname=%s, dom_xml=%s flags=%lx",
+ "def=%p, flags=%lx",
driver, dconn, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, NULLSTR(uri_in), uri_out,
- NULLSTR(dname), dom_xml, flags);
+ def, flags);
/* The URI passed in may be NULL or a string "tcp://somehostname:port".
*
VIR_DEBUG("Generated uri_out=%s", *uri_out);
ret = qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen,
- cookieout, cookieoutlen, dname, dom_xml,
+ cookieout, cookieoutlen, def,
NULL, this_port, flags);
cleanup:
VIR_FREE(hostname);