[libvirt] [PATCH v2 1/2] report error when specifying wrong desturi

Daniel P. Berrange berrange at redhat.com
Wed Jan 12 12:24:56 UTC 2011


On Wed, Jan 12, 2011 at 02:12:29PM +0800, Wen Congyang wrote:
> When we do peer2peer migration, the dest uri is an address of the
> target host as seen from the source machine. So we must specify
> the ip or hostname of target host in dest uri. If we do not specify
> it, report an error to the user.
> 
> Signed-off-by: Wen Congyang <wency at cn.fujitsu.com>
> 
> ---
>  src/libvirt.c |   17 +++++++++++++++++
>  1 files changed, 17 insertions(+), 0 deletions(-)
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index a4789bc..52d3278 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -3571,12 +3571,29 @@ virDomainMigratePeer2Peer (virDomainPtr domain,
>                             const char *uri,
>                             unsigned long bandwidth)
>  {
> +    xmlURIPtr tempuri = NULL;
> +
>      if (!domain->conn->driver->domainMigratePerform) {
>          virLibConnError (domain->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
>          virDispatchError(domain->conn);
>          return -1;
>      }
>  
> +    tempuri = xmlParseURI(uri);
> +    if (!tempuri) {
> +        virLibConnError (domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
> +        virDispatchError(domain->conn);
> +        return -1;
> +    }
> +
> +    if (!tempuri->server || STRPREFIX(tempuri->server, "localhost")) {
> +        virLibConnError(domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
> +        virDispatchError(domain->conn);
> +        xmlFreeURI(tempuri);
> +        return -1;
> +    }
> +    xmlFreeURI(tempuri);


Technically we should do this in the QEMU driver, but since no
other hypervisor supports p2p migration, this is fine for now.

ACK

Daniel




More information about the libvir-list mailing list