Compare commits

...

13 Commits

Author SHA1 Message Date
Bill Nottingham
b395a39f7b makefile update to properly grab makefile.common 2007-10-15 19:05:00 +00:00
Daniel P. Berrange
fdd7e87fe3 Added backport of patch for qemu driver config file 2007-10-15 18:23:02 +00:00
Daniel P. Berrange
f06c387ab5 Add i686 to arch list for Xen builds allowing 'make local' to do the right thing 2007-10-10 16:46:18 +00:00
Daniel Veillard
5ad8bc8190 Upstream release 0.3.3 2007-09-30 21:18:47 +00:00
Daniel Veillard
31802de821 Stupididy on the namagement of buildroots, daniel 2007-08-24 15:34:27 +00:00
Daniel Veillard
cc39758e17 Compile on arches without Xen, Daniel 2007-08-24 15:10:05 +00:00
Daniel Veillard
55fabd69c0 Release of 0.3.2, remove the old patch, Daniel 2007-08-21 15:14:54 +00:00
Daniel Veillard
b2a1a0e9ba Fixing missing Requires in libvirt-devel, Daniel 2007-08-16 15:16:44 +00:00
Daniel Veillard
cbe377ed29 Fix for bug #249594, Daniel 2007-07-26 15:35:55 +00:00
Jesse Keating
06a21e388f * Wed Jul 25 2007 Jesse Keating <jkeating@redhat.com> - 0.3.1-2
- Rebuild for RH #249435
2007-07-25 17:47:38 +00:00
Daniel Veillard
d1a886ab31 Upstream release 0.3.1, Daniel 2007-07-24 15:45:36 +00:00
Daniel Veillard
c70baa5133 Upstream release of 0.3.0 , removed old patches, Daniel 2007-07-09 12:40:55 +00:00
Daniel Veillard
52b4d91272 bvirt-0.2.3 upstream release, Daniel 2007-06-08 15:07:30 +00:00
12 changed files with 552 additions and 317 deletions

View File

@@ -17,3 +17,8 @@ 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

View File

@@ -3,4 +3,19 @@
NAME := libvirt
SPECFILE = $(firstword $(wildcard *.spec))
include ../common/Makefile.common
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@@ -1,17 +0,0 @@
diff -rup libvirt-0.2.2/qemud/conf.c libvirt-0.2.2.new/qemud/conf.c
--- libvirt-0.2.2/qemud/conf.c 2007-05-14 10:38:52.000000000 -0400
+++ libvirt-0.2.2.new/qemud/conf.c 2007-05-14 10:38:34.000000000 -0400
@@ -1151,6 +1151,12 @@ qemudNetworkIfaceConnect(struct qemud_se
goto error;
}
+ if (!server->brctl && (err = brInit(&server->brctl))) {
+ qemudReportError(server, VIR_ERR_INTERNAL_ERROR,
+ "cannot initialize bridge support: %s", strerror(err));
+ goto error;
+ }
+
if ((err = brAddTap(server->brctl, brname,
ifname, BR_IFNAME_MAXLEN, &tapfd))) {
qemudReportError(server, VIR_ERR_INTERNAL_ERROR,
Only in libvirt-0.2.2.new/qemud: conf.c.orig

View File

@@ -1,15 +0,0 @@
diff -rup libvirt-0.2.2/src/xen_unified.c libvirt-0.2.2.new/src/xen_unified.c
--- libvirt-0.2.2/src/xen_unified.c 2007-04-17 04:38:52.000000000 -0400
+++ libvirt-0.2.2.new/src/xen_unified.c 2007-05-01 16:49:54.000000000 -0400
@@ -112,6 +112,11 @@ xenUnifiedOpen (virConnectPtr conn, cons
for (i = 0; i < nb_drivers; ++i) {
int failed_to_open = 1;
+ /* Only use XM driver for Xen <= 3.0.3 (ie xendConfigVersion <= 2) */
+ if (drivers[i] == &xenXMDriver &&
+ priv->xendConfigVersion > 2)
+ continue;
+
/* Ignore proxy for root */
if (i == proxy_offset && getuid() == 0)
continue;

View File

@@ -1,23 +0,0 @@
diff -rup libvirt-0.2.2/qemud/qemud.c libvirt-0.2.2.new/qemud/qemud.c
--- libvirt-0.2.2/qemud/qemud.c 2007-04-11 10:13:36.000000000 -0400
+++ libvirt-0.2.2.new/qemud/qemud.c 2007-05-01 16:51:15.000000000 -0400
@@ -1110,6 +1110,7 @@ qemudBuildDnsmasqArgv(struct qemud_serve
len =
1 + /* dnsmasq */
1 + /* --keep-in-foreground */
+ 1 + /* --strict-order */
1 + /* --bind-interfaces */
2 + /* --pid-file "" */
2 + /* --conf-file "" */
@@ -1133,6 +1134,11 @@ qemudBuildDnsmasqArgv(struct qemud_serve
APPEND_ARG(*argv, i++, "dnsmasq");
APPEND_ARG(*argv, i++, "--keep-in-foreground");
+ /*
+ * Needed to ensure dnsmasq uses same algorithm for processing
+ * multiple nameserver entries in /etc/resolv.conf as GLibC.
+ */
+ APPEND_ARG(*argv, i++, "--strict-order");
APPEND_ARG(*argv, i++, "--bind-interfaces");
APPEND_ARG(*argv, i++, "--pid-file");

View File

@@ -1,70 +0,0 @@
diff -rup libvirt-0.2.2.new/src/xend_internal.c libvirt-0.2.2/src/xend_internal.c
--- libvirt-0.2.2.new/src/xend_internal.c 2007-04-15 16:09:10.000000000 -0400
+++ libvirt-0.2.2/src/xend_internal.c 2007-05-03 14:52:42.000000000 -0400
@@ -1676,35 +1676,38 @@ xend_parse_sexp_desc(virConnectPtr conn,
}
}
- /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.4) vnc config */
- tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux");
- if (tmp != NULL) {
- if (tmp[0] == '1') {
- int port = xenStoreDomainGetVNCPort(conn, domid);
- const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux");
- const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux");
- /* For Xen >= 3.0.3, don't generate a fixed port mapping
- * because it will almost certainly be wrong ! Just leave
- * it as -1 which lets caller see that the VNC server isn't
- * present yet. Subsquent dumps of the XML will eventually
- * find the port in XenStore once VNC server has started
- */
- if (port == -1 && xendConfigVersion < 2)
- port = 5900 + domid;
- virBufferVSprintf(&buf, " <graphics type='vnc' port='%d'", port);
- if (listenAddr)
- virBufferVSprintf(&buf, " listen='%s'", listenAddr);
- if (keymap)
- virBufferVSprintf(&buf, " keymap='%s'", keymap);
- virBufferAdd(&buf, "/>\n", 3);
+ /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.3) vnc config */
+ if ((hvm && xendConfigVersion < 4) ||
+ (!hvm && xendConfigVersion < 3)) {
+ tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux");
+ if (tmp != NULL) {
+ if (tmp[0] == '1') {
+ int port = xenStoreDomainGetVNCPort(conn, domid);
+ const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux");
+ const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux");
+ /* For Xen >= 3.0.3, don't generate a fixed port mapping
+ * because it will almost certainly be wrong ! Just leave
+ * it as -1 which lets caller see that the VNC server isn't
+ * present yet. Subsquent dumps of the XML will eventually
+ * find the port in XenStore once VNC server has started
+ */
+ if (port == -1 && xendConfigVersion < 2)
+ port = 5900 + domid;
+ virBufferVSprintf(&buf, " <graphics type='vnc' port='%d'", port);
+ if (listenAddr)
+ virBufferVSprintf(&buf, " listen='%s'", listenAddr);
+ if (keymap)
+ virBufferVSprintf(&buf, " keymap='%s'", keymap);
+ virBufferAdd(&buf, "/>\n", 3);
+ }
}
- }
- /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
- tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux");
- if (tmp != NULL) {
- if (tmp[0] == '1')
- virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27 );
+ /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
+ tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux");
+ if (tmp != NULL) {
+ if (tmp[0] == '1')
+ virBufferAdd(&buf, " <graphics type='sdl'/>\n", 27 );
+ }
}
tty = xenStoreDomainGetConsolePath(conn, domid);
Only in libvirt-0.2.2/src: xend_internal.c.orig

View File

@@ -1,128 +0,0 @@
diff -rup libvirt-0.2.2/qemud/conf.c libvirt-0.2.2.new/qemud/conf.c
--- libvirt-0.2.2/qemud/conf.c 2007-04-17 04:34:42.000000000 -0400
+++ libvirt-0.2.2.new/qemud/conf.c 2007-05-14 10:36:12.000000000 -0400
@@ -245,21 +245,25 @@ static int qemudExtractVersionInfo(const
cleanup1:
_exit(-1); /* Just in case */
} else { /* Parent */
- char help[4096]; /* Ought to be enough to hold QEMU help screen */
- int got, ret = -1;
+ char help[8192]; /* Ought to be enough to hold QEMU help screen */
+ int got = 0, ret = -1;
int major, minor, micro;
if (close(newstdout[1]) < 0)
goto cleanup2;
- reread:
- if ((got = read(newstdout[0], help, sizeof(help)-1)) < 0) {
- if (errno == EINTR)
- goto reread;
- goto cleanup2;
+ while (got < (sizeof(help)-1)) {
+ int len;
+ if ((len = read(newstdout[0], help+got, sizeof(help)-got-1)) <= 0) {
+ if (!len)
+ break;
+ if (errno == EINTR)
+ continue;
+ goto cleanup2;
+ }
+ got += len;
}
help[got] = '\0';
-
if (sscanf(help, "QEMU PC emulator version %d.%d.%d", &major,&minor, &micro) != 3) {
goto cleanup2;
}
@@ -267,6 +271,8 @@ static int qemudExtractVersionInfo(const
*version = (major * 1000 * 1000) + (minor * 1000) + micro;
if (strstr(help, "-no-kqemu"))
*flags |= QEMUD_CMD_FLAG_KQEMU;
+ if (strstr(help, "-no-reboot"))
+ *flags |= QEMUD_CMD_FLAG_NO_REBOOT;
if (*version >= 9000)
*flags |= QEMUD_CMD_FLAG_VNC_COLON;
ret = 0;
@@ -858,6 +864,22 @@ static struct qemud_vm_def *qemudParseXM
}
xmlXPathFreeObject(obj);
+
+ /* See if we disable reboots */
+ obj = xmlXPathEval(BAD_CAST "string(/domain/on_reboot)", ctxt);
+ if ((obj == NULL) || (obj->type != XPATH_STRING) ||
+ (obj->stringval == NULL) || (obj->stringval[0] == 0)) {
+ def->noReboot = 0;
+ } else {
+ if (!strcmp((char*)obj->stringval, "destroy"))
+ def->noReboot = 1;
+ else
+ def->noReboot = 0;
+ }
+ if (obj)
+ xmlXPathFreeObject(obj);
+
+
/* Extract OS type info */
obj = xmlXPathEval(BAD_CAST "string(/domain/os/type[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
@@ -1220,6 +1242,8 @@ int qemudBuildCommandLine(struct qemud_s
2 + /* cpus */
2 + /* boot device */
2 + /* monitor */
+ (server->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
+ vm->def->noReboot ? 1 : 0) + /* no-reboot */
(vm->def->features & QEMUD_FEATURE_ACPI ? 0 : 1) + /* acpi */
(vm->def->os.kernel[0] ? 2 : 0) + /* kernel */
(vm->def->os.initrd[0] ? 2 : 0) + /* initrd */
@@ -1255,6 +1279,11 @@ int qemudBuildCommandLine(struct qemud_s
goto no_memory;
if (!((*argv)[++n] = strdup("pty")))
goto no_memory;
+ if (server->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
+ vm->def->noReboot) {
+ if (!((*argv)[++n] = strdup("-no-reboot")))
+ goto no_memory;
+ }
if (!(vm->def->features & QEMUD_FEATURE_ACPI)) {
if (!((*argv)[++n] = strdup("-no-acpi")))
@@ -2517,6 +2546,17 @@ char *qemudGenerateXML(struct qemud_serv
goto no_memory;
}
+ if (bufferAdd(buf, " <on_poweroff>destroy</on_poweroff>\n", -1) < 0)
+ goto no_memory;
+ if (def->noReboot) {
+ if (bufferAdd(buf, " <on_reboot>destroy</on_reboot>\n", -1) < 0)
+ goto no_memory;
+ } else {
+ if (bufferAdd(buf, " <on_reboot>restart</on_reboot>\n", -1) < 0)
+ goto no_memory;
+ }
+ if (bufferAdd(buf, " <on_crash>destroy</on_crash>\n", -1) < 0)
+ goto no_memory;
if (bufferAdd(buf, " <devices>\n", -1) < 0)
goto no_memory;
diff -rup libvirt-0.2.2/qemud/internal.h libvirt-0.2.2.new/qemud/internal.h
--- libvirt-0.2.2/qemud/internal.h 2007-04-11 10:13:36.000000000 -0400
+++ libvirt-0.2.2.new/qemud/internal.h 2007-05-14 10:36:02.000000000 -0400
@@ -161,6 +161,7 @@ enum qemud_vm_grapics_type {
enum qemud_cmd_flags {
QEMUD_CMD_FLAG_KQEMU = 1,
QEMUD_CMD_FLAG_VNC_COLON = 2,
+ QEMUD_CMD_FLAG_NO_REBOOT = 4,
};
@@ -191,6 +192,8 @@ struct qemud_vm_def {
int maxmem;
int vcpus;
+ int noReboot;
+
struct qemud_vm_os_def os;
int features;

View File

@@ -1,19 +0,0 @@
--- libvirt-0.2.2/ChangeLog.sync-restart 2007-05-02 13:07:21.719425000 -0400
+++ libvirt-0.2.2/ChangeLog 2007-05-02 13:08:23.204879000 -0400
@@ -0,0 +1,5 @@
+Wed May 2 17:55:12 IST 2007 Mark McLoughlin <markmc@redhat.com>
+
+ * qemud/libvirtd.in: synchronously restart the daemon in
+ order to avoid https://bugzilla.redhat.com/238492
+
--- libvirt-0.2.2/qemud/libvirtd.in.sync-restart 2007-02-23 07:50:58.000000000 -0500
+++ libvirt-0.2.2/qemud/libvirtd.in 2007-05-02 13:08:23.209868000 -0400
@@ -34,7 +34,7 @@
stop() {
echo -n $"Stopping $SERVICE daemon: "
- killproc $PROCESS -TERM
+ killproc $PROCESS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then

View File

@@ -0,0 +1,207 @@
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

View File

@@ -0,0 +1,230 @@
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:

View File

@@ -1,24 +1,16 @@
# -*- rpm-spec -*-
# This macro is used for the continuous automated builds. It just
# allows an extra fragment based on the timestamp to be appended
# to the release. This distinguishes automated builds, from formal
# Fedora RPM builds
%define _extra_release %{?dist:%{dist}}%{!?dist:%{?extra_release:%{extra_release}}}
Summary: Library providing a simple API virtualization
Name: libvirt
Version: 0.2.2
Release: 4%{?_extra_release}
Version: 0.3.3
Release: 2%{?dist}%{?extra_release}
License: LGPL
Group: Development/Libraries
Source: libvirt-%{version}.tar.gz
Patch1: libvirt-0.2.2-disable-xm.patch
Patch2: libvirt-0.2.2-dnsmasq-order.patch
Patch3: libvirt-0.2.2-qemu-noreboot.patch
Patch4: libvirt-0.2.2-sync-daemon-restart.patch
Patch5: libvirt-0.2.2-graphics-hvm.patch
Patch6: libvirt-0.2.2-bridge-init.patch
Patch1: %{name}-%{version}-qemu-config.patch
# NB, when removing this patch on next release, also remove the manual
# config file copy in the install section of this spec file
Patch2: %{name}-%{version}-example-config.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root
URL: http://libvirt.org/
BuildRequires: python python-devel
@@ -26,15 +18,24 @@ Requires: libxml2
Requires: readline
Requires: ncurses
Requires: dnsmasq
Requires: bridge-utils
Requires: iptables
%ifarch i386 x86_64 ia64
BuildRequires: xen-devel
%endif
BuildRequires: libxml2-devel
BuildRequires: readline-devel
BuildRequires: ncurses-devel
BuildRequires: gettext
BuildRequires: libsysfs-devel
BuildRequires: /sbin/iptables
BuildRequires: gnutls-devel
BuildRequires: avahi-devel
BuildRequires: dnsmasq
BuildRequires: bridge-utils
Obsoletes: libvir
ExclusiveArch: i386 x86_64 ia64
# Fedora build root suckage
BuildRequires: gawk
%description
Libvirt is a C toolkit to interract with the virtualization capabilities
@@ -45,6 +46,10 @@ Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries
Requires: libvirt = %{version}
Requires: pkgconfig
%ifarch i386 x86_64 ia64
Requires: xen-devel
%endif
Requires: gnutls-devel
Obsoletes: libvir-devel
%description devel
@@ -67,26 +72,34 @@ of recent versions of Linux (and other OSes).
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%build
%configure --with-init-script=redhat --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid
# Xen is availble only on i386 x86_64 ia64
%ifarch i386 i686 x86_64 ia64
%configure --with-init-script=redhat --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid --with-remote-file=%{_localstatedir}/run/libvirtd.pid
%else
%configure --without-xen --with-init-script=redhat --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid --with-remote-file=%{_localstatedir}/run/libvirtd.pid
%endif
make
%install
rm -fr %{buildroot}
%makeinstall
(cd docs/examples ; make clean ; rm -rf .deps)
(cd docs/examples ; make clean ; rm -rf .deps Makefile Makefile.in)
(cd docs/examples/python ; rm -f Makefile Makefile.in)
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
install -d -m 0755 $RPM_BUILD_ROOT%{_localstatedir}/run/libvirt/
# Copy files from patch2 into location
install -d $RPM_BUILD_ROOT%{_sysconfdir}/libvirt
install -m 0755 src/qemu.conf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
install -m 0755 qemud/libvirtd.conf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libvirtd.conf
# We don't want to install /etc/libvirt/qemu/networks in the main %files list
# because if the admin wants to delete the default network completely, we don't
# want to end up re-incarnating it on every RPM upgrade.
@@ -141,18 +154,19 @@ fi
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart
%{_sysconfdir}/rc.d/init.d/libvirtd
%dir %{_sysconfdir}/libvirt
%dir %{_sysconfdir}/libvirt/qemu
%dir %{_sysconfdir}/libvirt/qemu/networks
%dir %{_sysconfdir}/libvirt/qemu/networks/autostart
%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
%dir %{_datadir}/libvirt/
%dir %{_datadir}/libvirt/networks/
%{_datadir}/libvirt/networks/default.xml
%dir %{_localstatedir}/run/libvirt/
%dir %{_localstatedir}/lib/libvirt/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
%attr(4755, root, root) %{_libexecdir}/libvirt_proxy
%attr(0755, root, root) %{_sbindir}/libvirt_qemud
%doc docs/libvirt.rng
%attr(0755, root, root) %{_sbindir}/libvirtd
%doc docs/*.rng
%doc docs/*.xml
%files devel
%defattr(-, root, root)
@@ -182,21 +196,57 @@ fi
%doc docs/examples/python
%changelog
* Mon May 14 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-4.fc7
- Fixed uninitialized value causing stack overflow
- Fixed bridged networking when no virtual network is defined (bz 239273)
* Mon Oct 15 2007 Daniel P. Berrange <berrange@redhat.com> - 0.3.3-2.fc8
- Added QEMU driver config file support
- Added example config files
* Thu May 3 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-3.fc7
- Fixed init script restart race
- Remove duplicate <graphics> tag for HVM
- Support -no-reboot in qemu for installs
- Disable xm config file driver for 3.0.5
- Force dnsmasq ordering for resolv.conf
* Sun Sep 30 2007 Daniel Veillard <veillard@redhat.com> - 0.3.3-1
- Release of 0.3.3
- Avahi support
- NUMA support
- lots of assorted improvements, bugfixes and cleanups
- documentation and localization improvements
* Fri Apr 21 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.2-2.fc7
- Added Requires on dnsmasq for virtual networking
* Fri Aug 24 2007 Daniel Veillard <veillard@redhat.com> - 0.3.2-2.fc8
- also build on arches where Xen is not available
* Tue Apr 17 2007 Daniel Veillard <veillard@redhat.com> - 0.2.2-1.fc7
* Tue Aug 21 2007 Daniel Veillard <veillard@redhat.com> - 0.3.2-1.fc8
- Release of 0.3.2
- API for domains migration
- APIs for collecting statistics on disks and interfaces
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Thu Aug 16 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-4.fc8
- Fixes missing Requires for libvirt-devel
* Thu Jul 26 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-3.fc8
- adds fix for bug #249594
* Wed Jul 25 2007 Jesse Keating <jkeating@redhat.com> - 0.3.1-2
- Rebuild for RH #249435
* Tue Jul 24 2007 Daniel Veillard <veillard@redhat.com> - 0.3.1-1.fc8
- Release of 0.3.1
- localtime clock support
- PS/2 and USB input devices
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Mon Jul 9 2007 Daniel Veillard <veillard@redhat.com> - 0.3.0-1.fc8
- Release of 0.3.0
- Secure remote access support
- unification of daemons
- lots of assorted bugfixes and cleanups
- documentation and localization improvements
* Fri Jun 8 2007 Daniel Veillard <veillard@redhat.com> - 0.2.3-1.fc8
- Release of 0.2.3
- lot of assorted bugfixes and cleanups
- support for Xen-3.1
- new scheduler API
* Tue Apr 17 2007 Daniel Veillard <veillard@redhat.com> - 0.2.2-1
- Release of 0.2.2
- lot of assorted bugfixes and cleanups
- preparing for Xen-3.0.5
@@ -206,7 +256,7 @@ fi
- fix scriptlet error (need to own more directories)
- update description text
* Fri Mar 16 2007 Daniel Veillard <veillard@redhat.com> - 0.2.1-1.fc7
* Fri Mar 16 2007 Daniel Veillard <veillard@redhat.com> - 0.2.1-1
- Release of 0.2.1
- lot of bug and portability fixes
- Add support for network autostart and init scripts

View File

@@ -1 +1 @@
5abe4b1fd6b57948ce259036afdc9194 libvirt-0.2.2.tar.gz
583fa13938df63bd404cc1b7cf553874 libvirt-0.3.3.tar.gz