
On Thu, May 12, 2016 at 01:06:41PM +0200, Christophe Fergeau wrote:
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@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.
I know, that I had that code somewhere but I cannot remember why I didn't use it. I can probably add this check in to the code. Right know I can think of only one case, where it could break things: if some application uses socket and tries to change it. But in that case it's probably OK to print an error.
+ </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').
Yes, it would be better to use unix and path, but I've tired to follow the same logic based on current listen types address and network. I actually don't care about the type name and the attribute name, so if someone else has any idea, please share it :). Thanks, Pavel
Christophe