
On 05/06/2013 03:19 PM, Guannan Ren wrote:
-vnc :5900,share=allow-exclusive allows clients to ask for exclusive access which is implemented by dropping other connections Connecting multiple clients in parallel requires all clients asking for a shared session (vncviewer: -shared switch)
-vnc :5900,share=force-shared disables exclusive client access. Useful for shared desktop sessions, where you don't want someone forgetting specify -shared disconnect everybody else.
-vnc :5900,share=ignore completely ignores the shared flag and allows everybody connect unconditionally --- src/conf/domain_conf.c | 28 ++++++++++++++++++++++++++++ src/conf/domain_conf.h | 11 +++++++++++ src/libvirt_private.syms | 2 ++ 3 files changed, 41 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fe97c02..eaa0b0e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7574,6 +7582,21 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, VIR_FREE(autoport); }
+ if ((policy = virXMLPropString(node, "policy")) != NULL) { + int sharingPolicy = + virDomainGraphicsVNCDisplaySharingPolicyTypeFromString(policy); + + if (sharingPolicy < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR,
I'd rather use VIR_ERR_CONFIG_UNSUPPORTED.
+ _("unknown vnc display sharing policy '%s'"), policy); + VIR_FREE(policy); + goto error; + } else { + def->data.vnc.sharingPolicy = sharingPolicy; + } + VIR_FREE(policy); + } + def->data.vnc.socket = virXMLPropString(node, "socket"); def->data.vnc.keymap = virXMLPropString(node, "keymap");
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 21f7ce2..05137ca 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1284,6 +1284,15 @@ struct _virDomainGraphicsAuthDef { int connected; /* action if connected */ };
+enum virDomainGraphicsVNCDisplaySharingPolicy { + VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_DEFAULT = 0, + VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_ALLOW_EXCLUSIVE, + VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_FORCE_SHARED, + VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_IGNORE, + + VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_LAST +}; +
s/DISPLAY/SHARING/ VIR_DOMAIN_GRAPHICS_VNC_SHARING_IGNORE seems less confusing to me than VIR_DOMAIN_GRAPHICS_VNC_DISPLAY_IGNORE Jan