[libvirt] [PATCH 1/3] Introduce virDomainOpenGraphicsFD API

Peter Krempa pkrempa at redhat.com
Tue Aug 26 16:22:29 UTC 2014


On 08/25/14 20:22, Ján Tomko wrote:
> Define the public API implementation and declare internal
> driver prototype.
> ---
>  include/libvirt/libvirt.h.in |  5 ++++
>  src/driver.h                 |  7 ++++++
>  src/libvirt.c                | 58 ++++++++++++++++++++++++++++++++++++++++++++
>  src/libvirt_public.syms      |  5 ++++
>  4 files changed, 75 insertions(+)
> 
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index 47ea695..153b386 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in

> diff --git a/src/libvirt.c b/src/libvirt.c
> index 8349261..9de1e44 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -20182,6 +20182,64 @@ virDomainOpenGraphics(virDomainPtr dom,
>  
>  
>  /**
> + * virDomainOpenGraphicsFD:
> + * @dom: pointer to domain object
> + * @idx: index of graphics config to open
> + * @fd: returned file descriptor
> + * @flags: bitwise-OR of virDomainOpenGraphicsFlags
> + *
> + * This will create a socket pair connected to the graphics backend of @dom.
> + * One pair will be returned as @fd.

You return just one fd, so:

"One element will be "

Or perhaps

"One socket .. " ?

> + * If @dom has multiple graphics backends configured, then @idx will determine
> + * which one is opened, starting from @idx 0.
> + *
> + * To disable any authentication, pass the VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH
> + * constant for @flags.
> + *
> + * This method can only be used when connected to a local
> + * libvirt hypervisor, over a UNIX domain socket. Attempts
> + * to use this method over a TCP connection will always fail
> + *
> + * Returns 0 on success, -1 on failure
> + */
> +int
> +virDomainOpenGraphicsFD(virDomainPtr dom,
> +                        unsigned int idx,
> +                        int *fd,
> +                        unsigned int flags)
> +{
> +    VIR_DOMAIN_DEBUG(dom, "idx=%u, fd=%p, flags=%x",
> +                     idx, fd, flags);
> +
> +    virResetLastError();
> +
> +    virCheckDomainReturn(dom, -1);
> +    virCheckNonNullArgGoto(fd, error);
> +
> +    virCheckReadOnlyGoto(dom->conn->flags, error);
> +
> +    if (!VIR_DRV_SUPPORTS_FEATURE(dom->conn->driver, dom->conn,
> +                                  VIR_DRV_FEATURE_FD_PASSING)) {
> +        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> +                       _("fd passing is not supported by this connection"));
> +        goto error;
> +    }
> +
> +    if (dom->conn->driver->domainOpenGraphicsFD) {
> +        int ret;
> +        ret = dom->conn->driver->domainOpenGraphicsFD(dom, idx, fd, flags);
> +        if (ret < 0)
> +            goto error;
> +        return ret;
> +    }
> +
> +    virReportUnsupportedError();
> +
> + error:
> +    virDispatchError(dom->conn);
> +    return -1;
> +}
> +/**
>   * virConnectSetKeepAlive:
>   * @conn: pointer to a hypervisor connection
>   * @interval: number of seconds of inactivity before a keepalive message is sent

No other objections from my side.

I think this is a nice inversion of the virDomainOpenGraphics API. As
this approach was suggested by DanPB I'm happy to give an

ACK (with docs tweaked of course)

Peter

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140826/89032caf/attachment-0001.sig>


More information about the libvir-list mailing list