Compare commits
144 Commits
libvirt-0_
...
libvirt-0_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
b395a39f7b | ||
|
|
fdd7e87fe3 | ||
|
|
f06c387ab5 | ||
|
|
5ad8bc8190 | ||
|
|
31802de821 | ||
|
|
cc39758e17 | ||
|
|
55fabd69c0 | ||
|
|
b2a1a0e9ba | ||
|
|
cbe377ed29 | ||
|
|
06a21e388f | ||
|
|
d1a886ab31 | ||
|
|
c70baa5133 | ||
|
|
52b4d91272 | ||
|
|
338630edc8 | ||
|
|
a05e64b718 | ||
|
|
c003690dfc | ||
|
|
2cac8ea133 | ||
|
|
deefad73a9 | ||
|
|
f6cef943a9 | ||
|
|
7a6f0752c1 | ||
|
|
36d558635e | ||
|
|
98bceee6b1 | ||
|
|
4e70e5049f | ||
|
|
e66ceb7f97 | ||
|
|
23d5b99123 | ||
|
|
df8a62cdc8 | ||
|
|
8e36286f00 | ||
|
|
cd0f44cfff | ||
|
|
dcd808aefc | ||
|
|
8713d4b7ef | ||
|
|
68efefa919 | ||
|
|
1c5afbb774 |
27
.cvsignore
27
.cvsignore
@@ -1,13 +1,14 @@
|
|||||||
libvirt-0.0.3.tar.gz
|
.build*.log
|
||||||
libvirt-0.0.4.tar.gz
|
*.rpm
|
||||||
libvirt-0.0.5.tar.gz
|
i686
|
||||||
libvirt-0.0.6.tar.gz
|
x86_64
|
||||||
libvirt-0.1.0.tar.gz
|
libvirt-*.tar.gz
|
||||||
libvirt-0.1.2.tar.gz
|
libvirt-0.6.0.tar.gz
|
||||||
libvirt-0.1.1.tar.gz
|
libvirt-0.6.1.tar.gz
|
||||||
libvirt-0.1.3.tar.gz
|
libvirt-0.6.2.tar.gz
|
||||||
libvirt-0.1.4.tar.gz
|
libvirt-0.6.3.tar.gz
|
||||||
libvirt-0.1.5.tar.gz
|
libvirt-0.6.4.tar.gz
|
||||||
libvirt-0.1.6.tar.gz
|
libvirt-0.6.5.tar.gz
|
||||||
libvirt-0.1.7.tar.gz
|
libvirt-0.7.0-0.1.gitf055724.tar.gz
|
||||||
libvirt-0.1.8.tar.gz
|
libvirt-0.7.0-0.6.gite195b43.tar.gz
|
||||||
|
libvirt-0.7.0.tar.gz
|
||||||
|
|||||||
17
Makefile
17
Makefile
@@ -3,4 +3,19 @@
|
|||||||
NAME := libvirt
|
NAME := libvirt
|
||||||
SPECFILE = $(firstword $(wildcard *.spec))
|
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)
|
||||||
|
|||||||
33
libvirt-0.6.4-svirt-sound.patch
Normal file
33
libvirt-0.6.4-svirt-sound.patch
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
--- src/qemu_conf.c.orig 2009-05-29 19:24:59.000000000 +0200
|
||||||
|
+++ src/qemu_conf.c 2009-05-29 19:19:39.000000000 +0200
|
||||||
|
@@ -792,6 +792,20 @@ int qemudBuildCommandLine(virConnectPtr
|
||||||
|
char uuid[VIR_UUID_STRING_BUFLEN];
|
||||||
|
char domid[50];
|
||||||
|
const char *cpu = NULL;
|
||||||
|
+ int skipSound = 0;
|
||||||
|
+
|
||||||
|
+ if (driver->securityDriver &&
|
||||||
|
+ driver->securityDriver->name &&
|
||||||
|
+ STREQ(driver->securityDriver->name, "selinux") &&
|
||||||
|
+ getuid() == 0) {
|
||||||
|
+ static int soundWarned = 0;
|
||||||
|
+ skipSound = 1;
|
||||||
|
+ if (def->nsounds &&
|
||||||
|
+ !soundWarned) {
|
||||||
|
+ soundWarned = 1;
|
||||||
|
+ VIR_WARN0("Sound cards for VMs are disabled while SELinux security model is active");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
uname_normalize(&ut);
|
||||||
|
|
||||||
|
@@ -1429,7 +1443,8 @@ int qemudBuildCommandLine(virConnectPtr
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add sound hardware */
|
||||||
|
- if (def->nsounds) {
|
||||||
|
+ if (def->nsounds &&
|
||||||
|
+ !skipSound) {
|
||||||
|
int size = 100;
|
||||||
|
char *modstr;
|
||||||
|
if (VIR_ALLOC_N(modstr, size+1) < 0)
|
||||||
73
libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch
Normal file
73
libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
From: Mark McLoughlin <markmc@redhat.com>
|
||||||
|
Subject: [PATCH] chown kernel/initrd before spawning qemu
|
||||||
|
|
||||||
|
If we're running qemu unprivileged, we need to chown any supplied kernel
|
||||||
|
or initrd before spawning it.
|
||||||
|
|
||||||
|
* src/qemu_driver.c: rename qemuDomainSetDiskOwnership() to
|
||||||
|
qemuDomainSetFileOwnership(), pass it a path string instead of a disk
|
||||||
|
definition and use it for chowning the kernel/initrd in
|
||||||
|
qemuDomainSetAllDeviceOwnership()
|
||||||
|
---
|
||||||
|
src/qemu_driver.c | 20 ++++++++++++--------
|
||||||
|
1 files changed, 12 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||||
|
index 412b68d..bd58435 100644
|
||||||
|
--- a/src/qemu_driver.c
|
||||||
|
+++ b/src/qemu_driver.c
|
||||||
|
@@ -1684,18 +1684,18 @@ static int qemuDomainSetHostdevOwnership(virConnectPtr conn,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int qemuDomainSetDiskOwnership(virConnectPtr conn,
|
||||||
|
- virDomainDiskDefPtr def,
|
||||||
|
+static int qemuDomainSetFileOwnership(virConnectPtr conn,
|
||||||
|
+ const char *path,
|
||||||
|
uid_t uid, gid_t gid)
|
||||||
|
{
|
||||||
|
|
||||||
|
- if (!def->src)
|
||||||
|
+ if (!path)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- VIR_DEBUG("Setting ownership on %s to %d:%d", def->src, uid, gid);
|
||||||
|
- if (chown(def->src, uid, gid) < 0) {
|
||||||
|
+ VIR_DEBUG("Setting ownership on %s to %d:%d", path, uid, gid);
|
||||||
|
+ if (chown(path, uid, gid) < 0) {
|
||||||
|
virReportSystemError(conn, errno, _("cannot set ownership on %s"),
|
||||||
|
- def->src);
|
||||||
|
+ path);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
@@ -1725,7 +1725,7 @@ static int qemuDomainSetDeviceOwnership(virConnectPtr conn,
|
||||||
|
(def->data.disk->readonly || def->data.disk->shared))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- return qemuDomainSetDiskOwnership(conn, def->data.disk, uid, gid);
|
||||||
|
+ return qemuDomainSetFileOwnership(conn, def->data.disk->src, uid, gid);
|
||||||
|
|
||||||
|
case VIR_DOMAIN_DEVICE_HOSTDEV:
|
||||||
|
return qemuDomainSetHostdevOwnership(conn, def->data.hostdev, uid, gid);
|
||||||
|
@@ -1753,12 +1753,16 @@ static int qemuDomainSetAllDeviceOwnership(virConnectPtr conn,
|
||||||
|
uid = restore ? 0 : driver->user;
|
||||||
|
gid = restore ? 0 : driver->group;
|
||||||
|
|
||||||
|
+ if (qemuDomainSetFileOwnership(conn, def->os.kernel, uid, gid) < 0 ||
|
||||||
|
+ qemuDomainSetFileOwnership(conn, def->os.initrd, uid, gid) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
for (i = 0 ; i < def->ndisks ; i++) {
|
||||||
|
if (restore &&
|
||||||
|
(def->disks[i]->readonly || def->disks[i]->shared))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
- if (qemuDomainSetDiskOwnership(conn, def->disks[i], uid, gid) < 0)
|
||||||
|
+ if (qemuDomainSetFileOwnership(conn, def->disks[i]->src, uid, gid) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.6.2.5
|
||||||
|
|
||||||
39
libvirt-0.7.0-handle-kernels-with-no-ipv6-support.patch
Normal file
39
libvirt-0.7.0-handle-kernels-with-no-ipv6-support.patch
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
From: Mark McLoughlin <markmc@redhat.com>
|
||||||
|
Subject: [PATCH] Handle kernels with no ipv6 support
|
||||||
|
|
||||||
|
If the ipv6 kernel module is not loaded, then we get this when starting
|
||||||
|
a virtual network:
|
||||||
|
|
||||||
|
libvir: Network Config error :
|
||||||
|
cannot enable /proc/sys/net/ipv6/conf/virbr0/disable_ipv6:
|
||||||
|
No such file or directory
|
||||||
|
|
||||||
|
If disable_ipv6 is not present, we should just merrily continue on our
|
||||||
|
way.
|
||||||
|
|
||||||
|
* src/network_driver.c: make networkDisableIPV6() not fail if the kernel
|
||||||
|
has no ipv6 support
|
||||||
|
---
|
||||||
|
src/network_driver.c | 6 ++++++
|
||||||
|
1 files changed, 6 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/network_driver.c b/src/network_driver.c
|
||||||
|
index eaea454..84910ab 100644
|
||||||
|
--- a/src/network_driver.c
|
||||||
|
+++ b/src/network_driver.c
|
||||||
|
@@ -801,6 +801,12 @@ static int networkDisableIPV6(virConnectPtr conn,
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (access(field, W_OK) < 0 && errno == ENOENT) {
|
||||||
|
+ VIR_DEBUG("ipv6 appears to already be disabled on %s", network->def->bridge);
|
||||||
|
+ ret = 0;
|
||||||
|
+ goto cleanup;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (virFileWriteStr(field, "1") < 0) {
|
||||||
|
virReportSystemError(conn, errno,
|
||||||
|
_("cannot enable %s"), field);
|
||||||
|
--
|
||||||
|
1.6.2.5
|
||||||
|
|
||||||
85
libvirt-0.7.0-numa-ignore-fail.patch
Normal file
85
libvirt-0.7.0-numa-ignore-fail.patch
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
commit 19bac57b26c2d46ac8a7601158f210f34acdceac
|
||||||
|
Author: Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
Date: Thu Aug 13 11:56:31 2009 +0100
|
||||||
|
|
||||||
|
Make LXC / UML drivers robust against NUMA topology brokenness
|
||||||
|
|
||||||
|
Some kernel versions expose broken NUMA topology for some machines.
|
||||||
|
This causes the LXC/UML drivers to fail to start. QEMU driver was
|
||||||
|
already fixed for this problem
|
||||||
|
|
||||||
|
* src/lxc_conf.c: Log and ignore failure to populate NUMA info
|
||||||
|
* src/uml_conf.c: Log and ignore failure to populate NUMA info
|
||||||
|
* src/capabilities.c: Reset nnumaCell to 0 after freeing
|
||||||
|
|
||||||
|
diff --git a/src/capabilities.c b/src/capabilities.c
|
||||||
|
index c6766b6..193a9fe 100644
|
||||||
|
--- a/src/capabilities.c
|
||||||
|
+++ b/src/capabilities.c
|
||||||
|
@@ -139,6 +139,7 @@ virCapabilitiesFreeNUMAInfo(virCapsPtr caps)
|
||||||
|
for (i = 0 ; i < caps->host.nnumaCell ; i++)
|
||||||
|
virCapabilitiesFreeHostNUMACell(caps->host.numaCell[i]);
|
||||||
|
VIR_FREE(caps->host.numaCell);
|
||||||
|
+ caps->host.nnumaCell = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
diff --git a/src/lxc_conf.c b/src/lxc_conf.c
|
||||||
|
index d06a024..fef60ba 100644
|
||||||
|
--- a/src/lxc_conf.c
|
||||||
|
+++ b/src/lxc_conf.c
|
||||||
|
@@ -30,6 +30,8 @@
|
||||||
|
#include "lxc_conf.h"
|
||||||
|
#include "nodeinfo.h"
|
||||||
|
#include "virterror_internal.h"
|
||||||
|
+#include "logging.h"
|
||||||
|
+
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_LXC
|
||||||
|
|
||||||
|
@@ -46,8 +48,14 @@ virCapsPtr lxcCapsInit(void)
|
||||||
|
0, 0)) == NULL)
|
||||||
|
goto no_memory;
|
||||||
|
|
||||||
|
- if (nodeCapsInitNUMA(caps) < 0)
|
||||||
|
- goto no_memory;
|
||||||
|
+ /* Some machines have problematic NUMA toplogy causing
|
||||||
|
+ * unexpected failures. We don't want to break the QEMU
|
||||||
|
+ * driver in this scenario, so log errors & carry on
|
||||||
|
+ */
|
||||||
|
+ if (nodeCapsInitNUMA(caps) < 0) {
|
||||||
|
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||||
|
+ VIR_WARN0("Failed to query host NUMA topology, disabling NUMA capabilities");
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* XXX shouldn't 'borrow' KVM's prefix */
|
||||||
|
virCapabilitiesSetMacPrefix(caps, (unsigned char []){ 0x52, 0x54, 0x00 });
|
||||||
|
diff --git a/src/uml_conf.c b/src/uml_conf.c
|
||||||
|
index 48e05a8..4f756d4 100644
|
||||||
|
--- a/src/uml_conf.c
|
||||||
|
+++ b/src/uml_conf.c
|
||||||
|
@@ -45,6 +45,7 @@
|
||||||
|
#include "nodeinfo.h"
|
||||||
|
#include "verify.h"
|
||||||
|
#include "bridge.h"
|
||||||
|
+#include "logging.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_UML
|
||||||
|
|
||||||
|
@@ -63,8 +64,14 @@ virCapsPtr umlCapsInit(void) {
|
||||||
|
0, 0)) == NULL)
|
||||||
|
goto no_memory;
|
||||||
|
|
||||||
|
- if (nodeCapsInitNUMA(caps) < 0)
|
||||||
|
- goto no_memory;
|
||||||
|
+ /* Some machines have problematic NUMA toplogy causing
|
||||||
|
+ * unexpected failures. We don't want to break the QEMU
|
||||||
|
+ * driver in this scenario, so log errors & carry on
|
||||||
|
+ */
|
||||||
|
+ if (nodeCapsInitNUMA(caps) < 0) {
|
||||||
|
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||||
|
+ VIR_WARN0("Failed to query host NUMA topology, disabling NUMA capabilities");
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if ((guest = virCapabilitiesAddGuest(caps,
|
||||||
|
"uml",
|
||||||
469
libvirt-0.7.0-policy-kit-rewrite.patch
Normal file
469
libvirt-0.7.0-policy-kit-rewrite.patch
Normal file
@@ -0,0 +1,469 @@
|
|||||||
|
diff -rupN libvirt-0.7.0/configure.in libvirt-0.7.0.new/configure.in
|
||||||
|
--- libvirt-0.7.0/configure.in 2009-08-05 08:53:49.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/configure.in 2009-08-13 08:37:22.393897620 -0400
|
||||||
|
@@ -641,40 +641,61 @@ AC_SUBST([SASL_LIBS])
|
||||||
|
dnl PolicyKit library
|
||||||
|
POLKIT_CFLAGS=
|
||||||
|
POLKIT_LIBS=
|
||||||
|
+PKCHECK_PATH=
|
||||||
|
AC_ARG_WITH([polkit],
|
||||||
|
[ --with-polkit use PolicyKit for UNIX socket access checks],
|
||||||
|
[],
|
||||||
|
[with_polkit=check])
|
||||||
|
|
||||||
|
+with_polkit0=no
|
||||||
|
+with_polkit1=no
|
||||||
|
if test "x$with_polkit" = "xyes" -o "x$with_polkit" = "xcheck"; then
|
||||||
|
- PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||||
|
- [with_polkit=yes], [
|
||||||
|
- if test "x$with_polkit" = "xcheck" ; then
|
||||||
|
- with_polkit=no
|
||||||
|
- else
|
||||||
|
- AC_MSG_ERROR(
|
||||||
|
- [You must install PolicyKit >= $POLKIT_REQUIRED to compile libvirt])
|
||||||
|
- fi
|
||||||
|
- ])
|
||||||
|
- if test "x$with_polkit" = "xyes" ; then
|
||||||
|
+ dnl Check for new polkit first - just a binary
|
||||||
|
+ AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
|
||||||
|
+ if test "x$PKCHECK_PATH" != "x" ; then
|
||||||
|
+ AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program])
|
||||||
|
AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
|
||||||
|
- [use PolicyKit for UNIX socket access checks])
|
||||||
|
-
|
||||||
|
- old_CFLAGS=$CFLAGS
|
||||||
|
- old_LDFLAGS=$LDFLAGS
|
||||||
|
- CFLAGS="$CFLAGS $POLKIT_CFLAGS"
|
||||||
|
- LDFLAGS="$LDFLAGS $POLKIT_LIBS"
|
||||||
|
- AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
|
||||||
|
- CFLAGS="$old_CFLAGS"
|
||||||
|
- LDFLAGS="$old_LDFLAGS"
|
||||||
|
-
|
||||||
|
- AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
|
||||||
|
- if test "x$POLKIT_AUTH" != "x"; then
|
||||||
|
- AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
|
||||||
|
+ [use PolicyKit for UNIX socket access checks])
|
||||||
|
+ AC_DEFINE_UNQUOTED([HAVE_POLKIT1], 1,
|
||||||
|
+ [use PolicyKit for UNIX socket access checks])
|
||||||
|
+ with_polkit="yes"
|
||||||
|
+ with_polkit1="yes"
|
||||||
|
+ else
|
||||||
|
+ dnl Check for old polkit second - library + binary
|
||||||
|
+ PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||||
|
+ [with_polkit=yes], [
|
||||||
|
+ if test "x$with_polkit" = "xcheck" ; then
|
||||||
|
+ with_polkit=no
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_ERROR(
|
||||||
|
+ [You must install PolicyKit >= $POLKIT_REQUIRED to compile libvirt])
|
||||||
|
+ fi
|
||||||
|
+ ])
|
||||||
|
+ if test "x$with_polkit" = "xyes" ; then
|
||||||
|
+ AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
|
||||||
|
+ [use PolicyKit for UNIX socket access checks])
|
||||||
|
+ AC_DEFINE_UNQUOTED([HAVE_POLKIT0], 1,
|
||||||
|
+ [use PolicyKit for UNIX socket access checks])
|
||||||
|
+
|
||||||
|
+ old_CFLAGS=$CFLAGS
|
||||||
|
+ old_LDFLAGS=$LDFLAGS
|
||||||
|
+ CFLAGS="$CFLAGS $POLKIT_CFLAGS"
|
||||||
|
+ LDFLAGS="$LDFLAGS $POLKIT_LIBS"
|
||||||
|
+ AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
|
||||||
|
+ CFLAGS="$old_CFLAGS"
|
||||||
|
+ LDFLAGS="$old_LDFLAGS"
|
||||||
|
+
|
||||||
|
+ AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
|
||||||
|
+ if test "x$POLKIT_AUTH" != "x"; then
|
||||||
|
+ AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
|
||||||
|
+ fi
|
||||||
|
+ with_polkit0="yes"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"])
|
||||||
|
+AM_CONDITIONAL([HAVE_POLKIT0], [test "x$with_polkit0" = "xyes"])
|
||||||
|
+AM_CONDITIONAL([HAVE_POLKIT1], [test "x$with_polkit1" = "xyes"])
|
||||||
|
AC_SUBST([POLKIT_CFLAGS])
|
||||||
|
AC_SUBST([POLKIT_LIBS])
|
||||||
|
|
||||||
|
@@ -1695,7 +1716,11 @@ else
|
||||||
|
AC_MSG_NOTICE([ avahi: no])
|
||||||
|
fi
|
||||||
|
if test "$with_polkit" = "yes" ; then
|
||||||
|
-AC_MSG_NOTICE([ polkit: $POLKIT_CFLAGS $POLKIT_LIBS])
|
||||||
|
+if test "$with_polkit0" = "yes" ; then
|
||||||
|
+AC_MSG_NOTICE([ polkit: $POLKIT_CFLAGS $POLKIT_LIBS (version 0)])
|
||||||
|
+else
|
||||||
|
+AC_MSG_NOTICE([ polkit: $PKCHECK_PATH (version 1)])
|
||||||
|
+fi
|
||||||
|
else
|
||||||
|
AC_MSG_NOTICE([ polkit: no])
|
||||||
|
fi
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/libvirtd.policy libvirt-0.7.0.new/qemud/libvirtd.policy
|
||||||
|
--- libvirt-0.7.0/qemud/libvirtd.policy 2009-07-22 09:37:32.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/qemud/libvirtd.policy 1969-12-31 19:00:00.000000000 -0500
|
||||||
|
@@ -1,42 +0,0 @@
|
||||||
|
-<!DOCTYPE policyconfig PUBLIC
|
||||||
|
- "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||||
|
- "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||||
|
-
|
||||||
|
-<!--
|
||||||
|
-Policy definitions for libvirt daemon
|
||||||
|
-
|
||||||
|
-Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||||
|
-
|
||||||
|
-libvirt is licensed to you under the GNU Lesser General Public License
|
||||||
|
-version 2. See COPYING for details.
|
||||||
|
-
|
||||||
|
-NOTE: If you make changes to this file, make sure to validate the file
|
||||||
|
-using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||||
|
-file are instantly applied.
|
||||||
|
--->
|
||||||
|
-
|
||||||
|
-<policyconfig>
|
||||||
|
- <action id="org.libvirt.unix.monitor">
|
||||||
|
- <description>Monitor local virtualized systems</description>
|
||||||
|
- <message>System policy prevents monitoring of local virtualized systems</message>
|
||||||
|
- <defaults>
|
||||||
|
- <!-- Any program can use libvirt in read-only mode for monitoring,
|
||||||
|
- even if not part of a session -->
|
||||||
|
- <allow_any>yes</allow_any>
|
||||||
|
- <allow_inactive>yes</allow_inactive>
|
||||||
|
- <allow_active>yes</allow_active>
|
||||||
|
- </defaults>
|
||||||
|
- </action>
|
||||||
|
-
|
||||||
|
- <action id="org.libvirt.unix.manage">
|
||||||
|
- <description>Manage local virtualized systems</description>
|
||||||
|
- <message>System policy prevents management of local virtualized systems</message>
|
||||||
|
- <defaults>
|
||||||
|
- <!-- Only a program in the active host session can use libvirt in
|
||||||
|
- read-write mode for management, and we require user password -->
|
||||||
|
- <allow_any>no</allow_any>
|
||||||
|
- <allow_inactive>no</allow_inactive>
|
||||||
|
- <allow_active>auth_admin_keep_session</allow_active>
|
||||||
|
- </defaults>
|
||||||
|
- </action>
|
||||||
|
-</policyconfig>
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/libvirtd.policy-0 libvirt-0.7.0.new/qemud/libvirtd.policy-0
|
||||||
|
--- libvirt-0.7.0/qemud/libvirtd.policy-0 1969-12-31 19:00:00.000000000 -0500
|
||||||
|
+++ libvirt-0.7.0.new/qemud/libvirtd.policy-0 2009-08-13 08:37:22.408883879 -0400
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+<!DOCTYPE policyconfig PUBLIC
|
||||||
|
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||||
|
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||||
|
+
|
||||||
|
+<!--
|
||||||
|
+Policy definitions for libvirt daemon
|
||||||
|
+
|
||||||
|
+Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||||
|
+
|
||||||
|
+libvirt is licensed to you under the GNU Lesser General Public License
|
||||||
|
+version 2. See COPYING for details.
|
||||||
|
+
|
||||||
|
+NOTE: If you make changes to this file, make sure to validate the file
|
||||||
|
+using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||||
|
+file are instantly applied.
|
||||||
|
+-->
|
||||||
|
+
|
||||||
|
+<policyconfig>
|
||||||
|
+ <action id="org.libvirt.unix.monitor">
|
||||||
|
+ <description>Monitor local virtualized systems</description>
|
||||||
|
+ <message>System policy prevents monitoring of local virtualized systems</message>
|
||||||
|
+ <defaults>
|
||||||
|
+ <!-- Any program can use libvirt in read-only mode for monitoring,
|
||||||
|
+ even if not part of a session -->
|
||||||
|
+ <allow_any>yes</allow_any>
|
||||||
|
+ <allow_inactive>yes</allow_inactive>
|
||||||
|
+ <allow_active>yes</allow_active>
|
||||||
|
+ </defaults>
|
||||||
|
+ </action>
|
||||||
|
+
|
||||||
|
+ <action id="org.libvirt.unix.manage">
|
||||||
|
+ <description>Manage local virtualized systems</description>
|
||||||
|
+ <message>System policy prevents management of local virtualized systems</message>
|
||||||
|
+ <defaults>
|
||||||
|
+ <!-- Only a program in the active host session can use libvirt in
|
||||||
|
+ read-write mode for management, and we require user password -->
|
||||||
|
+ <allow_any>no</allow_any>
|
||||||
|
+ <allow_inactive>no</allow_inactive>
|
||||||
|
+ <allow_active>auth_admin_keep_session</allow_active>
|
||||||
|
+ </defaults>
|
||||||
|
+ </action>
|
||||||
|
+</policyconfig>
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/libvirtd.policy-1 libvirt-0.7.0.new/qemud/libvirtd.policy-1
|
||||||
|
--- libvirt-0.7.0/qemud/libvirtd.policy-1 1969-12-31 19:00:00.000000000 -0500
|
||||||
|
+++ libvirt-0.7.0.new/qemud/libvirtd.policy-1 2009-08-13 08:37:22.412905763 -0400
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+<!DOCTYPE policyconfig PUBLIC
|
||||||
|
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||||
|
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||||
|
+
|
||||||
|
+<!--
|
||||||
|
+Policy definitions for libvirt daemon
|
||||||
|
+
|
||||||
|
+Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||||
|
+
|
||||||
|
+libvirt is licensed to you under the GNU Lesser General Public License
|
||||||
|
+version 2. See COPYING for details.
|
||||||
|
+
|
||||||
|
+NOTE: If you make changes to this file, make sure to validate the file
|
||||||
|
+using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||||
|
+file are instantly applied.
|
||||||
|
+-->
|
||||||
|
+
|
||||||
|
+<policyconfig>
|
||||||
|
+ <action id="org.libvirt.unix.monitor">
|
||||||
|
+ <description>Monitor local virtualized systems</description>
|
||||||
|
+ <message>System policy prevents monitoring of local virtualized systems</message>
|
||||||
|
+ <defaults>
|
||||||
|
+ <!-- Any program can use libvirt in read-only mode for monitoring,
|
||||||
|
+ even if not part of a session -->
|
||||||
|
+ <allow_any>yes</allow_any>
|
||||||
|
+ <allow_inactive>yes</allow_inactive>
|
||||||
|
+ <allow_active>yes</allow_active>
|
||||||
|
+ </defaults>
|
||||||
|
+ </action>
|
||||||
|
+
|
||||||
|
+ <action id="org.libvirt.unix.manage">
|
||||||
|
+ <description>Manage local virtualized systems</description>
|
||||||
|
+ <message>System policy prevents management of local virtualized systems</message>
|
||||||
|
+ <defaults>
|
||||||
|
+ <!-- Only a program in the active host session can use libvirt in
|
||||||
|
+ read-write mode for management, and we require user password -->
|
||||||
|
+ <allow_any>no</allow_any>
|
||||||
|
+ <allow_inactive>no</allow_inactive>
|
||||||
|
+ <allow_active>auth_admin_keep</allow_active>
|
||||||
|
+ </defaults>
|
||||||
|
+ </action>
|
||||||
|
+</policyconfig>
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/Makefile.am libvirt-0.7.0.new/qemud/Makefile.am
|
||||||
|
--- libvirt-0.7.0/qemud/Makefile.am 2009-07-22 09:37:32.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/qemud/Makefile.am 2009-08-13 08:37:22.398915449 -0400
|
||||||
|
@@ -21,7 +21,8 @@ EXTRA_DIST = \
|
||||||
|
remote_protocol.x \
|
||||||
|
libvirtd.conf \
|
||||||
|
libvirtd.init.in \
|
||||||
|
- libvirtd.policy \
|
||||||
|
+ libvirtd.policy-0 \
|
||||||
|
+ libvirtd.policy-1 \
|
||||||
|
libvirtd.sasl \
|
||||||
|
libvirtd.sysconf \
|
||||||
|
libvirtd.aug \
|
||||||
|
@@ -147,7 +148,13 @@ endif
|
||||||
|
libvirtd_LDADD += ../src/libvirt.la
|
||||||
|
|
||||||
|
if HAVE_POLKIT
|
||||||
|
+if HAVE_POLKIT0
|
||||||
|
policydir = $(datadir)/PolicyKit/policy
|
||||||
|
+policyfile = libvirtd.policy-0
|
||||||
|
+else
|
||||||
|
+policydir = $(datadir)/polkit-1/actions
|
||||||
|
+policyfile = libvirtd.policy-1
|
||||||
|
+endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if HAVE_AVAHI
|
||||||
|
@@ -197,7 +204,7 @@ endif
|
||||||
|
if HAVE_POLKIT
|
||||||
|
install-data-polkit:: install-init
|
||||||
|
mkdir -p $(DESTDIR)$(policydir)
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/libvirtd.policy $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
|
+ $(INSTALL_DATA) $(srcdir)/$(policyfile) $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
|
uninstall-data-polkit:: install-init
|
||||||
|
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
|
else
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/qemud.c libvirt-0.7.0.new/qemud/qemud.c
|
||||||
|
--- libvirt-0.7.0/qemud/qemud.c 2009-07-22 09:37:32.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/qemud/qemud.c 2009-08-13 08:37:22.419878018 -0400
|
||||||
|
@@ -895,7 +895,7 @@ static struct qemud_server *qemudNetwork
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifdef HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
if (auth_unix_rw == REMOTE_AUTH_POLKIT ||
|
||||||
|
auth_unix_ro == REMOTE_AUTH_POLKIT) {
|
||||||
|
DBusError derr;
|
||||||
|
@@ -982,7 +982,7 @@ static struct qemud_server *qemudNetwork
|
||||||
|
sock = sock->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
if (server->sysbus)
|
||||||
|
dbus_connection_unref(server->sysbus);
|
||||||
|
#endif
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/qemud.h libvirt-0.7.0.new/qemud/qemud.h
|
||||||
|
--- libvirt-0.7.0/qemud/qemud.h 2009-07-23 12:33:02.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/qemud/qemud.h 2009-08-13 08:37:22.425909852 -0400
|
||||||
|
@@ -34,7 +34,7 @@
|
||||||
|
#include <sasl/sasl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifdef HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
#include <dbus/dbus.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -253,7 +253,7 @@ struct qemud_server {
|
||||||
|
#if HAVE_SASL
|
||||||
|
char **saslUsernameWhitelist;
|
||||||
|
#endif
|
||||||
|
-#if HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
DBusConnection *sysbus;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
diff -rupN libvirt-0.7.0/qemud/remote.c libvirt-0.7.0.new/qemud/remote.c
|
||||||
|
--- libvirt-0.7.0/qemud/remote.c 2009-07-23 12:33:02.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/qemud/remote.c 2009-08-13 08:37:22.431865087 -0400
|
||||||
|
@@ -43,7 +43,7 @@
|
||||||
|
#include <fnmatch.h>
|
||||||
|
#include "virterror_internal.h"
|
||||||
|
|
||||||
|
-#ifdef HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
#include <polkit/polkit.h>
|
||||||
|
#include <polkit-dbus/polkit-dbus.h>
|
||||||
|
#endif
|
||||||
|
@@ -3106,7 +3106,80 @@ remoteDispatchAuthSaslStep (struct qemud
|
||||||
|
#endif /* HAVE_SASL */
|
||||||
|
|
||||||
|
|
||||||
|
-#if HAVE_POLKIT
|
||||||
|
+#if HAVE_POLKIT1
|
||||||
|
+static int
|
||||||
|
+remoteDispatchAuthPolkit (struct qemud_server *server,
|
||||||
|
+ struct qemud_client *client,
|
||||||
|
+ virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||||
|
+ remote_error *rerr,
|
||||||
|
+ void *args ATTRIBUTE_UNUSED,
|
||||||
|
+ remote_auth_polkit_ret *ret)
|
||||||
|
+{
|
||||||
|
+ pid_t callerPid;
|
||||||
|
+ uid_t callerUid;
|
||||||
|
+ const char *action;
|
||||||
|
+ int status = -1;
|
||||||
|
+ char pidbuf[50];
|
||||||
|
+ int rv;
|
||||||
|
+
|
||||||
|
+ virMutexLock(&server->lock);
|
||||||
|
+ virMutexLock(&client->lock);
|
||||||
|
+ virMutexUnlock(&server->lock);
|
||||||
|
+
|
||||||
|
+ action = client->readonly ?
|
||||||
|
+ "org.libvirt.unix.monitor" :
|
||||||
|
+ "org.libvirt.unix.manage";
|
||||||
|
+
|
||||||
|
+ const char * const pkcheck [] = {
|
||||||
|
+ PKCHECK_PATH,
|
||||||
|
+ "--action-id", action,
|
||||||
|
+ "--process", pidbuf,
|
||||||
|
+ "--allow-user-interaction",
|
||||||
|
+ NULL
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ REMOTE_DEBUG("Start PolicyKit auth %d", client->fd);
|
||||||
|
+ if (client->auth != REMOTE_AUTH_POLKIT) {
|
||||||
|
+ VIR_ERROR0(_("client tried invalid PolicyKit init request"));
|
||||||
|
+ goto authfail;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (qemudGetSocketIdentity(client->fd, &callerUid, &callerPid) < 0) {
|
||||||
|
+ VIR_ERROR0(_("cannot get peer socket identity"));
|
||||||
|
+ goto authfail;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ VIR_INFO(_("Checking PID %d running as %d"), callerPid, callerUid);
|
||||||
|
+
|
||||||
|
+ rv = snprintf(pidbuf, sizeof pidbuf, "%d", callerPid);
|
||||||
|
+ if (rv < 0 || rv >= sizeof pidbuf) {
|
||||||
|
+ VIR_ERROR(_("Caller PID was too large %d"), callerPid);
|
||||||
|
+ goto authfail;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (virRun(NULL, pkcheck, &status) < 0) {
|
||||||
|
+ VIR_ERROR(_("Cannot invoke %s"), PKCHECK_PATH);
|
||||||
|
+ goto authfail;
|
||||||
|
+ }
|
||||||
|
+ if (status != 0) {
|
||||||
|
+ VIR_ERROR(_("Policy kit denied action %s from pid %d, uid %d, result: %d\n"),
|
||||||
|
+ action, callerPid, callerUid, status);
|
||||||
|
+ goto authfail;
|
||||||
|
+ }
|
||||||
|
+ VIR_INFO(_("Policy allowed action %s from pid %d, uid %d"),
|
||||||
|
+ action, callerPid, callerUid);
|
||||||
|
+ ret->complete = 1;
|
||||||
|
+ client->auth = REMOTE_AUTH_NONE;
|
||||||
|
+
|
||||||
|
+ virMutexUnlock(&client->lock);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+authfail:
|
||||||
|
+ remoteDispatchAuthError(rerr);
|
||||||
|
+ virMutexUnlock(&client->lock);
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+#elif HAVE_POLKIT0
|
||||||
|
static int
|
||||||
|
remoteDispatchAuthPolkit (struct qemud_server *server,
|
||||||
|
struct qemud_client *client,
|
||||||
|
@@ -3217,7 +3290,7 @@ authfail:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#else /* HAVE_POLKIT */
|
||||||
|
+#else /* !HAVE_POLKIT0 & !HAVE_POLKIT1*/
|
||||||
|
|
||||||
|
static int
|
||||||
|
remoteDispatchAuthPolkit (struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||||
|
@@ -3231,7 +3304,7 @@ remoteDispatchAuthPolkit (struct qemud_s
|
||||||
|
remoteDispatchAuthError(rerr);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
-#endif /* HAVE_POLKIT */
|
||||||
|
+#endif /* HAVE_POLKIT1 */
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************
|
||||||
|
diff -rupN libvirt-0.7.0/src/remote_internal.c libvirt-0.7.0.new/src/remote_internal.c
|
||||||
|
--- libvirt-0.7.0/src/remote_internal.c 2009-07-29 10:42:15.000000000 -0400
|
||||||
|
+++ libvirt-0.7.0.new/src/remote_internal.c 2009-08-13 10:55:57.607899170 -0400
|
||||||
|
@@ -6201,6 +6201,7 @@ remoteAuthPolkit (virConnectPtr conn, st
|
||||||
|
virConnectAuthPtr auth)
|
||||||
|
{
|
||||||
|
remote_auth_polkit_ret ret;
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
int i, allowcb = 0;
|
||||||
|
virConnectCredential cred = {
|
||||||
|
VIR_CRED_EXTERNAL,
|
||||||
|
@@ -6210,8 +6211,10 @@ remoteAuthPolkit (virConnectPtr conn, st
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
+#endif
|
||||||
|
DEBUG0("Client initialize PolicyKit authentication");
|
||||||
|
|
||||||
|
+#if HAVE_POLKIT0
|
||||||
|
if (auth && auth->cb) {
|
||||||
|
/* Check if the necessary credential type for PolicyKit is supported */
|
||||||
|
for (i = 0 ; i < auth->ncredtype ; i++) {
|
||||||
|
@@ -6220,6 +6223,7 @@ remoteAuthPolkit (virConnectPtr conn, st
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allowcb) {
|
||||||
|
+ DEBUG0("Client run callback for PolicyKit authentication");
|
||||||
|
/* Run the authentication callback */
|
||||||
|
if ((*(auth->cb))(&cred, 1, auth->cbdata) < 0) {
|
||||||
|
virRaiseError (in_open ? NULL : conn, NULL, NULL, VIR_FROM_REMOTE,
|
||||||
|
@@ -6233,6 +6237,9 @@ remoteAuthPolkit (virConnectPtr conn, st
|
||||||
|
} else {
|
||||||
|
DEBUG0("No auth callback provided");
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+ DEBUG0("No auth callback required for PolicyKit-1");
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
memset (&ret, 0, sizeof ret);
|
||||||
|
if (call (conn, priv, in_open, REMOTE_PROC_AUTH_POLKIT,
|
||||||
1039
libvirt.spec
1039
libvirt.spec
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user