[libvirt] [PATCH v2 06/12] graphics: introduce listen type=socket and use it for VNC

Christophe Fergeau cfergeau at redhat.com
Thu May 12 11:06:41 UTC 2016


Hey,

On Wed, May 11, 2016 at 05:08:25PM +0200, Pavel Hrdina wrote:
> Introduce a new listen type that will be used to tell a graphics device
> to listen on unix socket and use it for VNC graphics instead of socket
> attribute.  The socket attribute will remain in the XML for backward
> compatibility.
> 
> Since old libvirt supports 'socket' attribute inside 'graphics' element
> for socket path provided by user libvirt will generate migratable XML
> without that listen type='socket' but only with 'socket' attribute in
> order to be able to migrate back to old libvirt.
> 
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
>  docs/formatdomain.html.in                          |  16 +++
>  docs/schemas/domaincommon.rng                      |  10 ++
>  src/conf/domain_conf.c                             | 119 ++++++++++++++++-----
>  src/conf/domain_conf.h                             |   8 +-
>  src/libvirt_private.syms                           |   1 +
>  src/qemu/qemu_command.c                            |  45 ++++----
>  src/qemu/qemu_domain.c                             |  19 ++--
>  src/qemu/qemu_hotplug.c                            |   9 ++
>  src/qemu/qemu_parse_command.c                      |   2 +-
>  src/qemu/qemu_process.c                            |  47 ++++++--
>  src/security/virt-aa-helper.c                      |  15 ++-
>  .../generic-graphics-vnc-socket-listen.xml         |   4 +-
>  .../generic-graphics-vnc-socket.xml                |   4 +-
>  .../qemuargv2xml-graphics-vnc-socket.xml           |   4 +-
>  .../qemuxml2argv-graphics-vnc-auto-socket.args     |  20 ++++
>  .../qemuxml2argv-graphics-vnc-auto-socket.xml      |  30 ++++++
>  .../qemuxml2argv-graphics-vnc-socket.args          |   4 +-
>  .../qemuxml2argv-graphics-vnc-socket.xml           |  10 +-
>  tests/qemuxml2argvtest.c                           |   2 +
>  .../qemuxml2xmlout-graphics-vnc-auto-socket.xml    |  35 ++++++
>  .../qemuxml2xmlout-graphics-vnc-autosocket.xml     |   4 +-
>  .../qemuxml2xmlout-graphics-vnc-socket.xml         |  35 ++++++
>  tests/qemuxml2xmltest.c                            |   2 +
>  23 files changed, 361 insertions(+), 84 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-auto-socket.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-auto-socket.xml
>  create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc-auto-socket.xml
>  create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc-socket.xml
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index b0847b7..f67076d 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -5359,6 +5359,22 @@ qemu-kvm -net nic,model=? /dev/null
>            <code>address</code>.
>          </p>
>        </dd>
> +      <dt><code>socket</code> <span class="since">since 1.3.5</span></dt>
> +      <dd>
> +        <p>
> +          This listen type tells a graphics server to listen on unix socket.
> +          Attribute <code>socket</code> contains a path to unix socket. If this
> +          attribute is omitted libvirt will generate this path for you.
> +          Supported by graphics type <code>vnc</code>.
> +        </p>
> +        <p>
> +          For <code>vnc</code> graphics be backward compatible
> +          the <code>socket</code> attribute of first <code>listen</code> element
> +          is duplicated as <code>socket</code> attribute in <code>graphics</code>
> +          element. If <code>graphics</code> element contains a <code>socket</code>
> +          attribute all <code>listen</code> elements are ignored.
> +        </p>


If both a socket attribute and a listen type="socket" node are present,
shouldn't this check if they are using the same path? This is what is
done for 'listen' attribute and listen type="address", but I could not
find the same thing in this patch.

> +      </dd>
>      </dl>
>  
>      <h4><a name="elementsVideo">Video devices</a></h4>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index e7eda77..e3dbcc6 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -3014,6 +3014,16 @@
>                </attribute>
>              </optional>
>            </group>
> +          <group>
> +            <attribute name="type">
> +              <value>socket</value>
> +            </attribute>
> +            <optional>
> +              <attribute name="socket">
> +                <ref name="absFilePath"/>
> +              </attribute>
> +            </optional>
> +          </group>

Imo this would be better as 
<listen type="unix" socket="/some/path"/>

This would be more consistent with /disk/source/host
vhost-user also uses type="unix" but with a path attribute rather than
socket
There is also <channel type="unix"> (again with 'path' rather than
'socket').

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160512/92718f88/attachment-0001.sig>


More information about the libvir-list mailing list