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(a)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