[libvirt] [PATCHv3 2/2] qemu: support type=network in domain graphics <listen>

Eric Blake eblake at redhat.com
Wed Jul 27 15:56:04 UTC 2011


On 07/25/2011 03:00 AM, Laine Stump wrote:
> The domain XML now understands the<listen>  subelement of its
> <graphics>  element (including when listen type='network'), and the
> network driver has an internal API that will turn a network name into
> an IP address, so the final logical step is to put the glue into the
> qemu driver so that when it is starting up a domain, if it finds
> <listen type='network' network='xyz'/>  in the XML, it will call the
> network driver to get an IPv4 address associated with network xyz, and
> tell qemu to listen for vnc (or spice) on that address rather than the
> default address (localhost).

There may be some fallout to this patch, based on what happens to 1/2, 
but in general:

> @@ -4127,7 +4126,37 @@ qemuBuildCommandLine(virConnectPtr conn,
>                                 def->graphics[0]->data.vnc.socket);
>
>           } else if (qemuCapsGet(qemuCaps, QEMU_CAPS_VNC_COLON)) {
> +            const char *listenNetwork;
> +            const char *listenAddr = NULL;
> +            char *netAddr = NULL;
>               bool escapeAddr;
> +            int ret;
> +
> +            switch (virDomainGraphicsListenGetType(def->graphics[0], 0)) {
> +            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
> +                listenAddr = virDomainGraphicsListenGetAddress(def->graphics[0], 0);
> +                break;
> +
> +            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
> +                listenNetwork = virDomainGraphicsListenGetNetwork(def->graphics[0], 0);
> +                if (!listenNetwork)
> +                    break;
> +                ret = networkGetNetworkAddress(listenNetwork,&netAddr);
> +                if (ret<= -2) {
> +                    qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                                    "%s", _("network-based listen not possible, "
> +                                            "network driver not present"));
> +                    goto error;
> +                }
> +                if (ret<  0) {
> +                    qemuReportError(VIR_ERR_XML_ERROR,
> +                                    _("listen network '%s' had no usable address"),
> +                                    listenNetwork);
> +                    goto error;
> +                }
> +                listenAddr = netAddr;
> +                break;
> +            }

this looks good.

ACK.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list