On 05/06/2013 03:19 PM, Guannan Ren wrote:
QEMU_CAPS_VNC_DISPLAY_POLICY (qemu >= v1.10)
---
docs/formatdomain.html.in | 13 +++++++++++--
docs/schemas/domaincommon.rng | 9 +++++++++
src/qemu/qemu_capabilities.c | 12 ++++++++----
src/qemu/qemu_capabilities.h | 1 +
tests/qemuhelptest.c | 9 ++++++---
5 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 572d7ee..50aa2db 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -3493,7 +3493,7 @@ qemu-kvm -net nic,model=? /dev/null
...
<devices>
<graphics type='sdl' display=':0.0'/>
- <graphics type='vnc' port='5904'>
+ <graphics type='vnc' port='5904'
policy='allow-exclusive'>
<listen type='address' address='1.2.3.4'/>
</graphics>
<graphics type='rdp' autoport='yes' multiUser='yes'
/>
@@ -3536,7 +3536,16 @@ qemu-kvm -net nic,model=? /dev/null
allows control of connected client during password changes.
VNC accepts <code>keep</code> value only.
<span class="since">since 0.9.3</span>
- NB, this may not be supported by all hypervisors.<br/> <br/>
+ NB, this may not be supported by all hypervisors.<br/>
+ The optional <code>policy</code> attribute specifies vnc server
+ display sharing policy. "allow-exclusive" allows clients to ask
+ for exclusive access by dropping other connections. Connecting
+ multiple clients in parallel requires all clients asking for a
+ shared session (vncviewer: -Shared switch). This is the default
+ value. "force-shared" disables exclusive client access, every
+ connection has to specify -Shared switch for vncviewer. "ignore"
+ welcomes every connection unconditionally
+ <span class="since">since 1.0.6</span>. <br/>
<br/>
Rather than using listen/port, QEMU supports a
<code>socket</code> attribute for listening on a unix
domain socket path.<span class="since">Since
0.8.8</span>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 10596dc..c3a7fbd 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -2075,6 +2075,15 @@
<ref name="addrIPorName"/>
</attribute>
</optional>
+ <optional>
+ <attribute name='policy'>
+ <choice>
+ <value>allow-exclusive</value>
+ <value>force-shared</value>
+ <value>ignore</value>
+ </choice>
+ </attribute>
+ </optional>
</group>
<group>
<optional>
These two hunks seem like they would fit better in the later patches.
And naming the attribute 'sharingPolicy' or just 'sharing' might be more
clear.
diff --git a/src/qemu/qemu_capabilities.c
b/src/qemu/qemu_capabilities.c
index a3a8d1f..d758691 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -221,9 +221,10 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
"tpm-tis",
"nvram", /* 140 */
- "pci-bridge", /* 141 */
- "vfio-pci", /* 142 */
- "vfio-pci.bootindex", /* 143 */
+ "pci-bridge",
+ "vfio-pci",
+ "vfio-pci.bootindex",
+ "vnc-display-policy",
);
Oops, I seem to have started a trend when I forgot to delete that comment
after rebase :)
struct _virQEMUCaps {
@@ -1181,8 +1182,10 @@ virQEMUCapsComputeCmdFlags(const char *help,
if (version >= 11000)
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CPU_HOST);
- if (version >= 1001000)
+ if (version >= 1001000) {
virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION);
+ virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_DISPLAY_POLICY);
+ }
if (version >= 1002000)
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
Is there a help string we could look for instead of setting it based on version?
diff --git a/src/qemu/qemu_capabilities.h
b/src/qemu/qemu_capabilities.h
index 213f63c..ec39325 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -182,6 +182,7 @@ enum virQEMUCapsFlags {
QEMU_CAPS_DEVICE_PCI_BRIDGE = 141, /* -device pci-bridge */
QEMU_CAPS_DEVICE_VFIO_PCI = 142, /* -device vfio-pci */
QEMU_CAPS_VFIO_PCI_BOOTINDEX = 143, /* bootindex param for vfio-pci device */
+ QEMU_CAPS_VNC_DISPLAY_POLICY = 144, /* set display sharing policy */
QEMU_CAPS_LAST, /* this must always be the last item */
};
IMHO VNC_SHARING_POLICY would be more fitting.
Jan