diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2014-12-10 09:49:39 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2015-01-22 11:18:47 +0100 |
commit | 4478aa768ccefcc5b234c23d035435fd71b932f6 (patch) | |
tree | bed311958475fa3659b9d7d22c8698dd13b629c3 | |
parent | df887684603a4b3b0c623090a6b419dc70f22c32 (diff) |
monitor: add vnc websockets
Add websockets bool to VncBasicInfo, report websocket server sockets,
flag websocket client connections.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | qapi-schema.json | 5 | ||||
-rw-r--r-- | ui/vnc.c | 15 |
2 files changed, 16 insertions, 4 deletions
diff --git a/qapi-schema.json b/qapi-schema.json index 24f62a4d81..eec1d229f2 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -672,12 +672,15 @@ # # @family: address family # +# @websocket: true in case the socket is a websocket (since 2.3). +# # Since: 2.1 ## { 'type': 'VncBasicInfo', 'data': { 'host': 'str', 'service': 'str', - 'family': 'NetworkAddressFamily' } } + 'family': 'NetworkAddressFamily', + 'websocket': 'bool' } } ## # @VncServerInfo @@ -353,6 +353,9 @@ static VncClientInfo *qmp_query_vnc_client(const VncState *client) info->base->host = g_strdup(host); info->base->service = g_strdup(serv); info->base->family = inet_netfamily(sa.ss_family); +#ifdef CONFIG_VNC_WS + info->base->websocket = client->websocket; +#endif #ifdef CONFIG_VNC_TLS if (client->tls.session && client->tls.dname) { @@ -457,6 +460,7 @@ out_error: } static VncBasicInfoList *qmp_query_server_entry(int socket, + bool websocket, VncBasicInfoList *prev) { VncBasicInfoList *list; @@ -477,6 +481,7 @@ static VncBasicInfoList *qmp_query_server_entry(int socket, info->host = g_strdup(host); info->service = g_strdup(serv); info->family = inet_netfamily(sa.ss_family); + info->websocket = websocket; list = g_new0(VncBasicInfoList, 1); list->value = info; @@ -572,12 +577,13 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp) info->display = g_strdup(dev->id); } if (vd->lsock != -1) { - info->server = qmp_query_server_entry(vd->lsock, + info->server = qmp_query_server_entry(vd->lsock, false, info->server); } #ifdef CONFIG_VNC_WS if (vd->lwebsock != -1) { - /* TODO */ + info->server = qmp_query_server_entry(vd->lwebsock, true, + info->server); } #endif @@ -3305,10 +3311,13 @@ void vnc_display_open(const char *id, Error **errp) { VncDisplay *vs = vnc_display_find(id); QemuOpts *opts = qemu_opts_find(&qemu_vnc_opts, id); - const char *display, *websocket, *share, *device_id; + const char *display, *share, *device_id; QemuConsole *con; int password = 0; int reverse = 0; +#ifdef CONFIG_VNC_WS + const char *websocket; +#endif #ifdef CONFIG_VNC_TLS int tls = 0, x509 = 0; const char *path; |