On 10/28/2009 10:09 AM, Chris Lalancette wrote: > Cole Robinson wrote: >> The xen driver will generate a migration port if only a hostname is passed >> in the optional migrate URI, so let's do the same in qemu. >> >> Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> >> --- >> src/qemu/qemu_driver.c | 29 +++++++++++++++++++++++------ >> 1 files changed, 23 insertions(+), 6 deletions(-) >> >> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c >> index fb952d8..3ef29a6 100644 >> --- a/src/qemu/qemu_driver.c >> +++ b/src/qemu/qemu_driver.c >> @@ -6304,15 +6304,32 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn, >> >> /* Get the port number. */ >> p = strrchr (uri_in, ':'); >> - p++; /* definitely has a ':' in it, see above */ >> - this_port = virParseNumber (&p); >> - if (this_port == -1 || p-uri_in != strlen (uri_in)) { >> - qemudReportError (dconn, NULL, NULL, VIR_ERR_INVALID_ARG, >> - "%s", _("URI did not have ':port' at the end")); >> - goto cleanup; >> + if (p == strchr(uri_in, ':')) { >> + /* Generate a port */ >> + this_port = QEMUD_MIGRATION_FIRST_PORT + port++; >> + if (port == QEMUD_MIGRATION_NUM_PORTS) >> + port = 0; >> + >> + /* Caller frees */ >> + if (virAsprintf(uri_out, "%s:%d", uri_in, this_port) < 0) { >> + virReportOOMError (dconn); >> + goto cleanup; >> + } >> + >> + } else { >> + p++; /* definitely has a ':' in it, see above */ >> + this_port = virParseNumber (&p); >> + if (this_port == -1 || p-uri_in != strlen (uri_in)) { >> + qemudReportError (dconn, NULL, NULL, VIR_ERR_INVALID_ARG, >> + "%s", _("URI ended with incorrect ':port'")); >> + goto cleanup; >> + } >> } >> } >> >> + if (uri_out && *uri_out) >> + VIR_DEBUG("Generated uri_out=%s", *uri_out); >> + >> /* Parse the domain XML. */ >> if (!(def = virDomainDefParseString(dconn, driver->caps, dom_xml, >> VIR_DOMAIN_XML_INACTIVE))) { > > Yeah, good idea. I also like the additional VIR_DEBUG print, that's useful. > > ACK > Thanks, pushed. - Cole -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list