[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 2/3] qapi/ui: introduce change-vnc-listen
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v2 2/3] qapi/ui: introduce change-vnc-listen |
Date: |
Wed, 22 Dec 2021 20:17:30 +0100 |
Add command that can change addresses where VNC server listens for new
connections. Prior to 6.0 this functionality was available through
'change' qmp command which was deleted.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
docs/about/removed-features.rst | 3 ++-
qapi/ui.json | 19 +++++++++++++++++++
ui/vnc.c | 26 ++++++++++++++++++++++++++
3 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index d42c3341de..20e6901a82 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -348,7 +348,8 @@ documentation of ``query-hotpluggable-cpus`` for additional
details.
``change`` (removed in 6.0)
'''''''''''''''''''''''''''
-Use ``blockdev-change-medium`` or ``change-vnc-password`` instead.
+Use ``blockdev-change-medium`` or ``change-vnc-password`` or
+``change-vnc-listen`` instead.
``query-events`` (removed in 6.0)
'''''''''''''''''''''''''''''''''
diff --git a/qapi/ui.json b/qapi/ui.json
index 2b4371da37..6a586edff1 100644
--- a/qapi/ui.json
+++ b/qapi/ui.json
@@ -1334,3 +1334,22 @@
{ 'command': 'display-reload',
'data': 'DisplayReloadOptions',
'boxed' : true }
+
+##
+# @change-vnc-listen:
+#
+# Change set of addresses to listen for connections.
+#
+# @id: vnc display identifier
+#
+# @addresses: list of addresses for listen at
+#
+# @websockets: list of addresses to listen with websockets
+#
+# Since: 7.0
+#
+##
+{ 'command': 'change-vnc-listen',
+ 'data': { 'id': 'str', 'addresses': ['SocketAddress'],
+ '*websockets': ['SocketAddress'] },
+ 'if': 'CONFIG_VNC' }
diff --git a/ui/vnc.c b/ui/vnc.c
index e8430531c0..d7d0d255fc 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -4212,6 +4212,32 @@ fail:
vnc_display_close(vd);
}
+void qmp_change_vnc_listen(const char *id, SocketAddressList *addresses,
+ bool has_websockets, SocketAddressList *websockets,
+ Error **errp)
+{
+ VncDisplay *vd = vnc_display_find(id);
+
+ if (!vd) {
+ error_setg(errp, "VNC display '%s' not active", id);
+ return;
+ }
+
+ if (vd->listener) {
+ qio_net_listener_disconnect(vd->listener);
+ object_unref(OBJECT(vd->listener));
+ }
+ vd->listener = NULL;
+
+ if (vd->wslistener) {
+ qio_net_listener_disconnect(vd->wslistener);
+ object_unref(OBJECT(vd->wslistener));
+ }
+ vd->wslistener = NULL;
+
+ vnc_display_listen(vd, addresses, websockets, errp);
+}
+
void vnc_display_add_client(const char *id, int csock, bool skipauth)
{
VncDisplay *vd = vnc_display_find(id);
--
2.31.1