[libvirt] [PATCH v2] qemu: Set correct migrate host in client_migrate_info

Daniel P. Berrange berrange at redhat.com
Wed Apr 10 17:06:13 UTC 2013


On Wed, Apr 10, 2013 at 07:04:12PM +0200, Michal Privoznik wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=920441
> 
> Currently, we are discarding listen attribute from qemu cookie even though
> we strive to gather it. This result in not so cool bug: if user have
> different networks, one for management/migration, and one for VNC/SPICE we
> pass incorrect host to the qemu in client_migrate_info. What we actually
> pass is remote hostname, while we should be passing remote listen address.
> It doesn't matter as long as these two are the same, but they don't need
> necessary to be like that.
> ---
>  src/conf/domain_conf.c    | 4 +++-
>  src/qemu/qemu_migration.c | 6 +++++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index e00a532..2afa982 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -16557,8 +16557,10 @@ virDomainGraphicsListenGetAddress(virDomainGraphicsDefPtr def, size_t ii)
>      virDomainGraphicsListenDefPtr listenInfo
>          = virDomainGraphicsGetListen(def, ii, false);
>  
> +    /* even a network can have a listen address */
>      if (!listenInfo ||
> -        (listenInfo->type != VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS))
> +        !(listenInfo->type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS ||
> +          listenInfo->type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK))
>          return NULL;
>      return listenInfo->address;
>  }
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 41ad768..434b19a 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -1720,6 +1720,7 @@ qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr driver,
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      int ret;
> +    char *listenAddress = cookie->graphics->listen;
>  
>      if (!cookie)
>          return 0;
> @@ -1733,12 +1734,15 @@ qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr driver,
>      if (cookie->graphics->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE)
>          return 0;
>  
> +    if (STREQ(listenAddress, "0.0.0.0"))
> +        listenAddress = cookie->remoteHostname;

Oh, also IPv6  '::'.

And listenAddress can be NULL too, so need to check for that.


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list