164 lines
5.7 KiB
Diff
164 lines
5.7 KiB
Diff
commit 377bc412ce10845930346744e30fe9c4790e5e63
|
|
Author: Cole Robinson <crobinso@redhat.com>
|
|
Date: Wed May 19 16:03:52 2010 -0400
|
|
|
|
daemon: Export SDL audio environment variables
|
|
|
|
/etc/sysconfig/libvirtd has a few environment variables for configuring
|
|
libvirt SDL audio. The libvirtd process doesn't see these, however, because
|
|
they are never exported. Let's export the variables after sourcing the
|
|
sysconfig script.
|
|
|
|
There is another problem here that the commented out values in the
|
|
sysconfig script are not neccessarily the actual defaults, we are qemus
|
|
mercy here. Not sure how to solve that.
|
|
|
|
diff --git a/daemon/libvirtd.init.in b/daemon/libvirtd.init.in
|
|
index 809433e..aa7870c 100644
|
|
--- a/daemon/libvirtd.init.in
|
|
+++ b/daemon/libvirtd.init.in
|
|
@@ -45,6 +45,9 @@ KRB5_KTNAME=/etc/libvirt/krb5.tab
|
|
|
|
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
|
|
|
+export QEMU_AUDIO_DRV
|
|
+export SDL_AUDIODRIVER
|
|
+
|
|
LIBVIRTD_CONFIG_ARGS=
|
|
if [ -n "$LIBVIRTD_CONFIG" ]
|
|
then
|
|
commit 7f44743c524faa493d05eaf026f1e90a807e502b
|
|
Author: Cole Robinson <crobinso@redhat.com>
|
|
Date: Wed May 26 10:51:36 2010 -0400
|
|
|
|
daemon: sysconf: Update comment about VNC audio
|
|
|
|
diff --git a/daemon/libvirtd.sysconf b/daemon/libvirtd.sysconf
|
|
index 28080a0..b730c5e 100644
|
|
--- a/daemon/libvirtd.sysconf
|
|
+++ b/daemon/libvirtd.sysconf
|
|
@@ -11,7 +11,8 @@
|
|
# Override the QEMU/SDL default audio driver probing when
|
|
# starting virtual machines using SDL graphics
|
|
#
|
|
-# NB these have no effect for VMs using VNC
|
|
+# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
|
|
+# is enabled in /etc/libvirt/qemu.conf
|
|
#QEMU_AUDIO_DRV=sdl
|
|
#
|
|
#SDL_AUDIODRIVER=pulse
|
|
commit fb3ebd0397980ae035e66f0008b09e13377ef80f
|
|
Author: Cole Robinson <crobinso@redhat.com>
|
|
Date: Wed May 19 16:41:01 2010 -0400
|
|
|
|
qemu: Allow using regular audio backends with VNC
|
|
|
|
Currently all host audio backends are disabled if a VM is using VNC, in
|
|
favor of the QEMU VNC audio extension. Unfortunately no released VNC
|
|
client supports this extension, so users have no way of getting audio
|
|
to work if using VNC.
|
|
|
|
Add a new config option in qemu.conf which allows changing libvirt's
|
|
behavior, but keep the default intact.
|
|
|
|
v2: Fix doc typos, change name to vnc_allow_host_audio
|
|
|
|
diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug
|
|
index 5bd60b3..551cc20 100644
|
|
--- a/src/qemu/libvirtd_qemu.aug
|
|
+++ b/src/qemu/libvirtd_qemu.aug
|
|
@@ -38,6 +38,7 @@ module Libvirtd_qemu =
|
|
| str_entry "save_image_format"
|
|
| str_entry "hugetlbfs_mount"
|
|
| bool_entry "relaxed_acs_check"
|
|
+ | bool_entry "vnc_allow_host_audio"
|
|
|
|
(* Each enty in the config is one of the following three ... *)
|
|
let entry = vnc_entry
|
|
diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf
|
|
index 3da332f..98a1176 100644
|
|
--- a/src/qemu/qemu.conf
|
|
+++ b/src/qemu/qemu.conf
|
|
@@ -168,3 +168,13 @@
|
|
# be assigned to guests.
|
|
#
|
|
# relaxed_acs_check = 1
|
|
+
|
|
+
|
|
+# QEMU implements an extension for providing audio over a VNC connection,
|
|
+# though if your VNC client does not support it, your only chance for getting
|
|
+# sound output is through regular audio backends. By default, libvirt will
|
|
+# disable all QEMU sound backends if using VNC, since they can cause
|
|
+# permissions issues. Enabling this option will make libvirtd honor the
|
|
+# QEMU_AUDIO_DRV environment variable when using VNC.
|
|
+#
|
|
+# vnc_allow_host_audio = 0
|
|
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
|
|
index 2755545..b4d8e74 100644
|
|
--- a/src/qemu/qemu_conf.c
|
|
+++ b/src/qemu/qemu_conf.c
|
|
@@ -351,6 +351,10 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
|
|
CHECK_TYPE ("relaxed_acs_check", VIR_CONF_LONG);
|
|
if (p) driver->relaxedACS = p->l;
|
|
|
|
+ p = virConfGetValue (conf, "vnc_allow_host_audio");
|
|
+ CHECK_TYPE ("vnc_allow_host_audio", VIR_CONF_LONG);
|
|
+ if (p) driver->vncAllowHostAudio = p->l;
|
|
+
|
|
virConfFree (conf);
|
|
return 0;
|
|
}
|
|
@@ -4399,12 +4403,15 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|
ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
|
|
}
|
|
|
|
- /* QEMU implements a VNC extension for providing audio, so we
|
|
- * set the audio backend to none, to prevent it opening the
|
|
- * host OS audio devices since that causes security issues
|
|
- * and is non-sensical when using VNC.
|
|
+ /* Unless user requested it, set the audio backend to none, to
|
|
+ * prevent it opening the host OS audio devices, since that causes
|
|
+ * security issues and might not work when using VNC.
|
|
*/
|
|
- ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
|
+ if (driver->vncAllowHostAudio) {
|
|
+ ADD_ENV_COPY("QEMU_AUDIO_DRV");
|
|
+ } else {
|
|
+ ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
|
+ }
|
|
} else if ((def->ngraphics == 1) &&
|
|
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
|
char *xauth = NULL;
|
|
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
|
|
index 8fd8d79..7fb4de5 100644
|
|
--- a/src/qemu/qemu_conf.h
|
|
+++ b/src/qemu/qemu_conf.h
|
|
@@ -138,6 +138,8 @@ struct qemud_driver {
|
|
|
|
unsigned int relaxedACS : 1;
|
|
|
|
+ unsigned int vncAllowHostAudio : 1;
|
|
+
|
|
virCapsPtr caps;
|
|
|
|
/* An array of callbacks */
|
|
diff --git a/src/qemu/test_libvirtd_qemu.aug b/src/qemu/test_libvirtd_qemu.aug
|
|
index 2feedc0..a048ae5 100644
|
|
--- a/src/qemu/test_libvirtd_qemu.aug
|
|
+++ b/src/qemu/test_libvirtd_qemu.aug
|
|
@@ -97,6 +97,8 @@ save_image_format = \"gzip\"
|
|
hugetlbfs_mount = \"/dev/hugepages\"
|
|
|
|
relaxed_acs_check = 1
|
|
+
|
|
+vnc_allow_host_audio = 1
|
|
"
|
|
|
|
test Libvirtd_qemu.lns get conf =
|
|
@@ -204,3 +206,5 @@ relaxed_acs_check = 1
|
|
{ "hugetlbfs_mount" = "/dev/hugepages" }
|
|
{ "#empty" }
|
|
{ "relaxed_acs_check" = "1" }
|
|
+{ "#empty" }
|
|
+{ "vnc_allow_host_audio" = "1" }
|