From: Marc-André Lureau <[email protected]>

Add qemu_vnc configuration entry to specify the path to the
standalone qemu-vnc binary.

Signed-off-by: Marc-André Lureau <[email protected]>
---
 src/qemu/libvirtd_qemu.aug         | 1 +
 src/qemu/qemu.conf.in              | 8 ++++++++
 src/qemu/qemu_conf.c               | 6 ++++++
 src/qemu/qemu_conf.h               | 1 +
 src/qemu/test_libvirtd_qemu.aug.in | 1 +
 5 files changed, 17 insertions(+)

diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug
index eb790d48be..311992e441 100644
--- a/src/qemu/libvirtd_qemu.aug
+++ b/src/qemu/libvirtd_qemu.aug
@@ -123,6 +123,7 @@ module Libvirtd_qemu =
                  | str_entry "pr_helper"
                  | str_entry "slirp_helper"
                  | str_entry "qemu_rdp"
+                 | str_entry "qemu_vnc"
                  | str_entry "dbus_daemon"
                  | bool_entry "set_process_name"
                  | int_entry "max_processes"
diff --git a/src/qemu/qemu.conf.in b/src/qemu/qemu.conf.in
index 5eacd70022..97b0141cf6 100644
--- a/src/qemu/qemu.conf.in
+++ b/src/qemu/qemu.conf.in
@@ -1094,6 +1094,14 @@
 #qemu_rdp = "qemu-rdp"
 
 
+# Path to the standalone qemu-vnc VNC server.
+# When available and both <graphics type='dbus'/> and <graphics type='vnc'/>
+# are configured, libvirt will use qemu-vnc instead of QEMU's built-in VNC.
+# If this is not an absolute path, the program will be searched for
+# in $PATH.
+#qemu_vnc = "qemu-vnc"
+
+
 # Path to the dbus-daemon
 # If this is not an absolute path, the program will be searched for
 # in $PATH.
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index 724617ee8b..6981edda18 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -116,6 +116,7 @@ VIR_ONCE_GLOBAL_INIT(virQEMUConfig);
 #define QEMU_BRIDGE_HELPER "qemu-bridge-helper"
 #define QEMU_PR_HELPER "qemu-pr-helper"
 #define QEMU_RDP "qemu-rdp"
+#define QEMU_VNC "qemu-vnc"
 #define QEMU_DBUS_DAEMON "dbus-daemon"
 
 
@@ -290,6 +291,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
     cfg->slirpHelperName = g_strdup(QEMU_SLIRP_HELPER);
     cfg->dbusDaemonName = g_strdup(QEMU_DBUS_DAEMON);
     cfg->qemuRdpName = g_strdup(QEMU_RDP);
+    cfg->qemuVncName = g_strdup(QEMU_VNC);
 
     cfg->securityDefaultConfined = true;
     cfg->securityRequireConfined = false;
@@ -421,6 +423,7 @@ static void virQEMUDriverConfigDispose(void *obj)
     g_free(cfg->slirpHelperName);
     g_free(cfg->dbusDaemonName);
     g_free(cfg->qemuRdpName);
+    g_free(cfg->qemuVncName);
 
     g_free(cfg->autoDumpPath);
 
@@ -858,6 +861,9 @@ virQEMUDriverConfigLoadProcessEntry(virQEMUDriverConfig 
*cfg,
     if (virConfGetValueString(conf, "qemu_rdp", &cfg->qemuRdpName) < 0)
         return -1;
 
+    if (virConfGetValueString(conf, "qemu_vnc", &cfg->qemuVncName) < 0)
+        return -1;
+
     if (virConfGetValueBool(conf, "set_process_name", &cfg->setProcessName) < 
0)
         return -1;
     if (virConfGetValueUInt(conf, "max_processes", &cfg->maxProcesses) < 0)
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index d558f3ab19..5ea1b28f3e 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -199,6 +199,7 @@ struct _virQEMUDriverConfig {
     char *slirpHelperName;
     char *dbusDaemonName;
     char *qemuRdpName;
+    char *qemuVncName;
 
     bool macFilter;
 
diff --git a/src/qemu/test_libvirtd_qemu.aug.in 
b/src/qemu/test_libvirtd_qemu.aug.in
index 2582c6a09c..c4cf9cf634 100644
--- a/src/qemu/test_libvirtd_qemu.aug.in
+++ b/src/qemu/test_libvirtd_qemu.aug.in
@@ -129,6 +129,7 @@ module Test_libvirtd_qemu =
 { "pr_helper" = "qemu-pr-helper" }
 { "slirp_helper" = "/usr/bin/slirp-helper" }
 { "qemu_rdp" = "qemu-rdp" }
+{ "qemu_vnc" = "qemu-vnc" }
 { "dbus_daemon" = "dbus-daemon" }
 { "swtpm_user" = "tss" }
 { "swtpm_group" = "tss" }
-- 
2.53.0

Reply via email to