Compare commits
130 Commits
libvirt-0_
...
libvirt-0_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c684a55ed | ||
|
|
b1ea570e48 | ||
|
|
6ccf4c1a0c | ||
|
|
dbaa6786af | ||
|
|
288291b795 | ||
|
|
7c2073faca | ||
|
|
5b528ba717 | ||
|
|
4f731a7250 | ||
|
|
f1ac0031f5 | ||
|
|
e45b9c9030 | ||
|
|
3cf75c269d | ||
|
|
585033f372 | ||
|
|
897506e66a | ||
|
|
e4bf8ffa42 | ||
|
|
20367a58a6 | ||
|
|
aa037364ed | ||
|
|
c034c1a3b2 | ||
|
|
da05e02884 | ||
|
|
e1b7b518ac | ||
|
|
581b5f5022 | ||
|
|
c476c8b683 | ||
|
|
b93eafc59f | ||
|
|
2105d62ca8 | ||
|
|
743adffffe | ||
|
|
11e3b51c0d | ||
|
|
66df925739 | ||
|
|
b20a5c6d3b | ||
|
|
7f58f3aa54 | ||
|
|
6577b14441 | ||
|
|
2e7812764f | ||
|
|
854b878580 | ||
|
|
89c28e4013 | ||
|
|
db269c2d21 | ||
|
|
98e4f7ee9f | ||
|
|
0c4afc5ee9 | ||
|
|
593255292e | ||
|
|
ccafc8ecb4 | ||
|
|
a38fb9cbc1 | ||
|
|
6359121866 | ||
|
|
b20d669e88 | ||
|
|
a3e1cc37ed | ||
|
|
a6eca3382d | ||
|
|
c6c5072e90 | ||
|
|
705fd20a0e | ||
|
|
e0e9927d93 | ||
|
|
bae7a0fb84 | ||
|
|
36aee593bc | ||
|
|
dc0cb0e91a | ||
|
|
84d66312fe | ||
|
|
4f644ce267 | ||
|
|
cdd5b3d62d | ||
|
|
53f63aa62d | ||
|
|
748df35c5f | ||
|
|
a6e23d00fa | ||
|
|
c6d11b43c9 | ||
|
|
83091ff0dd | ||
|
|
4465a63872 | ||
|
|
3f397d9786 | ||
|
|
750aec5507 | ||
|
|
d7c1d3bbc0 | ||
|
|
fa0f21c263 | ||
|
|
afdaf5d354 | ||
|
|
26bba5aea9 | ||
|
|
1a4185bdcc | ||
|
|
6a73119e65 | ||
|
|
1e2f9fce0a | ||
|
|
f5edf79c95 | ||
|
|
b59e64bf44 | ||
|
|
a09fc2658a | ||
|
|
a008fcf27e | ||
|
|
511f6cd625 | ||
|
|
48b90fefc1 | ||
|
|
bc4bbabdf6 | ||
|
|
905627c8fd | ||
|
|
a16d752c10 | ||
|
|
29b1292019 | ||
|
|
f3546be64b | ||
|
|
fb9044931e | ||
|
|
03c5fec4d2 | ||
|
|
ce373a25b6 | ||
|
|
996d0e4709 | ||
|
|
8c01426c44 | ||
|
|
e859f7e59e | ||
|
|
25ea2f59bd | ||
|
|
c80b7f0d5a | ||
|
|
958f1c3dff | ||
|
|
4a8ca1017f | ||
|
|
1e122ee5dc | ||
|
|
6a6307bcdc | ||
|
|
6e8332946a | ||
|
|
982683e56f | ||
|
|
7244d1a339 | ||
|
|
2a3935580c | ||
|
|
28f7f11450 | ||
|
|
ca07bc4597 | ||
|
|
8e23194a2b | ||
|
|
fe09090e2d | ||
|
|
b5868cf8cf | ||
|
|
f294b40ba5 | ||
|
|
c0c1a7bb79 | ||
|
|
1b864048bd | ||
|
|
072c9c45ab | ||
|
|
af111679c3 | ||
|
|
dd9f21eaa2 | ||
|
|
f0e356df98 | ||
|
|
140bcf9ffc | ||
|
|
af69660412 | ||
|
|
6dc94c6252 | ||
|
|
eb34165670 | ||
|
|
7ce08f2148 | ||
|
|
049a8c79d9 | ||
|
|
f7a6d90012 | ||
|
|
67a2f29a89 | ||
|
|
82422fa1ff | ||
|
|
a73cf1d010 | ||
|
|
481419ebb6 | ||
|
|
1e65165c3a | ||
|
|
bca27d9111 | ||
|
|
08b9144b41 | ||
|
|
2063007248 | ||
|
|
81e46cb6da | ||
|
|
263e2f2021 | ||
|
|
2b9efc3de2 | ||
|
|
69f6239766 | ||
|
|
bf744f9872 | ||
|
|
45b0b2bfa6 | ||
|
|
f29ea218b7 | ||
|
|
7d193b7810 | ||
|
|
3182a4df5a | ||
|
|
4f667910e9 |
37
.cvsignore
37
.cvsignore
@@ -1,24 +1,13 @@
|
||||
libvirt-0.0.3.tar.gz
|
||||
libvirt-0.0.4.tar.gz
|
||||
libvirt-0.0.5.tar.gz
|
||||
libvirt-0.0.6.tar.gz
|
||||
libvirt-0.1.0.tar.gz
|
||||
libvirt-0.1.2.tar.gz
|
||||
libvirt-0.1.1.tar.gz
|
||||
libvirt-0.1.3.tar.gz
|
||||
libvirt-0.1.4.tar.gz
|
||||
libvirt-0.1.5.tar.gz
|
||||
libvirt-0.1.6.tar.gz
|
||||
libvirt-0.1.7.tar.gz
|
||||
libvirt-0.1.8.tar.gz
|
||||
libvirt-0.1.9.tar.gz
|
||||
libvirt-0.1.10.tar.gz
|
||||
libvirt-0.1.11.tar.gz
|
||||
libvirt-0.2.0.tar.gz
|
||||
libvirt-0.2.1.tar.gz
|
||||
libvirt-0.2.2.tar.gz
|
||||
libvirt-0.2.3.tar.gz
|
||||
libvirt-0.3.0.tar.gz
|
||||
libvirt-0.3.1.tar.gz
|
||||
libvirt-0.3.2.tar.gz
|
||||
libvirt-0.3.3.tar.gz
|
||||
.build*.log
|
||||
*.rpm
|
||||
i686
|
||||
x86_64
|
||||
libvirt-*.tar.gz
|
||||
libvirt-0.6.0.tar.gz
|
||||
libvirt-0.6.1.tar.gz
|
||||
libvirt-0.6.2.tar.gz
|
||||
libvirt-0.6.3.tar.gz
|
||||
libvirt-0.6.4.tar.gz
|
||||
libvirt-0.6.5.tar.gz
|
||||
libvirt-0.7.0.tar.gz
|
||||
libvirt-0.7.1.tar.gz
|
||||
|
||||
@@ -1,207 +0,0 @@
|
||||
changeset: 1147:7481eafdde8d
|
||||
user: berrange
|
||||
date: Fri Oct 12 18:54:15 2007 +0000
|
||||
files: libvirt.spec.in qemud/Makefile.am qemud/libvirtd.conf src/Makefile.am src/qemu.conf
|
||||
description:
|
||||
Added default example configs for libvirtd/qemu driver
|
||||
|
||||
|
||||
diff -r c48e81e685a3 -r 7481eafdde8d qemud/libvirtd.conf
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ b/qemud/libvirtd.conf Fri Oct 12 18:54:15 2007 +0000
|
||||
@@ -0,0 +1,141 @@
|
||||
+# Master libvirt daemon configuration file
|
||||
+#
|
||||
+# For further information consult http://libvirt.org/format.html
|
||||
+
|
||||
+
|
||||
+# Flag listening for secure TLS connections on the public TCP/IP port.
|
||||
+# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
+# have any effect.
|
||||
+#
|
||||
+# It is neccessary to setup a CA and issue server certificates before
|
||||
+# using this capability.
|
||||
+#
|
||||
+# This is enabled by default, uncomment this to disable it
|
||||
+# listen_tls = 0
|
||||
+
|
||||
+# Listen for unencrypted TCP connections on the public TCP/IP port.
|
||||
+# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
+# have any effect.
|
||||
+#
|
||||
+# NB, this is insecure. Do not use except for development.
|
||||
+#
|
||||
+# This is disabled by default, uncomment this to enable it.
|
||||
+# listen_tcp = 1
|
||||
+
|
||||
+
|
||||
+
|
||||
+# Override the port for accepting secure TLS connections
|
||||
+# This can be a port number, or service name
|
||||
+#
|
||||
+# tls_port = "16514"
|
||||
+
|
||||
+# Override the port for accepting insecure TCP connections
|
||||
+# This can be a port number, or service name
|
||||
+#
|
||||
+# tcp_port = "16509"
|
||||
+
|
||||
+
|
||||
+
|
||||
+# Flag toggling mDNS advertizement of the libvirt service.
|
||||
+#
|
||||
+# Alternatively can disable for all services on a host by
|
||||
+# stopping the Avahi daemon
|
||||
+#
|
||||
+# This is enabled by default, uncomment this to disable it
|
||||
+# mdns_adv = 0
|
||||
+
|
||||
+# Override the default mDNS advertizement name. This must be
|
||||
+# unique on the immediate broadcast network.
|
||||
+#
|
||||
+# The default is "Virtualization Host HOSTNAME", where HOSTNAME
|
||||
+# is subsituted for the short hostname of the machine (without domain)
|
||||
+#
|
||||
+# mdns_name "Virtualization Host Joe Demo"
|
||||
+
|
||||
+
|
||||
+
|
||||
+# Set the UNIX domain socket group ownership. This can be used to
|
||||
+# allow a 'trusted' set of users access to management capabilities
|
||||
+# without becoming root.
|
||||
+#
|
||||
+# This is restricted to 'root' by default.
|
||||
+# unix_sock_group "libvirt"
|
||||
+
|
||||
+# Set the UNIX socket permissions for the R/O socket. This is used
|
||||
+# for monitoring VM status only
|
||||
+#
|
||||
+# Default allows any user. If setting group ownership may want to
|
||||
+# restrict this to:
|
||||
+# unix_sock_ro_perms "0777"
|
||||
+
|
||||
+# Set the UNIX socket permissions for the R/W socket. This is used
|
||||
+# for full management of VMs
|
||||
+#
|
||||
+# Default allows only root. If setting group ownership may want to
|
||||
+# relax this to:
|
||||
+# unix_sock_rw_perms "octal-perms" "0770"
|
||||
+
|
||||
+
|
||||
+
|
||||
+# Flag to disable verification of client certificates
|
||||
+#
|
||||
+# Client certificate verification is the primary authentication mechanism.
|
||||
+# Any client which does not present a certificate signed by the CA
|
||||
+# will be rejected.
|
||||
+#
|
||||
+# Default is to always verify. Uncommenting this will disable
|
||||
+# verification - make sure an IP whitelist is set
|
||||
+# tls_no_verify_certificate 1
|
||||
+
|
||||
+# Flag to disable verification of client IP address
|
||||
+#
|
||||
+# Client IP address will be verified against the CommonName field
|
||||
+# of the x509 certificate. This has minimal security benefit since
|
||||
+# it is easy to spoof source IP.
|
||||
+#
|
||||
+# Uncommenting this will disable verification
|
||||
+# tls_no_verify_address 1
|
||||
+
|
||||
+# Override the default server key file path
|
||||
+#
|
||||
+# key_file "/etc/pki/libvirt/private/serverkey.pem"
|
||||
+
|
||||
+# Override the default server certificate file path
|
||||
+#
|
||||
+# cert_file "/etc/pki/libvirt/servercert.pem"
|
||||
+
|
||||
+# Override the default CA certificate path
|
||||
+#
|
||||
+# ca_file "/etc/pki/CA/cacert.pem"
|
||||
+
|
||||
+# Specify a certificate revocation list.
|
||||
+#
|
||||
+# Defaults to not using a CRL, uncomment to enable it
|
||||
+# crl_file "/etc/pki/CA/crl.pem"
|
||||
+
|
||||
+# A whitelist of allowed x509 Distinguished Names
|
||||
+# This list may contain wildcards such as
|
||||
+#
|
||||
+# "C=GB,ST=London,L=London,O=Red Hat,CN=*"
|
||||
+#
|
||||
+# See the POSIX fnmatch function for the format of the wildcards.
|
||||
+#
|
||||
+# NB If this is an empty list, no client can connect, so comment out
|
||||
+# entirely rather than using empty list to disable these checks
|
||||
+#
|
||||
+# By default, no DN's are checked
|
||||
+# tls_allowed_dn_list ["DN1", "DN2"]
|
||||
+
|
||||
+
|
||||
+# A whitelist of allowed client IP addresses
|
||||
+#
|
||||
+# This list may contain wildcards such as 192.168.* See the POSIX fnmatch
|
||||
+# function for the format of the wildcards.
|
||||
+#
|
||||
+# NB If this is an empty list, no client can connect, so comment out
|
||||
+# entirely rather than using empty list to disable these checks
|
||||
+#
|
||||
+# By default, no IP's are checked. This can be IPv4 or IPv6 addresses
|
||||
+# tls_allowed_ip_list ["ip1", "ip2", "ip3"]
|
||||
+
|
||||
+
|
||||
diff -r c48e81e685a3 -r 7481eafdde8d src/qemu.conf
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ b/src/qemu.conf Fri Oct 12 18:54:15 2007 +0000
|
||||
@@ -0,0 +1,49 @@
|
||||
+# Master configuration file for the QEMU driver.
|
||||
+# All settings described here are optional - if omitted, sensible
|
||||
+# defaults are used.
|
||||
+
|
||||
+# VNC is configured to listen on 127.0.0.1 by default.
|
||||
+# To make it listen on all public interfaces, uncomment
|
||||
+# this next option.
|
||||
+#
|
||||
+# NB, strong recommendation to enable TLS + x509 certificate
|
||||
+# verification when allowing public access
|
||||
+#
|
||||
+# vnc_listen = "0.0.0.0"
|
||||
+
|
||||
+
|
||||
+# Enable use of TLS encryption on the VNC server. This requires
|
||||
+# a VNC client which supports the VeNCrypt protocol extension.
|
||||
+# Examples include vinagre, virt-viewer, virt-manager and vencrypt
|
||||
+# itself. UltraVNC, RealVNC, TightVNC do not support this
|
||||
+#
|
||||
+# It is neccessary to setup CA and issue a server certificate
|
||||
+# before enabling this.
|
||||
+#
|
||||
+# vnc_tls = 1
|
||||
+
|
||||
+
|
||||
+# Use of TLS requires that x509 certificates be issued. The
|
||||
+# default it to keep them in /etc/pki/libvirt-vnc. This directory
|
||||
+# must contain
|
||||
+#
|
||||
+# ca-cert.pem - the CA master certificate
|
||||
+# server-cert.pem - the server certificate signed with ca-cert.pem
|
||||
+# server-key.pem - the server private key
|
||||
+#
|
||||
+# This option allows the certificate directory to be changed
|
||||
+#
|
||||
+# vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
|
||||
+
|
||||
+
|
||||
+# The default TLS configuration only uses certificates for the server
|
||||
+# allowing the client to verify the server's identity and establish
|
||||
+# and encrypted channel.
|
||||
+#
|
||||
+# It is possible to use x509 certificates for authentication too, by
|
||||
+# issuing a x509 certificate to every client who needs to connect.
|
||||
+#
|
||||
+# Enabling this option will reject any client who does not have a
|
||||
+# certificate signed by the CA in /etc/pki/libvirt-vnc/ca-cert.pem
|
||||
+#
|
||||
+# vnc_tls_x509_verify = 1
|
||||
|
||||
@@ -1,230 +0,0 @@
|
||||
changeset: 1146:c48e81e685a3
|
||||
user: berrange
|
||||
date: Fri Oct 12 15:05:44 2007 +0000
|
||||
files: ChangeLog src/qemu_conf.c src/qemu_conf.h src/qemu_driver.c
|
||||
description:
|
||||
Added QEMU driver config file
|
||||
|
||||
|
||||
diff -r 522efe7f7e8f -r c48e81e685a3 src/qemu_conf.c
|
||||
--- a/src/qemu_conf.c Wed Oct 10 18:46:17 2007 +0000
|
||||
+++ b/src/qemu_conf.c Fri Oct 12 15:05:44 2007 +0000
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "qemu_conf.h"
|
||||
#include "uuid.h"
|
||||
#include "buf.h"
|
||||
+#include "conf.h"
|
||||
|
||||
#define qemudLog(level, msg...) fprintf(stderr, msg)
|
||||
|
||||
@@ -65,6 +66,68 @@ void qemudReportError(virConnectPtr conn
|
||||
__virRaiseError(conn, dom, net, VIR_FROM_QEMU, code, VIR_ERR_ERROR,
|
||||
NULL, NULL, NULL, -1, -1, errorMessage);
|
||||
}
|
||||
+
|
||||
+int qemudLoadDriverConfig(struct qemud_driver *driver,
|
||||
+ const char *filename) {
|
||||
+ virConfPtr conf;
|
||||
+ virConfValuePtr p;
|
||||
+
|
||||
+ /* Setup 2 critical defaults */
|
||||
+ strcpy(driver->vncListen, "127.0.0.1");
|
||||
+ if (!(driver->vncTLSx509certdir = strdup(SYSCONF_DIR "/pki/libvirt-vnc"))) {
|
||||
+ qemudReportError(NULL, NULL, NULL, VIR_ERR_NO_MEMORY,
|
||||
+ "vncTLSx509certdir");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ /* Just check the file is readable before opening it, otherwise
|
||||
+ * libvirt emits an error.
|
||||
+ */
|
||||
+ if (access (filename, R_OK) == -1) return 0;
|
||||
+
|
||||
+ conf = virConfReadFile (filename);
|
||||
+ if (!conf) return 0;
|
||||
+
|
||||
+
|
||||
+#define CHECK_TYPE(name,typ) if (p && p->type != (typ)) { \
|
||||
+ qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR, \
|
||||
+ "remoteReadConfigFile: %s: %s: expected type " #typ "\n", \
|
||||
+ filename, (name)); \
|
||||
+ virConfFree(conf); \
|
||||
+ return -1; \
|
||||
+ }
|
||||
+
|
||||
+ p = virConfGetValue (conf, "vnc_tls");
|
||||
+ CHECK_TYPE ("vnc_tls", VIR_CONF_LONG);
|
||||
+ if (p) driver->vncTLS = p->l;
|
||||
+
|
||||
+ p = virConfGetValue (conf, "vnc_tls_x509_verify");
|
||||
+ CHECK_TYPE ("vnc_tls_x509_verify", VIR_CONF_LONG);
|
||||
+ if (p) driver->vncTLSx509verify = p->l;
|
||||
+
|
||||
+ p = virConfGetValue (conf, "vnc_tls_x509_cert_dir");
|
||||
+ CHECK_TYPE ("vnc_tls_x509_cert_dir", VIR_CONF_STRING);
|
||||
+ if (p && p->str) {
|
||||
+ free(driver->vncTLSx509certdir);
|
||||
+ if (!(driver->vncTLSx509certdir = strdup(p->str))) {
|
||||
+ qemudReportError(NULL, NULL, NULL, VIR_ERR_NO_MEMORY,
|
||||
+ "vncTLSx509certdir");
|
||||
+ virConfFree(conf);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ p = virConfGetValue (conf, "vnc_listen");
|
||||
+ CHECK_TYPE ("vnc_listen", VIR_CONF_STRING);
|
||||
+ if (p && p->str) {
|
||||
+ strncpy(driver->vncListen, p->str, sizeof(driver->vncListen));
|
||||
+ driver->vncListen[sizeof(driver->vncListen)-1] = '\0';
|
||||
+ }
|
||||
+
|
||||
+ virConfFree (conf);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
|
||||
struct qemud_vm *qemudFindVMByID(const struct qemud_driver *driver, int id) {
|
||||
struct qemud_vm *vm = driver->vms;
|
||||
@@ -1234,7 +1297,7 @@ static struct qemud_vm_def *qemudParseXM
|
||||
if (vnclisten && *vnclisten)
|
||||
strncpy(def->vncListen, (char *)vnclisten, BR_INET_ADDR_MAXLEN-1);
|
||||
else
|
||||
- strcpy(def->vncListen, "127.0.0.1");
|
||||
+ strcpy(def->vncListen, driver->vncListen);
|
||||
def->vncListen[BR_INET_ADDR_MAXLEN-1] = '\0';
|
||||
xmlFree(vncport);
|
||||
xmlFree(vnclisten);
|
||||
@@ -1750,15 +1813,30 @@ int qemudBuildCommandLine(virConnectPtr
|
||||
}
|
||||
|
||||
if (vm->def->graphicsType == QEMUD_GRAPHICS_VNC) {
|
||||
- char vncdisplay[BR_INET_ADDR_MAXLEN+20];
|
||||
+ char vncdisplay[PATH_MAX];
|
||||
int ret;
|
||||
- if (vm->qemuCmdFlags & QEMUD_CMD_FLAG_VNC_COLON)
|
||||
- ret = snprintf(vncdisplay, sizeof(vncdisplay), "%s:%d",
|
||||
+
|
||||
+ if (vm->qemuCmdFlags & QEMUD_CMD_FLAG_VNC_COLON) {
|
||||
+ char options[PATH_MAX] = "";
|
||||
+ if (driver->vncTLS) {
|
||||
+ strcat(options, ",tls");
|
||||
+ if (driver->vncTLSx509verify) {
|
||||
+ strcat(options, ",x509verify=");
|
||||
+ } else {
|
||||
+ strcat(options, ",x509=");
|
||||
+ }
|
||||
+ strncat(options, driver->vncTLSx509certdir,
|
||||
+ sizeof(options) - (strlen(driver->vncTLSx509certdir)-1));
|
||||
+ options[sizeof(options)-1] = '\0';
|
||||
+ }
|
||||
+ ret = snprintf(vncdisplay, sizeof(vncdisplay), "%s:%d%s",
|
||||
vm->def->vncListen,
|
||||
- vm->def->vncActivePort - 5900);
|
||||
- else
|
||||
+ vm->def->vncActivePort - 5900,
|
||||
+ options);
|
||||
+ } else {
|
||||
ret = snprintf(vncdisplay, sizeof(vncdisplay), "%d",
|
||||
vm->def->vncActivePort - 5900);
|
||||
+ }
|
||||
if (ret < 0 || ret >= (int)sizeof(vncdisplay))
|
||||
goto error;
|
||||
|
||||
diff -r 522efe7f7e8f -r c48e81e685a3 src/qemu_conf.h
|
||||
--- a/src/qemu_conf.h Wed Oct 10 18:46:17 2007 +0000
|
||||
+++ b/src/qemu_conf.h Fri Oct 12 15:05:44 2007 +0000
|
||||
@@ -289,6 +289,10 @@ struct qemud_driver {
|
||||
char *networkConfigDir;
|
||||
char *networkAutostartDir;
|
||||
char logDir[PATH_MAX];
|
||||
+ int vncTLS : 1;
|
||||
+ int vncTLSx509verify : 1;
|
||||
+ char *vncTLSx509certdir;
|
||||
+ char vncListen[BR_INET_ADDR_MAXLEN];
|
||||
};
|
||||
|
||||
|
||||
@@ -311,6 +315,8 @@ void qemudReportError(virConnectPtr conn
|
||||
ATTRIBUTE_FORMAT(printf,5,6);
|
||||
|
||||
|
||||
+int qemudLoadDriverConfig(struct qemud_driver *driver,
|
||||
+ const char *filename);
|
||||
|
||||
struct qemud_vm *qemudFindVMByID(const struct qemud_driver *driver,
|
||||
int id);
|
||||
diff -r 522efe7f7e8f -r c48e81e685a3 src/qemu_driver.c
|
||||
--- a/src/qemu_driver.c Wed Oct 10 18:46:17 2007 +0000
|
||||
+++ b/src/qemu_driver.c Fri Oct 12 15:05:44 2007 +0000
|
||||
@@ -155,6 +155,7 @@ qemudStartup(void) {
|
||||
uid_t uid = geteuid();
|
||||
struct passwd *pw;
|
||||
char *base = NULL;
|
||||
+ char driverConf[PATH_MAX];
|
||||
|
||||
if (!(qemu_driver = calloc(1, sizeof(struct qemud_driver)))) {
|
||||
return -1;
|
||||
@@ -167,7 +168,7 @@ qemudStartup(void) {
|
||||
if (snprintf(qemu_driver->logDir, PATH_MAX, "%s/log/libvirt/qemu", LOCAL_STATE_DIR) >= PATH_MAX)
|
||||
goto snprintf_error;
|
||||
|
||||
- if ((base = strdup (SYSCONF_DIR "/libvirt/qemu")) == NULL)
|
||||
+ if ((base = strdup (SYSCONF_DIR "/libvirt")) == NULL)
|
||||
goto out_of_memory;
|
||||
} else {
|
||||
if (!(pw = getpwuid(uid))) {
|
||||
@@ -179,7 +180,7 @@ qemudStartup(void) {
|
||||
if (snprintf(qemu_driver->logDir, PATH_MAX, "%s/.libvirt/qemu/log", pw->pw_dir) >= PATH_MAX)
|
||||
goto snprintf_error;
|
||||
|
||||
- if (asprintf (&base, "%s/.libvirt/qemu", pw->pw_dir) == -1) {
|
||||
+ if (asprintf (&base, "%s/.libvirt", pw->pw_dir) == -1) {
|
||||
qemudLog (QEMUD_ERR, "out of memory in asprintf");
|
||||
goto out_of_memory;
|
||||
}
|
||||
@@ -188,24 +189,36 @@ qemudStartup(void) {
|
||||
/* Configuration paths are either ~/.libvirt/qemu/... (session) or
|
||||
* /etc/libvirt/qemu/... (system).
|
||||
*/
|
||||
- if (asprintf (&qemu_driver->configDir, "%s", base) == -1)
|
||||
+ if (snprintf (driverConf, sizeof(driverConf), "%s/qemu.conf", base) == -1)
|
||||
goto out_of_memory;
|
||||
-
|
||||
- if (asprintf (&qemu_driver->autostartDir, "%s/autostart", base) == -1)
|
||||
+ driverConf[sizeof(driverConf)-1] = '\0';
|
||||
+
|
||||
+ if (asprintf (&qemu_driver->configDir, "%s/qemu", base) == -1)
|
||||
goto out_of_memory;
|
||||
|
||||
- if (asprintf (&qemu_driver->networkConfigDir, "%s/networks", base) == -1)
|
||||
+ if (asprintf (&qemu_driver->autostartDir, "%s/qemu/autostart", base) == -1)
|
||||
goto out_of_memory;
|
||||
|
||||
- if (asprintf (&qemu_driver->networkAutostartDir, "%s/networks/autostart",
|
||||
+ if (asprintf (&qemu_driver->networkConfigDir, "%s/qemu/networks", base) == -1)
|
||||
+ goto out_of_memory;
|
||||
+
|
||||
+ if (asprintf (&qemu_driver->networkAutostartDir, "%s/qemu/networks/autostart",
|
||||
base) == -1)
|
||||
goto out_of_memory;
|
||||
|
||||
- if (qemudScanConfigs(qemu_driver) < 0)
|
||||
+ free(base);
|
||||
+
|
||||
+ if (qemudLoadDriverConfig(qemu_driver, driverConf) < 0) {
|
||||
qemudShutdown();
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (qemudScanConfigs(qemu_driver) < 0) {
|
||||
+ qemudShutdown();
|
||||
+ return -1;
|
||||
+ }
|
||||
qemudAutostartConfigs(qemu_driver);
|
||||
|
||||
- free(base);
|
||||
return 0;
|
||||
|
||||
snprintf_error:
|
||||
|
||||
77
libvirt-disable-audio-backend.patch
Normal file
77
libvirt-disable-audio-backend.patch
Normal file
@@ -0,0 +1,77 @@
|
||||
From 4721ceb9b85daabe53804627473b06ced821c695 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel P. Berrange <berrange@redhat.com>
|
||||
Date: Mon, 14 Sep 2009 11:23:20 +0100
|
||||
Subject: [PATCH] Allow control over QEMU audio backend
|
||||
|
||||
When using VNC for graphics + keyboard + mouse, we shouldn't
|
||||
then use the host OS for audio. Audio should go back over
|
||||
VNC.
|
||||
|
||||
When using SDL for graphics, we should use the host OS for
|
||||
audio since that's where the display is. We need to allow
|
||||
certain QEMU env variables to be passed through to guest
|
||||
too to allow choice of QEMU audio backend.
|
||||
|
||||
* qemud/libvirtd.sysconf: Mention QEMU/SDL audio env vars
|
||||
* src/qemu_conf.c: Passthrough QEMU/SDL audio env for SDL display,
|
||||
disable host audio for VNC display
|
||||
|
||||
(cherry picked from commit b08e6d38ae7a0ed70300d7d82107f83fddb60f44)
|
||||
|
||||
Fedora-patch: libvirt-disable-audio-backend.patch
|
||||
---
|
||||
qemud/libvirtd.sysconf | 8 ++++++++
|
||||
src/qemu_conf.c | 14 ++++++++++++++
|
||||
2 files changed, 22 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/qemud/libvirtd.sysconf b/qemud/libvirtd.sysconf
|
||||
index fe4596a..28080a0 100644
|
||||
--- a/qemud/libvirtd.sysconf
|
||||
+++ b/qemud/libvirtd.sysconf
|
||||
@@ -7,3 +7,11 @@
|
||||
|
||||
# Override Kerberos service keytab for SASL/GSSAPI
|
||||
#KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||
+
|
||||
+# Override the QEMU/SDL default audio driver probing when
|
||||
+# starting virtual machines using SDL graphics
|
||||
+#
|
||||
+# NB these have no effect for VMs using VNC
|
||||
+#QEMU_AUDIO_DRV=sdl
|
||||
+#
|
||||
+#SDL_AUDIODRIVER=pulse
|
||||
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
|
||||
index f92bcef..0dd0624 100644
|
||||
--- a/src/qemu_conf.c
|
||||
+++ b/src/qemu_conf.c
|
||||
@@ -2109,6 +2109,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
||||
ADD_ARG_LIT("-k");
|
||||
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.
|
||||
+ */
|
||||
+ ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
||||
} else if ((def->ngraphics == 1) &&
|
||||
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
||||
char *xauth = NULL;
|
||||
@@ -2131,6 +2138,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
||||
ADD_ENV(display);
|
||||
if (def->graphics[0]->data.sdl.fullscreen)
|
||||
ADD_ARG_LIT("-full-screen");
|
||||
+
|
||||
+ /* If using SDL for video, then we should just let it
|
||||
+ * use QEMU's host audio drivers, possibly SDL too
|
||||
+ * User can set these two before starting libvirtd
|
||||
+ */
|
||||
+ ADD_ENV_COPY("QEMU_AUDIO_DRV");
|
||||
+ ADD_ENV_COPY("SDL_AUDIODRIVER");
|
||||
}
|
||||
|
||||
if (def->nvideos) {
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
32
libvirt-fix-drv-supports-feature-bogus-error.patch
Normal file
32
libvirt-fix-drv-supports-feature-bogus-error.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
From 7692e1e19487c28454b1e5f6488d5574c70883f2 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Lalancette <clalance@redhat.com>
|
||||
Date: Mon, 21 Sep 2009 14:53:31 +0200
|
||||
Subject: [PATCH] Don't do virSetConnError when virDrvSupportsFeature is successful.
|
||||
|
||||
Signed-off-by: Chris Lalancette <clalance@redhat.com>
|
||||
Fedora-patch: libvirt-fix-drv-supports-feature-bogus-error.patch
|
||||
---
|
||||
src/libvirt.c | 7 +++++--
|
||||
1 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/libvirt.c b/src/libvirt.c
|
||||
index 4a11688..fa59dc7 100644
|
||||
--- a/src/libvirt.c
|
||||
+++ b/src/libvirt.c
|
||||
@@ -1349,8 +1349,11 @@ virDrvSupportsFeature (virConnectPtr conn, int feature)
|
||||
}
|
||||
|
||||
ret = VIR_DRV_SUPPORTS_FEATURE (conn->driver, conn, feature);
|
||||
- /* Copy to connection error object for back compatability */
|
||||
- virSetConnError(conn);
|
||||
+
|
||||
+ if (ret < 0)
|
||||
+ /* Copy to connection error object for back compatability */
|
||||
+ virSetConnError(conn);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
46
libvirt-fix-net-hotunplug-double-free.patch
Normal file
46
libvirt-fix-net-hotunplug-double-free.patch
Normal file
@@ -0,0 +1,46 @@
|
||||
From ba585ed6cff624c6c0f1f9801382fd6846466ee0 Mon Sep 17 00:00:00 2001
|
||||
From: Mark McLoughlin <markmc@redhat.com>
|
||||
Date: Thu, 17 Sep 2009 15:31:08 +0100
|
||||
Subject: [PATCH] Fix net/disk hot-unplug segfault
|
||||
|
||||
When we hot-unplug the last device, we're currently double-freeing
|
||||
the device definition.
|
||||
|
||||
Reported by Michal Nowak here:
|
||||
|
||||
https://bugzilla.redhat.com/523953
|
||||
|
||||
* src/qemu_driver.c: fix double free
|
||||
|
||||
(cherry-picked from commit 8881ae1bf8783006777429403cc543c33187175d)
|
||||
|
||||
Fedora-patch: libvirt-fix-net-hotunplug-double-free.patch
|
||||
---
|
||||
src/qemu_driver.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||
index a65334f..de31581 100644
|
||||
--- a/src/qemu_driver.c
|
||||
+++ b/src/qemu_driver.c
|
||||
@@ -5998,7 +5998,7 @@ try_command:
|
||||
/* ignore, harmless */
|
||||
}
|
||||
} else {
|
||||
- VIR_FREE(vm->def->disks[0]);
|
||||
+ VIR_FREE(vm->def->disks);
|
||||
vm->def->ndisks = 0;
|
||||
}
|
||||
virDomainDiskDefFree(detach);
|
||||
@@ -6100,7 +6100,7 @@ qemudDomainDetachNetDevice(virConnectPtr conn,
|
||||
/* ignore, harmless */
|
||||
}
|
||||
} else {
|
||||
- VIR_FREE(vm->def->nets[0]);
|
||||
+ VIR_FREE(vm->def->nets);
|
||||
vm->def->nnets = 0;
|
||||
}
|
||||
virDomainNetDefFree(detach);
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
50
libvirt-fix-pci-hostdev-hotunplug-leak.patch
Normal file
50
libvirt-fix-pci-hostdev-hotunplug-leak.patch
Normal file
@@ -0,0 +1,50 @@
|
||||
From 17831d20051f8de8f1f7d661e8a23f4fe67c2153 Mon Sep 17 00:00:00 2001
|
||||
From: Mark McLoughlin <markmc@redhat.com>
|
||||
Date: Thu, 17 Sep 2009 15:32:45 +0100
|
||||
Subject: [PATCH] Fix leak in PCI hostdev hot-unplug
|
||||
|
||||
* src/qemu_driver.c: sync the hostdev hot-unplug code with the disk/net
|
||||
code.
|
||||
|
||||
(cherry-picked from commit a70da51ff76ed860bfc0cdee2e1d556da997c557)
|
||||
|
||||
Fedora-patch: libvirt-fix-pci-hostdev-hotunplug-leak.patch
|
||||
---
|
||||
src/qemu_driver.c | 20 +++++++++++++-------
|
||||
1 files changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||
index de31581..2ddcdc0 100644
|
||||
--- a/src/qemu_driver.c
|
||||
+++ b/src/qemu_driver.c
|
||||
@@ -6206,14 +6206,20 @@ static int qemudDomainDetachHostPciDevice(virConnectPtr conn,
|
||||
pciFreeDevice(conn, pci);
|
||||
}
|
||||
|
||||
- if (i != --vm->def->nhostdevs)
|
||||
- memmove(&vm->def->hostdevs[i],
|
||||
- &vm->def->hostdevs[i+1],
|
||||
- sizeof(*vm->def->hostdevs) * (vm->def->nhostdevs-i));
|
||||
- if (VIR_REALLOC_N(vm->def->hostdevs, vm->def->nhostdevs) < 0) {
|
||||
- virReportOOMError(conn);
|
||||
- ret = -1;
|
||||
+ if (vm->def->nhostdevs > 1) {
|
||||
+ memmove(vm->def->hostdevs + i,
|
||||
+ vm->def->hostdevs + i + 1,
|
||||
+ sizeof(*vm->def->hostdevs) *
|
||||
+ (vm->def->nhostdevs - (i + 1)));
|
||||
+ vm->def->nhostdevs--;
|
||||
+ if (VIR_REALLOC_N(vm->def->hostdevs, vm->def->nhostdevs) < 0) {
|
||||
+ /* ignore, harmless */
|
||||
+ }
|
||||
+ } else {
|
||||
+ VIR_FREE(vm->def->hostdevs);
|
||||
+ vm->def->nhostdevs = 0;
|
||||
}
|
||||
+ virDomainHostdevDefFree(detach);
|
||||
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
53
libvirt-fix-qemu-raw-format-save.patch
Normal file
53
libvirt-fix-qemu-raw-format-save.patch
Normal file
@@ -0,0 +1,53 @@
|
||||
From f1be5a4714e194a84840343e0937fe62463a18dc Mon Sep 17 00:00:00 2001
|
||||
From: Charles Duffy <Charles_Duffy@dell.com>
|
||||
Date: Fri, 18 Sep 2009 11:32:35 -0500
|
||||
Subject: [PATCH] Prevent attempt to call cat -c during virDomainSave to raw
|
||||
|
||||
Fedora-patch: libvirt-fix-qemu-raw-format-save.patch
|
||||
---
|
||||
src/qemu_driver.c | 28 ++++++++++++++++++----------
|
||||
1 files changed, 18 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||
index 2ddcdc0..7c7b985 100644
|
||||
--- a/src/qemu_driver.c
|
||||
+++ b/src/qemu_driver.c
|
||||
@@ -3905,17 +3905,25 @@ static int qemudDomainSave(virDomainPtr dom,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
- const char *prog = qemudSaveCompressionTypeToString(header.compressed);
|
||||
- if (prog == NULL) {
|
||||
- qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||
- _("Invalid compress format %d"), header.compressed);
|
||||
- goto cleanup;
|
||||
- }
|
||||
+ {
|
||||
+ const char *prog = qemudSaveCompressionTypeToString(header.compressed);
|
||||
+ const char *args;
|
||||
|
||||
- if (STREQ (prog, "raw"))
|
||||
- prog = "cat";
|
||||
- internalret = virAsprintf(&command, "migrate \"exec:"
|
||||
- "%s -c >> '%s' 2>/dev/null\"", prog, safe_path);
|
||||
+ if (prog == NULL) {
|
||||
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||
+ _("Invalid compress format %d"), header.compressed);
|
||||
+ goto cleanup;
|
||||
+ }
|
||||
+
|
||||
+ if (STREQ (prog, "raw")) {
|
||||
+ prog = "cat";
|
||||
+ args = "";
|
||||
+ } else {
|
||||
+ args = "-c";
|
||||
+ }
|
||||
+ internalret = virAsprintf(&command, "migrate \"exec:"
|
||||
+ "%s %s >> '%s' 2>/dev/null\"", prog, args, safe_path);
|
||||
+ }
|
||||
|
||||
if (internalret < 0) {
|
||||
virReportOOMError(dom->conn);
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
41
libvirt-fix-usb-device-passthrough.patch
Normal file
41
libvirt-fix-usb-device-passthrough.patch
Normal file
@@ -0,0 +1,41 @@
|
||||
From 6b12148864cf6a1d22a2cf4e0e9c48e9946331cb Mon Sep 17 00:00:00 2001
|
||||
From: Mark McLoughlin <markmc@redhat.com>
|
||||
Date: Wed, 30 Sep 2009 18:37:03 +0100
|
||||
Subject: [PATCH] Fix USB device re-labelling
|
||||
|
||||
A simple misplaced break out of a switch results in:
|
||||
|
||||
libvir: error : Failed to open file '/sys/bus/pci/devices/0000:00:54c./vendor': No such file or directory
|
||||
libvir: error : Failed to open file '/sys/bus/pci/devices/0000:00:54c./device': No such file or directory
|
||||
libvir: error : this function is not supported by the hypervisor: Failed to read product/vendor ID for 0000:00:54c.
|
||||
|
||||
when trying to passthrough a USB host device to qemu.
|
||||
|
||||
* src/security_selinux.c: fix a switch/break thinko
|
||||
|
||||
Fedora-patch: libvirt-fix-usb-device-passthrough.patch
|
||||
---
|
||||
src/security_selinux.c | 3 +--
|
||||
1 files changed, 1 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/security_selinux.c b/src/security_selinux.c
|
||||
index bc295b1..b4dc153 100644
|
||||
--- a/src/security_selinux.c
|
||||
+++ b/src/security_selinux.c
|
||||
@@ -464,12 +464,11 @@ SELinuxSetSecurityHostdevLabel(virConnectPtr conn,
|
||||
|
||||
ret = usbDeviceFileIterate(conn, usb, SELinuxSetSecurityUSBLabel, vm);
|
||||
usbFreeDevice(conn, usb);
|
||||
-
|
||||
- break;
|
||||
} else {
|
||||
/* XXX deal with product/vendor better */
|
||||
ret = 0;
|
||||
}
|
||||
+ break;
|
||||
}
|
||||
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: {
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
1402
libvirt-svirt-relabel-qcow2-backing-files.patch
Normal file
1402
libvirt-svirt-relabel-qcow2-backing-files.patch
Normal file
File diff suppressed because it is too large
Load Diff
854
libvirt.spec
854
libvirt.spec
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user