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>
+
+ For VNC WebSocket functionality, <code>websocket</code>
+ attribute may be used to specify port to listen on (with
+ -1 meaning auto-allocation and <code>autoport</code>
+ having no effect due to security reasons).
+ <span class="since">Since 1.0.6</span>
</dd>
<dt><code>"spice"</code></dt>
<dd>
</choice>
</attribute>
</optional>
+ <optional>
+ <attribute name="websocket">
+ <ref name="PortNumber"/>
+ </attribute>
+ </optional>
<optional>
<attribute name="listen">
<ref name="addrIPorName"/>
if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
char *port = virXMLPropString(node, "port");
+ char *websocket = virXMLPropString(node, "websocket");
char *autoport;
if (port) {
VIR_FREE(autoport);
}
+ if (websocket) {
+ if (virStrToLong_i(websocket,
+ NULL, 10,
+ &def->data.vnc.websocket) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("cannot parse vnc WebSocket port %s"), websocket);
+ VIR_FREE(websocket);
+ goto error;
+ }
+ VIR_FREE(websocket);
+ }
+
def->data.vnc.socket = virXMLPropString(node, "socket");
def->data.vnc.keymap = virXMLPropString(node, "keymap");
virBufferAsprintf(buf, " autoport='%s'",
def->data.vnc.autoport ? "yes" : "no");
+ if (def->data.vnc.websocket)
+ virBufferAsprintf(buf, " websocket='%d'", def->data.vnc.websocket);
+
if (listenAddr)
virBufferAsprintf(buf, " listen='%s'", listenAddr);
}