mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-10-19 07:33:46 +03:00
Compare commits
8 Commits
v1.3.3.1
...
v1.2.15-ma
Author | SHA1 | Date | |
---|---|---|---|
|
9e181d7f6c | ||
|
01cbfeb7d8 | ||
|
93f51ac244 | ||
|
3c41b3ea5e | ||
|
fe2cf73800 | ||
|
1743e20ef4 | ||
|
ab1dc5d9e5 | ||
|
e7d4224472 |
17
.gitignore
vendored
17
.gitignore
vendored
@@ -18,7 +18,6 @@
|
|||||||
*.pyc
|
*.pyc
|
||||||
*.rej
|
*.rej
|
||||||
*.s
|
*.s
|
||||||
*.swp
|
|
||||||
*~
|
*~
|
||||||
.#*
|
.#*
|
||||||
.deps
|
.deps
|
||||||
@@ -63,12 +62,12 @@
|
|||||||
/daemon/libvirtd.pod
|
/daemon/libvirtd.pod
|
||||||
/daemon/libvirtd.policy
|
/daemon/libvirtd.policy
|
||||||
/daemon/libvirtd.service
|
/daemon/libvirtd.service
|
||||||
|
/daemon/libvirtd.socket
|
||||||
/daemon/test_libvirtd.aug
|
/daemon/test_libvirtd.aug
|
||||||
/docs/aclperms.htmlinc
|
/docs/aclperms.htmlinc
|
||||||
/docs/apibuild.py.stamp
|
/docs/apibuild.py.stamp
|
||||||
/docs/devhelp/libvirt.devhelp
|
/docs/devhelp/libvirt.devhelp
|
||||||
/docs/hvsupport.html.in
|
/docs/hvsupport.html.in
|
||||||
/docs/libvirt-admin-*.xml
|
|
||||||
/docs/libvirt-api.xml
|
/docs/libvirt-api.xml
|
||||||
/docs/libvirt-lxc-*.xml
|
/docs/libvirt-lxc-*.xml
|
||||||
/docs/libvirt-qemu-*.xml
|
/docs/libvirt-qemu-*.xml
|
||||||
@@ -82,11 +81,10 @@
|
|||||||
/examples/domtop/domtop
|
/examples/domtop/domtop
|
||||||
/examples/hellolibvirt/hellolibvirt
|
/examples/hellolibvirt/hellolibvirt
|
||||||
/examples/openauth/openauth
|
/examples/openauth/openauth
|
||||||
/examples/rename/rename
|
|
||||||
/gnulib/lib/*
|
/gnulib/lib/*
|
||||||
/gnulib/m4/*
|
/gnulib/m4/*
|
||||||
/gnulib/tests/*
|
/gnulib/tests/*
|
||||||
/include/libvirt/libvirt-common.h
|
/include/libvirt/libvirt.h
|
||||||
/libtool
|
/libtool
|
||||||
/libvirt-*.tar.gz
|
/libvirt-*.tar.gz
|
||||||
/libvirt-[0-9]*
|
/libvirt-[0-9]*
|
||||||
@@ -112,8 +110,6 @@
|
|||||||
/src/access/viraccessapichecklxc.h
|
/src/access/viraccessapichecklxc.h
|
||||||
/src/access/viraccessapicheckqemu.c
|
/src/access/viraccessapicheckqemu.c
|
||||||
/src/access/viraccessapicheckqemu.h
|
/src/access/viraccessapicheckqemu.h
|
||||||
/src/admin/admin_client.h
|
|
||||||
/src/admin/admin_protocol.[ch]
|
|
||||||
/src/esx/*.generated.*
|
/src/esx/*.generated.*
|
||||||
/src/hyperv/*.generated.*
|
/src/hyperv/*.generated.*
|
||||||
/src/libvirt*.def
|
/src/libvirt*.def
|
||||||
@@ -124,7 +120,6 @@
|
|||||||
/src/libvirt_access_lxc.xml
|
/src/libvirt_access_lxc.xml
|
||||||
/src/libvirt_access_qemu.syms
|
/src/libvirt_access_qemu.syms
|
||||||
/src/libvirt_access_qemu.xml
|
/src/libvirt_access_qemu.xml
|
||||||
/src/libvirt_admin.syms
|
|
||||||
/src/libvirt_*.stp
|
/src/libvirt_*.stp
|
||||||
/src/libvirt_*helper
|
/src/libvirt_*helper
|
||||||
/src/libvirt_*probes.h
|
/src/libvirt_*probes.h
|
||||||
@@ -136,8 +131,6 @@
|
|||||||
/src/locking/qemu-lockd.conf
|
/src/locking/qemu-lockd.conf
|
||||||
/src/locking/qemu-sanlock.conf
|
/src/locking/qemu-sanlock.conf
|
||||||
/src/locking/test_libvirt_sanlock.aug
|
/src/locking/test_libvirt_sanlock.aug
|
||||||
/src/logging/log_daemon_dispatch_stubs.h
|
|
||||||
/src/logging/log_protocol.[ch]
|
|
||||||
/src/lxc/lxc_controller_dispatch.h
|
/src/lxc/lxc_controller_dispatch.h
|
||||||
/src/lxc/lxc_monitor_dispatch.h
|
/src/lxc/lxc_monitor_dispatch.h
|
||||||
/src/lxc/lxc_monitor_protocol.c
|
/src/lxc/lxc_monitor_protocol.c
|
||||||
@@ -151,17 +144,12 @@
|
|||||||
/src/rpc/virnetprotocol.[ch]
|
/src/rpc/virnetprotocol.[ch]
|
||||||
/src/test_libvirt*.aug
|
/src/test_libvirt*.aug
|
||||||
/src/test_virtlockd.aug
|
/src/test_virtlockd.aug
|
||||||
/src/test_virtlogd.aug
|
|
||||||
/src/util/virkeymaps.h
|
/src/util/virkeymaps.h
|
||||||
/src/virt-aa-helper
|
/src/virt-aa-helper
|
||||||
/src/virtlockd
|
/src/virtlockd
|
||||||
/src/virtlockd.8
|
/src/virtlockd.8
|
||||||
/src/virtlockd.8.in
|
/src/virtlockd.8.in
|
||||||
/src/virtlockd.init
|
/src/virtlockd.init
|
||||||
/src/virtlogd
|
|
||||||
/src/virtlogd.8
|
|
||||||
/src/virtlogd.8.in
|
|
||||||
/src/virtlogd.init
|
|
||||||
/tests/*.log
|
/tests/*.log
|
||||||
/tests/*.pid
|
/tests/*.pid
|
||||||
/tests/*.trs
|
/tests/*.trs
|
||||||
@@ -182,7 +170,6 @@
|
|||||||
/tools/virt-login-shell
|
/tools/virt-login-shell
|
||||||
/tools/virsh
|
/tools/virsh
|
||||||
/tools/virsh-*-edit.c
|
/tools/virsh-*-edit.c
|
||||||
/tools/virt-admin
|
|
||||||
/tools/virt-*-validate
|
/tools/virt-*-validate
|
||||||
/tools/virt-sanlock-cleanup
|
/tools/virt-sanlock-cleanup
|
||||||
/tools/wireshark/src/plugin.c
|
/tools/wireshark/src/plugin.c
|
||||||
|
2
.gnulib
2
.gnulib
Submodule .gnulib updated: 6cc32c63e8...106a3866d0
@@ -8,13 +8,13 @@ Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
|
|||||||
The primary maintainers and people with commit access rights:
|
The primary maintainers and people with commit access rights:
|
||||||
|
|
||||||
Alex Jia <ajia@redhat.com>
|
Alex Jia <ajia@redhat.com>
|
||||||
Andrea Bolognani <abologna@redhat.com>
|
|
||||||
Cédric Bosdonnat <cbosdonnat@suse.com>
|
Cédric Bosdonnat <cbosdonnat@suse.com>
|
||||||
Christophe Fergeau <cfergeau@redhat.com>
|
Christophe Fergeau <cfergeau@redhat.com>
|
||||||
Claudio Bley <claudio.bley@gmail.com>
|
Claudio Bley <claudio.bley@gmail.com>
|
||||||
Cole Robinson <crobinso@redhat.com>
|
Cole Robinson <crobinso@redhat.com>
|
||||||
Daniel Berrange <berrange@redhat.com>
|
Daniel Berrange <berrange@redhat.com>
|
||||||
Daniel Veillard <veillard@redhat.com>
|
Daniel Veillard <veillard@redhat.com>
|
||||||
|
Dmitry Guryanov <dguryanov@parallels.com>
|
||||||
Doug Goldstein <cardoe@gentoo.org>
|
Doug Goldstein <cardoe@gentoo.org>
|
||||||
Eric Blake <eblake@redhat.com>
|
Eric Blake <eblake@redhat.com>
|
||||||
Erik Skultety <eskultet@redhat.com>
|
Erik Skultety <eskultet@redhat.com>
|
||||||
@@ -28,7 +28,6 @@ Laine Stump <laine@redhat.com>
|
|||||||
Mark McLoughlin <markmc@redhat.com>
|
Mark McLoughlin <markmc@redhat.com>
|
||||||
Martin Kletzander <mkletzan@redhat.com>
|
Martin Kletzander <mkletzan@redhat.com>
|
||||||
Matthias Bolte <matthias.bolte@googlemail.com>
|
Matthias Bolte <matthias.bolte@googlemail.com>
|
||||||
Maxim Nestratov <mnestratov@virtuozzo.com>
|
|
||||||
Michal Prívozník <mprivozn@redhat.com>
|
Michal Prívozník <mprivozn@redhat.com>
|
||||||
Pavel Hrdina <phrdina@redhat.com>
|
Pavel Hrdina <phrdina@redhat.com>
|
||||||
Peter Krempa <pkrempa@redhat.com>
|
Peter Krempa <pkrempa@redhat.com>
|
||||||
@@ -45,7 +44,6 @@ Chris Lalancette <clalance@redhat.com>
|
|||||||
Dan Smith <danms@us.ibm.com>
|
Dan Smith <danms@us.ibm.com>
|
||||||
Dave Allan <dallan@redhat.com>
|
Dave Allan <dallan@redhat.com>
|
||||||
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
||||||
Dmitry Guryanov <dguryanov@parallels.com>
|
|
||||||
Guannan Ren <gren@redhat.com>
|
Guannan Ren <gren@redhat.com>
|
||||||
Jim Meyering <meyering@redhat.com>
|
Jim Meyering <meyering@redhat.com>
|
||||||
John Levon <john.levon@sun.com>
|
John Levon <john.levon@sun.com>
|
||||||
|
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
|
|||||||
that what they have is not the original version, so that the original
|
that what they have is not the original version, so that the original
|
||||||
author's reputation will not be affected by problems that might be
|
author's reputation will not be affected by problems that might be
|
||||||
introduced by others.
|
introduced by others.
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
Finally, software patents pose a constant threat to the existence of
|
||||||
any free program. We wish to make sure that a company cannot
|
any free program. We wish to make sure that a company cannot
|
||||||
effectively restrict the users of a free program by obtaining a
|
effectively restrict the users of a free program by obtaining a
|
||||||
@@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
|
|||||||
"work based on the library" and a "work that uses the library". The
|
"work based on the library" and a "work that uses the library". The
|
||||||
former contains code derived from the library, whereas the latter must
|
former contains code derived from the library, whereas the latter must
|
||||||
be combined with the library in order to run.
|
be combined with the library in order to run.
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ Library.
|
|||||||
You may charge a fee for the physical act of transferring a copy,
|
You may charge a fee for the physical act of transferring a copy,
|
||||||
and you may at your option offer warranty protection in exchange for a
|
and you may at your option offer warranty protection in exchange for a
|
||||||
fee.
|
fee.
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
2. You may modify your copy or copies of the Library or any portion
|
||||||
of it, thus forming a work based on the Library, and copy and
|
of it, thus forming a work based on the Library, and copy and
|
||||||
distribute such modifications or work under the terms of Section 1
|
distribute such modifications or work under the terms of Section 1
|
||||||
@@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
|
|||||||
ordinary GNU General Public License has appeared, then you can specify
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
that version instead if you wish.) Do not make any other change in
|
that version instead if you wish.) Do not make any other change in
|
||||||
these notices.
|
these notices.
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
Once this change is made in a given copy, it is irreversible for
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
subsequent copies and derivative works made from that copy.
|
subsequent copies and derivative works made from that copy.
|
||||||
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
|
|||||||
distribute the object code for the work under the terms of Section 6.
|
distribute the object code for the work under the terms of Section 6.
|
||||||
Any executables containing that work also fall under Section 6,
|
Any executables containing that work also fall under Section 6,
|
||||||
whether or not they are linked directly with the Library itself.
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
6. As an exception to the Sections above, you may also combine or
|
||||||
link a "work that uses the Library" with the Library to produce a
|
link a "work that uses the Library" with the Library to produce a
|
||||||
work containing portions of the Library, and distribute that work
|
work containing portions of the Library, and distribute that work
|
||||||
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
|
|||||||
accompany the operating system. Such a contradiction means you cannot
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
use both them and the Library together in an executable that you
|
use both them and the Library together in an executable that you
|
||||||
distribute.
|
distribute.
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
7. You may place library facilities that are a work based on the
|
||||||
Library side-by-side in a single library together with other library
|
Library side-by-side in a single library together with other library
|
||||||
facilities not covered by this License, and distribute such a combined
|
facilities not covered by this License, and distribute such a combined
|
||||||
@@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
|
|||||||
restrictions on the recipients' exercise of the rights granted herein.
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
You are not responsible for enforcing compliance by third parties with
|
You are not responsible for enforcing compliance by third parties with
|
||||||
this License.
|
this License.
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
11. If, as a consequence of a court judgment or allegation of patent
|
||||||
infringement or for any other reason (not limited to patent issues),
|
infringement or for any other reason (not limited to patent issues),
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
|
|||||||
the Free Software Foundation. If the Library does not specify a
|
the Free Software Foundation. If the Library does not specify a
|
||||||
license version number, you may choose any version ever published by
|
license version number, you may choose any version ever published by
|
||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
programs whose distribution conditions are incompatible with these,
|
programs whose distribution conditions are incompatible with these,
|
||||||
write to the author to ask for permission. For software which is
|
write to the author to ask for permission. For software which is
|
||||||
@@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|||||||
DAMAGES.
|
DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
19
HACKING
19
HACKING
@@ -18,12 +18,7 @@ listen to feedback.
|
|||||||
and is browsable along with other libvirt-related repositories (e.g.
|
and is browsable along with other libvirt-related repositories (e.g.
|
||||||
libvirt-python) online <http://libvirt.org/git/>.
|
libvirt-python) online <http://libvirt.org/git/>.
|
||||||
|
|
||||||
(3) Patches to translations are maintained via the zanata project
|
(3) Post patches in unified diff format, with git rename detection enabled. You
|
||||||
<https://fedora.zanata.org/>. If you want to fix a translation in a .po file,
|
|
||||||
join the appropriate language team. The libvirt release process automatically
|
|
||||||
pulls the latest version of each translation file from zanata.
|
|
||||||
|
|
||||||
(4) Post patches in unified diff format, with git rename detection enabled. You
|
|
||||||
need a one-time setup of:
|
need a one-time setup of:
|
||||||
|
|
||||||
git config diff.renames true
|
git config diff.renames true
|
||||||
@@ -75,7 +70,7 @@ the correct version if needed though).
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(5) In your commit message, make the summary line reasonably short (60 characters
|
(4) In your commit message, make the summary line reasonably short (60 characters
|
||||||
is typical), followed by a blank line, followed by any longer description of
|
is typical), followed by a blank line, followed by any longer description of
|
||||||
why your patch makes sense. If the patch fixes a regression, and you know what
|
why your patch makes sense. If the patch fixes a regression, and you know what
|
||||||
commit introduced the problem, mentioning that is useful. If the patch
|
commit introduced the problem, mentioning that is useful. If the patch
|
||||||
@@ -87,7 +82,7 @@ is up to you if you want to include or omit them in the commit message.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(6) Split large changes into a series of smaller patches, self-contained if
|
(5) Split large changes into a series of smaller patches, self-contained if
|
||||||
possible, with an explanation of each patch and an explanation of how the
|
possible, with an explanation of each patch and an explanation of how the
|
||||||
sequence of patches fits together. Moreover, please keep in mind that it's
|
sequence of patches fits together. Moreover, please keep in mind that it's
|
||||||
required to be able to compile cleanly (*including* "make check" and "make
|
required to be able to compile cleanly (*including* "make check" and "make
|
||||||
@@ -98,10 +93,10 @@ things).
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(7) Make sure your patches apply against libvirt GIT. Developers only follow GIT
|
(6) Make sure your patches apply against libvirt GIT. Developers only follow GIT
|
||||||
and don't care much about released versions.
|
and don't care much about released versions.
|
||||||
|
|
||||||
(8) Run the automated tests on your code before submitting any changes. In
|
(7) Run the automated tests on your code before submitting any changes. In
|
||||||
particular, configure with compile warnings set to -Werror. This is done
|
particular, configure with compile warnings set to -Werror. This is done
|
||||||
automatically for a git checkout; from a tarball, use:
|
automatically for a git checkout; from a tarball, use:
|
||||||
|
|
||||||
@@ -154,7 +149,7 @@ various tests under gdb or Valgrind.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(9) The Valgrind test should produce similar output to "make check". If the output
|
(8) The Valgrind test should produce similar output to "make check". If the output
|
||||||
has traces within libvirt API's, then investigation is required in order to
|
has traces within libvirt API's, then investigation is required in order to
|
||||||
determine the cause of the issue. Output such as the following indicates some
|
determine the cause of the issue. Output such as the following indicates some
|
||||||
sort of leak:
|
sort of leak:
|
||||||
@@ -230,7 +225,7 @@ to "tests/.valgrind.supp" in order to suppress the warning:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
(10) Update tests and/or documentation, particularly if you are adding a new
|
(9) Update tests and/or documentation, particularly if you are adding a new
|
||||||
feature or changing the output of a program.
|
feature or changing the output of a program.
|
||||||
|
|
||||||
|
|
||||||
|
14
Makefile.am
14
Makefile.am
@@ -20,10 +20,18 @@ LCOV = lcov
|
|||||||
GENHTML = genhtml
|
GENHTML = genhtml
|
||||||
|
|
||||||
SUBDIRS = . gnulib/lib include src daemon tools docs gnulib/tests \
|
SUBDIRS = . gnulib/lib include src daemon tools docs gnulib/tests \
|
||||||
tests po examples
|
tests po examples/object-events examples/hellolibvirt \
|
||||||
|
examples/dominfo examples/domsuspend examples/apparmor \
|
||||||
|
examples/xml/nwfilter examples/openauth examples/systemtap \
|
||||||
|
tools/wireshark examples/dommigrate \
|
||||||
|
examples/lxcconvert examples/domtop
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
XML_EXAMPLES = \
|
||||||
|
$(patsubst $(srcdir)/%,%,$(wildcard $(addprefix $(srcdir)/examples/xml/, \
|
||||||
|
test/*.xml storage/*.xml)))
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
config-post.h \
|
config-post.h \
|
||||||
ChangeLog-old \
|
ChangeLog-old \
|
||||||
@@ -32,13 +40,13 @@ EXTRA_DIST = \
|
|||||||
libvirt.pc.in \
|
libvirt.pc.in \
|
||||||
libvirt-qemu.pc.in \
|
libvirt-qemu.pc.in \
|
||||||
libvirt-lxc.pc.in \
|
libvirt-lxc.pc.in \
|
||||||
libvirt-admin.pc.in \
|
|
||||||
autobuild.sh \
|
autobuild.sh \
|
||||||
Makefile.nonreentrant \
|
Makefile.nonreentrant \
|
||||||
autogen.sh \
|
autogen.sh \
|
||||||
cfg.mk \
|
cfg.mk \
|
||||||
run.in \
|
run.in \
|
||||||
AUTHORS.in
|
AUTHORS.in \
|
||||||
|
$(XML_EXAMPLES)
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libvirt.pc libvirt-qemu.pc libvirt-lxc.pc
|
pkgconfig_DATA = libvirt.pc libvirt-qemu.pc libvirt-lxc.pc
|
||||||
|
@@ -4,7 +4,7 @@ scriptversion=2014-12-08.12; # UTC
|
|||||||
|
|
||||||
# Bootstrap this package from checked-out sources.
|
# Bootstrap this package from checked-out sources.
|
||||||
|
|
||||||
# Copyright (C) 2003-2016 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2015 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@@ -196,7 +196,10 @@ local_gl_dir=gnulib/local
|
|||||||
# Build prerequisites
|
# Build prerequisites
|
||||||
# Note that some of these programs are only required for 'make dist' to
|
# Note that some of these programs are only required for 'make dist' to
|
||||||
# succeed from a fresh git checkout; not all of these programs are
|
# succeed from a fresh git checkout; not all of these programs are
|
||||||
# required to run 'make dist' on a tarball.
|
# required to run 'make dist' on a tarball. As a special case, we want
|
||||||
|
# to require the equivalent of the Fedora python-devel package, but
|
||||||
|
# RHEL 5 lacks the witness python-config package; we hack around that
|
||||||
|
# old environment below.
|
||||||
buildreq="\
|
buildreq="\
|
||||||
autoconf 2.59
|
autoconf 2.59
|
||||||
automake 1.9.6
|
automake 1.9.6
|
||||||
@@ -209,11 +212,19 @@ patch -
|
|||||||
perl 5.5
|
perl 5.5
|
||||||
perl::XML::XPath -
|
perl::XML::XPath -
|
||||||
pkg-config -
|
pkg-config -
|
||||||
|
python-config -
|
||||||
rpcgen -
|
rpcgen -
|
||||||
tar -
|
tar -
|
||||||
xmllint -
|
xmllint -
|
||||||
xsltproc -
|
xsltproc -
|
||||||
"
|
"
|
||||||
|
# Use rpm as a fallback to bypass the bootstrap probe for python-config,
|
||||||
|
# for the sake of RHEL 5; without requiring it on newer systems that
|
||||||
|
# have python-config to begin with.
|
||||||
|
if `(${PYTHON_CONFIG-python-config} --version;
|
||||||
|
test $? -lt 126 || rpm -q python-devel) >/dev/null 2>&1`; then
|
||||||
|
PYTHON_CONFIG=true
|
||||||
|
fi
|
||||||
|
|
||||||
# Automake requires that ChangeLog and AUTHORS exist.
|
# Automake requires that ChangeLog and AUTHORS exist.
|
||||||
touch AUTHORS ChangeLog || exit 1
|
touch AUTHORS ChangeLog || exit 1
|
||||||
|
94
cfg.mk
94
cfg.mk
@@ -1,5 +1,5 @@
|
|||||||
# Customize Makefile.maint. -*- makefile -*-
|
# Customize Makefile.maint. -*- makefile -*-
|
||||||
# Copyright (C) 2008-2015 Red Hat, Inc.
|
# Copyright (C) 2008-2014 Red Hat, Inc.
|
||||||
# Copyright (C) 2003-2008 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@@ -90,7 +90,7 @@ endif
|
|||||||
|
|
||||||
# Files that should never cause syntax check failures.
|
# Files that should never cause syntax check failures.
|
||||||
VC_LIST_ALWAYS_EXCLUDE_REGEX = \
|
VC_LIST_ALWAYS_EXCLUDE_REGEX = \
|
||||||
(^(HACKING|docs/(news(-[0-9]*)?\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$
|
(^(HACKING|docs/(news\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$
|
||||||
|
|
||||||
# Functions like free() that are no-ops on NULL arguments.
|
# Functions like free() that are no-ops on NULL arguments.
|
||||||
useless_free_options = \
|
useless_free_options = \
|
||||||
@@ -304,7 +304,6 @@ sc_flags_usage:
|
|||||||
$(srcdir)/include/libvirt/virterror.h \
|
$(srcdir)/include/libvirt/virterror.h \
|
||||||
$(srcdir)/include/libvirt/libvirt-qemu.h \
|
$(srcdir)/include/libvirt/libvirt-qemu.h \
|
||||||
$(srcdir)/include/libvirt/libvirt-lxc.h \
|
$(srcdir)/include/libvirt/libvirt-lxc.h \
|
||||||
$(srcdir)/include/libvirt/libvirt-admin.h \
|
|
||||||
| grep -c '\(long\|unsigned\) flags')" != 4 && \
|
| grep -c '\(long\|unsigned\) flags')" != 4 && \
|
||||||
{ echo '$(ME): new API should use "unsigned int flags"' 1>&2; \
|
{ echo '$(ME): new API should use "unsigned int flags"' 1>&2; \
|
||||||
exit 1; } || :
|
exit 1; } || :
|
||||||
@@ -572,7 +571,6 @@ sc_prohibit_int_index:
|
|||||||
|
|
||||||
sc_prohibit_int_ijk:
|
sc_prohibit_int_ijk:
|
||||||
@prohibit='\<(int|unsigned) ([^(=]* )*(i|j|k)\>(\s|,|;)' \
|
@prohibit='\<(int|unsigned) ([^(=]* )*(i|j|k)\>(\s|,|;)' \
|
||||||
exclude='exempt from syntax-check' \
|
|
||||||
halt='use size_t, not int/unsigned int for loop vars i, j, k' \
|
halt='use size_t, not int/unsigned int for loop vars i, j, k' \
|
||||||
$(_sc_search_regexp)
|
$(_sc_search_regexp)
|
||||||
|
|
||||||
@@ -776,7 +774,7 @@ sc_prohibit_gettext_markup:
|
|||||||
# lower-level code must not include higher-level headers.
|
# lower-level code must not include higher-level headers.
|
||||||
cross_dirs=$(patsubst $(srcdir)/src/%.,%,$(wildcard $(srcdir)/src/*/.))
|
cross_dirs=$(patsubst $(srcdir)/src/%.,%,$(wildcard $(srcdir)/src/*/.))
|
||||||
cross_dirs_re=($(subst / ,/|,$(cross_dirs)))
|
cross_dirs_re=($(subst / ,/|,$(cross_dirs)))
|
||||||
mid_dirs=access|conf|cpu|locking|logging|network|node_device|rpc|security|storage
|
mid_dirs=access|conf|cpu|locking|network|node_device|rpc|security|storage
|
||||||
sc_prohibit_cross_inclusion:
|
sc_prohibit_cross_inclusion:
|
||||||
@for dir in $(cross_dirs); do \
|
@for dir in $(cross_dirs); do \
|
||||||
case $$dir in \
|
case $$dir in \
|
||||||
@@ -920,15 +918,6 @@ sc_require_space_before_label:
|
|||||||
halt="Top-level labels should be indented by one space" \
|
halt="Top-level labels should be indented by one space" \
|
||||||
$(_sc_search_regexp)
|
$(_sc_search_regexp)
|
||||||
|
|
||||||
# Allow for up to three spaces before the label: this is to avoid running
|
|
||||||
# into situations where neither this rule nor require_space_before_label
|
|
||||||
# would apply, eg. a line matching ^[a-zA-Z0-9]+ :$
|
|
||||||
sc_prohibit_space_in_label:
|
|
||||||
@prohibit='^ {0,3}[_a-zA-Z0-9]+ +:$$' \
|
|
||||||
in_vc_files='\.[ch]$$' \
|
|
||||||
halt="There should be no space between label name and colon" \
|
|
||||||
$(_sc_search_regexp)
|
|
||||||
|
|
||||||
# Doesn't catch all cases of mismatched braces across if-else, but it helps
|
# Doesn't catch all cases of mismatched braces across if-else, but it helps
|
||||||
sc_require_if_else_matching_braces:
|
sc_require_if_else_matching_braces:
|
||||||
@prohibit='( else( if .*\))? {|} else( if .*\))?$$)' \
|
@prohibit='( else( if .*\))? {|} else( if .*\))?$$)' \
|
||||||
@@ -1021,31 +1010,6 @@ sc_prohibit_pthread_create:
|
|||||||
halt="avoid using 'pthread_create', use 'virThreadCreate' instead" \
|
halt="avoid using 'pthread_create', use 'virThreadCreate' instead" \
|
||||||
$(_sc_search_regexp)
|
$(_sc_search_regexp)
|
||||||
|
|
||||||
sc_prohibit_not_streq:
|
|
||||||
@prohibit='! *STREQ *\(.*\)' \
|
|
||||||
halt='Use STRNEQ instead of !STREQ' \
|
|
||||||
$(_sc_search_regexp)
|
|
||||||
|
|
||||||
sc_prohibit_not_strneq:
|
|
||||||
@prohibit='! *STRNEQ *\(.*\)' \
|
|
||||||
halt='Use STREQ instead of !STRNEQ' \
|
|
||||||
$(_sc_search_regexp)
|
|
||||||
|
|
||||||
sc_prohibit_verbose_strcat:
|
|
||||||
@prohibit='strncat\([^,]*,\s+([^,]*),\s+strlen\(\1\)\)' \
|
|
||||||
in_vc_files='\.[ch]$$' \
|
|
||||||
halt='Use strcat(a, b) instead of strncat(a, b, strlen(b))' \
|
|
||||||
$(_sc_search_regexp)
|
|
||||||
|
|
||||||
# Ensure that each .c file containing a "main" function also
|
|
||||||
# calls virGettextInitialize
|
|
||||||
sc_gettext_init:
|
|
||||||
@require='virGettextInitialize *\(' \
|
|
||||||
in_vc_files='\.c$$' \
|
|
||||||
containing='\<main *(' \
|
|
||||||
halt='the above files do not call virGettextInitialize' \
|
|
||||||
$(_sc_search_regexp)
|
|
||||||
|
|
||||||
# We don't use this feature of maint.mk.
|
# We don't use this feature of maint.mk.
|
||||||
prev_version_file = /dev/null
|
prev_version_file = /dev/null
|
||||||
|
|
||||||
@@ -1093,7 +1057,7 @@ _autogen:
|
|||||||
|
|
||||||
# regenerate HACKING as part of the syntax-check
|
# regenerate HACKING as part of the syntax-check
|
||||||
ifneq ($(_gl-Makefile),)
|
ifneq ($(_gl-Makefile),)
|
||||||
syntax-check: $(top_srcdir)/HACKING bracket-spacing-check test-wrap-argv
|
syntax-check: $(top_srcdir)/HACKING bracket-spacing-check
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bracket-spacing-check:
|
bracket-spacing-check:
|
||||||
@@ -1102,55 +1066,33 @@ bracket-spacing-check:
|
|||||||
{ echo '$(ME): incorrect formatting, see HACKING for rules' 1>&2; \
|
{ echo '$(ME): incorrect formatting, see HACKING for rules' 1>&2; \
|
||||||
exit 1; }
|
exit 1; }
|
||||||
|
|
||||||
test-wrap-argv:
|
|
||||||
$(AM_V_GEN)files=`$(VC_LIST) | grep -E '\.(ldargs|args)'`; \
|
|
||||||
for file in $$files ; \
|
|
||||||
do \
|
|
||||||
$(PERL) $(top_srcdir)/tests/test-wrap-argv.pl $$file > $${file}-t ; \
|
|
||||||
diff $$file $${file}-t; \
|
|
||||||
res=$$? ; \
|
|
||||||
rm $${file}-t ; \
|
|
||||||
test $$res == 0 || { \
|
|
||||||
echo "$(ME): Incorrect line wrapping in $$file" 1>&2; \
|
|
||||||
echo "$(ME): Use test-wrap-argv.pl to wrap test data files" 1>&2; \
|
|
||||||
exit 1; } \
|
|
||||||
done
|
|
||||||
|
|
||||||
# sc_po_check can fail if generated files are not built first
|
# sc_po_check can fail if generated files are not built first
|
||||||
sc_po_check: \
|
sc_po_check: \
|
||||||
$(srcdir)/daemon/remote_dispatch.h \
|
$(srcdir)/daemon/remote_dispatch.h \
|
||||||
$(srcdir)/daemon/qemu_dispatch.h \
|
$(srcdir)/daemon/qemu_dispatch.h \
|
||||||
$(srcdir)/src/remote/remote_client_bodies.h \
|
$(srcdir)/src/remote/remote_client_bodies.h
|
||||||
$(srcdir)/daemon/admin_dispatch.h \
|
|
||||||
$(srcdir)/src/admin/admin_client.h
|
|
||||||
$(srcdir)/daemon/remote_dispatch.h: $(srcdir)/src/remote/remote_protocol.x
|
$(srcdir)/daemon/remote_dispatch.h: $(srcdir)/src/remote/remote_protocol.x
|
||||||
$(MAKE) -C daemon remote_dispatch.h
|
$(MAKE) -C daemon remote_dispatch.h
|
||||||
$(srcdir)/daemon/qemu_dispatch.h: $(srcdir)/src/remote/qemu_protocol.x
|
$(srcdir)/daemon/qemu_dispatch.h: $(srcdir)/src/remote/qemu_protocol.x
|
||||||
$(MAKE) -C daemon qemu_dispatch.h
|
$(MAKE) -C daemon qemu_dispatch.h
|
||||||
$(srcdir)/src/remote/remote_client_bodies.h: $(srcdir)/src/remote/remote_protocol.x
|
$(srcdir)/src/remote/remote_client_bodies.h: $(srcdir)/src/remote/remote_protocol.x
|
||||||
$(MAKE) -C src remote/remote_client_bodies.h
|
$(MAKE) -C src remote/remote_client_bodies.h
|
||||||
$(srcdir)/daemon/admin_dispatch.h: $(srcdir)/src/admin/admin_protocol.x
|
|
||||||
$(MAKE) -C daemon admin_dispatch.h
|
|
||||||
$(srcdir)/src/admin/admin_client.h: $(srcdir)/src/admin/admin_protocol.x
|
|
||||||
$(MAKE) -C src admin/admin_client.h
|
|
||||||
|
|
||||||
# List all syntax-check exemptions:
|
# List all syntax-check exemptions:
|
||||||
exclude_file_name_regexp--sc_avoid_strcase = ^tools/vsh\.h$$
|
exclude_file_name_regexp--sc_avoid_strcase = ^tools/virsh\.h$$
|
||||||
|
|
||||||
_src1=libvirt-stream|fdstream|qemu/qemu_monitor|util/(vircommand|virfile)|xen/xend_internal|rpc/virnetsocket|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon
|
_src1=libvirt-stream|fdstream|qemu/qemu_monitor|util/(vircommand|virfile)|xen/xend_internal|rpc/virnetsocket|lxc/lxc_controller|locking/lock_daemon
|
||||||
_test1=shunloadtest|virnettlscontexttest|virnettlssessiontest|vircgroupmock
|
_test1=shunloadtest|virnettlscontexttest|virnettlssessiontest|vircgroupmock
|
||||||
exclude_file_name_regexp--sc_avoid_write = \
|
exclude_file_name_regexp--sc_avoid_write = \
|
||||||
^(src/($(_src1))|daemon/libvirtd|tools/virsh-console|tests/($(_test1)))\.c$$
|
^(src/($(_src1))|daemon/libvirtd|tools/virsh-console|tests/($(_test1)))\.c$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_bindtextdomain = .*
|
exclude_file_name_regexp--sc_bindtextdomain = ^(tests|examples)/
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_gettext_init = ^(tests|examples)/
|
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_copyright_usage = \
|
exclude_file_name_regexp--sc_copyright_usage = \
|
||||||
^COPYING(|\.LESSER)$$
|
^COPYING(|\.LESSER)$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_flags_usage = \
|
exclude_file_name_regexp--sc_flags_usage = \
|
||||||
^(docs/|src/util/virnetdevtap\.c$$|tests/(vir(cgroup|pci|usb)|nss|qemuxml2argv)mock\.c$$)
|
^(docs/|src/util/virnetdevtap\.c$$|tests/vir(cgroup|pci|usb)mock\.c$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
|
exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
|
||||||
^(src/rpc/gendispatch\.pl$$|tests/)
|
^(src/rpc/gendispatch\.pl$$|tests/)
|
||||||
@@ -1169,12 +1111,12 @@ exclude_file_name_regexp--sc_prohibit_strdup = \
|
|||||||
^(docs/|examples/|src/util/virstring\.c|tests/vir(netserverclient|cgroup)mock.c$$)
|
^(docs/|examples/|src/util/virstring\.c|tests/vir(netserverclient|cgroup)mock.c$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_close = \
|
exclude_file_name_regexp--sc_prohibit_close = \
|
||||||
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c)$$)
|
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir(cgroup|pci)mock\.c)$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||||
(^tests/(qemuhelp|nodeinfo|virpcitest)data/|\.diff|tests/confdata/no-newline\.conf$$)
|
(^tests/(qemuhelp|nodeinfo|virpcitest)data/|\.diff$$)
|
||||||
|
|
||||||
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon)
|
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon)
|
||||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||||
(^($(_src2)|tests/testutils|daemon/libvirtd)\.c$$)
|
(^($(_src2)|tests/testutils|daemon/libvirtd)\.c$$)
|
||||||
|
|
||||||
@@ -1204,8 +1146,6 @@ exclude_file_name_regexp--sc_prohibit_strncpy = ^src/util/virstring\.c$$
|
|||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_strtol = ^examples/dom.*/.*\.c$$
|
exclude_file_name_regexp--sc_prohibit_strtol = ^examples/dom.*/.*\.c$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_gethostby = ^docs/nss.html.in$$
|
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/virxml\.c$$
|
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/virxml\.c$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
|
exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
|
||||||
@@ -1235,7 +1175,7 @@ exclude_file_name_regexp--sc_prohibit_include_public_headers_quote = \
|
|||||||
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.h$$)
|
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.h$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
|
exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
|
||||||
^(tools/|examples/|include/libvirt/(virterror|libvirt(-(admin|qemu|lxc))?)\.h$$)
|
^(tools/|examples/|include/libvirt/(virterror|libvirt-(qemu|lxc))\.h$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_int_ijk = \
|
exclude_file_name_regexp--sc_prohibit_int_ijk = \
|
||||||
^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/)$
|
^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/)$
|
||||||
@@ -1244,7 +1184,7 @@ exclude_file_name_regexp--sc_prohibit_getenv = \
|
|||||||
^tests/.*\.[ch]$$
|
^tests/.*\.[ch]$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_avoid_attribute_unused_in_header = \
|
exclude_file_name_regexp--sc_avoid_attribute_unused_in_header = \
|
||||||
^(src/util/virlog\.h|src/network/bridge_driver\.h)$$
|
^src/util/virlog\.h$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_mixed_case_abbreviations = \
|
exclude_file_name_regexp--sc_prohibit_mixed_case_abbreviations = \
|
||||||
^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
|
^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
|
||||||
@@ -1266,9 +1206,3 @@ exclude_file_name_regexp--sc_prohibit_sysconf_pagesize = \
|
|||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_pthread_create = \
|
exclude_file_name_regexp--sc_prohibit_pthread_create = \
|
||||||
^(cfg\.mk|src/util/virthread\.c|tests/.*)$$
|
^(cfg\.mk|src/util/virthread\.c|tests/.*)$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_not_streq = \
|
|
||||||
^tests/.*\.[ch]$$
|
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_not_strneq = \
|
|
||||||
^tests/.*\.[ch]$$
|
|
||||||
|
@@ -43,27 +43,3 @@
|
|||||||
# undef WITH_YAJL
|
# undef WITH_YAJL
|
||||||
# undef WITH_YAJL2
|
# undef WITH_YAJL2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* With the NSS module it's the same story as virt-login-shell. See the
|
|
||||||
* explanation above.
|
|
||||||
*/
|
|
||||||
#ifdef LIBVIRT_NSS
|
|
||||||
# undef HAVE_LIBDEVMAPPER_H
|
|
||||||
# undef HAVE_LIBNL
|
|
||||||
# undef HAVE_LIBNL3
|
|
||||||
# undef HAVE_LIBSASL2
|
|
||||||
# undef WITH_CAPNG
|
|
||||||
# undef WITH_CURL
|
|
||||||
# undef WITH_DTRACE_PROBES
|
|
||||||
# undef WITH_GNUTLS
|
|
||||||
# undef WITH_GNUTLS_GCRYPT
|
|
||||||
# undef WITH_MACVTAP
|
|
||||||
# undef WITH_NUMACTL
|
|
||||||
# undef WITH_SASL
|
|
||||||
# undef WITH_SSH2
|
|
||||||
# undef WITH_VIRTUALPORT
|
|
||||||
# undef WITH_SECDRIVER_SELINUX
|
|
||||||
# undef WITH_SECDRIVER_APPARMOR
|
|
||||||
# undef WITH_CAPNG
|
|
||||||
#endif /* LIBVIRT_NSS */
|
|
||||||
|
212
configure.ac
212
configure.ac
@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
|
|||||||
dnl License along with this library. If not, see
|
dnl License along with this library. If not, see
|
||||||
dnl <http://www.gnu.org/licenses/>.
|
dnl <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
AC_INIT([libvirt], [1.3.3.1], [libvir-list@redhat.com], [], [http://libvirt.org])
|
AC_INIT([libvirt], [1.2.15], [libvir-list@redhat.com], [], [http://libvirt.org])
|
||||||
AC_CONFIG_SRCDIR([src/libvirt.c])
|
AC_CONFIG_SRCDIR([src/libvirt.c])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
@@ -25,10 +25,6 @@ AC_CONFIG_MACRO_DIR([m4])
|
|||||||
dnl Make automake keep quiet about wildcards & other GNUmake-isms; also keep
|
dnl Make automake keep quiet about wildcards & other GNUmake-isms; also keep
|
||||||
dnl quiet about the fact that we intentionally cater to automake 1.9
|
dnl quiet about the fact that we intentionally cater to automake 1.9
|
||||||
AM_INIT_AUTOMAKE([-Wno-portability -Wno-obsolete tar-ustar subdir-objects])
|
AM_INIT_AUTOMAKE([-Wno-portability -Wno-obsolete tar-ustar subdir-objects])
|
||||||
dnl older automake's default of ARFLAGS=cru is noisy on newer binutils;
|
|
||||||
dnl we don't really need the 'u' even in older toolchains. Then there is
|
|
||||||
dnl older libtool, which spelled it AR_FLAGS
|
|
||||||
m4_divert_text([DEFAULTS], [: "${ARFLAGS=cr} ${AR_FLAGS=cr}"])
|
|
||||||
|
|
||||||
# Maintainer note - comment this line out if you plan to rerun
|
# Maintainer note - comment this line out if you plan to rerun
|
||||||
# GNULIB_POSIXCHECK testing to see if libvirt should be using more modules.
|
# GNULIB_POSIXCHECK testing to see if libvirt should be using more modules.
|
||||||
@@ -123,7 +119,6 @@ PARTED_REQUIRED="1.8.0"
|
|||||||
DEVMAPPER_REQUIRED=1.0.0
|
DEVMAPPER_REQUIRED=1.0.0
|
||||||
LIBPCAP_REQUIRED="1.0.0"
|
LIBPCAP_REQUIRED="1.0.0"
|
||||||
LIBNL_REQUIRED="1.1"
|
LIBNL_REQUIRED="1.1"
|
||||||
PARALLELS_SDK_REQUIRED="7.0.22"
|
|
||||||
|
|
||||||
dnl Checks for C compiler.
|
dnl Checks for C compiler.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
@@ -175,13 +170,12 @@ dnl are also linux specific. The "network" and storage_fs drivers are known
|
|||||||
dnl to not work on MacOS X presently, so we also make a note if compiling
|
dnl to not work on MacOS X presently, so we also make a note if compiling
|
||||||
dnl for that
|
dnl for that
|
||||||
|
|
||||||
with_linux=no with_osx=no with_freebsd=no with_win=no with_cygwin=no
|
with_linux=no with_osx=no with_freebsd=no
|
||||||
case $host in
|
case $host in
|
||||||
*-*-linux*) with_linux=yes ;;
|
*-*-linux*) with_linux=yes ;;
|
||||||
*-*-darwin*) with_osx=yes ;;
|
*-*-darwin*) with_osx=yes ;;
|
||||||
*-*-freebsd*) with_freebsd=yes ;;
|
*-*-freebsd*) with_freebsd=yes ;;
|
||||||
*-*-mingw* | *-*-msvc* ) with_win=yes ;;
|
*-*-mingw* | *-*-msvc* ) with_win=yes ;;
|
||||||
*-*-cygwin*) with_cygwin=yes ;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test $with_linux = no; then
|
if test $with_linux = no; then
|
||||||
@@ -193,12 +187,9 @@ if test $with_linux = no; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test $with_freebsd = yes; then
|
if test $with_freebsd = yes; then
|
||||||
want_ifconfig=yes
|
want_ifconfig=yes
|
||||||
with_firewalld=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $with_cygwin = yes; then
|
with_firewalld=no
|
||||||
with_vbox=no
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL([WITH_LINUX], [test "$with_linux" = "yes"])
|
AM_CONDITIONAL([WITH_LINUX], [test "$with_linux" = "yes"])
|
||||||
@@ -257,7 +248,6 @@ LIBVIRT_CHECK_SSH2
|
|||||||
LIBVIRT_CHECK_SYSTEMD_DAEMON
|
LIBVIRT_CHECK_SYSTEMD_DAEMON
|
||||||
LIBVIRT_CHECK_UDEV
|
LIBVIRT_CHECK_UDEV
|
||||||
LIBVIRT_CHECK_WIRESHARK
|
LIBVIRT_CHECK_WIRESHARK
|
||||||
LIBVIRT_CHECK_NSS
|
|
||||||
LIBVIRT_CHECK_YAJL
|
LIBVIRT_CHECK_YAJL
|
||||||
|
|
||||||
AC_MSG_CHECKING([for CPUID instruction])
|
AC_MSG_CHECKING([for CPUID instruction])
|
||||||
@@ -284,7 +274,7 @@ AC_CHECK_SIZEOF([long])
|
|||||||
dnl Availability of various common functions (non-fatal if missing),
|
dnl Availability of various common functions (non-fatal if missing),
|
||||||
dnl and various less common threadsafe functions
|
dnl and various less common threadsafe functions
|
||||||
AC_CHECK_FUNCS_ONCE([cfmakeraw fallocate geteuid getgid getgrnam_r \
|
AC_CHECK_FUNCS_ONCE([cfmakeraw fallocate geteuid getgid getgrnam_r \
|
||||||
getmntent_r getpwuid_r getrlimit getuid kill mmap newlocale posix_fallocate \
|
getmntent_r getpwuid_r getuid kill mmap newlocale posix_fallocate \
|
||||||
posix_memalign prlimit regexec sched_getaffinity setgroups setns \
|
posix_memalign prlimit regexec sched_getaffinity setgroups setns \
|
||||||
setrlimit symlink sysctlbyname getifaddrs sched_setscheduler])
|
setrlimit symlink sysctlbyname getifaddrs sched_setscheduler])
|
||||||
|
|
||||||
@@ -324,7 +314,7 @@ fi
|
|||||||
LIBS=$old_libs
|
LIBS=$old_libs
|
||||||
|
|
||||||
dnl Availability of various common headers (non-fatal if missing).
|
dnl Availability of various common headers (non-fatal if missing).
|
||||||
AC_CHECK_HEADERS([pwd.h regex.h sys/un.h \
|
AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/un.h \
|
||||||
sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
|
sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
|
||||||
sys/un.h sys/syscall.h sys/sysctl.h netinet/tcp.h ifaddrs.h \
|
sys/un.h sys/syscall.h sys/sysctl.h netinet/tcp.h ifaddrs.h \
|
||||||
libtasn1.h sys/ucred.h sys/mount.h])
|
libtasn1.h sys/ucred.h sys/mount.h])
|
||||||
@@ -394,14 +384,8 @@ AC_CHECK_TYPE([struct ifreq],
|
|||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AC_CHECK_TYPE([struct sockpeercred],
|
|
||||||
[AC_DEFINE([HAVE_STRUCT_SOCKPEERCRED], [1],
|
|
||||||
[Defined if struct sockpeercred is available])],
|
|
||||||
[], [[#include <sys/socket.h>
|
|
||||||
]])
|
|
||||||
|
|
||||||
AC_CHECK_DECLS([ETH_FLAG_TXVLAN, ETH_FLAG_NTUPLE, ETH_FLAG_RXHASH, ETH_FLAG_LRO,
|
AC_CHECK_DECLS([ETH_FLAG_TXVLAN, ETH_FLAG_NTUPLE, ETH_FLAG_RXHASH, ETH_FLAG_LRO,
|
||||||
ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS, ETHTOOL_GFEATURES],
|
ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS],
|
||||||
[], [], [[#include <linux/ethtool.h>
|
[], [], [[#include <linux/ethtool.h>
|
||||||
]])
|
]])
|
||||||
|
|
||||||
@@ -413,7 +397,7 @@ AM_CONDITIONAL([HAVE_LIBTASN1], [test "x$ac_cv_header_libtasn1_h" = "xyes"])
|
|||||||
AC_CHECK_LIB([intl],[gettext],[])
|
AC_CHECK_LIB([intl],[gettext],[])
|
||||||
|
|
||||||
dnl Do we have rpcgen?
|
dnl Do we have rpcgen?
|
||||||
AC_PATH_PROGS([RPCGEN], [rpcgen portable-rpcgen], [no])
|
AC_PATH_PROG([RPCGEN], [rpcgen], [no])
|
||||||
AM_CONDITIONAL([HAVE_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
|
AM_CONDITIONAL([HAVE_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
|
||||||
dnl Is this GLIBC's buggy rpcgen?
|
dnl Is this GLIBC's buggy rpcgen?
|
||||||
AM_CONDITIONAL([HAVE_GLIBC_RPCGEN],
|
AM_CONDITIONAL([HAVE_GLIBC_RPCGEN],
|
||||||
@@ -574,6 +558,10 @@ AC_ARG_WITH([hyperv],
|
|||||||
[AS_HELP_STRING([--with-hyperv],
|
[AS_HELP_STRING([--with-hyperv],
|
||||||
[add Hyper-V support @<:@default=check@:>@])])
|
[add Hyper-V support @<:@default=check@:>@])])
|
||||||
m4_divert_text([DEFAULTS], [with_hyperv=check])
|
m4_divert_text([DEFAULTS], [with_hyperv=check])
|
||||||
|
AC_ARG_WITH([parallels],
|
||||||
|
[AS_HELP_STRING([--with-parallels],
|
||||||
|
[add Parallels Cloud Server support @<:@default=check@:>@])])
|
||||||
|
m4_divert_text([DEFAULTS], [with_parallels=check])
|
||||||
AC_ARG_WITH([test],
|
AC_ARG_WITH([test],
|
||||||
[AS_HELP_STRING([--with-test],
|
[AS_HELP_STRING([--with-test],
|
||||||
[add test driver support @<:@default=yes@:>@])])
|
[add test driver support @<:@default=yes@:>@])])
|
||||||
@@ -833,6 +821,7 @@ if test "$with_libvirtd" = "yes" ; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
|
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
|
||||||
|
|
||||||
|
|
||||||
old_LIBS="$LIBS"
|
old_LIBS="$LIBS"
|
||||||
old_CFLAGS="$CFLAGS"
|
old_CFLAGS="$CFLAGS"
|
||||||
LIBXENSERVER_LIBS=""
|
LIBXENSERVER_LIBS=""
|
||||||
@@ -894,6 +883,7 @@ if test "$with_libxl" != "no" ; then
|
|||||||
PKG_CHECK_MODULES([LIBXL], [xenlight], [
|
PKG_CHECK_MODULES([LIBXL], [xenlight], [
|
||||||
LIBXL_FIRMWARE_DIR=`$PKG_CONFIG --variable xenfirmwaredir xenlight`
|
LIBXL_FIRMWARE_DIR=`$PKG_CONFIG --variable xenfirmwaredir xenlight`
|
||||||
LIBXL_EXECBIN_DIR=`$PKG_CONFIG --variable libexec_bin xenlight`
|
LIBXL_EXECBIN_DIR=`$PKG_CONFIG --variable libexec_bin xenlight`
|
||||||
|
LIBXL_LIBS="$LIBXL_LIBS -lxenctrl"
|
||||||
with_libxl=yes
|
with_libxl=yes
|
||||||
], [LIBXL_FOUND=no])
|
], [LIBXL_FOUND=no])
|
||||||
if test "$LIBXL_FOUND" = "no"; then
|
if test "$LIBXL_FOUND" = "no"; then
|
||||||
@@ -906,7 +896,7 @@ if test "$with_libxl" != "no" ; then
|
|||||||
LIBS="$LIBS $LIBXL_LIBS"
|
LIBS="$LIBS $LIBXL_LIBS"
|
||||||
AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [
|
AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [
|
||||||
with_libxl=yes
|
with_libxl=yes
|
||||||
LIBXL_LIBS="$LIBXL_LIBS -lxenlight"
|
LIBXL_LIBS="$LIBXL_LIBS -lxenlight -lxenctrl"
|
||||||
],[
|
],[
|
||||||
if test "$with_libxl" = "yes"; then
|
if test "$with_libxl" = "yes"; then
|
||||||
fail=1
|
fail=1
|
||||||
@@ -916,10 +906,6 @@ if test "$with_libxl" != "no" ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Until there is a need to use enhancements of libxl APIs such as
|
|
||||||
# libxl_domain_create_restore and libxl_set_vcpuaffinity, stick with
|
|
||||||
# the APIs as defined in libxl API version 4.2.0.
|
|
||||||
LIBXL_CFLAGS="$LIBXL_CFLAGS -DLIBXL_API_VERSION=0x040200"
|
|
||||||
LIBS="$old_LIBS"
|
LIBS="$old_LIBS"
|
||||||
CFLAGS="$old_CFLAGS"
|
CFLAGS="$old_CFLAGS"
|
||||||
|
|
||||||
@@ -938,14 +924,6 @@ if test "$with_libxl" = "yes"; then
|
|||||||
if test "x$LIBXL_EXECBIN_DIR" != "x"; then
|
if test "x$LIBXL_EXECBIN_DIR" != "x"; then
|
||||||
AC_DEFINE_UNQUOTED([LIBXL_EXECBIN_DIR], ["$LIBXL_EXECBIN_DIR"], [directory containing Xen libexec binaries])
|
AC_DEFINE_UNQUOTED([LIBXL_EXECBIN_DIR], ["$LIBXL_EXECBIN_DIR"], [directory containing Xen libexec binaries])
|
||||||
fi
|
fi
|
||||||
dnl Check if the xtl_* infrastructure is in libxentoollog
|
|
||||||
dnl (since Xen 4.7) if not then assume it is in libxenctrl
|
|
||||||
dnl (as it was for 4.6 and earler)
|
|
||||||
AC_CHECK_LIB([xentoollog], [xtl_createlogger_stdiostream], [
|
|
||||||
LIBXL_LIBS="$LIBXL_LIBS -lxentoollog"
|
|
||||||
],[
|
|
||||||
LIBXL_LIBS="$LIBXL_LIBS -lxenctrl"
|
|
||||||
])
|
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"])
|
AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"])
|
||||||
|
|
||||||
@@ -1096,19 +1074,27 @@ if test "$with_lxc" = "yes" ; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
|
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl Check for virt-login-shell
|
|
||||||
dnl
|
|
||||||
|
|
||||||
LIBVIRT_CHECK_LOGIN_SHELL
|
|
||||||
|
|
||||||
AM_CONDITIONAL([WITH_SETUID_RPC_CLIENT], [test "$with_lxc$with_login_shell" != "nono"])
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Checks for the Parallels driver
|
dnl Checks for the Parallels driver
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
LIBVIRT_DRIVER_CHECK_VZ
|
|
||||||
|
if test "$with_parallels" = "yes" ||
|
||||||
|
test "$with_parallels" = "check"; then
|
||||||
|
PKG_CHECK_MODULES([PARALLELS_SDK], [parallels-sdk],
|
||||||
|
[PARALLELS_SDK_FOUND=yes], [PARALLELS_SDK_FOUND=no])
|
||||||
|
|
||||||
|
if test "$with_parallels" = "yes" && test "$PARALLELS_SDK_FOUND" = "no"; then
|
||||||
|
AC_MSG_ERROR([Parallels Virtualization SDK is needed to build the Parallels driver.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
with_parallels=$PARALLELS_SDK_FOUND
|
||||||
|
if test "$with_parallels" = "yes"; then
|
||||||
|
AC_DEFINE_UNQUOTED([WITH_PARALLELS], 1,
|
||||||
|
[whether Parallels driver is enabled])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([WITH_PARALLELS], [test "$with_parallels" = "yes"])
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Checks for bhyve driver
|
dnl Checks for bhyve driver
|
||||||
@@ -1116,6 +1102,56 @@ dnl
|
|||||||
|
|
||||||
LIBVIRT_DRIVER_CHECK_BHYVE
|
LIBVIRT_DRIVER_CHECK_BHYVE
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl check for shell that understands <> redirection without truncation,
|
||||||
|
dnl needed by src/qemu/qemu_monitor_{text,json}.c.
|
||||||
|
dnl
|
||||||
|
if test "$with_qemu" = yes; then
|
||||||
|
lv_wrapper_shell=
|
||||||
|
AC_CACHE_CHECK([for shell that supports <> redirection],
|
||||||
|
[lv_cv_wrapper_shell],
|
||||||
|
[
|
||||||
|
# If cross-compiling, guess that /bin/sh is good enough except for
|
||||||
|
# Linux, where it might be dash 0.5.5 which is known broken; and on
|
||||||
|
# Linux, we have a good chance that /bin/bash will exist.
|
||||||
|
# If we guess wrong, a user can override the cache variable.
|
||||||
|
# Going through /bin/bash is a slight slowdown if /bin/sh works.
|
||||||
|
if test "$cross_compiling" = yes; then
|
||||||
|
case $host_os in
|
||||||
|
linux*) lv_cv_wrapper_shell=/bin/bash ;;
|
||||||
|
*) lv_cv_wrapper_shell=/bin/sh ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
for lv_cv_wrapper_shell in /bin/sh bash ksh zsh none; do
|
||||||
|
test $lv_cv_wrapper_shell = none &&
|
||||||
|
AC_MSG_ERROR([could not find decent shell])
|
||||||
|
echo a > conftest.a
|
||||||
|
($lv_cv_wrapper_shell -c ': 1<>conftest.a') 2>/dev/null &&
|
||||||
|
case `cat conftest.a`.$lv_cv_wrapper_shell in
|
||||||
|
a./*) break;; dnl /bin/sh is good enough
|
||||||
|
a.*) dnl bash, ksh, and zsh all understand 'command', use that
|
||||||
|
dnl to determine the absolute path of the shell
|
||||||
|
lv_cv_wrapper_shell=`$lv_cv_wrapper_shell -c \
|
||||||
|
"command -v $lv_cv_wrapper_shell"`
|
||||||
|
case $lv_cv_wrapper_shell in
|
||||||
|
/*) break;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
rm -f conftest.a
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test "x$lv_cv_wrapper_shell" != x/bin/sh; then
|
||||||
|
lv_wrapper_shell=$lv_cv_wrapper_shell
|
||||||
|
fi
|
||||||
|
if test "x$lv_wrapper_shell" != x; then
|
||||||
|
AC_DEFINE_UNQUOTED([VIR_WRAPPER_SHELL], ["$lv_wrapper_shell"],
|
||||||
|
[Define to the absolute path of a shell that does not truncate on
|
||||||
|
<> redirection, if /bin/sh does not fit the bill])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl check for kernel headers required by src/bridge.c
|
dnl check for kernel headers required by src/bridge.c
|
||||||
@@ -1319,28 +1355,24 @@ AC_ARG_WITH([polkit],
|
|||||||
with_polkit0=no
|
with_polkit0=no
|
||||||
with_polkit1=no
|
with_polkit1=no
|
||||||
if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then
|
if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then
|
||||||
dnl Check for new polkit first. We directly talk over DBus
|
dnl Check for new polkit first - just a binary
|
||||||
dnl but we use existence of pkcheck binary as a sign that
|
|
||||||
dnl we should prefer polkit-1 over polkit-0, so we check
|
|
||||||
dnl for it even though we don't ultimately use it
|
|
||||||
AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
|
AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
|
||||||
if test "x$PKCHECK_PATH" != "x" ; then
|
if test "x$PKCHECK_PATH" != "x" ; then
|
||||||
dnl Found pkcheck, so ensure dbus-devel is present
|
AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program])
|
||||||
if test "x$with_dbus" = "xyes" ; then
|
AC_MSG_CHECKING([whether pkcheck supports uid value])
|
||||||
AC_DEFINE_UNQUOTED([WITH_POLKIT], 1,
|
pkcheck_supports_uid=`$PKG_CONFIG --variable pkcheck_supports_uid polkit-gobject-1`
|
||||||
[use PolicyKit for UNIX socket access checks])
|
if test "x$pkcheck_supports_uid" = "xtrue"; then
|
||||||
AC_DEFINE_UNQUOTED([WITH_POLKIT1], 1,
|
AC_MSG_RESULT([yes])
|
||||||
[use PolicyKit for UNIX socket access checks])
|
AC_DEFINE_UNQUOTED([PKCHECK_SUPPORTS_UID], 1, [Pass uid to pkcheck])
|
||||||
with_polkit="yes"
|
|
||||||
with_polkit1="yes"
|
|
||||||
else
|
else
|
||||||
if test "x$with_polkit" = "xcheck" ; then
|
AC_MSG_RESULT([no])
|
||||||
with_polkit=no
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR(
|
|
||||||
[You must install dbus to compile libvirt with polkit-1])
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
AC_DEFINE_UNQUOTED([WITH_POLKIT], 1,
|
||||||
|
[use PolicyKit for UNIX socket access checks])
|
||||||
|
AC_DEFINE_UNQUOTED([WITH_POLKIT1], 1,
|
||||||
|
[use PolicyKit for UNIX socket access checks])
|
||||||
|
with_polkit="yes"
|
||||||
|
with_polkit1="yes"
|
||||||
else
|
else
|
||||||
dnl Check for old polkit second - library + binary
|
dnl Check for old polkit second - library + binary
|
||||||
PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||||
@@ -1650,6 +1682,10 @@ if test "$with_pm_utils" = "yes"; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_PM_UTILS], [test "$with_pm_utils" = "yes"])
|
AM_CONDITIONAL([WITH_PM_UTILS], [test "$with_pm_utils" = "yes"])
|
||||||
|
|
||||||
|
dnl virsh libraries
|
||||||
|
VIRSH_LIBS="$VIRSH_LIBS $READLINE_LIBS"
|
||||||
|
AC_SUBST([VIRSH_LIBS])
|
||||||
|
|
||||||
dnl check if the network driver should be compiled
|
dnl check if the network driver should be compiled
|
||||||
|
|
||||||
AC_ARG_WITH([network],
|
AC_ARG_WITH([network],
|
||||||
@@ -1929,14 +1965,14 @@ AC_SUBST([LIBRBD_LIBS])
|
|||||||
|
|
||||||
if test "$with_storage_sheepdog" = "yes" ||
|
if test "$with_storage_sheepdog" = "yes" ||
|
||||||
test "$with_storage_sheepdog" = "check"; then
|
test "$with_storage_sheepdog" = "check"; then
|
||||||
AC_PATH_PROGS([SHEEPDOGCLI], [collie dog], [], [$PATH:/sbin:/usr/sbin])
|
AC_PATH_PROG([COLLIE], [collie], [], [$PATH:/sbin:/usr/sbin])
|
||||||
|
|
||||||
if test "$with_storage_sheepdog" = "yes"; then
|
if test "$with_storage_sheepdog" = "yes"; then
|
||||||
if test -z "$SHEEPDOGCLI"; then
|
if test -z "$COLLIE"; then
|
||||||
AC_MSG_ERROR([We need sheepdog client for Sheepdog storage driver])
|
AC_MSG_ERROR([We need collie for Sheepdog storage driver])
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if test -z "$SHEEPDOGCLI"; then
|
if test -z "$COLLIE"; then
|
||||||
with_storage_sheepdog=no
|
with_storage_sheepdog=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1948,7 +1984,7 @@ if test "$with_storage_sheepdog" = "yes" ||
|
|||||||
if test "$with_storage_sheepdog" = "yes"; then
|
if test "$with_storage_sheepdog" = "yes"; then
|
||||||
AC_DEFINE_UNQUOTED([WITH_STORAGE_SHEEPDOG], 1,
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_SHEEPDOG], 1,
|
||||||
[whether Sheepdog backend for storage driver is enabled])
|
[whether Sheepdog backend for storage driver is enabled])
|
||||||
AC_DEFINE_UNQUOTED([SHEEPDOGCLI],["$SHEEPDOGCLI"],[Location of sheepdog client program])
|
AC_DEFINE_UNQUOTED([COLLIE],["$COLLIE"],[Location of collie program])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_STORAGE_SHEEPDOG],
|
AM_CONDITIONAL([WITH_STORAGE_SHEEPDOG],
|
||||||
@@ -1966,6 +2002,14 @@ if test "$with_storage_gluster" = "yes"; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_STORAGE_GLUSTER], [test "$with_storage_gluster" = "yes"])
|
AM_CONDITIONAL([WITH_STORAGE_GLUSTER], [test "$with_storage_gluster" = "yes"])
|
||||||
|
|
||||||
|
if test "$with_storage_zfs" = "check"; then
|
||||||
|
with_storage_zfs=$with_freebsd
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$with_storage_zfs" = "yes" && test "$with_freebsd" = "no"; then
|
||||||
|
AC_MSG_ERROR([The ZFS storage driver can be enabled on FreeBSD only.])
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$with_storage_zfs" = "yes" ||
|
if test "$with_storage_zfs" = "yes" ||
|
||||||
test "$with_storage_zfs" = "check"; then
|
test "$with_storage_zfs" = "check"; then
|
||||||
AC_PATH_PROG([ZFS], [zfs], [], [$PATH:/sbin:/usr/sbin])
|
AC_PATH_PROG([ZFS], [zfs], [], [$PATH:/sbin:/usr/sbin])
|
||||||
@@ -2314,7 +2358,6 @@ WIN32_EXTRA_CFLAGS=
|
|||||||
dnl libvirt.syms is generated in builddir, but libvirt_qemu.syms is in git;
|
dnl libvirt.syms is generated in builddir, but libvirt_qemu.syms is in git;
|
||||||
dnl hence the asymmetric naming of these two symbol files.
|
dnl hence the asymmetric naming of these two symbol files.
|
||||||
LIBVIRT_SYMBOL_FILE=libvirt.syms
|
LIBVIRT_SYMBOL_FILE=libvirt.syms
|
||||||
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.syms
|
|
||||||
LIBVIRT_LXC_SYMBOL_FILE='$(srcdir)/libvirt_lxc.syms'
|
LIBVIRT_LXC_SYMBOL_FILE='$(srcdir)/libvirt_lxc.syms'
|
||||||
LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.syms'
|
LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.syms'
|
||||||
MSCOM_LIBS=
|
MSCOM_LIBS=
|
||||||
@@ -2345,7 +2388,6 @@ case "$host" in
|
|||||||
# Also set the symbol file to .def, so src/Makefile generates libvirt.def
|
# Also set the symbol file to .def, so src/Makefile generates libvirt.def
|
||||||
# from libvirt.syms and passes libvirt.def instead of libvirt.syms to the linker
|
# from libvirt.syms and passes libvirt.def instead of libvirt.syms to the linker
|
||||||
LIBVIRT_SYMBOL_FILE=libvirt.def
|
LIBVIRT_SYMBOL_FILE=libvirt.def
|
||||||
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.def
|
|
||||||
LIBVIRT_LXC_SYMBOL_FILE=libvirt_lxc.def
|
LIBVIRT_LXC_SYMBOL_FILE=libvirt_lxc.def
|
||||||
LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def
|
LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def
|
||||||
# mingw's ld has the --version-script parameter, but it requires a .def file
|
# mingw's ld has the --version-script parameter, but it requires a .def file
|
||||||
@@ -2361,7 +2403,6 @@ AC_SUBST([CYGWIN_EXTRA_LIBADD])
|
|||||||
AC_SUBST([MINGW_EXTRA_LDFLAGS])
|
AC_SUBST([MINGW_EXTRA_LDFLAGS])
|
||||||
AC_SUBST([WIN32_EXTRA_CFLAGS])
|
AC_SUBST([WIN32_EXTRA_CFLAGS])
|
||||||
AC_SUBST([LIBVIRT_SYMBOL_FILE])
|
AC_SUBST([LIBVIRT_SYMBOL_FILE])
|
||||||
AC_SUBST([LIBVIRT_ADMIN_SYMBOL_FILE])
|
|
||||||
AC_SUBST([LIBVIRT_LXC_SYMBOL_FILE])
|
AC_SUBST([LIBVIRT_LXC_SYMBOL_FILE])
|
||||||
AC_SUBST([LIBVIRT_QEMU_SYMBOL_FILE])
|
AC_SUBST([LIBVIRT_QEMU_SYMBOL_FILE])
|
||||||
AC_SUBST([VERSION_SCRIPT_FLAGS])
|
AC_SUBST([VERSION_SCRIPT_FLAGS])
|
||||||
@@ -2491,9 +2532,6 @@ AC_ARG_WITH([qemu-group],
|
|||||||
AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user account])
|
AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user account])
|
||||||
AC_DEFINE_UNQUOTED([QEMU_GROUP], ["$QEMU_GROUP"], [QEMU group account])
|
AC_DEFINE_UNQUOTED([QEMU_GROUP], ["$QEMU_GROUP"], [QEMU group account])
|
||||||
|
|
||||||
AC_PATH_PROG([QEMU_BRIDGE_HELPER], [qemu-bridge-helper], [/usr/libexec/qemu-bridge-helper],
|
|
||||||
[/usr/libexec:/usr/lib/qemu:/usr/lib])
|
|
||||||
AC_DEFINE_UNQUOTED([QEMU_BRIDGE_HELPER], ["$QEMU_BRIDGE_HELPER"], [QEMU bridge helper])
|
|
||||||
|
|
||||||
AC_ARG_WITH([macvtap],
|
AC_ARG_WITH([macvtap],
|
||||||
[AS_HELP_STRING([--with-macvtap],
|
[AS_HELP_STRING([--with-macvtap],
|
||||||
@@ -2749,22 +2787,34 @@ AC_CONFIG_FILES([run],
|
|||||||
[chmod +x,-w run])
|
[chmod +x,-w run])
|
||||||
AC_CONFIG_FILES([\
|
AC_CONFIG_FILES([\
|
||||||
Makefile src/Makefile include/Makefile docs/Makefile \
|
Makefile src/Makefile include/Makefile docs/Makefile \
|
||||||
|
docs/schemas/Makefile \
|
||||||
gnulib/lib/Makefile \
|
gnulib/lib/Makefile \
|
||||||
gnulib/tests/Makefile \
|
gnulib/tests/Makefile \
|
||||||
libvirt.pc \
|
libvirt.pc \
|
||||||
libvirt-qemu.pc \
|
libvirt-qemu.pc \
|
||||||
libvirt-lxc.pc \
|
libvirt-lxc.pc \
|
||||||
libvirt-admin.pc \
|
|
||||||
src/libvirt.pc \
|
src/libvirt.pc \
|
||||||
src/libvirt-qemu.pc \
|
src/libvirt-qemu.pc \
|
||||||
src/libvirt-lxc.pc \
|
src/libvirt-lxc.pc \
|
||||||
libvirt.spec mingw-libvirt.spec \
|
libvirt.spec mingw-libvirt.spec \
|
||||||
po/Makefile.in \
|
po/Makefile.in \
|
||||||
include/libvirt/libvirt-common.h \
|
include/libvirt/Makefile include/libvirt/libvirt.h \
|
||||||
daemon/Makefile \
|
daemon/Makefile \
|
||||||
examples/Makefile \
|
tools/Makefile \
|
||||||
tests/Makefile \
|
tests/Makefile \
|
||||||
tools/Makefile])
|
examples/apparmor/Makefile \
|
||||||
|
examples/object-events/Makefile \
|
||||||
|
examples/domsuspend/Makefile \
|
||||||
|
examples/dominfo/Makefile \
|
||||||
|
examples/dommigrate/Makefile \
|
||||||
|
examples/domtop/Makefile \
|
||||||
|
examples/openauth/Makefile \
|
||||||
|
examples/hellolibvirt/Makefile \
|
||||||
|
examples/systemtap/Makefile \
|
||||||
|
examples/xml/nwfilter/Makefile \
|
||||||
|
examples/lxcconvert/Makefile \
|
||||||
|
tools/wireshark/Makefile \
|
||||||
|
tools/wireshark/src/Makefile])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
AC_MSG_NOTICE([])
|
AC_MSG_NOTICE([])
|
||||||
@@ -2785,7 +2835,7 @@ AC_MSG_NOTICE([ LXC: $with_lxc])
|
|||||||
AC_MSG_NOTICE([ PHYP: $with_phyp])
|
AC_MSG_NOTICE([ PHYP: $with_phyp])
|
||||||
AC_MSG_NOTICE([ ESX: $with_esx])
|
AC_MSG_NOTICE([ ESX: $with_esx])
|
||||||
AC_MSG_NOTICE([ Hyper-V: $with_hyperv])
|
AC_MSG_NOTICE([ Hyper-V: $with_hyperv])
|
||||||
LIBVIRT_DRIVER_RESULT_VZ
|
AC_MSG_NOTICE([Parallels: $with_parallels])
|
||||||
LIBVIRT_DRIVER_RESULT_BHYVE
|
LIBVIRT_DRIVER_RESULT_BHYVE
|
||||||
AC_MSG_NOTICE([ Test: $with_test])
|
AC_MSG_NOTICE([ Test: $with_test])
|
||||||
AC_MSG_NOTICE([ Remote: $with_remote])
|
AC_MSG_NOTICE([ Remote: $with_remote])
|
||||||
@@ -2848,7 +2898,6 @@ LIBVIRT_RESULT_SSH2
|
|||||||
LIBVIRT_RESULT_SYSTEMD_DAEMON
|
LIBVIRT_RESULT_SYSTEMD_DAEMON
|
||||||
LIBVIRT_RESULT_UDEV
|
LIBVIRT_RESULT_UDEV
|
||||||
LIBVIRT_RESULT_WIRESHARK
|
LIBVIRT_RESULT_WIRESHARK
|
||||||
LIBVIRT_RESULT_NSS
|
|
||||||
LIBVIRT_RESULT_YAJL
|
LIBVIRT_RESULT_YAJL
|
||||||
AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
|
AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
|
||||||
AC_MSG_NOTICE([ dlopen: $DLOPEN_LIBS])
|
AC_MSG_NOTICE([ dlopen: $DLOPEN_LIBS])
|
||||||
@@ -2932,7 +2981,6 @@ AC_MSG_NOTICE([ Init script: $with_init_script])
|
|||||||
AC_MSG_NOTICE([Char device locks: $with_chrdev_lock_files])
|
AC_MSG_NOTICE([Char device locks: $with_chrdev_lock_files])
|
||||||
AC_MSG_NOTICE([ Default Editor: $DEFAULT_EDITOR])
|
AC_MSG_NOTICE([ Default Editor: $DEFAULT_EDITOR])
|
||||||
AC_MSG_NOTICE([ Loader/NVRAM: $with_loader_nvram])
|
AC_MSG_NOTICE([ Loader/NVRAM: $with_loader_nvram])
|
||||||
AC_MSG_NOTICE([ virt-login-shell: $with_login_shell])
|
|
||||||
AC_MSG_NOTICE([])
|
AC_MSG_NOTICE([])
|
||||||
AC_MSG_NOTICE([Developer Tools])
|
AC_MSG_NOTICE([Developer Tools])
|
||||||
AC_MSG_NOTICE([])
|
AC_MSG_NOTICE([])
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
## Copyright (C) 2005-2015 Red Hat, Inc.
|
## Copyright (C) 2005-2014 Red Hat, Inc.
|
||||||
##
|
##
|
||||||
## This library is free software; you can redistribute it and/or
|
## This library is free software; you can redistribute it and/or
|
||||||
## modify it under the terms of the GNU Lesser General Public
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
@@ -25,7 +25,6 @@ INCLUDES = \
|
|||||||
-I$(top_srcdir)/src/conf \
|
-I$(top_srcdir)/src/conf \
|
||||||
-I$(top_srcdir)/src/rpc \
|
-I$(top_srcdir)/src/rpc \
|
||||||
-I$(top_srcdir)/src/remote \
|
-I$(top_srcdir)/src/remote \
|
||||||
-I$(top_srcdir)/src/admin \
|
|
||||||
-I$(top_srcdir)/src/access \
|
-I$(top_srcdir)/src/access \
|
||||||
$(GETTEXT_CPPFLAGS)
|
$(GETTEXT_CPPFLAGS)
|
||||||
|
|
||||||
@@ -35,7 +34,6 @@ DAEMON_GENERATED = \
|
|||||||
remote_dispatch.h \
|
remote_dispatch.h \
|
||||||
lxc_dispatch.h \
|
lxc_dispatch.h \
|
||||||
qemu_dispatch.h \
|
qemu_dispatch.h \
|
||||||
admin_dispatch.h \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
DAEMON_SOURCES = \
|
DAEMON_SOURCES = \
|
||||||
@@ -51,21 +49,19 @@ EXTRA_DIST = \
|
|||||||
remote_dispatch.h \
|
remote_dispatch.h \
|
||||||
lxc_dispatch.h \
|
lxc_dispatch.h \
|
||||||
qemu_dispatch.h \
|
qemu_dispatch.h \
|
||||||
admin_dispatch.h \
|
|
||||||
libvirtd.conf \
|
libvirtd.conf \
|
||||||
libvirtd.init.in \
|
libvirtd.init.in \
|
||||||
libvirtd.upstart \
|
libvirtd.upstart \
|
||||||
libvirtd.policy.in \
|
libvirtd.policy.in \
|
||||||
libvirt.rules \
|
|
||||||
libvirtd.sasl \
|
libvirtd.sasl \
|
||||||
libvirtd.service.in \
|
libvirtd.service.in \
|
||||||
|
libvirtd.socket.in \
|
||||||
libvirtd.sysconf \
|
libvirtd.sysconf \
|
||||||
libvirtd.sysctl \
|
libvirtd.sysctl \
|
||||||
libvirtd.aug \
|
libvirtd.aug \
|
||||||
libvirtd.logrotate.in \
|
libvirtd.logrotate.in \
|
||||||
libvirtd.qemu.logrotate.in \
|
libvirtd.qemu.logrotate.in \
|
||||||
libvirtd.lxc.logrotate.in \
|
libvirtd.lxc.logrotate.in \
|
||||||
libvirtd.libxl.logrotate.in \
|
|
||||||
libvirtd.uml.logrotate.in \
|
libvirtd.uml.logrotate.in \
|
||||||
test_libvirtd.aug.in \
|
test_libvirtd.aug.in \
|
||||||
THREADS.txt \
|
THREADS.txt \
|
||||||
@@ -80,7 +76,6 @@ BUILT_SOURCES =
|
|||||||
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
||||||
LXC_PROTOCOL = $(top_srcdir)/src/remote/lxc_protocol.x
|
LXC_PROTOCOL = $(top_srcdir)/src/remote/lxc_protocol.x
|
||||||
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
|
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
|
||||||
ADMIN_PROTOCOL = $(top_srcdir)/src/admin/admin_protocol.x
|
|
||||||
|
|
||||||
remote_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
remote_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
$(REMOTE_PROTOCOL)
|
$(REMOTE_PROTOCOL)
|
||||||
@@ -100,12 +95,6 @@ qemu_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
|||||||
--mode=server qemu QEMU $(QEMU_PROTOCOL) \
|
--mode=server qemu QEMU $(QEMU_PROTOCOL) \
|
||||||
> $(srcdir)/qemu_dispatch.h
|
> $(srcdir)/qemu_dispatch.h
|
||||||
|
|
||||||
admin_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
|
||||||
$(ADMIN_PROTOCOL)
|
|
||||||
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
|
||||||
--mode=server admin ADMIN $(ADMIN_PROTOCOL) \
|
|
||||||
> $(srcdir)/admin_dispatch.h
|
|
||||||
|
|
||||||
if WITH_LIBVIRTD
|
if WITH_LIBVIRTD
|
||||||
|
|
||||||
# Build a convenience library, for reuse in tests/libvirtdconftest
|
# Build a convenience library, for reuse in tests/libvirtdconftest
|
||||||
@@ -125,27 +114,6 @@ libvirtd_conf_la_LDFLAGS = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
libvirtd_conf_la_LIBADD = $(LIBXML_LIBS)
|
libvirtd_conf_la_LIBADD = $(LIBXML_LIBS)
|
||||||
|
|
||||||
noinst_LTLIBRARIES += libvirtd_admin.la
|
|
||||||
libvirtd_admin_la_SOURCES = \
|
|
||||||
admin.c admin.h admin_server.c admin_server.h
|
|
||||||
|
|
||||||
libvirtd_admin_la_CFLAGS = \
|
|
||||||
$(AM_CFLAGS) \
|
|
||||||
$(XDR_CFLAGS) \
|
|
||||||
$(PIE_CFLAGS) \
|
|
||||||
$(WARN_CFLAGS) \
|
|
||||||
$(LIBXML_CFLAGS) \
|
|
||||||
$(COVERAGE_CFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
libvirtd_admin_la_LDFLAGS = \
|
|
||||||
$(PIE_LDFLAGS) \
|
|
||||||
$(RELRO_LDFLAGS) \
|
|
||||||
$(COVERAGE_LDFLAGS) \
|
|
||||||
$(NO_INDIRECT_LDFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
libvirtd_admin_la_LIBADD = \
|
|
||||||
../src/libvirt-admin.la
|
|
||||||
|
|
||||||
man8_MANS = libvirtd.8
|
man8_MANS = libvirtd.8
|
||||||
|
|
||||||
sbin_PROGRAMS = libvirtd
|
sbin_PROGRAMS = libvirtd
|
||||||
@@ -198,7 +166,6 @@ endif WITH_DTRACE_PROBES
|
|||||||
|
|
||||||
libvirtd_LDADD += \
|
libvirtd_LDADD += \
|
||||||
libvirtd_conf.la \
|
libvirtd_conf.la \
|
||||||
libvirtd_admin.la \
|
|
||||||
../src/libvirt-lxc.la \
|
../src/libvirt-lxc.la \
|
||||||
../src/libvirt-qemu.la \
|
../src/libvirt-qemu.la \
|
||||||
../src/libvirt_driver_remote.la \
|
../src/libvirt_driver_remote.la \
|
||||||
@@ -266,8 +233,6 @@ policyauth = auth_admin_keep_session
|
|||||||
else ! WITH_POLKIT0
|
else ! WITH_POLKIT0
|
||||||
policydir = $(datadir)/polkit-1/actions
|
policydir = $(datadir)/polkit-1/actions
|
||||||
policyauth = auth_admin_keep
|
policyauth = auth_admin_keep
|
||||||
rulesdir = $(datadir)/polkit-1/rules.d
|
|
||||||
rulesfile = libvirt.rules
|
|
||||||
endif ! WITH_POLKIT0
|
endif ! WITH_POLKIT0
|
||||||
endif WITH_POLKIT
|
endif WITH_POLKIT
|
||||||
|
|
||||||
@@ -298,19 +263,9 @@ if WITH_POLKIT
|
|||||||
install-data-polkit::
|
install-data-polkit::
|
||||||
$(MKDIR_P) $(DESTDIR)$(policydir)
|
$(MKDIR_P) $(DESTDIR)$(policydir)
|
||||||
$(INSTALL_DATA) libvirtd.policy $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
$(INSTALL_DATA) libvirtd.policy $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
if ! WITH_POLKIT0
|
|
||||||
$(MKDIR_P) $(DESTDIR)$(rulesdir)
|
|
||||||
$(INSTALL_DATA) $(srcdir)/$(rulesfile) $(DESTDIR)$(rulesdir)/50-libvirt.rules
|
|
||||||
endif ! WITH_POLKIT0
|
|
||||||
|
|
||||||
uninstall-data-polkit::
|
uninstall-data-polkit::
|
||||||
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
rmdir $(DESTDIR)$(policydir) || :
|
rmdir $(DESTDIR)$(policydir) || :
|
||||||
if ! WITH_POLKIT0
|
|
||||||
rm -f $(DESTDIR)$(rulesdir)/50-libvirt.rules
|
|
||||||
rmdir $(DESTDIR)$(rulesdir) || :
|
|
||||||
endif ! WITH_POLKIT0
|
|
||||||
|
|
||||||
else ! WITH_POLKIT
|
else ! WITH_POLKIT
|
||||||
install-data-polkit::
|
install-data-polkit::
|
||||||
uninstall-data-polkit::
|
uninstall-data-polkit::
|
||||||
@@ -318,12 +273,9 @@ endif ! WITH_POLKIT
|
|||||||
|
|
||||||
remote.c: $(DAEMON_GENERATED)
|
remote.c: $(DAEMON_GENERATED)
|
||||||
remote.h: $(DAEMON_GENERATED)
|
remote.h: $(DAEMON_GENERATED)
|
||||||
admin.c: $(DAEMON_GENERATED)
|
|
||||||
admin.h: $(DAEMON_GENERATED)
|
|
||||||
|
|
||||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||||
libvirtd.libxl.logrotate libvirtd.uml.logrotate \
|
libvirtd.uml.logrotate libvirtd.logrotate
|
||||||
libvirtd.logrotate
|
|
||||||
|
|
||||||
BUILT_SOURCES += $(LOGROTATE_CONFS)
|
BUILT_SOURCES += $(LOGROTATE_CONFS)
|
||||||
|
|
||||||
@@ -345,12 +297,6 @@ libvirtd.lxc.logrotate: libvirtd.lxc.logrotate.in
|
|||||||
< $< > $@-t && \
|
< $< > $@-t && \
|
||||||
mv $@-t $@
|
mv $@-t $@
|
||||||
|
|
||||||
libvirtd.libxl.logrotate: libvirtd.libxl.logrotate.in
|
|
||||||
$(AM_V_GEN)sed \
|
|
||||||
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
|
||||||
< $< > $@-t && \
|
|
||||||
mv $@-t $@
|
|
||||||
|
|
||||||
libvirtd.uml.logrotate: libvirtd.uml.logrotate.in
|
libvirtd.uml.logrotate: libvirtd.uml.logrotate.in
|
||||||
$(AM_V_GEN)sed \
|
$(AM_V_GEN)sed \
|
||||||
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
@@ -368,8 +314,6 @@ install-logrotate: $(LOGROTATE_CONFS)
|
|||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu
|
||||||
$(INSTALL_DATA) libvirtd.lxc.logrotate \
|
$(INSTALL_DATA) libvirtd.lxc.logrotate \
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
|
||||||
$(INSTALL_DATA) libvirtd.libxl.logrotate \
|
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl
|
|
||||||
$(INSTALL_DATA) libvirtd.uml.logrotate \
|
$(INSTALL_DATA) libvirtd.uml.logrotate \
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||||
|
|
||||||
@@ -377,7 +321,6 @@ uninstall-logrotate:
|
|||||||
rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd \
|
rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd \
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu \
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu \
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc \
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc \
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl \
|
|
||||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||||
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/qemu || :
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/qemu || :
|
||||||
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/lxc || :
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/lxc || :
|
||||||
@@ -445,15 +388,18 @@ endif ! LIBVIRT_INIT_SCRIPT_UPSTART
|
|||||||
if LIBVIRT_INIT_SCRIPT_SYSTEMD
|
if LIBVIRT_INIT_SCRIPT_SYSTEMD
|
||||||
|
|
||||||
SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
|
SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
|
||||||
BUILT_SOURCES += libvirtd.service
|
BUILT_SOURCES += libvirtd.service libvirtd.socket
|
||||||
|
|
||||||
install-init-systemd: install-sysconfig libvirtd.service
|
install-init-systemd: install-sysconfig libvirtd.service libvirtd.socket
|
||||||
$(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
|
$(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
|
||||||
$(INSTALL_DATA) libvirtd.service \
|
$(INSTALL_DATA) libvirtd.service \
|
||||||
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
||||||
|
$(INSTALL_DATA) libvirtd.socket \
|
||||||
|
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.socket
|
||||||
|
|
||||||
uninstall-init-systemd: uninstall-sysconfig
|
uninstall-init-systemd: uninstall-sysconfig
|
||||||
rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
||||||
|
rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.socket
|
||||||
rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || :
|
rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || :
|
||||||
else ! LIBVIRT_INIT_SCRIPT_SYSTEMD
|
else ! LIBVIRT_INIT_SCRIPT_SYSTEMD
|
||||||
install-init-systemd:
|
install-init-systemd:
|
||||||
@@ -477,6 +423,12 @@ libvirtd.service: libvirtd.service.in $(top_builddir)/config.status
|
|||||||
< $< > $@-t && \
|
< $< > $@-t && \
|
||||||
mv $@-t $@
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.socket: libvirtd.socket.in $(top_builddir)/config.status
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]runstatedir[@]|$(runstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
|
||||||
check-local: check-augeas
|
check-local: check-augeas
|
||||||
|
|
||||||
|
136
daemon/admin.c
136
daemon/admin.c
@@ -1,136 +0,0 @@
|
|||||||
/*
|
|
||||||
* admin.c: handlers for admin RPC method calls
|
|
||||||
*
|
|
||||||
* Copyright (C) 2014-2016 Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* Author: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include "internal.h"
|
|
||||||
#include "libvirtd.h"
|
|
||||||
#include "libvirt_internal.h"
|
|
||||||
|
|
||||||
#include "admin_protocol.h"
|
|
||||||
#include "admin.h"
|
|
||||||
#include "admin_server.h"
|
|
||||||
#include "datatypes.h"
|
|
||||||
#include "viralloc.h"
|
|
||||||
#include "virerror.h"
|
|
||||||
#include "virlog.h"
|
|
||||||
#include "virnetdaemon.h"
|
|
||||||
#include "virnetserver.h"
|
|
||||||
#include "virstring.h"
|
|
||||||
#include "virthreadjob.h"
|
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_ADMIN
|
|
||||||
|
|
||||||
VIR_LOG_INIT("daemon.admin");
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
remoteAdmClientFreeFunc(void *data)
|
|
||||||
{
|
|
||||||
struct daemonAdmClientPrivate *priv = data;
|
|
||||||
|
|
||||||
virMutexDestroy(&priv->lock);
|
|
||||||
virObjectUnref(priv->dmn);
|
|
||||||
VIR_FREE(priv);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
|
||||||
remoteAdmClientInitHook(virNetServerClientPtr client ATTRIBUTE_UNUSED,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
struct daemonAdmClientPrivate *priv;
|
|
||||||
|
|
||||||
if (VIR_ALLOC(priv) < 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (virMutexInit(&priv->lock) < 0) {
|
|
||||||
VIR_FREE(priv);
|
|
||||||
virReportSystemError(errno, "%s", _("unable to init mutex"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We don't necessarily need to ref this object right now as there
|
|
||||||
* must be one ref being held throughout the life of the daemon,
|
|
||||||
* but let's just be safe for future.
|
|
||||||
*/
|
|
||||||
priv->dmn = virObjectRef(opaque);
|
|
||||||
|
|
||||||
return priv;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Helpers */
|
|
||||||
|
|
||||||
static void
|
|
||||||
make_nonnull_server(admin_nonnull_server *srv_dst,
|
|
||||||
virNetServerPtr srv_src)
|
|
||||||
{
|
|
||||||
ignore_value(VIR_STRDUP_QUIET(srv_dst->name, virNetServerGetName(srv_src)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Functions */
|
|
||||||
static int
|
|
||||||
adminDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
|
|
||||||
virNetServerClientPtr client,
|
|
||||||
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
|
||||||
virNetMessageErrorPtr rerr,
|
|
||||||
struct admin_connect_open_args *args)
|
|
||||||
{
|
|
||||||
unsigned int flags;
|
|
||||||
struct daemonAdmClientPrivate *priv =
|
|
||||||
virNetServerClientGetPrivateData(client);
|
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
VIR_DEBUG("priv=%p dmn=%p", priv, priv->dmn);
|
|
||||||
virMutexLock(&priv->lock);
|
|
||||||
|
|
||||||
flags = args->flags;
|
|
||||||
virCheckFlagsGoto(0, cleanup);
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
cleanup:
|
|
||||||
if (ret < 0)
|
|
||||||
virNetMessageSaveError(rerr);
|
|
||||||
virMutexUnlock(&priv->lock);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
adminDispatchConnectClose(virNetServerPtr server ATTRIBUTE_UNUSED,
|
|
||||||
virNetServerClientPtr client,
|
|
||||||
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
|
||||||
virNetMessageErrorPtr rerr ATTRIBUTE_UNUSED)
|
|
||||||
{
|
|
||||||
virNetServerClientDelayedClose(client);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
adminConnectGetLibVersion(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
|
|
||||||
unsigned long long *libVer)
|
|
||||||
{
|
|
||||||
if (libVer)
|
|
||||||
*libVer = LIBVIR_VERSION_NUMBER;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "admin_dispatch.h"
|
|
@@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* admin.h: handlers for admin RPC method calls
|
|
||||||
*
|
|
||||||
* Copyright (C) 2014-2016 Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* Author: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __LIBVIRTD_ADMIN_H__
|
|
||||||
# define __LIBVIRTD_ADMIN_H__
|
|
||||||
|
|
||||||
# include "rpc/virnetserverprogram.h"
|
|
||||||
# include "rpc/virnetserverclient.h"
|
|
||||||
|
|
||||||
|
|
||||||
extern virNetServerProgramProc adminProcs[];
|
|
||||||
extern size_t adminNProcs;
|
|
||||||
|
|
||||||
void remoteAdmClientFreeFunc(void *data);
|
|
||||||
void *remoteAdmClientInitHook(virNetServerClientPtr client, void *opaque);
|
|
||||||
|
|
||||||
#endif /* __ADMIN_REMOTE_H__ */
|
|
@@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* admin_server.c: admin methods to manage daemons and clients
|
|
||||||
*
|
|
||||||
* Copyright (C) 2016 Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* Authors: Erik Skultety <eskultet@redhat.com>
|
|
||||||
* Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include "admin_server.h"
|
|
||||||
#include "datatypes.h"
|
|
||||||
#include "viralloc.h"
|
|
||||||
#include "virerror.h"
|
|
||||||
#include "virlog.h"
|
|
||||||
#include "virnetdaemon.h"
|
|
||||||
#include "virnetserver.h"
|
|
||||||
#include "virstring.h"
|
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_ADMIN
|
|
||||||
|
|
||||||
VIR_LOG_INIT("daemon.admin_server");
|
|
||||||
|
|
||||||
int
|
|
||||||
adminConnectListServers(virNetDaemonPtr dmn,
|
|
||||||
virNetServerPtr **servers,
|
|
||||||
unsigned int flags)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
virNetServerPtr *srvs = NULL;
|
|
||||||
|
|
||||||
virCheckFlags(0, -1);
|
|
||||||
|
|
||||||
if ((ret = virNetDaemonGetServers(dmn, &srvs)) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (servers) {
|
|
||||||
*servers = srvs;
|
|
||||||
srvs = NULL;
|
|
||||||
}
|
|
||||||
cleanup:
|
|
||||||
if (ret > 0)
|
|
||||||
virObjectListFreeCount(srvs, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
virNetServerPtr
|
|
||||||
adminConnectLookupServer(virNetDaemonPtr dmn,
|
|
||||||
const char *name,
|
|
||||||
unsigned int flags)
|
|
||||||
{
|
|
||||||
virCheckFlags(flags, NULL);
|
|
||||||
|
|
||||||
return virNetDaemonGetServer(dmn, name);
|
|
||||||
}
|
|
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* admin_server.h: admin methods to manage daemons and clients
|
|
||||||
*
|
|
||||||
* Copyright (C) 2016 Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* Authors: Erik Skultety <eskultet@redhat.com>
|
|
||||||
* Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __LIBVIRTD_ADMIN_SERVER_H__
|
|
||||||
# define __LIBVIRTD_ADMIN_SERVER_H__
|
|
||||||
|
|
||||||
# include "rpc/virnetdaemon.h"
|
|
||||||
# include "rpc/virnetserver.h"
|
|
||||||
|
|
||||||
int adminConnectListServers(virNetDaemonPtr dmn,
|
|
||||||
virNetServerPtr **servers,
|
|
||||||
unsigned int flags);
|
|
||||||
|
|
||||||
virNetServerPtr adminConnectLookupServer(virNetDaemonPtr dmn,
|
|
||||||
const char *name,
|
|
||||||
unsigned int flags);
|
|
||||||
|
|
||||||
#endif /* __LIBVIRTD_ADMIN_SERVER_H__ */
|
|
@@ -1,9 +0,0 @@
|
|||||||
// Allow any user in the 'libvirt' group to connect to system libvirtd
|
|
||||||
// without entering a password.
|
|
||||||
|
|
||||||
polkit.addRule(function(action, subject) {
|
|
||||||
if (action.id == "org.libvirt.unix.manage" &&
|
|
||||||
subject.isInGroup("libvirt")) {
|
|
||||||
return polkit.Result.YES;
|
|
||||||
}
|
|
||||||
});
|
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* libvirtd-config.c: daemon start of day, guest process & i/o management
|
* libvirtd-config.c: daemon start of day, guest process & i/o management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2012, 2014, 2015 Red Hat, Inc.
|
* Copyright (C) 2006-2012, 2014 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@@ -264,8 +264,7 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
|
|||||||
|
|
||||||
if (VIR_STRDUP(data->unix_sock_rw_perms,
|
if (VIR_STRDUP(data->unix_sock_rw_perms,
|
||||||
data->auth_unix_rw == REMOTE_AUTH_POLKIT ? "0777" : "0700") < 0 ||
|
data->auth_unix_rw == REMOTE_AUTH_POLKIT ? "0777" : "0700") < 0 ||
|
||||||
VIR_STRDUP(data->unix_sock_ro_perms, "0777") < 0 ||
|
VIR_STRDUP(data->unix_sock_ro_perms, "0777") < 0)
|
||||||
VIR_STRDUP(data->unix_sock_admin_perms, "0700") < 0)
|
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
#if WITH_SASL
|
#if WITH_SASL
|
||||||
@@ -280,7 +279,6 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
|
|||||||
data->min_workers = 5;
|
data->min_workers = 5;
|
||||||
data->max_workers = 20;
|
data->max_workers = 20;
|
||||||
data->max_clients = 5000;
|
data->max_clients = 5000;
|
||||||
data->max_queued_clients = 1000;
|
|
||||||
data->max_anonymous_clients = 20;
|
data->max_anonymous_clients = 20;
|
||||||
|
|
||||||
data->prio_workers = 5;
|
data->prio_workers = 5;
|
||||||
@@ -293,15 +291,7 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
|
|||||||
|
|
||||||
data->keepalive_interval = 5;
|
data->keepalive_interval = 5;
|
||||||
data->keepalive_count = 5;
|
data->keepalive_count = 5;
|
||||||
|
data->keepalive_required = 0;
|
||||||
data->admin_min_workers = 5;
|
|
||||||
data->admin_max_workers = 20;
|
|
||||||
data->admin_max_clients = 5000;
|
|
||||||
data->admin_max_queued_clients = 20;
|
|
||||||
data->admin_max_client_requests = 5;
|
|
||||||
|
|
||||||
data->admin_keepalive_interval = 5;
|
|
||||||
data->admin_keepalive_count = 5;
|
|
||||||
|
|
||||||
localhost = virGetHostname();
|
localhost = virGetHostname();
|
||||||
if (localhost == NULL) {
|
if (localhost == NULL) {
|
||||||
@@ -347,7 +337,6 @@ daemonConfigFree(struct daemonConfig *data)
|
|||||||
}
|
}
|
||||||
VIR_FREE(data->access_drivers);
|
VIR_FREE(data->access_drivers);
|
||||||
|
|
||||||
VIR_FREE(data->unix_sock_admin_perms);
|
|
||||||
VIR_FREE(data->unix_sock_ro_perms);
|
VIR_FREE(data->unix_sock_ro_perms);
|
||||||
VIR_FREE(data->unix_sock_rw_perms);
|
VIR_FREE(data->unix_sock_rw_perms);
|
||||||
VIR_FREE(data->unix_sock_group);
|
VIR_FREE(data->unix_sock_group);
|
||||||
@@ -415,7 +404,6 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
GET_CONF_STR(conf, filename, unix_sock_group);
|
GET_CONF_STR(conf, filename, unix_sock_group);
|
||||||
GET_CONF_STR(conf, filename, unix_sock_admin_perms);
|
|
||||||
GET_CONF_STR(conf, filename, unix_sock_ro_perms);
|
GET_CONF_STR(conf, filename, unix_sock_ro_perms);
|
||||||
GET_CONF_STR(conf, filename, unix_sock_rw_perms);
|
GET_CONF_STR(conf, filename, unix_sock_rw_perms);
|
||||||
|
|
||||||
@@ -453,12 +441,6 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
|||||||
GET_CONF_INT(conf, filename, max_requests);
|
GET_CONF_INT(conf, filename, max_requests);
|
||||||
GET_CONF_UINT(conf, filename, max_client_requests);
|
GET_CONF_UINT(conf, filename, max_client_requests);
|
||||||
|
|
||||||
GET_CONF_UINT(conf, filename, admin_min_workers);
|
|
||||||
GET_CONF_UINT(conf, filename, admin_max_workers);
|
|
||||||
GET_CONF_UINT(conf, filename, admin_max_clients);
|
|
||||||
GET_CONF_UINT(conf, filename, admin_max_queued_clients);
|
|
||||||
GET_CONF_UINT(conf, filename, admin_max_client_requests);
|
|
||||||
|
|
||||||
GET_CONF_UINT(conf, filename, audit_level);
|
GET_CONF_UINT(conf, filename, audit_level);
|
||||||
GET_CONF_UINT(conf, filename, audit_logging);
|
GET_CONF_UINT(conf, filename, audit_logging);
|
||||||
|
|
||||||
@@ -470,9 +452,7 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
|||||||
|
|
||||||
GET_CONF_INT(conf, filename, keepalive_interval);
|
GET_CONF_INT(conf, filename, keepalive_interval);
|
||||||
GET_CONF_UINT(conf, filename, keepalive_count);
|
GET_CONF_UINT(conf, filename, keepalive_count);
|
||||||
|
GET_CONF_UINT(conf, filename, keepalive_required);
|
||||||
GET_CONF_INT(conf, filename, admin_keepalive_interval);
|
|
||||||
GET_CONF_UINT(conf, filename, admin_keepalive_count);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* libvirtd-config.h: daemon start of day, guest process & i/o management
|
* libvirtd-config.h: daemon start of day, guest process & i/o management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2012, 2015 Red Hat, Inc.
|
* Copyright (C) 2006-2012 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@@ -35,7 +35,6 @@ struct daemonConfig {
|
|||||||
char *tls_port;
|
char *tls_port;
|
||||||
char *tcp_port;
|
char *tcp_port;
|
||||||
|
|
||||||
char *unix_sock_admin_perms;
|
|
||||||
char *unix_sock_ro_perms;
|
char *unix_sock_ro_perms;
|
||||||
char *unix_sock_rw_perms;
|
char *unix_sock_rw_perms;
|
||||||
char *unix_sock_group;
|
char *unix_sock_group;
|
||||||
@@ -81,15 +80,7 @@ struct daemonConfig {
|
|||||||
|
|
||||||
int keepalive_interval;
|
int keepalive_interval;
|
||||||
unsigned int keepalive_count;
|
unsigned int keepalive_count;
|
||||||
|
int keepalive_required;
|
||||||
int admin_min_workers;
|
|
||||||
int admin_max_workers;
|
|
||||||
int admin_max_clients;
|
|
||||||
int admin_max_queued_clients;
|
|
||||||
int admin_max_client_requests;
|
|
||||||
|
|
||||||
int admin_keepalive_interval;
|
|
||||||
unsigned int admin_keepalive_count;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -35,7 +35,6 @@ module Libvirtd =
|
|||||||
let sock_acl_entry = str_entry "unix_sock_group"
|
let sock_acl_entry = str_entry "unix_sock_group"
|
||||||
| str_entry "unix_sock_ro_perms"
|
| str_entry "unix_sock_ro_perms"
|
||||||
| str_entry "unix_sock_rw_perms"
|
| str_entry "unix_sock_rw_perms"
|
||||||
| str_entry "unix_sock_admin_perms"
|
|
||||||
| str_entry "unix_sock_dir"
|
| str_entry "unix_sock_dir"
|
||||||
|
|
||||||
let authentication_entry = str_entry "auth_unix_ro"
|
let authentication_entry = str_entry "auth_unix_ro"
|
||||||
@@ -63,12 +62,6 @@ module Libvirtd =
|
|||||||
| int_entry "max_client_requests"
|
| int_entry "max_client_requests"
|
||||||
| int_entry "prio_workers"
|
| int_entry "prio_workers"
|
||||||
|
|
||||||
let admin_processing_entry = int_entry "admin_min_workers"
|
|
||||||
| int_entry "admin_max_workers"
|
|
||||||
| int_entry "admin_max_clients"
|
|
||||||
| int_entry "admin_max_queued_clients"
|
|
||||||
| int_entry "admin_max_client_requests"
|
|
||||||
|
|
||||||
let logging_entry = int_entry "log_level"
|
let logging_entry = int_entry "log_level"
|
||||||
| str_entry "log_filters"
|
| str_entry "log_filters"
|
||||||
| str_entry "log_outputs"
|
| str_entry "log_outputs"
|
||||||
@@ -81,10 +74,6 @@ module Libvirtd =
|
|||||||
| int_entry "keepalive_count"
|
| int_entry "keepalive_count"
|
||||||
| bool_entry "keepalive_required"
|
| bool_entry "keepalive_required"
|
||||||
|
|
||||||
let admin_keepalive_entry = int_entry "admin_keepalive_interval"
|
|
||||||
| int_entry "admin_keepalive_count"
|
|
||||||
| bool_entry "admin_keepalive_required"
|
|
||||||
|
|
||||||
let misc_entry = str_entry "host_uuid"
|
let misc_entry = str_entry "host_uuid"
|
||||||
|
|
||||||
(* Each enty in the config is one of the following three ... *)
|
(* Each enty in the config is one of the following three ... *)
|
||||||
@@ -94,11 +83,9 @@ module Libvirtd =
|
|||||||
| certificate_entry
|
| certificate_entry
|
||||||
| authorization_entry
|
| authorization_entry
|
||||||
| processing_entry
|
| processing_entry
|
||||||
| admin_processing_entry
|
|
||||||
| logging_entry
|
| logging_entry
|
||||||
| auditing_entry
|
| auditing_entry
|
||||||
| keepalive_entry
|
| keepalive_entry
|
||||||
| admin_keepalive_entry
|
|
||||||
| misc_entry
|
| misc_entry
|
||||||
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||||
let empty = [ label "#empty" . eol ]
|
let empty = [ label "#empty" . eol ]
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* libvirtd.c: daemon start of day, guest process & i/o management
|
* libvirtd.c: daemon start of day, guest process & i/o management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2015 Red Hat, Inc.
|
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
#include "libvirt_internal.h"
|
#include "libvirt_internal.h"
|
||||||
#include "virerror.h"
|
#include "virerror.h"
|
||||||
@@ -43,13 +44,12 @@
|
|||||||
#include "libvirtd.h"
|
#include "libvirtd.h"
|
||||||
#include "libvirtd-config.h"
|
#include "libvirtd-config.h"
|
||||||
|
|
||||||
#include "admin.h"
|
|
||||||
#include "viruuid.h"
|
#include "viruuid.h"
|
||||||
#include "remote_driver.h"
|
#include "remote_driver.h"
|
||||||
#include "viralloc.h"
|
#include "viralloc.h"
|
||||||
#include "virconf.h"
|
#include "virconf.h"
|
||||||
#include "virnetlink.h"
|
#include "virnetlink.h"
|
||||||
#include "virnetdaemon.h"
|
#include "virnetserver.h"
|
||||||
#include "remote.h"
|
#include "remote.h"
|
||||||
#include "virhook.h"
|
#include "virhook.h"
|
||||||
#include "viraudit.h"
|
#include "viraudit.h"
|
||||||
@@ -57,7 +57,6 @@
|
|||||||
#include "locking/lock_manager.h"
|
#include "locking/lock_manager.h"
|
||||||
#include "viraccessmanager.h"
|
#include "viraccessmanager.h"
|
||||||
#include "virutil.h"
|
#include "virutil.h"
|
||||||
#include "virgettext.h"
|
|
||||||
|
|
||||||
#ifdef WITH_DRIVER_MODULES
|
#ifdef WITH_DRIVER_MODULES
|
||||||
# include "driver.h"
|
# include "driver.h"
|
||||||
@@ -113,7 +112,6 @@ VIR_LOG_INIT("daemon.libvirtd");
|
|||||||
virNetSASLContextPtr saslCtxt = NULL;
|
virNetSASLContextPtr saslCtxt = NULL;
|
||||||
#endif
|
#endif
|
||||||
virNetServerProgramPtr remoteProgram = NULL;
|
virNetServerProgramPtr remoteProgram = NULL;
|
||||||
virNetServerProgramPtr adminProgram = NULL;
|
|
||||||
virNetServerProgramPtr qemuProgram = NULL;
|
virNetServerProgramPtr qemuProgram = NULL;
|
||||||
virNetServerProgramPtr lxcProgram = NULL;
|
virNetServerProgramPtr lxcProgram = NULL;
|
||||||
|
|
||||||
@@ -255,24 +253,18 @@ static int
|
|||||||
daemonUnixSocketPaths(struct daemonConfig *config,
|
daemonUnixSocketPaths(struct daemonConfig *config,
|
||||||
bool privileged,
|
bool privileged,
|
||||||
char **sockfile,
|
char **sockfile,
|
||||||
char **rosockfile,
|
char **rosockfile)
|
||||||
char **admsockfile)
|
|
||||||
{
|
{
|
||||||
if (config->unix_sock_dir) {
|
if (config->unix_sock_dir) {
|
||||||
if (virAsprintf(sockfile, "%s/libvirt-sock", config->unix_sock_dir) < 0)
|
if (virAsprintf(sockfile, "%s/libvirt-sock", config->unix_sock_dir) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
if (privileged &&
|
||||||
if (privileged) {
|
virAsprintf(rosockfile, "%s/libvirt-sock-ro", config->unix_sock_dir) < 0)
|
||||||
if (virAsprintf(rosockfile, "%s/libvirt-sock-ro", config->unix_sock_dir) < 0)
|
goto error;
|
||||||
goto error;
|
|
||||||
if (virAsprintf(admsockfile, "%s/libvirt-admin-sock", config->unix_sock_dir) < 0)
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (privileged) {
|
if (privileged) {
|
||||||
if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock") < 0 ||
|
if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock") < 0 ||
|
||||||
VIR_STRDUP(*rosockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro") < 0 ||
|
VIR_STRDUP(*rosockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro") < 0)
|
||||||
VIR_STRDUP(*admsockfile, LOCALSTATEDIR "/run/libvirt/libvirt-admin-sock") < 0)
|
|
||||||
goto error;
|
goto error;
|
||||||
} else {
|
} else {
|
||||||
char *rundir = NULL;
|
char *rundir = NULL;
|
||||||
@@ -288,8 +280,7 @@ daemonUnixSocketPaths(struct daemonConfig *config,
|
|||||||
}
|
}
|
||||||
umask(old_umask);
|
umask(old_umask);
|
||||||
|
|
||||||
if (virAsprintf(sockfile, "%s/libvirt-sock", rundir) < 0 ||
|
if (virAsprintf(sockfile, "%s/libvirt-sock", rundir) < 0) {
|
||||||
virAsprintf(admsockfile, "%s/libvirt-admin-sock", rundir) < 0) {
|
|
||||||
VIR_FREE(rundir);
|
VIR_FREE(rundir);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -329,7 +320,6 @@ static int daemonErrorLogFilter(virErrorPtr err, int priority)
|
|||||||
case VIR_ERR_NO_SECRET:
|
case VIR_ERR_NO_SECRET:
|
||||||
case VIR_ERR_NO_DOMAIN_SNAPSHOT:
|
case VIR_ERR_NO_DOMAIN_SNAPSHOT:
|
||||||
case VIR_ERR_OPERATION_INVALID:
|
case VIR_ERR_OPERATION_INVALID:
|
||||||
case VIR_ERR_NO_DOMAIN_METADATA:
|
|
||||||
return VIR_LOG_DEBUG;
|
return VIR_LOG_DEBUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,16 +426,13 @@ static void daemonInitialize(void)
|
|||||||
|
|
||||||
static int ATTRIBUTE_NONNULL(3)
|
static int ATTRIBUTE_NONNULL(3)
|
||||||
daemonSetupNetworking(virNetServerPtr srv,
|
daemonSetupNetworking(virNetServerPtr srv,
|
||||||
virNetServerPtr srvAdm,
|
|
||||||
struct daemonConfig *config,
|
struct daemonConfig *config,
|
||||||
const char *sock_path,
|
const char *sock_path,
|
||||||
const char *sock_path_ro,
|
const char *sock_path_ro,
|
||||||
const char *sock_path_adm,
|
|
||||||
bool ipsock,
|
bool ipsock,
|
||||||
bool privileged)
|
bool privileged)
|
||||||
{
|
{
|
||||||
virNetServerServicePtr svc = NULL;
|
virNetServerServicePtr svc = NULL;
|
||||||
virNetServerServicePtr svcAdm = NULL;
|
|
||||||
virNetServerServicePtr svcRO = NULL;
|
virNetServerServicePtr svcRO = NULL;
|
||||||
virNetServerServicePtr svcTCP = NULL;
|
virNetServerServicePtr svcTCP = NULL;
|
||||||
#if WITH_GNUTLS
|
#if WITH_GNUTLS
|
||||||
@@ -454,35 +441,28 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
gid_t unix_sock_gid = 0;
|
gid_t unix_sock_gid = 0;
|
||||||
int unix_sock_ro_mask = 0;
|
int unix_sock_ro_mask = 0;
|
||||||
int unix_sock_rw_mask = 0;
|
int unix_sock_rw_mask = 0;
|
||||||
int unix_sock_adm_mask = 0;
|
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
unsigned int cur_fd = STDERR_FILENO + 1;
|
unsigned int cur_fd = STDERR_FILENO + 1;
|
||||||
unsigned int nfds = virGetListenFDs();
|
unsigned int nfds = virGetListenFDs();
|
||||||
|
|
||||||
if (config->unix_sock_group) {
|
if (config->unix_sock_group) {
|
||||||
if (virGetGroupID(config->unix_sock_group, &unix_sock_gid) < 0)
|
if (virGetGroupID(config->unix_sock_group, &unix_sock_gid) < 0)
|
||||||
return ret;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nfds > (sock_path_ro ? 2 : 1)) {
|
if (nfds > (sock_path_ro ? 2 : 1)) {
|
||||||
VIR_ERROR(_("Too many (%u) FDs passed from caller"), nfds);
|
VIR_ERROR(_("Too many (%u) FDs passed from caller"), nfds);
|
||||||
return ret;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virStrToLong_i(config->unix_sock_ro_perms, NULL, 8, &unix_sock_ro_mask) != 0) {
|
if (virStrToLong_i(config->unix_sock_ro_perms, NULL, 8, &unix_sock_ro_mask) != 0) {
|
||||||
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_ro_perms);
|
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_ro_perms);
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
|
||||||
|
|
||||||
if (virStrToLong_i(config->unix_sock_admin_perms, NULL, 8, &unix_sock_adm_mask) != 0) {
|
|
||||||
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_admin_perms);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virStrToLong_i(config->unix_sock_rw_perms, NULL, 8, &unix_sock_rw_mask) != 0) {
|
if (virStrToLong_i(config->unix_sock_rw_perms, NULL, 8, &unix_sock_rw_mask) != 0) {
|
||||||
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_rw_perms);
|
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_rw_perms);
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(svc = virNetServerServiceNewFDOrUNIX(sock_path,
|
if (!(svc = virNetServerServiceNewFDOrUNIX(sock_path,
|
||||||
@@ -496,7 +476,7 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
config->max_queued_clients,
|
config->max_queued_clients,
|
||||||
config->max_client_requests,
|
config->max_client_requests,
|
||||||
nfds, &cur_fd)))
|
nfds, &cur_fd)))
|
||||||
goto cleanup;
|
goto error;
|
||||||
if (sock_path_ro) {
|
if (sock_path_ro) {
|
||||||
if (!(svcRO = virNetServerServiceNewFDOrUNIX(sock_path_ro,
|
if (!(svcRO = virNetServerServiceNewFDOrUNIX(sock_path_ro,
|
||||||
unix_sock_ro_mask,
|
unix_sock_ro_mask,
|
||||||
@@ -509,37 +489,18 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
config->max_queued_clients,
|
config->max_queued_clients,
|
||||||
config->max_client_requests,
|
config->max_client_requests,
|
||||||
nfds, &cur_fd)))
|
nfds, &cur_fd)))
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virNetServerAddService(srv, svc,
|
if (virNetServerAddService(srv, svc,
|
||||||
config->mdns_adv && !ipsock ?
|
config->mdns_adv && !ipsock ?
|
||||||
"_libvirt._tcp" :
|
"_libvirt._tcp" :
|
||||||
NULL) < 0)
|
NULL) < 0)
|
||||||
goto cleanup;
|
goto error;
|
||||||
|
|
||||||
if (svcRO &&
|
if (svcRO &&
|
||||||
virNetServerAddService(srv, svcRO, NULL) < 0)
|
virNetServerAddService(srv, svcRO, NULL) < 0)
|
||||||
goto cleanup;
|
goto error;
|
||||||
|
|
||||||
/* Temporarily disabled */
|
|
||||||
if (sock_path_adm && false) {
|
|
||||||
VIR_DEBUG("Registering unix socket %s", sock_path_adm);
|
|
||||||
if (!(svcAdm = virNetServerServiceNewUNIX(sock_path_adm,
|
|
||||||
unix_sock_adm_mask,
|
|
||||||
unix_sock_gid,
|
|
||||||
REMOTE_AUTH_NONE,
|
|
||||||
#if WITH_GNUTLS
|
|
||||||
NULL,
|
|
||||||
#endif
|
|
||||||
true,
|
|
||||||
config->admin_max_queued_clients,
|
|
||||||
config->admin_max_client_requests)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virNetServerAddService(srvAdm, svcAdm, NULL) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ipsock) {
|
if (ipsock) {
|
||||||
if (config->listen_tcp) {
|
if (config->listen_tcp) {
|
||||||
@@ -547,7 +508,6 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
config->listen_addr, config->tcp_port);
|
config->listen_addr, config->tcp_port);
|
||||||
if (!(svcTCP = virNetServerServiceNewTCP(config->listen_addr,
|
if (!(svcTCP = virNetServerServiceNewTCP(config->listen_addr,
|
||||||
config->tcp_port,
|
config->tcp_port,
|
||||||
AF_UNSPEC,
|
|
||||||
config->auth_tcp,
|
config->auth_tcp,
|
||||||
#if WITH_GNUTLS
|
#if WITH_GNUTLS
|
||||||
NULL,
|
NULL,
|
||||||
@@ -555,11 +515,11 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
false,
|
false,
|
||||||
config->max_queued_clients,
|
config->max_queued_clients,
|
||||||
config->max_client_requests)))
|
config->max_client_requests)))
|
||||||
goto cleanup;
|
goto error;
|
||||||
|
|
||||||
if (virNetServerAddService(srv, svcTCP,
|
if (virNetServerAddService(srv, svcTCP,
|
||||||
config->mdns_adv ? "_libvirt._tcp" : NULL) < 0)
|
config->mdns_adv ? "_libvirt._tcp" : NULL) < 0)
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WITH_GNUTLS
|
#if WITH_GNUTLS
|
||||||
@@ -576,14 +536,14 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
(const char *const*)config->tls_allowed_dn_list,
|
(const char *const*)config->tls_allowed_dn_list,
|
||||||
config->tls_no_sanity_certificate ? false : true,
|
config->tls_no_sanity_certificate ? false : true,
|
||||||
config->tls_no_verify_certificate ? false : true)))
|
config->tls_no_verify_certificate ? false : true)))
|
||||||
goto cleanup;
|
goto error;
|
||||||
} else {
|
} else {
|
||||||
if (!(ctxt = virNetTLSContextNewServerPath(NULL,
|
if (!(ctxt = virNetTLSContextNewServerPath(NULL,
|
||||||
!privileged,
|
!privileged,
|
||||||
(const char *const*)config->tls_allowed_dn_list,
|
(const char *const*)config->tls_allowed_dn_list,
|
||||||
config->tls_no_sanity_certificate ? false : true,
|
config->tls_no_sanity_certificate ? false : true,
|
||||||
config->tls_no_verify_certificate ? false : true)))
|
config->tls_no_verify_certificate ? false : true)))
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
VIR_DEBUG("Registering TLS socket %s:%s",
|
VIR_DEBUG("Registering TLS socket %s:%s",
|
||||||
@@ -591,19 +551,18 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
if (!(svcTLS =
|
if (!(svcTLS =
|
||||||
virNetServerServiceNewTCP(config->listen_addr,
|
virNetServerServiceNewTCP(config->listen_addr,
|
||||||
config->tls_port,
|
config->tls_port,
|
||||||
AF_UNSPEC,
|
|
||||||
config->auth_tls,
|
config->auth_tls,
|
||||||
ctxt,
|
ctxt,
|
||||||
false,
|
false,
|
||||||
config->max_queued_clients,
|
config->max_queued_clients,
|
||||||
config->max_client_requests))) {
|
config->max_client_requests))) {
|
||||||
virObjectUnref(ctxt);
|
virObjectUnref(ctxt);
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
if (virNetServerAddService(srv, svcTLS,
|
if (virNetServerAddService(srv, svcTLS,
|
||||||
config->mdns_adv &&
|
config->mdns_adv &&
|
||||||
!config->listen_tcp ? "_libvirt._tcp" : NULL) < 0)
|
!config->listen_tcp ? "_libvirt._tcp" : NULL) < 0)
|
||||||
goto cleanup;
|
goto error;
|
||||||
|
|
||||||
virObjectUnref(ctxt);
|
virObjectUnref(ctxt);
|
||||||
}
|
}
|
||||||
@@ -612,7 +571,7 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
if (config->listen_tls) {
|
if (config->listen_tls) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("This libvirtd build does not support TLS"));
|
_("This libvirtd build does not support TLS"));
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -627,21 +586,20 @@ daemonSetupNetworking(virNetServerPtr srv,
|
|||||||
saslCtxt = virNetSASLContextNewServer(
|
saslCtxt = virNetSASLContextNewServer(
|
||||||
(const char *const*)config->sasl_allowed_username_list);
|
(const char *const*)config->sasl_allowed_username_list);
|
||||||
if (!saslCtxt)
|
if (!saslCtxt)
|
||||||
goto cleanup;
|
goto error;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = 0;
|
return 0;
|
||||||
|
|
||||||
cleanup:
|
error:
|
||||||
#if WITH_GNUTLS
|
#if WITH_GNUTLS
|
||||||
virObjectUnref(svcTLS);
|
virObjectUnref(svcTLS);
|
||||||
#endif
|
#endif
|
||||||
virObjectUnref(svcTCP);
|
virObjectUnref(svcTCP);
|
||||||
virObjectUnref(svcRO);
|
|
||||||
virObjectUnref(svcAdm);
|
|
||||||
virObjectUnref(svc);
|
virObjectUnref(svc);
|
||||||
return ret;
|
virObjectUnref(svcRO);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -815,14 +773,14 @@ daemonSetupPrivs(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void daemonShutdownHandler(virNetDaemonPtr dmn,
|
static void daemonShutdownHandler(virNetServerPtr srv,
|
||||||
siginfo_t *sig ATTRIBUTE_UNUSED,
|
siginfo_t *sig ATTRIBUTE_UNUSED,
|
||||||
void *opaque ATTRIBUTE_UNUSED)
|
void *opaque ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
virNetDaemonQuit(dmn);
|
virNetServerQuit(srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void daemonReloadHandler(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
|
static void daemonReloadHandler(virNetServerPtr srv ATTRIBUTE_UNUSED,
|
||||||
siginfo_t *sig ATTRIBUTE_UNUSED,
|
siginfo_t *sig ATTRIBUTE_UNUSED,
|
||||||
void *opaque ATTRIBUTE_UNUSED)
|
void *opaque ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
@@ -838,15 +796,15 @@ static void daemonReloadHandler(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
|
|||||||
VIR_WARN("Error while reloading drivers");
|
VIR_WARN("Error while reloading drivers");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int daemonSetupSignals(virNetDaemonPtr dmn)
|
static int daemonSetupSignals(virNetServerPtr srv)
|
||||||
{
|
{
|
||||||
if (virNetDaemonAddSignalHandler(dmn, SIGINT, daemonShutdownHandler, NULL) < 0)
|
if (virNetServerAddSignalHandler(srv, SIGINT, daemonShutdownHandler, NULL) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (virNetDaemonAddSignalHandler(dmn, SIGQUIT, daemonShutdownHandler, NULL) < 0)
|
if (virNetServerAddSignalHandler(srv, SIGQUIT, daemonShutdownHandler, NULL) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (virNetDaemonAddSignalHandler(dmn, SIGTERM, daemonShutdownHandler, NULL) < 0)
|
if (virNetServerAddSignalHandler(srv, SIGTERM, daemonShutdownHandler, NULL) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (virNetDaemonAddSignalHandler(dmn, SIGHUP, daemonReloadHandler, NULL) < 0)
|
if (virNetServerAddSignalHandler(srv, SIGHUP, daemonReloadHandler, NULL) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -854,12 +812,12 @@ static int daemonSetupSignals(virNetDaemonPtr dmn)
|
|||||||
|
|
||||||
static void daemonInhibitCallback(bool inhibit, void *opaque)
|
static void daemonInhibitCallback(bool inhibit, void *opaque)
|
||||||
{
|
{
|
||||||
virNetDaemonPtr dmn = opaque;
|
virNetServerPtr srv = opaque;
|
||||||
|
|
||||||
if (inhibit)
|
if (inhibit)
|
||||||
virNetDaemonAddShutdownInhibition(dmn);
|
virNetServerAddShutdownInhibition(srv);
|
||||||
else
|
else
|
||||||
virNetDaemonRemoveShutdownInhibition(dmn);
|
virNetServerRemoveShutdownInhibition(srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -869,26 +827,26 @@ static DBusConnection *systemBus;
|
|||||||
|
|
||||||
static void daemonStopWorker(void *opaque)
|
static void daemonStopWorker(void *opaque)
|
||||||
{
|
{
|
||||||
virNetDaemonPtr dmn = opaque;
|
virNetServerPtr srv = opaque;
|
||||||
|
|
||||||
VIR_DEBUG("Begin stop dmn=%p", dmn);
|
VIR_DEBUG("Begin stop srv=%p", srv);
|
||||||
|
|
||||||
ignore_value(virStateStop());
|
ignore_value(virStateStop());
|
||||||
|
|
||||||
VIR_DEBUG("Completed stop dmn=%p", dmn);
|
VIR_DEBUG("Completed stop srv=%p", srv);
|
||||||
|
|
||||||
/* Exit libvirtd cleanly */
|
/* Exit libvirtd cleanly */
|
||||||
virNetDaemonQuit(dmn);
|
virNetServerQuit(srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* We do this in a thread to not block the main loop */
|
/* We do this in a thread to not block the main loop */
|
||||||
static void daemonStop(virNetDaemonPtr dmn)
|
static void daemonStop(virNetServerPtr srv)
|
||||||
{
|
{
|
||||||
virThread thr;
|
virThread thr;
|
||||||
virObjectRef(dmn);
|
virObjectRef(srv);
|
||||||
if (virThreadCreate(&thr, false, daemonStopWorker, dmn) < 0)
|
if (virThreadCreate(&thr, false, daemonStopWorker, srv) < 0)
|
||||||
virObjectUnref(dmn);
|
virObjectUnref(srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -897,14 +855,14 @@ handleSessionMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
|||||||
DBusMessage *message,
|
DBusMessage *message,
|
||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
virNetDaemonPtr dmn = opaque;
|
virNetServerPtr srv = opaque;
|
||||||
|
|
||||||
VIR_DEBUG("dmn=%p", dmn);
|
VIR_DEBUG("srv=%p", srv);
|
||||||
|
|
||||||
if (dbus_message_is_signal(message,
|
if (dbus_message_is_signal(message,
|
||||||
DBUS_INTERFACE_LOCAL,
|
DBUS_INTERFACE_LOCAL,
|
||||||
"Disconnected"))
|
"Disconnected"))
|
||||||
daemonStop(dmn);
|
daemonStop(srv);
|
||||||
|
|
||||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
}
|
}
|
||||||
@@ -915,14 +873,14 @@ handleSystemMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
|||||||
DBusMessage *message,
|
DBusMessage *message,
|
||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
virNetDaemonPtr dmn = opaque;
|
virNetServerPtr srv = opaque;
|
||||||
|
|
||||||
VIR_DEBUG("dmn=%p", dmn);
|
VIR_DEBUG("srv=%p", srv);
|
||||||
|
|
||||||
if (dbus_message_is_signal(message,
|
if (dbus_message_is_signal(message,
|
||||||
"org.freedesktop.login1.Manager",
|
"org.freedesktop.login1.Manager",
|
||||||
"PrepareForShutdown"))
|
"PrepareForShutdown"))
|
||||||
daemonStop(dmn);
|
daemonStop(srv);
|
||||||
|
|
||||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
}
|
}
|
||||||
@@ -931,22 +889,22 @@ handleSystemMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
|||||||
|
|
||||||
static void daemonRunStateInit(void *opaque)
|
static void daemonRunStateInit(void *opaque)
|
||||||
{
|
{
|
||||||
virNetDaemonPtr dmn = opaque;
|
virNetServerPtr srv = opaque;
|
||||||
virIdentityPtr sysident = virIdentityGetSystem();
|
virIdentityPtr sysident = virIdentityGetSystem();
|
||||||
|
|
||||||
virIdentitySetCurrent(sysident);
|
virIdentitySetCurrent(sysident);
|
||||||
|
|
||||||
/* Since driver initialization can take time inhibit daemon shutdown until
|
/* Since driver initialization can take time inhibit daemon shutdown until
|
||||||
we're done so clients get a chance to connect */
|
we're done so clients get a chance to connect */
|
||||||
daemonInhibitCallback(true, dmn);
|
daemonInhibitCallback(true, srv);
|
||||||
|
|
||||||
/* Start the stateful HV drivers
|
/* Start the stateful HV drivers
|
||||||
* This is deliberately done after telling the parent process
|
* This is deliberately done after telling the parent process
|
||||||
* we're ready, since it can take a long time and this will
|
* we're ready, since it can take a long time and this will
|
||||||
* seriously delay OS bootup process */
|
* seriously delay OS bootup process */
|
||||||
if (virStateInitialize(virNetDaemonIsPrivileged(dmn),
|
if (virStateInitialize(virNetServerIsPrivileged(srv),
|
||||||
daemonInhibitCallback,
|
daemonInhibitCallback,
|
||||||
dmn) < 0) {
|
srv) < 0) {
|
||||||
VIR_ERROR(_("Driver state initialization failed"));
|
VIR_ERROR(_("Driver state initialization failed"));
|
||||||
/* Ensure the main event loop quits */
|
/* Ensure the main event loop quits */
|
||||||
kill(getpid(), SIGTERM);
|
kill(getpid(), SIGTERM);
|
||||||
@@ -956,18 +914,18 @@ static void daemonRunStateInit(void *opaque)
|
|||||||
driversInitialized = true;
|
driversInitialized = true;
|
||||||
|
|
||||||
#ifdef HAVE_DBUS
|
#ifdef HAVE_DBUS
|
||||||
/* Tie the non-privileged libvirtd to the session/shutdown lifecycle */
|
/* Tie the non-priviledged libvirtd to the session/shutdown lifecycle */
|
||||||
if (!virNetDaemonIsPrivileged(dmn)) {
|
if (!virNetServerIsPrivileged(srv)) {
|
||||||
|
|
||||||
sessionBus = virDBusGetSessionBus();
|
sessionBus = virDBusGetSessionBus();
|
||||||
if (sessionBus != NULL)
|
if (sessionBus != NULL)
|
||||||
dbus_connection_add_filter(sessionBus,
|
dbus_connection_add_filter(sessionBus,
|
||||||
handleSessionMessageFunc, dmn, NULL);
|
handleSessionMessageFunc, srv, NULL);
|
||||||
|
|
||||||
systemBus = virDBusGetSystemBus();
|
systemBus = virDBusGetSystemBus();
|
||||||
if (systemBus != NULL) {
|
if (systemBus != NULL) {
|
||||||
dbus_connection_add_filter(systemBus,
|
dbus_connection_add_filter(systemBus,
|
||||||
handleSystemMessageFunc, dmn, NULL);
|
handleSystemMessageFunc, srv, NULL);
|
||||||
dbus_bus_add_match(systemBus,
|
dbus_bus_add_match(systemBus,
|
||||||
"type='signal',sender='org.freedesktop.login1', interface='org.freedesktop.login1.Manager'",
|
"type='signal',sender='org.freedesktop.login1', interface='org.freedesktop.login1.Manager'",
|
||||||
NULL);
|
NULL);
|
||||||
@@ -975,20 +933,20 @@ static void daemonRunStateInit(void *opaque)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Only now accept clients from network */
|
/* Only now accept clients from network */
|
||||||
virNetDaemonUpdateServices(dmn, true);
|
virNetServerUpdateServices(srv, true);
|
||||||
cleanup:
|
cleanup:
|
||||||
daemonInhibitCallback(false, dmn);
|
daemonInhibitCallback(false, srv);
|
||||||
virObjectUnref(dmn);
|
virObjectUnref(srv);
|
||||||
virObjectUnref(sysident);
|
virObjectUnref(sysident);
|
||||||
virIdentitySetCurrent(NULL);
|
virIdentitySetCurrent(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int daemonStateInit(virNetDaemonPtr dmn)
|
static int daemonStateInit(virNetServerPtr srv)
|
||||||
{
|
{
|
||||||
virThread thr;
|
virThread thr;
|
||||||
virObjectRef(dmn);
|
virObjectRef(srv);
|
||||||
if (virThreadCreate(&thr, false, daemonRunStateInit, dmn) < 0) {
|
if (virThreadCreate(&thr, false, daemonRunStateInit, srv) < 0) {
|
||||||
virObjectUnref(dmn);
|
virObjectUnref(srv);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1139,9 +1097,7 @@ daemonUsage(const char *argv0, bool privileged)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
virNetDaemonPtr dmn = NULL;
|
|
||||||
virNetServerPtr srv = NULL;
|
virNetServerPtr srv = NULL;
|
||||||
virNetServerPtr srvAdm = NULL;
|
|
||||||
char *remote_config_file = NULL;
|
char *remote_config_file = NULL;
|
||||||
int statuswrite = -1;
|
int statuswrite = -1;
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
@@ -1149,7 +1105,6 @@ int main(int argc, char **argv) {
|
|||||||
char *pid_file = NULL;
|
char *pid_file = NULL;
|
||||||
char *sock_file = NULL;
|
char *sock_file = NULL;
|
||||||
char *sock_file_ro = NULL;
|
char *sock_file_ro = NULL;
|
||||||
char *sock_file_adm = NULL;
|
|
||||||
int timeout = -1; /* -t: Shutdown timeout */
|
int timeout = -1; /* -t: Shutdown timeout */
|
||||||
int verbose = 0;
|
int verbose = 0;
|
||||||
int godaemon = 0;
|
int godaemon = 0;
|
||||||
@@ -1172,7 +1127,9 @@ int main(int argc, char **argv) {
|
|||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (virGettextInitialize() < 0 ||
|
if (setlocale(LC_ALL, "") == NULL ||
|
||||||
|
bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
|
||||||
|
textdomain(PACKAGE) == NULL ||
|
||||||
virInitialize() < 0) {
|
virInitialize() < 0) {
|
||||||
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
|
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
@@ -1315,15 +1272,12 @@ int main(int argc, char **argv) {
|
|||||||
if (daemonUnixSocketPaths(config,
|
if (daemonUnixSocketPaths(config,
|
||||||
privileged,
|
privileged,
|
||||||
&sock_file,
|
&sock_file,
|
||||||
&sock_file_ro,
|
&sock_file_ro) < 0) {
|
||||||
&sock_file_adm) < 0) {
|
|
||||||
VIR_ERROR(_("Can't determine socket paths"));
|
VIR_ERROR(_("Can't determine socket paths"));
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
VIR_DEBUG("Decided on socket paths '%s', '%s' and '%s'",
|
VIR_DEBUG("Decided on socket paths '%s' and '%s'",
|
||||||
sock_file,
|
sock_file, NULLSTR(sock_file_ro));
|
||||||
NULLSTR(sock_file_ro),
|
|
||||||
NULLSTR(sock_file_adm));
|
|
||||||
|
|
||||||
if (godaemon) {
|
if (godaemon) {
|
||||||
char ebuf[1024];
|
char ebuf[1024];
|
||||||
@@ -1380,14 +1334,14 @@ int main(int argc, char **argv) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(srv = virNetServerNew("libvirtd",
|
if (!(srv = virNetServerNew(config->min_workers,
|
||||||
config->min_workers,
|
|
||||||
config->max_workers,
|
config->max_workers,
|
||||||
config->prio_workers,
|
config->prio_workers,
|
||||||
config->max_clients,
|
config->max_clients,
|
||||||
config->max_anonymous_clients,
|
config->max_anonymous_clients,
|
||||||
config->keepalive_interval,
|
config->keepalive_interval,
|
||||||
config->keepalive_count,
|
config->keepalive_count,
|
||||||
|
!!config->keepalive_required,
|
||||||
config->mdns_adv ? config->mdns_name : NULL,
|
config->mdns_adv ? config->mdns_name : NULL,
|
||||||
remoteClientInitHook,
|
remoteClientInitHook,
|
||||||
NULL,
|
NULL,
|
||||||
@@ -1397,12 +1351,6 @@ int main(int argc, char **argv) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(dmn = virNetDaemonNew()) ||
|
|
||||||
virNetDaemonAddServer(dmn, srv) < 0) {
|
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Beyond this point, nothing should rely on using
|
/* Beyond this point, nothing should rely on using
|
||||||
* getuid/geteuid() == 0, for privilege level checks.
|
* getuid/geteuid() == 0, for privilege level checks.
|
||||||
*/
|
*/
|
||||||
@@ -1455,46 +1403,13 @@ int main(int argc, char **argv) {
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(srvAdm = virNetServerNew("admin",
|
|
||||||
config->admin_min_workers,
|
|
||||||
config->admin_max_workers,
|
|
||||||
0,
|
|
||||||
config->admin_max_clients,
|
|
||||||
0,
|
|
||||||
config->admin_keepalive_interval,
|
|
||||||
config->admin_keepalive_count,
|
|
||||||
NULL,
|
|
||||||
remoteAdmClientInitHook,
|
|
||||||
NULL,
|
|
||||||
remoteAdmClientFreeFunc,
|
|
||||||
dmn))) {
|
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virNetDaemonAddServer(dmn, srvAdm) < 0) {
|
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(adminProgram = virNetServerProgramNew(ADMIN_PROGRAM,
|
|
||||||
ADMIN_PROTOCOL_VERSION,
|
|
||||||
adminProcs,
|
|
||||||
adminNProcs))) {
|
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (virNetServerAddProgram(srvAdm, adminProgram) < 0) {
|
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timeout != -1) {
|
if (timeout != -1) {
|
||||||
VIR_DEBUG("Registering shutdown timeout %d", timeout);
|
VIR_DEBUG("Registering shutdown timeout %d", timeout);
|
||||||
virNetDaemonAutoShutdown(dmn, timeout);
|
virNetServerAutoShutdown(srv,
|
||||||
|
timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((daemonSetupSignals(dmn)) < 0) {
|
if ((daemonSetupSignals(srv)) < 0) {
|
||||||
ret = VIR_DAEMON_ERR_SIGNAL;
|
ret = VIR_DAEMON_ERR_SIGNAL;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -1529,11 +1444,8 @@ int main(int argc, char **argv) {
|
|||||||
virHookCall(VIR_HOOK_DRIVER_DAEMON, "-", VIR_HOOK_DAEMON_OP_START,
|
virHookCall(VIR_HOOK_DRIVER_DAEMON, "-", VIR_HOOK_DAEMON_OP_START,
|
||||||
0, "start", NULL, NULL);
|
0, "start", NULL, NULL);
|
||||||
|
|
||||||
if (daemonSetupNetworking(srv, srvAdm,
|
if (daemonSetupNetworking(srv, config,
|
||||||
config,
|
sock_file, sock_file_ro,
|
||||||
sock_file,
|
|
||||||
sock_file_ro,
|
|
||||||
sock_file_adm,
|
|
||||||
ipsock, privileged) < 0) {
|
ipsock, privileged) < 0) {
|
||||||
ret = VIR_DAEMON_ERR_NETWORK;
|
ret = VIR_DAEMON_ERR_NETWORK;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -1552,7 +1464,7 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize drivers & then start accepting new clients from network */
|
/* Initialize drivers & then start accepting new clients from network */
|
||||||
if (daemonStateInit(dmn) < 0) {
|
if (daemonStateInit(srv) < 0) {
|
||||||
ret = VIR_DAEMON_ERR_INIT;
|
ret = VIR_DAEMON_ERR_INIT;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@@ -1574,7 +1486,7 @@ int main(int argc, char **argv) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Run event loop. */
|
/* Run event loop. */
|
||||||
virNetDaemonRun(dmn);
|
virNetServerRun(srv);
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
@@ -1586,11 +1498,8 @@ int main(int argc, char **argv) {
|
|||||||
virObjectUnref(remoteProgram);
|
virObjectUnref(remoteProgram);
|
||||||
virObjectUnref(lxcProgram);
|
virObjectUnref(lxcProgram);
|
||||||
virObjectUnref(qemuProgram);
|
virObjectUnref(qemuProgram);
|
||||||
virObjectUnref(adminProgram);
|
virNetServerClose(srv);
|
||||||
virNetDaemonClose(dmn);
|
|
||||||
virObjectUnref(dmn);
|
|
||||||
virObjectUnref(srv);
|
virObjectUnref(srv);
|
||||||
virObjectUnref(srvAdm);
|
|
||||||
virNetlinkShutdown();
|
virNetlinkShutdown();
|
||||||
if (statuswrite != -1) {
|
if (statuswrite != -1) {
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
@@ -1607,7 +1516,6 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
VIR_FREE(sock_file);
|
VIR_FREE(sock_file);
|
||||||
VIR_FREE(sock_file_ro);
|
VIR_FREE(sock_file_ro);
|
||||||
VIR_FREE(sock_file_adm);
|
|
||||||
VIR_FREE(pid_file);
|
VIR_FREE(pid_file);
|
||||||
VIR_FREE(remote_config_file);
|
VIR_FREE(remote_config_file);
|
||||||
VIR_FREE(run_dir);
|
VIR_FREE(run_dir);
|
||||||
|
@@ -77,6 +77,11 @@
|
|||||||
# UNIX socket access controls
|
# UNIX socket access controls
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Beware that if you are changing *any* of these options, and you use
|
||||||
|
# socket activation with systemd, you need to adjust the settings in
|
||||||
|
# the libvirtd.socket file as well since it could impose a security
|
||||||
|
# risk if you rely on file permission checking only.
|
||||||
|
|
||||||
# Set the UNIX domain socket group ownership. This can be used to
|
# Set the UNIX domain socket group ownership. This can be used to
|
||||||
# allow a 'trusted' set of users access to management capabilities
|
# allow a 'trusted' set of users access to management capabilities
|
||||||
# without becoming root.
|
# without becoming root.
|
||||||
@@ -101,17 +106,9 @@
|
|||||||
# control, then you may want to relax this too.
|
# control, then you may want to relax this too.
|
||||||
#unix_sock_rw_perms = "0770"
|
#unix_sock_rw_perms = "0770"
|
||||||
|
|
||||||
# Set the UNIX socket permissions for the admin interface socket.
|
|
||||||
#
|
|
||||||
# Default allows only owner (root), do not change it unless you are
|
|
||||||
# sure to whom you are exposing the access to.
|
|
||||||
#unix_sock_admin_perms = "0700"
|
|
||||||
|
|
||||||
# Set the name of the directory in which sockets will be found/created.
|
# Set the name of the directory in which sockets will be found/created.
|
||||||
#unix_sock_dir = "/var/run/libvirt"
|
#unix_sock_dir = "/var/run/libvirt"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
#
|
#
|
||||||
# Authentication.
|
# Authentication.
|
||||||
@@ -310,16 +307,6 @@
|
|||||||
# and max_workers parameter
|
# and max_workers parameter
|
||||||
#max_client_requests = 5
|
#max_client_requests = 5
|
||||||
|
|
||||||
# Same processing controls, but this time for the admin interface.
|
|
||||||
# For description of each option, be so kind to scroll few lines
|
|
||||||
# upwards.
|
|
||||||
|
|
||||||
#admin_min_workers = 1
|
|
||||||
#admin_max_workers = 5
|
|
||||||
#admin_max_clients = 5
|
|
||||||
#admin_max_queued_clients = 5
|
|
||||||
#admin_max_client_requests = 5
|
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
#
|
#
|
||||||
# Logging controls
|
# Logging controls
|
||||||
@@ -339,16 +326,10 @@
|
|||||||
# The format for a filter is one of:
|
# The format for a filter is one of:
|
||||||
# x:name
|
# x:name
|
||||||
# x:+name
|
# x:+name
|
||||||
|
# where name is a string which is matched against source file name,
|
||||||
# where name is a string which is matched against the category
|
# e.g., "remote", "qemu", or "util/json", the optional "+" prefix
|
||||||
# given in the VIR_LOG_INIT() at the top of each libvirt source
|
# tells libvirt to log stack trace for each message matching name,
|
||||||
# file, e.g., "remote", "qemu", or "util.json" (the name in the
|
# and x is the minimal level where matching messages should be logged:
|
||||||
# filter can be a substring of the full category name, in order
|
|
||||||
# to match multiple similar categories), the optional "+" prefix
|
|
||||||
# tells libvirt to log stack trace for each message matching
|
|
||||||
# name, and x is the minimal level where matching messages should
|
|
||||||
# be logged:
|
|
||||||
|
|
||||||
# 1: DEBUG
|
# 1: DEBUG
|
||||||
# 2: INFO
|
# 2: INFO
|
||||||
# 3: WARNING
|
# 3: WARNING
|
||||||
@@ -441,15 +422,8 @@
|
|||||||
#
|
#
|
||||||
#keepalive_interval = 5
|
#keepalive_interval = 5
|
||||||
#keepalive_count = 5
|
#keepalive_count = 5
|
||||||
|
|
||||||
#
|
#
|
||||||
# These configuration options are no longer used. There is no way to
|
# If set to 1, libvirtd will refuse to talk to clients that do not
|
||||||
# restrict such clients from connecting since they first need to
|
# support keepalive protocol. Defaults to 0.
|
||||||
# connect in order to ask for keepalive.
|
|
||||||
#
|
#
|
||||||
#keepalive_required = 1
|
#keepalive_required = 1
|
||||||
#admin_keepalive_required = 1
|
|
||||||
|
|
||||||
# Keepalive settings for the admin interface
|
|
||||||
#admin_keepalive_interval = 5
|
|
||||||
#admin_keepalive_count = 5
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* libvirtd.h: daemon data structure definitions
|
* libvirtd.h: daemon data structure definitions
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2015 Red Hat, Inc.
|
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@@ -30,11 +30,9 @@
|
|||||||
# include <rpc/types.h>
|
# include <rpc/types.h>
|
||||||
# include <rpc/xdr.h>
|
# include <rpc/xdr.h>
|
||||||
# include "remote_protocol.h"
|
# include "remote_protocol.h"
|
||||||
# include "admin_protocol.h"
|
|
||||||
# include "lxc_protocol.h"
|
# include "lxc_protocol.h"
|
||||||
# include "qemu_protocol.h"
|
# include "qemu_protocol.h"
|
||||||
# include "virthread.h"
|
# include "virthread.h"
|
||||||
|
|
||||||
# if WITH_SASL
|
# if WITH_SASL
|
||||||
# include "virnetsaslcontext.h"
|
# include "virnetsaslcontext.h"
|
||||||
# endif
|
# endif
|
||||||
@@ -44,8 +42,6 @@ typedef struct daemonClientStream daemonClientStream;
|
|||||||
typedef daemonClientStream *daemonClientStreamPtr;
|
typedef daemonClientStream *daemonClientStreamPtr;
|
||||||
typedef struct daemonClientPrivate daemonClientPrivate;
|
typedef struct daemonClientPrivate daemonClientPrivate;
|
||||||
typedef daemonClientPrivate *daemonClientPrivatePtr;
|
typedef daemonClientPrivate *daemonClientPrivatePtr;
|
||||||
typedef struct daemonAdmClientPrivate daemonAdmClientPrivate;
|
|
||||||
typedef daemonAdmClientPrivate *daemonAdmClientPrivatePtr;
|
|
||||||
typedef struct daemonClientEventCallback daemonClientEventCallback;
|
typedef struct daemonClientEventCallback daemonClientEventCallback;
|
||||||
typedef daemonClientEventCallback *daemonClientEventCallbackPtr;
|
typedef daemonClientEventCallback *daemonClientEventCallbackPtr;
|
||||||
|
|
||||||
@@ -60,7 +56,6 @@ struct daemonClientPrivate {
|
|||||||
size_t nnetworkEventCallbacks;
|
size_t nnetworkEventCallbacks;
|
||||||
daemonClientEventCallbackPtr *qemuEventCallbacks;
|
daemonClientEventCallbackPtr *qemuEventCallbacks;
|
||||||
size_t nqemuEventCallbacks;
|
size_t nqemuEventCallbacks;
|
||||||
bool closeRegistered;
|
|
||||||
|
|
||||||
# if WITH_SASL
|
# if WITH_SASL
|
||||||
virNetSASLSessionPtr sasl;
|
virNetSASLSessionPtr sasl;
|
||||||
@@ -73,14 +68,7 @@ struct daemonClientPrivate {
|
|||||||
virConnectPtr conn;
|
virConnectPtr conn;
|
||||||
|
|
||||||
daemonClientStreamPtr streams;
|
daemonClientStreamPtr streams;
|
||||||
};
|
bool keepalive_supported;
|
||||||
|
|
||||||
/* Separate private data for admin connection */
|
|
||||||
struct daemonAdmClientPrivate {
|
|
||||||
/* Just a placeholder, not that there is anything to be locked */
|
|
||||||
virMutex lock;
|
|
||||||
|
|
||||||
virNetDaemonPtr dmn;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# if WITH_SASL
|
# if WITH_SASL
|
||||||
|
@@ -1,16 +1,19 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# the following is the LSB init header see
|
# the following is the LSB init header see
|
||||||
# http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
|
# http://www.linux-foundation.org/spec//booksets/LSB-Core-generic/LSB-Core-generic.html#INITSCRCOMCONV
|
||||||
#
|
#
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: libvirtd
|
# Provides: libvirtd
|
||||||
|
# Required-Start: $network messagebus
|
||||||
|
# Should-Start: $named
|
||||||
|
# Should-Start: xend
|
||||||
|
# Should-Start: avahi-daemon
|
||||||
|
# Should-Start: virtlockd
|
||||||
|
# Required-Stop: $network messagebus
|
||||||
|
# Should-Stop: $named
|
||||||
# Default-Start: 3 4 5
|
# Default-Start: 3 4 5
|
||||||
# Default-Stop: 0 1 2 6
|
# Default-Stop: 0 1 2 6
|
||||||
# Required-Start: $network messagebus virtlogd
|
|
||||||
# Required-Stop: $network messagebus
|
|
||||||
# Should-Start: $named xend avahi-daemon virtlockd
|
|
||||||
# Should-Stop: $named
|
|
||||||
# Short-Description: daemon for libvirt virtualization API
|
# Short-Description: daemon for libvirt virtualization API
|
||||||
# Description: This is a daemon for managing guest instances
|
# Description: This is a daemon for managing guest instances
|
||||||
# and libvirt virtual networks
|
# and libvirt virtual networks
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
@localstatedir@/log/libvirt/libxl/*.log {
|
|
||||||
weekly
|
|
||||||
missingok
|
|
||||||
rotate 4
|
|
||||||
compress
|
|
||||||
delaycompress
|
|
||||||
copytruncate
|
|
||||||
minsize 100k
|
|
||||||
}
|
|
@@ -1,8 +1,3 @@
|
|||||||
# NB we don't use socket activation. When libvirtd starts it will
|
|
||||||
# spawn any virtual machines registered for autostart. We want this
|
|
||||||
# to occur on every boot, regardless of whether any client connects
|
|
||||||
# to a socket. Thus socket activation doesn't have any benefit
|
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Virtualization daemon
|
Description=Virtualization daemon
|
||||||
Before=libvirt-guests.service
|
Before=libvirt-guests.service
|
||||||
@@ -10,8 +5,6 @@ After=network.target
|
|||||||
After=dbus.service
|
After=dbus.service
|
||||||
After=iscsid.service
|
After=iscsid.service
|
||||||
After=apparmor.service
|
After=apparmor.service
|
||||||
After=local-fs.target
|
|
||||||
After=remote-fs.target
|
|
||||||
Documentation=man:libvirtd(8)
|
Documentation=man:libvirtd(8)
|
||||||
Documentation=http://libvirt.org
|
Documentation=http://libvirt.org
|
||||||
|
|
||||||
@@ -27,5 +20,3 @@ Restart=on-failure
|
|||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
Also=virtlockd.socket
|
|
||||||
Also=virtlogd.socket
|
|
||||||
|
11
daemon/libvirtd.socket.in
Normal file
11
daemon/libvirtd.socket.in
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[Socket]
|
||||||
|
ListenStream=@runstatedir@/libvirt/libvirt-sock
|
||||||
|
ListenStream=@runstatedir@/libvirt/libvirt-sock-ro
|
||||||
|
|
||||||
|
; The following settings must match libvirtd.conf file in order to
|
||||||
|
; work as expected because libvirtd can't change them later.
|
||||||
|
; SocketMode=0777 is safe only if authentication on the socket is set
|
||||||
|
; up. For further information, please see the libvirtd.conf file.
|
||||||
|
SocketMode=0777
|
||||||
|
SocketUser=root
|
||||||
|
SocketGroup=root
|
1129
daemon/remote.c
1129
daemon/remote.c
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,6 @@ module Test_libvirtd =
|
|||||||
{ "unix_sock_group" = "libvirt" }
|
{ "unix_sock_group" = "libvirt" }
|
||||||
{ "unix_sock_ro_perms" = "0777" }
|
{ "unix_sock_ro_perms" = "0777" }
|
||||||
{ "unix_sock_rw_perms" = "0770" }
|
{ "unix_sock_rw_perms" = "0770" }
|
||||||
{ "unix_sock_admin_perms" = "0700" }
|
|
||||||
{ "unix_sock_dir" = "/var/run/libvirt" }
|
{ "unix_sock_dir" = "/var/run/libvirt" }
|
||||||
{ "auth_unix_ro" = "none" }
|
{ "auth_unix_ro" = "none" }
|
||||||
{ "auth_unix_rw" = "none" }
|
{ "auth_unix_rw" = "none" }
|
||||||
@@ -43,11 +42,6 @@ module Test_libvirtd =
|
|||||||
{ "prio_workers" = "5" }
|
{ "prio_workers" = "5" }
|
||||||
{ "max_requests" = "20" }
|
{ "max_requests" = "20" }
|
||||||
{ "max_client_requests" = "5" }
|
{ "max_client_requests" = "5" }
|
||||||
{ "admin_min_workers" = "1" }
|
|
||||||
{ "admin_max_workers" = "5" }
|
|
||||||
{ "admin_max_clients" = "5" }
|
|
||||||
{ "admin_max_queued_clients" = "5" }
|
|
||||||
{ "admin_max_client_requests" = "5" }
|
|
||||||
{ "log_level" = "3" }
|
{ "log_level" = "3" }
|
||||||
{ "log_filters" = "3:remote 4:event" }
|
{ "log_filters" = "3:remote 4:event" }
|
||||||
{ "log_outputs" = "3:syslog:libvirtd" }
|
{ "log_outputs" = "3:syslog:libvirtd" }
|
||||||
@@ -58,6 +52,3 @@ module Test_libvirtd =
|
|||||||
{ "keepalive_interval" = "5" }
|
{ "keepalive_interval" = "5" }
|
||||||
{ "keepalive_count" = "5" }
|
{ "keepalive_count" = "5" }
|
||||||
{ "keepalive_required" = "1" }
|
{ "keepalive_required" = "1" }
|
||||||
{ "admin_keepalive_required" = "1" }
|
|
||||||
{ "admin_keepalive_interval" = "5" }
|
|
||||||
{ "admin_keepalive_count" = "5" }
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
## Copyright (C) 2005-2016 Red Hat, Inc.
|
## Copyright (C) 2005-2014 Red Hat, Inc.
|
||||||
##
|
##
|
||||||
## This library is free software; you can redistribute it and/or
|
## This library is free software; you can redistribute it and/or
|
||||||
## modify it under the terms of the GNU Lesser General Public
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
## License along with this library. If not, see
|
## License along with this library. If not, see
|
||||||
## <http://www.gnu.org/licenses/>.
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
SUBDIRS= schemas
|
||||||
|
|
||||||
PERL = perl
|
PERL = perl
|
||||||
|
|
||||||
# The directory containing the source code (if it contains documentation).
|
# The directory containing the source code (if it contains documentation).
|
||||||
@@ -70,6 +72,8 @@ devhelpxsl = devhelp/devhelp.xsl devhelp/html.xsl
|
|||||||
|
|
||||||
png = \
|
png = \
|
||||||
32favicon.png \
|
32favicon.png \
|
||||||
|
footer_corner.png \
|
||||||
|
footer_pattern.png \
|
||||||
libvirt-header-bg.png \
|
libvirt-header-bg.png \
|
||||||
libvirt-header-logo.png \
|
libvirt-header-logo.png \
|
||||||
libvirtLogo.png \
|
libvirtLogo.png \
|
||||||
@@ -79,6 +83,7 @@ png = \
|
|||||||
libvirt-driver-arch.png \
|
libvirt-driver-arch.png \
|
||||||
libvirt-object-model.png \
|
libvirt-object-model.png \
|
||||||
madeWith.png \
|
madeWith.png \
|
||||||
|
et.png \
|
||||||
migration-managed-direct.png \
|
migration-managed-direct.png \
|
||||||
migration-managed-p2p.png \
|
migration-managed-p2p.png \
|
||||||
migration-native.png \
|
migration-native.png \
|
||||||
@@ -123,15 +128,8 @@ lxc_xml = \
|
|||||||
libvirt-lxc-api.xml \
|
libvirt-lxc-api.xml \
|
||||||
libvirt-lxc-refs.xml
|
libvirt-lxc-refs.xml
|
||||||
|
|
||||||
admin_xml = \
|
|
||||||
libvirt-admin-api.xml \
|
|
||||||
libvirt-admin-refs.xml
|
|
||||||
|
|
||||||
apidir = $(pkgdatadir)/api
|
apidir = $(pkgdatadir)/api
|
||||||
api_DATA = \
|
api_DATA = libvirt-api.xml libvirt-qemu-api.xml libvirt-lxc-api.xml
|
||||||
libvirt-api.xml \
|
|
||||||
libvirt-qemu-api.xml \
|
|
||||||
libvirt-lxc-api.xml
|
|
||||||
|
|
||||||
fig = \
|
fig = \
|
||||||
libvirt-net-logical.fig \
|
libvirt-net-logical.fig \
|
||||||
@@ -145,9 +143,6 @@ fig = \
|
|||||||
migration-tunnel.fig \
|
migration-tunnel.fig \
|
||||||
migration-unmanaged-direct.fig
|
migration-unmanaged-direct.fig
|
||||||
|
|
||||||
schemadir = $(pkgdatadir)/schemas
|
|
||||||
schema_DATA = $(wildcard $(srcdir)/schemas/*.rng)
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
EXTRA_DIST= \
|
||||||
apibuild.py genaclperms.pl \
|
apibuild.py genaclperms.pl \
|
||||||
site.xsl newapi.xsl news.xsl page.xsl \
|
site.xsl newapi.xsl news.xsl page.xsl \
|
||||||
@@ -158,10 +153,9 @@ EXTRA_DIST= \
|
|||||||
$(patches) $(dot_php_in) $(dot_php_code_in) $(dot_php)\
|
$(patches) $(dot_php_in) $(dot_php_code_in) $(dot_php)\
|
||||||
$(internals_html_in) $(internals_html) \
|
$(internals_html_in) $(internals_html) \
|
||||||
sitemap.html.in aclperms.htmlinc \
|
sitemap.html.in aclperms.htmlinc \
|
||||||
todo.pl hvsupport.pl todo.cfg-example \
|
todo.pl hvsupport.pl todo.cfg-example
|
||||||
$(schema_DATA)
|
|
||||||
|
|
||||||
acl_generated = aclperms.htmlinc
|
acl.html:: $(srcdir)/aclperms.htmlinc
|
||||||
|
|
||||||
$(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
|
$(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
|
||||||
$(srcdir)/genaclperms.pl Makefile.am
|
$(srcdir)/genaclperms.pl Makefile.am
|
||||||
@@ -180,7 +174,6 @@ all-am: web
|
|||||||
api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
|
api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
|
||||||
qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
|
qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
|
||||||
lxc_api: $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
|
lxc_api: $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
|
||||||
admin_api: $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
|
|
||||||
|
|
||||||
web: $(dot_html) $(internals_html) html/index.html devhelp/index.html \
|
web: $(dot_html) $(internals_html) html/index.html devhelp/index.html \
|
||||||
$(dot_php)
|
$(dot_php)
|
||||||
@@ -203,7 +196,7 @@ todo:
|
|||||||
rm -f todo.html.in
|
rm -f todo.html.in
|
||||||
$(MAKE) todo.html
|
$(MAKE) todo.html
|
||||||
|
|
||||||
hvsupport.html: $(srcdir)/hvsupport.html.in
|
hvsupport.html:: $(srcdir)/hvsupport.html.in
|
||||||
|
|
||||||
$(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
|
$(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
|
||||||
$(top_srcdir)/src/libvirt_public.syms \
|
$(top_srcdir)/src/libvirt_public.syms \
|
||||||
@@ -217,21 +210,21 @@ $(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
|
|||||||
%.png: %.fig
|
%.png: %.fig
|
||||||
convert -rotate 90 $< $@
|
convert -rotate 90 $< $@
|
||||||
|
|
||||||
%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
|
internals/%.html.tmp: internals/%.html.in subsite.xsl page.xsl sitemap.html.in
|
||||||
sitemap.html.in $(acl_generated)
|
@if [ -x $(XSLTPROC) ] ; then \
|
||||||
|
echo "Generating $@"; \
|
||||||
|
$(MKDIR_P) internals; \
|
||||||
|
name=`echo $@ | sed -e 's/.tmp//'`; \
|
||||||
|
$(XSLTPROC) --stringparam pagename $$name --nonet \
|
||||||
|
$(top_srcdir)/docs/subsite.xsl $< > $@ \
|
||||||
|
|| { rm $@ && exit 1; }; fi
|
||||||
|
|
||||||
|
%.html.tmp: %.html.in site.xsl page.xsl sitemap.html.in
|
||||||
@if [ -x $(XSLTPROC) ] ; then \
|
@if [ -x $(XSLTPROC) ] ; then \
|
||||||
echo "Generating $@"; \
|
echo "Generating $@"; \
|
||||||
name=`echo $@ | sed -e 's/.tmp//'`; \
|
name=`echo $@ | sed -e 's/.tmp//'`; \
|
||||||
dir=`dirname $@` ; \
|
|
||||||
if test "$$dir" = "."; \
|
|
||||||
then \
|
|
||||||
style=site.xsl; \
|
|
||||||
else \
|
|
||||||
$(MKDIR_P) $$dir; \
|
|
||||||
style=subsite.xsl; \
|
|
||||||
fi; \
|
|
||||||
$(XSLTPROC) --stringparam pagename $$name --nonet \
|
$(XSLTPROC) --stringparam pagename $$name --nonet \
|
||||||
$(top_srcdir)/docs/$$style $< > $@ \
|
$(top_srcdir)/docs/site.xsl $< > $@ \
|
||||||
|| { rm $@ && exit 1; }; fi
|
|| { rm $@ && exit 1; }; fi
|
||||||
|
|
||||||
%.html: %.html.tmp
|
%.html: %.html.tmp
|
||||||
@@ -281,7 +274,6 @@ $(addprefix $(srcdir)/,$(devhelphtml)): $(srcdir)/libvirt-api.xml $(devhelpxsl)
|
|||||||
python_generated_files = \
|
python_generated_files = \
|
||||||
$(srcdir)/html/libvirt-libvirt-lxc.html \
|
$(srcdir)/html/libvirt-libvirt-lxc.html \
|
||||||
$(srcdir)/html/libvirt-libvirt-qemu.html \
|
$(srcdir)/html/libvirt-libvirt-qemu.html \
|
||||||
$(srcdir)/html/libvirt-libvirt-admin.html \
|
|
||||||
$(srcdir)/html/libvirt-virterror.html \
|
$(srcdir)/html/libvirt-virterror.html \
|
||||||
$(srcdir)/libvirt-api.xml \
|
$(srcdir)/libvirt-api.xml \
|
||||||
$(srcdir)/libvirt-refs.xml \
|
$(srcdir)/libvirt-refs.xml \
|
||||||
@@ -289,8 +281,6 @@ python_generated_files = \
|
|||||||
$(srcdir)/libvirt-lxc-refs.xml \
|
$(srcdir)/libvirt-lxc-refs.xml \
|
||||||
$(srcdir)/libvirt-qemu-api.xml \
|
$(srcdir)/libvirt-qemu-api.xml \
|
||||||
$(srcdir)/libvirt-qemu-refs.xml \
|
$(srcdir)/libvirt-qemu-refs.xml \
|
||||||
$(srcdir)/libvirt-admin-api.xml \
|
|
||||||
$(srcdir)/libvirt-admin-refs.xml \
|
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
APIBUILD=$(srcdir)/apibuild.py
|
APIBUILD=$(srcdir)/apibuild.py
|
||||||
@@ -300,8 +290,7 @@ EXTRA_DIST += $(APIBUILD_STAMP)
|
|||||||
$(python_generated_files): $(APIBUILD_STAMP)
|
$(python_generated_files): $(APIBUILD_STAMP)
|
||||||
|
|
||||||
$(APIBUILD_STAMP): $(srcdir)/apibuild.py \
|
$(APIBUILD_STAMP): $(srcdir)/apibuild.py \
|
||||||
$(top_srcdir)/include/libvirt/libvirt.h \
|
$(top_srcdir)/include/libvirt/libvirt.h.in \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-common.h.in \
|
|
||||||
$(top_srcdir)/include/libvirt/libvirt-domain-snapshot.h \
|
$(top_srcdir)/include/libvirt/libvirt-domain-snapshot.h \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-domain.h \
|
$(top_srcdir)/include/libvirt/libvirt-domain.h \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-event.h \
|
$(top_srcdir)/include/libvirt/libvirt-event.h \
|
||||||
@@ -315,12 +304,10 @@ $(APIBUILD_STAMP): $(srcdir)/apibuild.py \
|
|||||||
$(top_srcdir)/include/libvirt/libvirt-stream.h \
|
$(top_srcdir)/include/libvirt/libvirt-stream.h \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-lxc.h \
|
$(top_srcdir)/include/libvirt/libvirt-lxc.h \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-qemu.h \
|
$(top_srcdir)/include/libvirt/libvirt-qemu.h \
|
||||||
$(top_srcdir)/include/libvirt/libvirt-admin.h \
|
|
||||||
$(top_srcdir)/include/libvirt/virterror.h \
|
$(top_srcdir)/include/libvirt/virterror.h \
|
||||||
$(top_srcdir)/src/libvirt.c \
|
$(top_srcdir)/src/libvirt.c \
|
||||||
$(top_srcdir)/src/libvirt-lxc.c \
|
$(top_srcdir)/src/libvirt-lxc.c \
|
||||||
$(top_srcdir)/src/libvirt-qemu.c \
|
$(top_srcdir)/src/libvirt-qemu.c \
|
||||||
$(top_srcdir)/src/libvirt-admin.c \
|
|
||||||
$(top_srcdir)/src/util/virerror.c \
|
$(top_srcdir)/src/util/virerror.c \
|
||||||
$(top_srcdir)/src/util/virevent.c \
|
$(top_srcdir)/src/util/virevent.c \
|
||||||
$(top_srcdir)/src/util/virtypedparam.c
|
$(top_srcdir)/src/util/virtypedparam.c
|
||||||
@@ -339,10 +326,9 @@ maintainer-clean-local: clean-local
|
|||||||
todo.html.in
|
todo.html.in
|
||||||
rm -rf $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
|
rm -rf $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
|
||||||
rm -rf $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
|
rm -rf $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
|
||||||
rm -rf $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
|
|
||||||
rm -rf $(APIBUILD_STAMP)
|
rm -rf $(APIBUILD_STAMP)
|
||||||
|
|
||||||
rebuild: api qemu_api lxc_api admin_api all
|
rebuild: api qemu_api lxc_api all
|
||||||
|
|
||||||
install-data-local:
|
install-data-local:
|
||||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||||
@@ -363,8 +349,8 @@ install-data-local:
|
|||||||
$(INSTALL_DATA) $(srcdir)/libvirtLogo.png $(DESTDIR)$(pkgdatadir)
|
$(INSTALL_DATA) $(srcdir)/libvirtLogo.png $(DESTDIR)$(pkgdatadir)
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
for h in $(apihtml); do rm -f $(DESTDIR)$(HTML_DIR)/$$h; done
|
for h in $(apihtml); do rm $(DESTDIR)$(HTML_DIR)/$$h; done
|
||||||
for p in $(apipng); do rm -f $(DESTDIR)$(HTML_DIR)/$$p; done
|
for p in $(apipng); do rm $(DESTDIR)$(HTML_DIR)/$$p; done
|
||||||
for f in $(devhelphtml) $(devhelppng) $(devhelpcss); do \
|
for f in $(devhelphtml) $(devhelppng) $(devhelpcss); do \
|
||||||
rm -f $(DESTDIR)$(DEVHELP_DIR)/$$(basename $$f); \
|
rm $(DESTDIR)$(DEVHELP_DIR)/$$(basename $$f); \
|
||||||
done
|
done
|
||||||
|
@@ -348,12 +348,6 @@
|
|||||||
<code>lookup</code> method.
|
<code>lookup</code> method.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
See
|
|
||||||
<a href="http://libvirt.org/git/?p=libvirt.git;a=tree;f=examples/polkit;hb=HEAD">source code</a>
|
|
||||||
for a more complex example.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3><a name="exconnect">Example: restricting ability to connect to drivers</a></h3>
|
<h3><a name="exconnect">Example: restricting ability to connect to drivers</a></h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@@ -330,7 +330,7 @@
|
|||||||
daemon through the <a href="remote.html">remote</a> driver via an
|
daemon through the <a href="remote.html">remote</a> driver via an
|
||||||
<a href="internals/rpc.html">RPC</a>. Some hypervisors do support
|
<a href="internals/rpc.html">RPC</a>. Some hypervisors do support
|
||||||
client-side connections and responses, such as Test, OpenVZ, VMware,
|
client-side connections and responses, such as Test, OpenVZ, VMware,
|
||||||
Power VM (phyp), VirtualBox (vbox), ESX, Hyper-V, Xen, and Virtuozzo.
|
Power VM (phyp), VirtualBox (vbox), ESX, Hyper-V, Xen, and Parallels.
|
||||||
The libvirtd daemon service is started on the host at system boot
|
The libvirtd daemon service is started on the host at system boot
|
||||||
time and can also be restarted at any time by a properly privileged
|
time and can also be restarted at any time by a properly privileged
|
||||||
user, such as root. The libvirtd daemon uses the same libvirt API
|
user, such as root. The libvirtd daemon uses the same libvirt API
|
||||||
|
106
docs/apibuild.py
106
docs/apibuild.py
@@ -59,11 +59,6 @@ lxc_included_files = {
|
|||||||
"libvirt-lxc.c": "Implementations for the LXC specific APIs",
|
"libvirt-lxc.c": "Implementations for the LXC specific APIs",
|
||||||
}
|
}
|
||||||
|
|
||||||
admin_included_files = {
|
|
||||||
"libvirt-admin.h": "header with admin specific API definitions",
|
|
||||||
"libvirt-admin.c": "Implementations for the admin specific APIs",
|
|
||||||
}
|
|
||||||
|
|
||||||
ignored_words = {
|
ignored_words = {
|
||||||
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
|
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
|
||||||
"ATTRIBUTE_SENTINEL": (0, "macro keyword"),
|
"ATTRIBUTE_SENTINEL": (0, "macro keyword"),
|
||||||
@@ -102,7 +97,6 @@ ignored_functions = {
|
|||||||
"virDomainMigratePrepare3Params": "private function for migration",
|
"virDomainMigratePrepare3Params": "private function for migration",
|
||||||
"virDomainMigrateConfirm3Params": "private function for migration",
|
"virDomainMigrateConfirm3Params": "private function for migration",
|
||||||
"virDomainMigratePrepareTunnel3Params": "private function for tunnelled migration",
|
"virDomainMigratePrepareTunnel3Params": "private function for tunnelled migration",
|
||||||
"virErrorCopyNew": "private",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ignored_macros = {
|
ignored_macros = {
|
||||||
@@ -1034,12 +1028,9 @@ class CParser:
|
|||||||
name = string.split(name, '(') [0]
|
name = string.split(name, '(') [0]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
strValue = None
|
info = self.parseMacroComment(name, not self.is_header)
|
||||||
if len(lst) == 1 and lst[0][0] == '"' and lst[0][-1] == '"':
|
|
||||||
strValue = lst[0][1:-1]
|
|
||||||
(args, desc) = self.parseMacroComment(name, not self.is_header)
|
|
||||||
self.index_add(name, self.filename, not self.is_header,
|
self.index_add(name, self.filename, not self.is_header,
|
||||||
"macro", (args, desc, strValue))
|
"macro", info)
|
||||||
return token
|
return token
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -1365,32 +1356,32 @@ class CParser:
|
|||||||
token = self.token()
|
token = self.token()
|
||||||
return token
|
return token
|
||||||
elif token[0] == "name":
|
elif token[0] == "name":
|
||||||
self.cleanupComment()
|
self.cleanupComment()
|
||||||
if name is not None:
|
if name is not None:
|
||||||
if self.comment is not None:
|
if self.comment is not None:
|
||||||
comment = string.strip(self.comment)
|
comment = string.strip(self.comment)
|
||||||
self.comment = None
|
self.comment = None
|
||||||
self.enums.append((name, value, comment))
|
self.enums.append((name, value, comment))
|
||||||
name = token[1]
|
name = token[1]
|
||||||
comment = ""
|
comment = ""
|
||||||
token = self.token()
|
|
||||||
if token[0] == "op" and token[1][0] == "=":
|
|
||||||
value = ""
|
|
||||||
if len(token[1]) > 1:
|
|
||||||
value = token[1][1:]
|
|
||||||
token = self.token()
|
token = self.token()
|
||||||
while token[0] != "sep" or (token[1] != ',' and
|
if token[0] == "op" and token[1][0] == "=":
|
||||||
token[1] != '}'):
|
value = ""
|
||||||
value = value + token[1]
|
if len(token[1]) > 1:
|
||||||
|
value = token[1][1:]
|
||||||
|
token = self.token()
|
||||||
|
while token[0] != "sep" or (token[1] != ',' and
|
||||||
|
token[1] != '}'):
|
||||||
|
value = value + token[1]
|
||||||
|
token = self.token()
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
value = "%d" % (int(value) + 1)
|
||||||
|
except:
|
||||||
|
self.warning("Failed to compute value of enum %s" % (name))
|
||||||
|
value=""
|
||||||
|
if token[0] == "sep" and token[1] == ",":
|
||||||
token = self.token()
|
token = self.token()
|
||||||
else:
|
|
||||||
try:
|
|
||||||
value = "%d" % (int(value) + 1)
|
|
||||||
except:
|
|
||||||
self.warning("Failed to compute value of enum %s" % (name))
|
|
||||||
value=""
|
|
||||||
if token[0] == "sep" and token[1] == ",":
|
|
||||||
token = self.token()
|
|
||||||
else:
|
else:
|
||||||
token = self.token()
|
token = self.token()
|
||||||
return token
|
return token
|
||||||
@@ -2027,8 +2018,6 @@ class docBuilder:
|
|||||||
self.includes = includes + qemu_included_files.keys()
|
self.includes = includes + qemu_included_files.keys()
|
||||||
elif name == "libvirt-lxc":
|
elif name == "libvirt-lxc":
|
||||||
self.includes = includes + lxc_included_files.keys()
|
self.includes = includes + lxc_included_files.keys()
|
||||||
elif name == "libvirt-admin":
|
|
||||||
self.includes = includes + admin_included_files.keys()
|
|
||||||
self.modules = {}
|
self.modules = {}
|
||||||
self.headers = {}
|
self.headers = {}
|
||||||
self.idx = index()
|
self.idx = index()
|
||||||
@@ -2155,30 +2144,24 @@ class docBuilder:
|
|||||||
|
|
||||||
def serialize_macro(self, output, name):
|
def serialize_macro(self, output, name):
|
||||||
id = self.idx.macros[name]
|
id = self.idx.macros[name]
|
||||||
output.write(" <macro name='%s' file='%s'" % (name,
|
output.write(" <macro name='%s' file='%s'>\n" % (name,
|
||||||
self.modulename_file(id.header)))
|
self.modulename_file(id.header)))
|
||||||
if id.info is None:
|
if id.info is not None:
|
||||||
args = []
|
try:
|
||||||
desc = None
|
(args, desc) = id.info
|
||||||
strValue = None
|
if desc is not None and desc != "":
|
||||||
else:
|
output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
|
||||||
(args, desc, strValue) = id.info
|
self.indexString(name, desc)
|
||||||
|
for arg in args:
|
||||||
if strValue is not None:
|
(name, desc) = arg
|
||||||
output.write(" string='%s'" % strValue)
|
if desc is not None and desc != "":
|
||||||
output.write(">\n")
|
output.write(" <arg name='%s' info='%s'/>\n" % (
|
||||||
|
name, escape(desc)))
|
||||||
if desc is not None and desc != "":
|
self.indexString(name, desc)
|
||||||
output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
|
else:
|
||||||
self.indexString(name, desc)
|
output.write(" <arg name='%s'/>\n" % (name))
|
||||||
for arg in args:
|
except:
|
||||||
(name, desc) = arg
|
pass
|
||||||
if desc is not None and desc != "":
|
|
||||||
output.write(" <arg name='%s' info='%s'/>\n" % (
|
|
||||||
name, escape(desc)))
|
|
||||||
self.indexString(name, desc)
|
|
||||||
else:
|
|
||||||
output.write(" <arg name='%s'/>\n" % (name))
|
|
||||||
output.write(" </macro>\n")
|
output.write(" </macro>\n")
|
||||||
|
|
||||||
def serialize_union(self, output, field, desc):
|
def serialize_union(self, output, field, desc):
|
||||||
@@ -2568,7 +2551,7 @@ class docBuilder:
|
|||||||
|
|
||||||
|
|
||||||
def rebuild(name):
|
def rebuild(name):
|
||||||
if name not in ["libvirt", "libvirt-qemu", "libvirt-lxc", "libvirt-admin"]:
|
if name not in ["libvirt", "libvirt-qemu", "libvirt-lxc"]:
|
||||||
self.warning("rebuild() failed, unknown module %s") % name
|
self.warning("rebuild() failed, unknown module %s") % name
|
||||||
return None
|
return None
|
||||||
builder = None
|
builder = None
|
||||||
@@ -2612,7 +2595,6 @@ if __name__ == "__main__":
|
|||||||
rebuild("libvirt")
|
rebuild("libvirt")
|
||||||
rebuild("libvirt-qemu")
|
rebuild("libvirt-qemu")
|
||||||
rebuild("libvirt-lxc")
|
rebuild("libvirt-lxc")
|
||||||
rebuild("libvirt-admin")
|
|
||||||
if warnings > 0:
|
if warnings > 0:
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
else:
|
else:
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<body>
|
<body>
|
||||||
<h1>Applications using libvirt</h1>
|
<h1>Applications using <strong>libvirt</strong></h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This page provides an illustration of the wide variety of
|
This page provides an illustration of the wide variety of
|
||||||
@@ -262,16 +262,6 @@
|
|||||||
using a dashboard. Compute part uses libvirt to manage VM
|
using a dashboard. Compute part uses libvirt to manage VM
|
||||||
life-cycle, monitoring and so on.
|
life-cycle, monitoring and so on.
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt><a href="https://github.com/gustavfranssonnyvell/cherrypop">Cherrypop</a></dt>
|
|
||||||
<dd>
|
|
||||||
A cloud software with no masters or central points. Nodes
|
|
||||||
autodetect other nodes and autodistribute virtual
|
|
||||||
machines and autodivide up the workload. Also there is no
|
|
||||||
minimum limit for hosts, well, one might be nice. It's
|
|
||||||
perfect for setting up low-end servers in a cloud or a
|
|
||||||
cloud where you want the most bang for the bucks.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h2><a name="libraries">Libraries</a></h2>
|
<h2><a name="libraries">Libraries</a></h2>
|
||||||
@@ -441,19 +431,5 @@
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h2><a name="other">Other</a></h2>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt><a href="http://cuckoosandbox.org/">Cuckoo Sandbox</a></dt>
|
|
||||||
<dd>
|
|
||||||
Cuckoo Sandbox is a malware analysis system. You can throw
|
|
||||||
any suspicious file at it and in a matter of seconds Cuckoo
|
|
||||||
will provide you back some detailed results outlining what
|
|
||||||
such file did when executed inside an isolated environment.
|
|
||||||
And libvirt is one of the backends that can be used for the
|
|
||||||
isolated environment.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -2,41 +2,55 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<body>
|
<body>
|
||||||
<h1>libvirt Application Development Guides</h1>
|
<h1>libvirt Application Development Guide</h1>
|
||||||
|
|
||||||
|
<ul id="toc"></ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The libvirt API is accessible from a number of programming languages.
|
The guide is both a learning tool for developing with libvirt and an
|
||||||
At this time, there are application development guides available
|
API reference document. It is a work in progress, composed by a
|
||||||
which cover the C API and the Python API. Of the two, the Python guide
|
professional author from contributions written by members of the
|
||||||
is currently the more comprehensive document.
|
libvirt team.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Contributions to the guide are <b>VERY</b> welcome. If you'd like to get
|
||||||
|
your name on this and demonstrate your virtualisation prowess, a solid
|
||||||
|
contribution to the content here will do it. :)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a name="online">Browsable online</a></h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="http://libvirt.org/docs/libvirt-appdev-guide/en-US/html/">Application Development Guide (C language) HTML</a></li>
|
<li><a href="http://libvirt.org/guide/html/">
|
||||||
<li><a href="http://libvirt.org/docs/libvirt-appdev-guide/en-US/pdf/">Application Development Guide (C language) PDF</a></li>
|
HTML format using multiple pages</a></li>
|
||||||
<li><a href="http://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/">Application Development Guide (Python language) HTML</a></li>
|
<li><a href="http://libvirt.org/guide/html-single/">
|
||||||
<li><a href="http://libvirt.org/docs/libvirt-appdev-guide-python/en-US/pdf/">Application Development Guide (Python language) PDF</a></li>
|
HTML format using one big page</a></li>
|
||||||
|
<li><a href="http://libvirt.org/guide/pdf/Application_Development_Guide.pdf">
|
||||||
|
PDF format</a></li>
|
||||||
|
<li><a href="http://libvirt.org/guide/libvirt-0.7.5-Application_Development_Guide-en-US.epub">
|
||||||
|
ePub format</a></li>
|
||||||
|
<li><a href="http://libvirt.org/guide/txt/Application_Development_Guide.txt">
|
||||||
|
Plain text format</a></li>
|
||||||
|
<li><a href="http://libvirt.org/guide/libvirt-Application_Development_Guide-0.7.5-web-en-US-1-9.el5.src.rpm">
|
||||||
|
Source RPM format</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Contributing content</h2>
|
<h2><a name="git">GIT source repository</a></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
These guides are written in DocBook and published with the
|
The source is in a git repository:
|
||||||
publican tool, which is also used for Fedora and Red Hat
|
|
||||||
documentation. The original content is provided in GIT and
|
|
||||||
any contributions to the guide are welcome.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# C language
|
git clone git://libvirt.org/libvirt-appdev-guide.git</pre>
|
||||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-appdev-guide.git">git://libvirt.org/libvirt-appdev-guide.git</a>
|
|
||||||
|
|
||||||
# Python language
|
<p>
|
||||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-appdev-guide-python.git">git://libvirt.org/libvirt-appdev-guide-python.git</a>
|
Browsable here:
|
||||||
|
</p>
|
||||||
|
|
||||||
# Publican Style/Theme
|
<pre>
|
||||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-publican.git">git://libvirt.org/libvirt-publican.git</a>
|
<a href="http://libvirt.org/git/?p=libvirt-appdev-guide.git;a=summary">http://libvirt.org/git/?p=libvirt-appdev-guide.git;a=summary</a></pre>
|
||||||
</pre>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -71,20 +71,6 @@
|
|||||||
<pre>
|
<pre>
|
||||||
<a href="http://libvirt.org/git/?p=libvirt.git;a=summary">http://libvirt.org/git/?p=libvirt.git;a=summary</a></pre>
|
<a href="http://libvirt.org/git/?p=libvirt.git;a=summary">http://libvirt.org/git/?p=libvirt.git;a=summary</a></pre>
|
||||||
|
|
||||||
<p>
|
|
||||||
In addition to this repository, there are the following read-only git
|
|
||||||
repositories which mirror the master one. Note that we currently do not
|
|
||||||
use the full set of features on these mirrors (e.g. pull requests on
|
|
||||||
GitHub, so please don't use them). All patch review and discussion only
|
|
||||||
occurs on the <a href="contact.html">libvir-list</a> mailing list. Also
|
|
||||||
note that some repositories listed below allow HTTP checkouts too.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
<a href="https://github.com/libvirt/libvirt">https://github.com/libvirt/libvirt</a>
|
|
||||||
<a href="http://repo.or.cz/w/libvirt.git">http://repo.or.cz/w/libvirt.git</a>
|
|
||||||
<a href="https://gitlab.com/libvirt/libvirt">https://gitlab.com/libvirt/libvirt</a></pre>
|
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<h1>libvirt Application Development Guide</h1>
|
<h1>libvirt Application Development Guide</h1>
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
<li><strong><a href="drvxen.html">Xen</a></strong></li>
|
<li><strong><a href="drvxen.html">Xen</a></strong></li>
|
||||||
<li><strong><a href="drvhyperv.html">Microsoft Hyper-V</a></strong></li>
|
<li><strong><a href="drvhyperv.html">Microsoft Hyper-V</a></strong></li>
|
||||||
<li><strong><a href="drvphyp.html">IBM PowerVM (phyp)</a></strong></li>
|
<li><strong><a href="drvphyp.html">IBM PowerVM (phyp)</a></strong></li>
|
||||||
<li><strong><a href="drvvirtuozzo.html">Virtuozzo</a></strong></li>
|
<li><strong><a href="drvparallels.html">Parallels</a></strong></li>
|
||||||
<li><strong><a href="drvbhyve.html">Bhyve</a></strong> - The BSD Hypervisor</li>
|
<li><strong><a href="drvbhyve.html">Bhyve</a></strong> - The BSD Hypervisor</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@@ -250,33 +250,5 @@ attempt to boot from the first partition in the disk image.</p>
|
|||||||
<p>Caveat: <code>bootloader_args</code> does not support any quoting.
|
<p>Caveat: <code>bootloader_args</code> does not support any quoting.
|
||||||
Filenames, etc, must not have spaces or they will be tokenized incorrectly.</p>
|
Filenames, etc, must not have spaces or they will be tokenized incorrectly.</p>
|
||||||
|
|
||||||
<h3><a name="clockconfig">Clock configuration</a></h3>
|
|
||||||
|
|
||||||
<p>Originally bhyve supported only localtime for RTC. Support for UTC time was introduced in
|
|
||||||
<a href="http://svnweb.freebsd.org/changeset/base/284894">r284894</a> for <i>10-STABLE</i> and
|
|
||||||
in <a href="http://svnweb.freebsd.org/changeset/base/279225">r279225</a> for <i>-CURRENT</i>.
|
|
||||||
It's possible to use this in libvirt <span class="since">since 1.2.18</span>, just place the
|
|
||||||
following to domain XML:</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
<domain type="bhyve">
|
|
||||||
...
|
|
||||||
<clock offset='utc'/>
|
|
||||||
...
|
|
||||||
</domain>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>Please note that if you run the older bhyve version that doesn't support UTC time, you'll
|
|
||||||
fail to start a domain. As UTC is used as a default when you do not specify clock settings,
|
|
||||||
you'll need to explicitly specify 'localtime' in this case:</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
<domain type="bhyve">
|
|
||||||
...
|
|
||||||
<clock offset='localtime'/>
|
|
||||||
...
|
|
||||||
</domain>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -590,27 +590,6 @@ Note that allowing capabilities that are normally dropped by default can serious
|
|||||||
affect the security of the container and the host.
|
affect the security of the container and the host.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="share">Inherit namespaces</a></h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Libvirt allows you to inherit the namespace from container/process just like lxc tools
|
|
||||||
or docker provides to share the network namespace. The following can be used to share
|
|
||||||
required namespaces. If we want to share only one then the other namespaces can be ignored.
|
|
||||||
The netns option is specific to sharenet. It can be used in cases we want to use existing network namespace
|
|
||||||
rather than creating new network namespace for the container. In this case privnet option will be
|
|
||||||
ignored.
|
|
||||||
</p>
|
|
||||||
<pre>
|
|
||||||
<domain type='lxc' xmlns:lxc='http://libvirt.org/schemas/domain/lxc/1.0'>
|
|
||||||
...
|
|
||||||
<lxc:namespace>
|
|
||||||
<lxc:sharenet type='netns' value='red'/>
|
|
||||||
<lxc:shareuts type='name' value='container1'/>
|
|
||||||
<lxc:shareipc type='pid' value='12345'/>
|
|
||||||
</lxc:namespace>
|
|
||||||
</domain>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<h2><a name="usage">Container usage / management</a></h2>
|
<h2><a name="usage">Container usage / management</a></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@@ -2,43 +2,43 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<body>
|
<body>
|
||||||
<h1>Virtuozzo driver</h1>
|
<h1>Parallels Cloud Server driver</h1>
|
||||||
<ul id="toc"></ul>
|
<ul id="toc"></ul>
|
||||||
<p>
|
<p>
|
||||||
The libvirt vz driver can manage Virtuozzo starting from version 6.0.
|
The libvirt Parallels driver can manage Parallels Cloud Server starting from version 6.0.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h2><a name="project">Project Links</a></h2>
|
<h2><a name="project">Project Links</a></h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The <a href="http://www.odin.com/products/virtuozzo/">Virtuozzo</a> Solution.
|
The <a href="http://www.parallels.com/products/server/baremetal/sp/">Parallels Cloud Server</a> Virtualization Solution.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<h2><a name="uri">Connections to the Virtuozzo driver</a></h2>
|
<h2><a name="uri">Connections to the Parallels Cloud Server driver</a></h2>
|
||||||
<p>
|
<p>
|
||||||
The libvirt Virtuozzo driver is a single-instance privileged driver, with a driver name of 'virtuozzo'. Some example connection URIs for the libvirt driver are:
|
The libvirt Parallels driver is a single-instance privileged driver, with a driver name of 'parallels'. Some example connection URIs for the libvirt driver are:
|
||||||
</p>
|
</p>
|
||||||
<pre>
|
<pre>
|
||||||
vz:///system (local access)
|
parallels:///system (local access)
|
||||||
vz+unix:///system (local access)
|
parallels+unix:///system (local access)
|
||||||
vz://example.com/system (remote access, TLS/x509)
|
parallels://example.com/system (remote access, TLS/x509)
|
||||||
vz+tcp://example.com/system (remote access, SASl/Kerberos)
|
parallels+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||||
vz+ssh://root@example.com/system (remote access, SSH tunnelled)
|
parallels+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<h2><a name="example">Example guest domain XML configuration</a></h2>
|
<h2><a name="example">Example guest domain XML configuration</a></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Virtuozzo driver require at least one hard disk for new domains
|
Parallels driver require at least one hard disk for new domains
|
||||||
at this time. It is used for defining directory, where VM should
|
at this time. It is used for defining directory, where VM should
|
||||||
be created.
|
be created.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<domain type='vz'>
|
<domain type='parallels'>
|
||||||
<name>demo</name>
|
<name>demo</name>
|
||||||
<uuid>54cdecad-4492-4e31-a209-33cc21d64057</uuid>
|
<uuid>54cdecad-4492-4e31-a209-33cc21d64057</uuid>
|
||||||
<description>some description</description>
|
<description>some description</description>
|
@@ -8,7 +8,9 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
The libvirt KVM/QEMU driver can manage any QEMU emulator from
|
The libvirt KVM/QEMU driver can manage any QEMU emulator from
|
||||||
version 0.12.0 or later.
|
version 0.8.1 or later. It can also manage Xenner, which
|
||||||
|
provides the same QEMU command line syntax and monitor
|
||||||
|
interaction.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2><a name="project">Project Links</a></h2>
|
<h2><a name="project">Project Links</a></h2>
|
||||||
@@ -41,6 +43,12 @@
|
|||||||
node. If both are found, then KVM fullyvirtualized, hardware accelerated
|
node. If both are found, then KVM fullyvirtualized, hardware accelerated
|
||||||
guests will be available.
|
guests will be available.
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Xenner hypervisor</strong>: The driver will probe <code>/usr/bin</code>
|
||||||
|
for the presence of <code>xenner</code> and <code>/dev/kvm</code> device
|
||||||
|
node. If both are found, then Xen paravirtualized guests can be run using
|
||||||
|
the KVM hardware acceleration.
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2><a name="uris">Connections to QEMU driver</a></h2>
|
<h2><a name="uris">Connections to QEMU driver</a></h2>
|
||||||
@@ -639,5 +647,9 @@ $ virsh domxml-to-native qemu-argv demo.xml
|
|||||||
</devices>
|
</devices>
|
||||||
</domain></pre>
|
</domain></pre>
|
||||||
|
|
||||||
|
<h3>Xen paravirtualized guests with hardware acceleration</h3>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
BIN
docs/et.png
Normal file
BIN
docs/et.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
BIN
docs/footer_corner.png
Normal file
BIN
docs/footer_corner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
BIN
docs/footer_pattern.png
Normal file
BIN
docs/footer_pattern.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 817 B |
@@ -162,7 +162,7 @@
|
|||||||
<suspend_mem/>
|
<suspend_mem/>
|
||||||
<suspend_disk/>
|
<suspend_disk/>
|
||||||
<suspend_hybrid/>
|
<suspend_hybrid/>
|
||||||
</power_management>
|
<power_management/>
|
||||||
</host></span>
|
</host></span>
|
||||||
|
|
||||||
<!-- xen-3.0-x86_64 -->
|
<!-- xen-3.0-x86_64 -->
|
||||||
|
@@ -375,12 +375,6 @@
|
|||||||
<entry name='product'>Virt-Manager</entry>
|
<entry name='product'>Virt-Manager</entry>
|
||||||
<entry name='version'>0.9.4</entry>
|
<entry name='version'>0.9.4</entry>
|
||||||
</system>
|
</system>
|
||||||
<baseBoard>
|
|
||||||
<entry name='manufacturer'>LENOVO</entry>
|
|
||||||
<entry name='product'>20BE0061MC</entry>
|
|
||||||
<entry name='version'>0B98401 Pro</entry>
|
|
||||||
<entry name='serial'>W1KS427111E</entry>
|
|
||||||
</baseBoard>
|
|
||||||
</sysinfo>
|
</sysinfo>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
@@ -441,32 +435,11 @@
|
|||||||
<dt><code>family</code></dt>
|
<dt><code>family</code></dt>
|
||||||
<dd>Identify the family a particular computer belongs to.</dd>
|
<dd>Identify the family a particular computer belongs to.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</dd>
|
NB: Incorrectly supplied entries in either the <code>bios</code>
|
||||||
<dt><code>baseBoard</code></dt>
|
or <code>system</code> blocks will be ignored without error.
|
||||||
<dd>
|
Other than <code>uuid</code> validation and <code>date</code>
|
||||||
This is block 2 of SMBIOS. This element can be repeated multiple
|
format checking, all values are passed as strings to the
|
||||||
times to describe all the base boards; however, not all
|
hypervisor driver.
|
||||||
hypervisors necessarily support the repetition. The element can
|
|
||||||
have the following children:
|
|
||||||
<dl>
|
|
||||||
<dt><code>manufacturer</code></dt>
|
|
||||||
<dd>Manufacturer of BIOS</dd>
|
|
||||||
<dt><code>product</code></dt>
|
|
||||||
<dd>Product Name</dd>
|
|
||||||
<dt><code>version</code></dt>
|
|
||||||
<dd>Version of the product</dd>
|
|
||||||
<dt><code>serial</code></dt>
|
|
||||||
<dd>Serial number</dd>
|
|
||||||
<dt><code>asset</code></dt>
|
|
||||||
<dd>Asset tag</dd>
|
|
||||||
<dt><code>location</code></dt>
|
|
||||||
<dd>Location in chassis</dd>
|
|
||||||
</dl>
|
|
||||||
NB: Incorrectly supplied entries for the
|
|
||||||
<code>bios</code>, <code>system</code> or <code>baseBoard</code>
|
|
||||||
blocks will be ignored without error. Other than <code>uuid</code>
|
|
||||||
validation and <code>date</code> format checking, all values are
|
|
||||||
passed as strings to the hypervisor driver.
|
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -726,7 +699,8 @@
|
|||||||
If no <code>iothreadids</code> are defined, then libvirt numbers
|
If no <code>iothreadids</code> are defined, then libvirt numbers
|
||||||
IOThreads from 1 to the number of <code>iothreads</code> available
|
IOThreads from 1 to the number of <code>iothreads</code> available
|
||||||
for the domain. For real-time schedulers (<code>fifo</code>,
|
for the domain. For real-time schedulers (<code>fifo</code>,
|
||||||
<code>rr</code>), priority must be specified as
|
<code>rr</code>), priority must real-time schedulers
|
||||||
|
(<code>fifo</code>, <code>rr</code>), priority must be specified as
|
||||||
well (and is ignored for non-real-time ones). The value range
|
well (and is ignored for non-real-time ones). The value range
|
||||||
for the priority depends on the host kernel (usually 1-99).
|
for the priority depends on the host kernel (usually 1-99).
|
||||||
<span class="since">Since 1.2.13</span>
|
<span class="since">Since 1.2.13</span>
|
||||||
@@ -1084,7 +1058,7 @@
|
|||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<cpu mode='host-passthrough'>
|
<cpu mode='host-passthrough'/>
|
||||||
<feature policy='disable' name='lahf_lm'/>
|
<feature policy='disable' name='lahf_lm'/>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
@@ -1460,17 +1434,11 @@
|
|||||||
<relaxed state='on'/>
|
<relaxed state='on'/>
|
||||||
<vapic state='on'/>
|
<vapic state='on'/>
|
||||||
<spinlocks state='on' retries='4096'/>
|
<spinlocks state='on' retries='4096'/>
|
||||||
<vpindex state='on'/>
|
|
||||||
<runtime state='on'/>
|
|
||||||
<synic state='on'/>
|
|
||||||
<reset state='on'/>
|
|
||||||
<vendor_id state='on' value='KVM Hv'/>
|
|
||||||
</hyperv>
|
</hyperv>
|
||||||
<kvm>
|
<kvm>
|
||||||
<hidden state='on'/>
|
<hidden state='on'/>
|
||||||
</kvm>
|
</kvm>
|
||||||
<pvspinlock state='on'/>
|
<pvspinlock/>
|
||||||
<gic version='2'/>
|
|
||||||
|
|
||||||
</features>
|
</features>
|
||||||
...</pre>
|
...</pre>
|
||||||
@@ -1499,10 +1467,8 @@
|
|||||||
Interrupt) for the guest.
|
Interrupt) for the guest.
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>hap</code></dt>
|
<dt><code>hap</code></dt>
|
||||||
<dd>Depending on the <code>state</code> attribute (values <code>on</code>,
|
<dd>Enable use of Hardware Assisted Paging if available in
|
||||||
<code>off</code>) enable or disable use of Hardware Assisted Paging.
|
the hardware.
|
||||||
The default is <code>on</code> if the hypervisor detects availability
|
|
||||||
of Hardware Assisted Paging.
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>viridian</code></dt>
|
<dt><code>viridian</code></dt>
|
||||||
<dd>Enable Viridian hypervisor extensions for paravirtualizing
|
<dd>Enable Viridian hypervisor extensions for paravirtualizing
|
||||||
@@ -1528,55 +1494,19 @@
|
|||||||
<td>relaxed</td>
|
<td>relaxed</td>
|
||||||
<td>Relax constraints on timers</td>
|
<td>Relax constraints on timers</td>
|
||||||
<td> on, off</td>
|
<td> on, off</td>
|
||||||
<td><span class="since">1.0.0 (QEMU 2.0)</span></td>
|
<td><span class="since">1.0.0 (QEMU only)</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>vapic</td>
|
<td>vapic</td>
|
||||||
<td>Enable virtual APIC</td>
|
<td>Enable virtual APIC</td>
|
||||||
<td>on, off</td>
|
<td>on, off</td>
|
||||||
<td><span class="since">1.1.0 (QEMU 2.0)</span></td>
|
<td><span class="since">1.1.0 (QEMU only)</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>spinlocks</td>
|
<td>spinlocks</td>
|
||||||
<td>Enable spinlock support</td>
|
<td>Enable spinlock support</td>
|
||||||
<td>on, off; retries - at least 4095</td>
|
<td>on, off; retries - at least 4095</td>
|
||||||
<td><span class="since">1.1.0 (QEMU 2.0)</span></td>
|
<td><span class="since">1.1.0 (QEMU only)</span></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>vpindex</td>
|
|
||||||
<td>Virtual processor index</td>
|
|
||||||
<td> on, off</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>runtime</td>
|
|
||||||
<td>Processor time spent on running guest code and on behalf of guest code</td>
|
|
||||||
<td> on, off</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>synic</td>
|
|
||||||
<td>Enable Synthetic Interrupt Controller (SyNIC)</td>
|
|
||||||
<td> on, off</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.6)</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>stimer</td>
|
|
||||||
<td>Enable SyNIC timers</td>
|
|
||||||
<td> on, off</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.6)</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>reset</td>
|
|
||||||
<td>Enable hypervisor reset</td>
|
|
||||||
<td> on, off</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>vendor_id</td>
|
|
||||||
<td>Set hypervisor vendor id</td>
|
|
||||||
<td>on, off; value - string, up to 12 characters</td>
|
|
||||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -1609,22 +1539,6 @@
|
|||||||
performance monitoring unit for the guest.
|
performance monitoring unit for the guest.
|
||||||
<span class="since">Since 1.2.12</span>
|
<span class="since">Since 1.2.12</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>vmport</code></dt>
|
|
||||||
<dd>Depending on the <code>state</code> attribute (values <code>on</code>,
|
|
||||||
<code>off</code>, default <code>on</code>) enable or disable
|
|
||||||
the emulation of VMware IO port, for vmmouse etc.
|
|
||||||
<span class="since">Since 1.2.16</span>
|
|
||||||
</dd>
|
|
||||||
<dt><code>gic</code></dt>
|
|
||||||
<dd>Enable for architectures using a General Interrupt
|
|
||||||
Controller instead of APIC in order to handle interrupts.
|
|
||||||
For example, the 'aarch64' architecture uses
|
|
||||||
<code>gic</code> instead of <code>apic</code>. The optional
|
|
||||||
attribute <code>version</code> specifies the GIC version;
|
|
||||||
however, it may not be supported by all hypervisors. Accepted
|
|
||||||
values are <code>2</code>, <code>3</code> and <code>host</code>.
|
|
||||||
<span class="since">Since 1.2.16</span>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3><a name="elementsTime">Time keeping</a></h3>
|
<h3><a name="elementsTime">Time keeping</a></h3>
|
||||||
@@ -2014,13 +1928,8 @@
|
|||||||
defaulting to "disk".
|
defaulting to "disk".
|
||||||
<p>
|
<p>
|
||||||
Using "lun" (<span class="since">since 0.9.10</span>) is only
|
Using "lun" (<span class="since">since 0.9.10</span>) is only
|
||||||
valid when the <code>type</code> is "block" or "network" for
|
valid when type is "block" or "network" using the iSCSI protocol,
|
||||||
<code>protocol='iscsi'</code> or when the <code>type</code>
|
and behaves identically to "disk",
|
||||||
is "volume" when using an iSCSI source <code>pool</code>
|
|
||||||
for <code>mode</code> "host" or as an
|
|
||||||
<a href="http://wiki.libvirt.org/page/NPIV_in_libvirt">NPIV</a>
|
|
||||||
virtual Host Bus Adapter (vHBA) using a Fibre Channel storage pool.
|
|
||||||
Configured in this manner, the LUN behaves identically to "disk",
|
|
||||||
except that generic SCSI commands from the guest are accepted
|
except that generic SCSI commands from the guest are accepted
|
||||||
and passed through to the physical device. Also note that
|
and passed through to the physical device. Also note that
|
||||||
device='lun' will only be recognized for actual raw devices,
|
device='lun' will only be recognized for actual raw devices,
|
||||||
@@ -2048,10 +1957,10 @@
|
|||||||
<dt><code>sgio</code> attribute
|
<dt><code>sgio</code> attribute
|
||||||
<span class="since">since 1.0.2</span></dt>
|
<span class="since">since 1.0.2</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
If supported by the hypervisor and OS, indicates whether
|
Indicates whether the kernel will filter unprivileged
|
||||||
unprivileged SG_IO commands are filtered for the disk. Valid
|
SG_IO commands for the disk, valid settings are "filtered" or
|
||||||
settings are "filtered" or "unfiltered" where the default is
|
"unfiltered". Defaults to "filtered". Similar to <code>rawio</code>,
|
||||||
"filtered". Only available when the <code>device</code> is 'lun'.
|
<code>sgio</code> is only valid for device 'lun'.
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>snapshot</code> attribute
|
<dt><code>snapshot</code> attribute
|
||||||
<span class="since">since 0.9.5</span></dt>
|
<span class="since">since 0.9.5</span></dt>
|
||||||
@@ -2137,13 +2046,6 @@
|
|||||||
Using "host" as the <code>mode</code> value indicates to use the
|
Using "host" as the <code>mode</code> value indicates to use the
|
||||||
LUN's path as it shows up on host (e.g.
|
LUN's path as it shows up on host (e.g.
|
||||||
'file=/dev/disk/by-path/ip-example.com:3260-iscsi-iqn.2013-07.com.example:iscsi-pool-lun-1').
|
'file=/dev/disk/by-path/ip-example.com:3260-iscsi-iqn.2013-07.com.example:iscsi-pool-lun-1').
|
||||||
|
|
||||||
Using a LUN from an iSCSI source pool provides the same
|
|
||||||
features as a <code>disk</code> configured using
|
|
||||||
<code>type</code> 'block' or 'network and <code>device</code>
|
|
||||||
of 'lun' with respect to how the LUN is presented to and
|
|
||||||
may used by the guest.
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
@@ -2195,7 +2097,7 @@
|
|||||||
<td> rbd </td>
|
<td> rbd </td>
|
||||||
<td> monitor servers of RBD </td>
|
<td> monitor servers of RBD </td>
|
||||||
<td> one or more </td>
|
<td> one or more </td>
|
||||||
<td> librados default </td>
|
<td> 6789 </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> sheepdog </td>
|
<td> sheepdog </td>
|
||||||
@@ -2584,9 +2486,6 @@
|
|||||||
<dd>If present, this specify serial number of virtual hard drive.
|
<dd>If present, this specify serial number of virtual hard drive.
|
||||||
For example, it may look
|
For example, it may look
|
||||||
like <code><serial>WD-WMAP9A966149</serial></code>.
|
like <code><serial>WD-WMAP9A966149</serial></code>.
|
||||||
Not supported for scsi-block devices, that is those using
|
|
||||||
disk <code>type</code> 'block' using <code>device</code> 'lun'
|
|
||||||
on <code>bus</code> 'scsi'.
|
|
||||||
<span class="since">Since 0.7.1</span>
|
<span class="since">Since 0.7.1</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>wwn</code></dt>
|
<dt><code>wwn</code></dt>
|
||||||
@@ -2819,7 +2718,7 @@
|
|||||||
attribute provides the format type. For example, LXC
|
attribute provides the format type. For example, LXC
|
||||||
supports a type of "loop", with a format of "raw" or
|
supports a type of "loop", with a format of "raw" or
|
||||||
"nbd" with any format. QEMU supports a type of "path"
|
"nbd" with any format. QEMU supports a type of "path"
|
||||||
or "handle", but no formats. Virtuozzo driver supports
|
or "handle", but no formats. Parallels driver supports
|
||||||
a type of "ploop" with a format of "ploop".
|
a type of "ploop" with a format of "ploop".
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -2912,7 +2811,7 @@
|
|||||||
<dd>Drive addresses have the following additional
|
<dd>Drive addresses have the following additional
|
||||||
attributes: <code>controller</code> (a 2-digit controller
|
attributes: <code>controller</code> (a 2-digit controller
|
||||||
number), <code>bus</code> (a 2-digit bus number),
|
number), <code>bus</code> (a 2-digit bus number),
|
||||||
<code>target</code> (a 2-digit target number),
|
<code>target</code> (a 2-digit bus number),
|
||||||
and <code>unit</code> (a 2-digit unit number on the bus).
|
and <code>unit</code> (a 2-digit unit number on the bus).
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>type='virtio-serial'</code></dt>
|
<dt><code>type='virtio-serial'</code></dt>
|
||||||
@@ -3044,14 +2943,6 @@
|
|||||||
a sector is 512 bytes.
|
a sector is 512 bytes.
|
||||||
<span class="since">Since 1.2.7 (QEMU and KVM only)</span>
|
<span class="since">Since 1.2.7 (QEMU and KVM only)</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>ioeventfd</code></dt>
|
|
||||||
<dd>
|
|
||||||
The optional <code>ioeventfd</code> attribute specifies
|
|
||||||
whether the controller should use
|
|
||||||
<a href='https://patchwork.kernel.org/patch/43390/'>
|
|
||||||
I/O asynchronous handling</a> or not. Accepted values are
|
|
||||||
"on" and "off". <span class="since">Since 1.2.18</span>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
<p>
|
<p>
|
||||||
USB companion controllers have an optional
|
USB companion controllers have an optional
|
||||||
@@ -3059,11 +2950,6 @@
|
|||||||
relationship of the companion to its master controller.
|
relationship of the companion to its master controller.
|
||||||
A companion controller is on the same bus as its master, so
|
A companion controller is on the same bus as its master, so
|
||||||
the companion <code>index</code> value should be equal.
|
the companion <code>index</code> value should be equal.
|
||||||
Not all controller models can be used as companion controllers
|
|
||||||
and libvirt might provide some sensible defaults (settings
|
|
||||||
of <code>master startport</code> and <code>function</code> of an
|
|
||||||
address) for some particular models.
|
|
||||||
Preferred companion controllers are <code>ich-uhci[123]</code>.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
@@ -3083,13 +2969,7 @@
|
|||||||
<p>
|
<p>
|
||||||
PCI controllers have an optional <code>model</code> attribute with
|
PCI controllers have an optional <code>model</code> attribute with
|
||||||
possible values <code>pci-root</code>, <code>pcie-root</code>,
|
possible values <code>pci-root</code>, <code>pcie-root</code>,
|
||||||
<code>pcie-root-port</code>, <code>pci-bridge</code>,
|
<code>pci-bridge</code>, or <code>dmi-to-pci-bridge</code>.
|
||||||
<code>dmi-to-pci-bridge</code>, <code>pcie-switch-upstream-port</code>, or
|
|
||||||
<code>pcie-switch-downstream-port</code>.
|
|
||||||
(pci-root and pci-bridge <span class="since">since 1.0.5</span>,
|
|
||||||
pcie-root and dmi-to-pci-bridge <span class="since">since
|
|
||||||
1.1.2</span>, pcie-root-port, pcie-switch-upstream-port, and
|
|
||||||
pcie-switch-downstream-port <span class="since">since 1.2.19</span>)
|
|
||||||
The root controllers (<code>pci-root</code> and <code>pcie-root</code>)
|
The root controllers (<code>pci-root</code> and <code>pcie-root</code>)
|
||||||
have an optional <code>pcihole64</code> element specifying how big
|
have an optional <code>pcihole64</code> element specifying how big
|
||||||
(in kilobytes, or in the unit specified by <code>pcihole64</code>'s
|
(in kilobytes, or in the unit specified by <code>pcihole64</code>'s
|
||||||
@@ -3098,61 +2978,6 @@
|
|||||||
are recent enough to support 64-bit PCI holes, unless this is disabled
|
are recent enough to support 64-bit PCI holes, unless this is disabled
|
||||||
(set to 0). <span class="since">Since 1.1.2 (QEMU only)</span>
|
(set to 0). <span class="since">Since 1.1.2 (QEMU only)</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
PCI controllers also have an optional
|
|
||||||
subelement <code><model></code> with an attribute
|
|
||||||
<code>name</code>. The name attribute holds the name of the
|
|
||||||
specific device that qemu is emulating (e.g. "i82801b11-bridge")
|
|
||||||
rather than simply the class of device ("dmi-to-pci-bridge",
|
|
||||||
"pci-bridge"), which is set in the controller element's
|
|
||||||
model <b>attribute</b>. In almost all cases, you should not
|
|
||||||
manually add a <code><model></code> subelement to a
|
|
||||||
controller, nor should you modify one that is automatically
|
|
||||||
generated by libvirt. <span class="since">Since 1.2.19 (QEMU
|
|
||||||
only).</span>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
PCI controllers also have an optional
|
|
||||||
subelement <code><target></code> with the attributes
|
|
||||||
listed below. These are configurable items that 1) are visible
|
|
||||||
to the guest OS so must be preserved for guest ABI
|
|
||||||
compatibility, and 2) are usually left to default values or
|
|
||||||
derived automatically by libvirt. In almost all cases, you
|
|
||||||
should not manually add a <code><target></code> subelement
|
|
||||||
to a controller, nor should you modify the values in the those
|
|
||||||
that are automatically generated by
|
|
||||||
libvirt. <span class="since">Since 1.2.19 (QEMU only).</span>
|
|
||||||
</p>
|
|
||||||
<dl>
|
|
||||||
<dt><code>chassisNr</code></dt>
|
|
||||||
<dd>
|
|
||||||
PCI controllers that have attribute model="pci-bridge", can
|
|
||||||
also have a <code>chassisNr</code> attribute in
|
|
||||||
the <code><target></code> subelement, which is used to
|
|
||||||
control QEMU's "chassis_nr" option for the pci-bridge device
|
|
||||||
(normally libvirt automatically sets this to the same value as
|
|
||||||
the index attribute of the pci controller). If set, chassisNr
|
|
||||||
must be between 0 and 255.
|
|
||||||
</dd>
|
|
||||||
<dt><code>chassis</code></dt>
|
|
||||||
<dd>
|
|
||||||
pcie-root-port and pcie-switch-downstream-port controllers can
|
|
||||||
also have a <code>chassis</code> attribute in
|
|
||||||
the <code><target></code> subelement, which is used to
|
|
||||||
set the controller's "chassis" configuration value, which is
|
|
||||||
visible to the virtual machine. If set, chassis must be
|
|
||||||
between 0 and 255.
|
|
||||||
</dd>
|
|
||||||
<dt><code>port</code></dt>
|
|
||||||
<dd>
|
|
||||||
pcie-root-port and pcie-switch-downstream-port controllers can
|
|
||||||
also have a <code>port</code> attribute in
|
|
||||||
the <code><target></code> subelement, which
|
|
||||||
is used to set the controller's "port" configuration value,
|
|
||||||
which is visible to the virtual machine. If set, port must be
|
|
||||||
between 0 and 255.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
<p>
|
<p>
|
||||||
For machine types which provide an implicit PCI bus, the pci-root
|
For machine types which provide an implicit PCI bus, the pci-root
|
||||||
controller with index=0 is auto-added and required to use PCI devices.
|
controller with index=0 is auto-added and required to use PCI devices.
|
||||||
@@ -3164,6 +2989,7 @@
|
|||||||
only refer to PCI buses provided by already specified PCI controllers.
|
only refer to PCI buses provided by already specified PCI controllers.
|
||||||
Leaving gaps in the PCI controller indexes might lead to an invalid
|
Leaving gaps in the PCI controller indexes might lead to an invalid
|
||||||
configuration.
|
configuration.
|
||||||
|
(pci-root and pci-bridge <span class="since">since 1.0.5</span>)
|
||||||
</p>
|
</p>
|
||||||
<pre>
|
<pre>
|
||||||
...
|
...
|
||||||
@@ -3180,53 +3006,20 @@
|
|||||||
bus (for example, the machine types based on the Q35 chipset),
|
bus (for example, the machine types based on the Q35 chipset),
|
||||||
the pcie-root controller with index=0 is auto-added to the
|
the pcie-root controller with index=0 is auto-added to the
|
||||||
domain's configuration. pcie-root has also no address, provides
|
domain's configuration. pcie-root has also no address, provides
|
||||||
31 slots (numbered 1-31) that can be used to attach PCIe or PCI
|
31 slots (numbered 1-31) and can only be used to attach PCIe
|
||||||
devices (although libvirt will never auto-assign a PCI device to
|
devices. In order to connect standard PCI devices on a system
|
||||||
a PCIe slot, it will allow manual specification of such an
|
which has a pcie-root controller, a pci controller
|
||||||
assignment). Devices connected to pcie-root cannot be
|
|
||||||
hotplugged. In order to make standard PCI slots available on a
|
|
||||||
system which has a pcie-root controller, a pci controller
|
|
||||||
with <code>model='dmi-to-pci-bridge'</code> is automatically
|
with <code>model='dmi-to-pci-bridge'</code> is automatically
|
||||||
added, usually at the defacto standard location of slot=0x1e. A
|
added. A dmi-to-pci-bridge controller plugs into a PCIe slot (as
|
||||||
dmi-to-pci-bridge controller plugs into a PCIe slot (as provided
|
provided by pcie-root), and itself provides 31 standard PCI
|
||||||
by pcie-root), and itself provides 31 standard PCI slots (which
|
slots (which are not hot-pluggable). In order to have
|
||||||
also do not support device hotplug). In order to have
|
|
||||||
hot-pluggable PCI slots in the guest system, a pci-bridge
|
hot-pluggable PCI slots in the guest system, a pci-bridge
|
||||||
controller will also be automatically created and connected to
|
controller will also be automatically created and connected to
|
||||||
one of the slots of the auto-created dmi-to-pci-bridge
|
one of the slots of the auto-created dmi-to-pci-bridge
|
||||||
controller; all guest PCI devices with addresses that are
|
controller; all guest devices with PCI addresses that are
|
||||||
auto-determined by libvirt will be placed on this pci-bridge
|
auto-determined by libvirt will be placed on this pci-bridge
|
||||||
device. (<span class="since">since 1.1.2</span>).
|
device. (<span class="since">since 1.1.2</span>).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
Domains with an implicit pcie-root can also add controllers
|
|
||||||
with <code>model='pcie-root-port'</code>,
|
|
||||||
<code>model='pcie-switch-upstream-port'</code>,
|
|
||||||
and <code>model='pcie-switch-downstream-port'</code>. pcie-root-port
|
|
||||||
is a simple type of bridge device that can connect only to one
|
|
||||||
of the 31 slots on the pcie-root bus on its upstream side, and
|
|
||||||
makes a single (PCIe, hotpluggable) port available on the
|
|
||||||
downstream side (at slot='0'). pcie-root-port can be used to
|
|
||||||
provide a single slot to later hotplug a PCIe device (but is not
|
|
||||||
itself hotpluggable - it must be in the configuration when the
|
|
||||||
domain is started).
|
|
||||||
(<span class="since">since 1.2.19</span>)
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
pcie-switch-upstream-port is a more flexible (but also more
|
|
||||||
complex) device that can only plug into a pcie-root-port or
|
|
||||||
pcie-switch-downstream-port on the upstream side (and only
|
|
||||||
before the domain is started - it is not hot-pluggable), and
|
|
||||||
provides 32 ports on the downstream side (slot='0' - slot='31')
|
|
||||||
that accept only pcie-switch-downstream-port devices; each
|
|
||||||
pcie-switch-downstream-port device can only plug into a
|
|
||||||
pcie-switch-upstream-port on its upstream side (again, not
|
|
||||||
hot-pluggable), and on its downstream side provides a single
|
|
||||||
hotpluggable pcie port that can accept any standard pci or pcie
|
|
||||||
device (or another pcie-switch-upstream-port), i.e. identical in
|
|
||||||
function to a pcie-root-port. (<span class="since">since
|
|
||||||
1.2.19</span>)
|
|
||||||
</p>
|
|
||||||
<pre>
|
<pre>
|
||||||
...
|
...
|
||||||
<devices>
|
<devices>
|
||||||
@@ -3327,7 +3120,7 @@
|
|||||||
<hostdev mode='subsystem' type='scsi' sgio='filtered' rawio='yes'>
|
<hostdev mode='subsystem' type='scsi' sgio='filtered' rawio='yes'>
|
||||||
<source>
|
<source>
|
||||||
<adapter name='scsi_host0'/>
|
<adapter name='scsi_host0'/>
|
||||||
<address bus='0' target='0' unit='0'/>
|
<address type='scsi' bus='0' target='0' unit='0'/>
|
||||||
</source>
|
</source>
|
||||||
<readonly/>
|
<readonly/>
|
||||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
@@ -3378,12 +3171,11 @@
|
|||||||
</dd>
|
</dd>
|
||||||
<dt>scsi</dt>
|
<dt>scsi</dt>
|
||||||
<dd>For SCSI devices, user is responsible to make sure the device
|
<dd>For SCSI devices, user is responsible to make sure the device
|
||||||
is not used by host. If supported by the hypervisor and OS, the
|
is not used by host. The optional <code>sgio</code>
|
||||||
optional <code>sgio</code> (<span class="since">since 1.0.6</span>)
|
(<span class="since">since 1.0.6</span>) attribute indicates
|
||||||
attribute indicates whether unprivileged SG_IO commands are
|
whether the kernel will filter unprivileged SG_IO commands for
|
||||||
filtered for the disk. Valid settings are "filtered" or
|
the disk, valid settings are "filtered" or "unfiltered".
|
||||||
"unfiltered", where the default is "filtered".
|
The default is "filtered". The optional <code>rawio</code>
|
||||||
The optional <code>rawio</code>
|
|
||||||
(<span class="since">since 1.2.9</span>) attribute indicates
|
(<span class="since">since 1.2.9</span>) attribute indicates
|
||||||
whether the lun needs the rawio capability. Valid settings are
|
whether the lun needs the rawio capability. Valid settings are
|
||||||
"yes" or "no". See the rawio description within the
|
"yes" or "no". See the rawio description within the
|
||||||
@@ -3436,14 +3228,7 @@
|
|||||||
</dd>
|
</dd>
|
||||||
<dt>scsi</dt>
|
<dt>scsi</dt>
|
||||||
<dd>SCSI devices are described by both the <code>adapter</code>
|
<dd>SCSI devices are described by both the <code>adapter</code>
|
||||||
and <code>address</code> elements. The <code>address</code>
|
and <code>address</code> elements.
|
||||||
element includes a <code>bus</code> attribute (a 2-digit bus
|
|
||||||
number), a <code>target</code> attribute (a 10-digit target
|
|
||||||
number), and a <code>unit</code> attribute (a 20-digit unit
|
|
||||||
number on the bus). Not all hypervisors support larger
|
|
||||||
<code>target</code> and <code>unit</code> values. It is up
|
|
||||||
to each hypervisor to determine the maximum value supported
|
|
||||||
for the adapter.
|
|
||||||
<p>
|
<p>
|
||||||
<span class="since">Since 1.2.8</span>, the <code>source</code>
|
<span class="since">Since 1.2.8</span>, the <code>source</code>
|
||||||
element of a SCSI device may contain the <code>protocol</code>
|
element of a SCSI device may contain the <code>protocol</code>
|
||||||
@@ -3496,8 +3281,8 @@
|
|||||||
(starting with 0x) or octal (starting with 0) form.
|
(starting with 0x) or octal (starting with 0) form.
|
||||||
For PCI devices the element carries 4 attributes allowing to designate
|
For PCI devices the element carries 4 attributes allowing to designate
|
||||||
the device as can be found with the <code>lspci</code> or
|
the device as can be found with the <code>lspci</code> or
|
||||||
with <code>virsh nodedev-list</code>. For SCSI devices a 'drive'
|
with <code>virsh
|
||||||
address type must be used. <a href="#elementsAddress">See above</a> for
|
nodedev-list</code>. <a href="#elementsAddress">See above</a> for
|
||||||
more details on the address element.</dd>
|
more details on the address element.</dd>
|
||||||
<dt><code>driver</code></dt>
|
<dt><code>driver</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -4302,30 +4087,6 @@
|
|||||||
<source address='192.168.0.1' port='5558'/>
|
<source address='192.168.0.1' port='5558'/>
|
||||||
</interface>
|
</interface>
|
||||||
</devices>
|
</devices>
|
||||||
...</pre>
|
|
||||||
|
|
||||||
<h5><a name="elementsNICSUDP">UDP unicast tunnel</a></h5>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
A UDP unicast architecture provides a virtual network which enables
|
|
||||||
connections between QEMU instances using QEMU's UDP infrastructure.
|
|
||||||
|
|
||||||
The xml "source" address is the endpoint address to which the UDP socket
|
|
||||||
packets will be sent from the host running QEMU.
|
|
||||||
The xml "local" address is the address of the interface from which the
|
|
||||||
UDP socket packets will originate from the QEMU host.
|
|
||||||
<span class="since">Since 1.2.20</span></p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
...
|
|
||||||
<devices>
|
|
||||||
<interface type='udp'>
|
|
||||||
<mac address='52:54:00:22:c9:42'/>
|
|
||||||
<source address='127.0.0.1' port='11115'>
|
|
||||||
<local address='127.0.0.1' port='11116'/>
|
|
||||||
</source>
|
|
||||||
</interface>
|
|
||||||
</devices>
|
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<h5><a name="elementsNICSModel">Setting the NIC model</a></h5>
|
<h5><a name="elementsNICSModel">Setting the NIC model</a></h5>
|
||||||
@@ -4413,11 +4174,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<span class="since">Since 1.0.5 (QEMU and KVM only, requires
|
<span class="since">Since 1.0.5 (QEMU and KVM only, requires
|
||||||
kernel 3.6 or newer)</span>
|
kernel 3.6 or newer)</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dd>
|
|
||||||
For interfaces of type='vhostuser', the <code>name</code>
|
|
||||||
attribute is ignored. The backend driver used is always
|
|
||||||
vhost-user.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt><code>txmode</code></dt>
|
<dt><code>txmode</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -4477,16 +4233,13 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
</dd>
|
</dd>
|
||||||
<dt><code>queues</code></dt>
|
<dt><code>queues</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
The optional <code>queues</code> attribute controls the number
|
The optional <code>queues</code> attribute controls the number of
|
||||||
of queues to be used for either
|
queues to be used for the<a href="http://www.linux-kvm.org/page/Multiqueue">
|
||||||
<a href="http://www.linux-kvm.org/page/Multiqueue"> Multiqueue
|
Multiqueue virtio-net</a> feature. If the interface has <code><model
|
||||||
virtio-net</a> or <a href="#elementVhostuser">vhost-user</a> network
|
type='virtio'/></code>, multiple packet processing queues can be
|
||||||
interfaces. Use of multiple packet processing queues requires the
|
created; each queue will potentially be handled by a different
|
||||||
interface having the <code><model type='virtio'/></code>
|
|
||||||
element. Each queue will potentially be handled by a different
|
|
||||||
processor, resulting in much higher throughput.
|
processor, resulting in much higher throughput.
|
||||||
<span class="since">virtio-net since 1.0.6 (QEMU and KVM only)</span>
|
<span class="since">Since 1.0.6 (QEMU and KVM only)</span>
|
||||||
<span class="since">vhost-user since 1.2.17 (QEMU and KVM only)</span>
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>host</code> offloading options</dt>
|
<dt><code>host</code> offloading options</dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -4550,10 +4303,10 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<p>
|
<p>
|
||||||
If no target is specified, certain hypervisors will
|
If no target is specified, certain hypervisors will
|
||||||
automatically generate a name for the created tun device. This
|
automatically generate a name for the created tun device. This
|
||||||
name can be manually specified, however the name <i>should not
|
name can be manually specified, however the name <i>must not
|
||||||
start with either 'vnet' or 'vif'</i>, which are prefixes
|
start with either 'vnet' or 'vif'</i>, which are prefixes
|
||||||
reserved by libvirt and certain hypervisors. Manually specified
|
reserved by libvirt and certain hypervisors. Manually specified
|
||||||
targets using these prefixes may be ignored.
|
targets using these prefixes will be ignored.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -4807,15 +4560,9 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<devices>
|
<devices>
|
||||||
<interface type='vhostuser'>
|
<interface type='vhostuser'>
|
||||||
<mac address='52:54:00:3b:83:1a'/>
|
<mac address='52:54:00:3b:83:1a'/>
|
||||||
<source type='unix' path='/tmp/vhost1.sock' mode='server'/>
|
<source type='unix' path='/tmp/vhost.sock' mode='server'/>
|
||||||
<model type='virtio'/>
|
<model type='virtio'/>
|
||||||
</interface>
|
</interface>
|
||||||
<interface type='vhostuser'>
|
|
||||||
<mac address='52:54:00:3b:83:1b'/>
|
|
||||||
<source type='unix' path='/tmp/vhost2.sock' mode='client'/>
|
|
||||||
<model type='virtio'/>
|
|
||||||
<driver queues='5'/>
|
|
||||||
</interface>
|
|
||||||
</devices>
|
</devices>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
@@ -4845,26 +4592,18 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<devices>
|
<devices>
|
||||||
<input type='mouse' bus='usb'/>
|
<input type='mouse' bus='usb'/>
|
||||||
<input type='keyboard' bus='usb'/>
|
<input type='keyboard' bus='usb'/>
|
||||||
<input type='mouse' bus='virtio'/>
|
|
||||||
<input type='keyboard' bus='virtio'/>
|
|
||||||
<input type='tablet' bus='virtio'/>
|
|
||||||
<input type='passthrough' bus='virtio'>
|
|
||||||
<source evdev='/dev/input/event1/>
|
|
||||||
</input>
|
|
||||||
</devices>
|
</devices>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
<dt><code>input</code></dt>
|
<dt><code>input</code></dt>
|
||||||
<dd>The <code>input</code> element has one mandatory attribute,
|
<dd>The <code>input</code> element has one mandatory attribute,
|
||||||
the <code>type</code> whose value can be 'mouse', 'tablet',
|
the <code>type</code> whose value can be 'mouse', 'tablet' or
|
||||||
(<span class="since">since 1.2.2</span>) 'keyboard' or
|
(<span class="since">since 1.2.2</span>) 'keyboard'.
|
||||||
(<span class="since">since 1.3.0</span>) 'passthrough'.
|
|
||||||
The tablet provides absolute cursor movement,
|
The tablet provides absolute cursor movement,
|
||||||
while the mouse uses relative movement. The optional
|
while the mouse uses relative movement. The optional
|
||||||
<code>bus</code> attribute can be used to refine the exact device type.
|
<code>bus</code> attribute can be used to refine the exact device type.
|
||||||
It takes values "xen" (paravirtualized), "ps2" and "usb" or
|
It takes values "xen" (paravirtualized), "ps2" and "usb".</dd>
|
||||||
(<span class="since">since 1.3.0</span>) "virtio".</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -4872,10 +4611,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
sub-element <code><address></code> which can tie the
|
sub-element <code><address></code> which can tie the
|
||||||
device to a particular PCI
|
device to a particular PCI
|
||||||
slot, <a href="#elementsAddress">documented above</a>.
|
slot, <a href="#elementsAddress">documented above</a>.
|
||||||
|
|
||||||
For type <code>passthrough</code>, the mandatory sub-element <code>source</code>
|
|
||||||
must have an <code>evdev</code> attribute containing the absolute path to the
|
|
||||||
event device passed through to guests. (KVM only)
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h4><a name="elementsHub">Hub devices</a></h4>
|
<h4><a name="elementsHub">Hub devices</a></h4>
|
||||||
@@ -4934,8 +4669,7 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<dl>
|
<dl>
|
||||||
<dt><code>graphics</code></dt>
|
<dt><code>graphics</code></dt>
|
||||||
<dd>The <code>graphics</code> element has a mandatory <code>type</code>
|
<dd>The <code>graphics</code> element has a mandatory <code>type</code>
|
||||||
attribute which takes the value "sdl", "vnc", "spice", "rdp" or
|
attribute which takes the value "sdl", "vnc", "rdp" or "desktop":
|
||||||
"desktop":
|
|
||||||
<dl>
|
<dl>
|
||||||
<dt><code>"sdl"</code></dt>
|
<dt><code>"sdl"</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -5045,7 +4779,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<clipboard copypaste='no'/>
|
<clipboard copypaste='no'/>
|
||||||
<mouse mode='client'/>
|
<mouse mode='client'/>
|
||||||
<filetransfer enable='no'/>
|
<filetransfer enable='no'/>
|
||||||
<gl enable='yes'/>
|
|
||||||
</graphics></pre>
|
</graphics></pre>
|
||||||
<p>
|
<p>
|
||||||
Spice supports variable compression settings for audio,
|
Spice supports variable compression settings for audio,
|
||||||
@@ -5092,13 +4825,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<code>enable</code> property to <code>no</code> ,
|
<code>enable</code> property to <code>no</code> ,
|
||||||
since <span class="since">since 1.2.2</span>.
|
since <span class="since">since 1.2.2</span>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
Spice may provide accelerated server-side rendering with
|
|
||||||
OpenGL. You can enable or disable OpenGL support explicitly with
|
|
||||||
the <code>gl</code> element, by setting the
|
|
||||||
<code>enable</code> property. (QEMU
|
|
||||||
only, <span class="since">since 1.3.2</span>).
|
|
||||||
</p>
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>"rdp"</code></dt>
|
<dt><code>"rdp"</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -5218,33 +4944,30 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<p>
|
<p>
|
||||||
The <code>model</code> element has a mandatory <code>type</code>
|
The <code>model</code> element has a mandatory <code>type</code>
|
||||||
attribute which takes the value "vga", "cirrus", "vmvga", "xen",
|
attribute which takes the value "vga", "cirrus", "vmvga", "xen",
|
||||||
"vbox", "qxl" (<span class="since">since 0.8.6</span>) or
|
"vbox", or "qxl" (<span class="since">since 0.8.6</span>) depending
|
||||||
"virtio" (<span class="since">since 1.3.0</span>)
|
on the hypervisor features available.
|
||||||
depending on the hypervisor features available.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
You can provide the amount of video memory in kibibytes (blocks of
|
You can provide the amount of video memory in kibibytes (blocks of
|
||||||
1024 bytes) using <code>vram</code>. This is supported only for guest
|
1024 bytes) using <code>vram</code>. This is supported only for guest
|
||||||
type of "libxl", "vz", "qemu", "vbox", "vmx" and "xen". If no
|
type of "libxl", "parallels", "qemu", "vbox", "vmx" and "xen". If no
|
||||||
value is provided the default is used. If the size is not a power of
|
value is provided the default is used. If the size is not a power of
|
||||||
two it will be rounded to closest one.
|
two it will be rounded to closest one.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The number of screen can be set using <code>heads</code>. This is
|
The number of screen can be set using <code>heads</code>. This is
|
||||||
supported only for guests type of "vz", "kvm", "vbox" and "vmx".
|
supported only for guests type of "parallels", "kvm", "vbox" and "vmx".
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
For guest type of "kvm" or "qemu" and model type "qxl" there are
|
For guest type of kvm the optional attribute <code>ram</code>
|
||||||
optional attributes. Attribute <code>ram</code> (<span class="since">
|
(<span class="since">since 1.0.2</span>) is allowed for "qxl" type
|
||||||
since 1.0.2</span>) specifies the size of the primary bar, while the
|
only and specifies the size of the primary bar, while the optional
|
||||||
attribute <code>vram</code> specifies the secondary bar size.
|
attribute <code>vram</code> specifies the secondary bar size.
|
||||||
If <code>ram</code> or <code>vram</code> are not supplied a default
|
If "ram" or "vram" are not supplied a default value is used. The ram
|
||||||
value is used. The <code>ram</code> should also be rounded to power of
|
should also be rounded to power of two as vram. There is also optional
|
||||||
two as <code>vram</code>. There is also optional attribute
|
attribute <code>vgamem</code> (<span class="since">since 1.2.11 (QEMU
|
||||||
<code>vgamem</code> (<span class="since">since 1.2.11</span>) to set
|
only)</span>) to set the size of VGA framebuffer for fallback mode of
|
||||||
the size of VGA framebuffer for fallback mode of QXL device.
|
QXL device.
|
||||||
Attribute <code>vram64</code> (<span class="since">since 1.3.3</span>)
|
|
||||||
extends secondary bar and makes it addressable as 64bit memory.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
@@ -5282,7 +5005,7 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<target port='0'/>
|
<target port='0'/>
|
||||||
</serial>
|
</serial>
|
||||||
<serial type='file'>
|
<serial type='file'>
|
||||||
<source path='/tmp/file' append='on'>
|
<source path='/tmp/file'>
|
||||||
<seclabel model='dac' relabel='no'/>
|
<seclabel model='dac' relabel='no'/>
|
||||||
</source>
|
</source>
|
||||||
<target port='0'/>
|
<target port='0'/>
|
||||||
@@ -5318,28 +5041,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
the per-domain setting</a>.
|
the per-domain setting</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
If the interface <code>type</code> presented to the host is "file",
|
|
||||||
then the <code>source</code> element may contain an optional attribute
|
|
||||||
<code>append</code> that specifies whether or not the information in
|
|
||||||
the file should be preserved on domain restart. Allowed values are
|
|
||||||
"on" and "off" (default). <span class="since">Since 1.3.1</span>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Regardless of the <code>type</code>, character devices can
|
|
||||||
have an optional log file associated with them. This is
|
|
||||||
expressed via a <code>log</code> sub-element, with a
|
|
||||||
<code>file</code> attribute. There can also be an <code>append</code>
|
|
||||||
attribute which takes the same values described above.
|
|
||||||
<span class="since">Since 1.3.3</span>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
...
|
|
||||||
<log file="/var/log/libvirt/qemu/guestname-serial0.log" append="off"/>
|
|
||||||
...</pre>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Each character device element has an optional
|
Each character device element has an optional
|
||||||
sub-element <code><address></code> which can tie the
|
sub-element <code><address></code> which can tie the
|
||||||
@@ -5390,16 +5091,12 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
specifies the port number. Ports are numbered starting from 0. There are
|
specifies the port number. Ports are numbered starting from 0. There are
|
||||||
usually 0, 1 or 2 serial ports. There is also an optional
|
usually 0, 1 or 2 serial ports. There is also an optional
|
||||||
<code>type</code> attribute <span class="since">since 1.0.2</span>
|
<code>type</code> attribute <span class="since">since 1.0.2</span>
|
||||||
which has three choices for its value, one is <code>isa-serial</code>,
|
which has two choices for its value, one is <code>isa-serial</code>,
|
||||||
then <code>usb-serial</code> and last one is <code>pci-serial</code>.
|
the other is <code>usb-serial</code>. If <code>type</code> is missing,
|
||||||
If <code>type</code> is missing, <code>isa-serial</code> will be used by
|
<code>isa-serial</code> will be used by default. For <code>usb-serial</code>
|
||||||
default. For <code>usb-serial</code> an optional sub-element
|
an optional sub-element <code><address></code> with
|
||||||
<code><address/></code> with <code>type='usb'</code> can tie the
|
<code>type='usb'</code> can tie the device to a particular controller,
|
||||||
device to a particular controller, <a href="#elementsAddress">documented above</a>.
|
<a href="#elementsAddress">documented above</a>.
|
||||||
Similarly, <code>pci-serial</code> can be used to attach the device to
|
|
||||||
the pci bus (<span class="since">since 1.2.16</span>). Again, it has
|
|
||||||
optional sub-element <code><address/></code> with
|
|
||||||
<code>type='pci'</code> to select desired location on the PCI bus.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h6><a name="elementCharConsole">Console</a></h6>
|
<h6><a name="elementCharConsole">Console</a></h6>
|
||||||
@@ -5940,8 +5637,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<li> 'i6300esb' — the recommended device,
|
<li> 'i6300esb' — the recommended device,
|
||||||
emulating a PCI Intel 6300ESB </li>
|
emulating a PCI Intel 6300ESB </li>
|
||||||
<li> 'ib700' — emulating an ISA iBase IB700 </li>
|
<li> 'ib700' — emulating an ISA iBase IB700 </li>
|
||||||
<li> 'diag288' — emulating an S390 DIAG288 device
|
|
||||||
<span class="since">Since 1.2.17</span></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>action</code></dt>
|
<dt><code>action</code></dt>
|
||||||
@@ -5963,9 +5658,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<li>'none' — do nothing</li>
|
<li>'none' — do nothing</li>
|
||||||
<li>'dump' — automatically dump the guest
|
<li>'dump' — automatically dump the guest
|
||||||
<span class="since">Since 0.8.7</span></li>
|
<span class="since">Since 0.8.7</span></li>
|
||||||
<li>'inject-nmi' — inject a non-maskable interrupt
|
|
||||||
into the guest
|
|
||||||
<span class="since">Since 1.2.17</span></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
Note 1: the 'shutdown' action requires that the guest
|
Note 1: the 'shutdown' action requires that the guest
|
||||||
@@ -6031,16 +5723,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
<li>'xen' — default with Xen</li>
|
<li>'xen' — default with Xen</li>
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>autodeflate</code></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
The optional <code>autodeflate</code> attribute allows to
|
|
||||||
enable/disable (values "on"/"off", respectively) the ability of the
|
|
||||||
QEMU virtio memory balloon to release some memory at the last moment
|
|
||||||
before a guest's process get killed by Out of Memory killer.
|
|
||||||
<span class="since">Since 1.3.1, QEMU and KVM only</span>
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><code>period</code></dt>
|
<dt><code>period</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -6116,28 +5798,31 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
to be used for the domain. The source model is configured using the
|
to be used for the domain. The source model is configured using the
|
||||||
<code>model</code> attribute. Supported source models are:
|
<code>model</code> attribute. Supported source models are:
|
||||||
</p>
|
</p>
|
||||||
<dl>
|
<ul>
|
||||||
<dt><code>random</code></dt>
|
<li>'random' — /dev/random (default) or /dev/hwrng
|
||||||
<dd>
|
device as source (for now, no other sources are permitted)</li>
|
||||||
<p>
|
<li>'egd' — a EGD protocol backend</li>
|
||||||
This backend type expects a non-blocking character device as
|
</ul>
|
||||||
input. The file name is specified as contents of the
|
|
||||||
<code>backend</code> element. When no file name is specified
|
|
||||||
the hypervisor default is used. For qemu, the default is
|
|
||||||
/dev/random
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><code>egd</code></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
This backend connects to a source using the EGD protocol.
|
|
||||||
The source is specified as a character device. Refer to
|
|
||||||
<a href='#elementsCharHostInterface'>character device host interface</a>
|
|
||||||
for more information.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><code>backend model='random'</code></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
This backend type expects a non-blocking character device as input.
|
||||||
|
The only accepted paths are /dev/random and /dev/hwrng. The file
|
||||||
|
name is specified as contents of the <code>backend</code> element.
|
||||||
|
When no file name is specified the hypervisor default is used.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><code>backend model='egd'</code></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
This backend connects to a source using the EGD protocol.
|
||||||
|
The source is specified as a character device. Refer to
|
||||||
|
<a href='#elementsCharHostInterface'>character device host interface</a>
|
||||||
|
for more information.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h4><a name="elementsTpm">TPM device</a></h4>
|
<h4><a name="elementsTpm">TPM device</a></h4>
|
||||||
@@ -6238,45 +5923,24 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
guest.
|
guest.
|
||||||
<span class="since">Since 1.2.1, QEMU and KVM only</span>
|
<span class="since">Since 1.2.1, QEMU and KVM only</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
For pSeries guests, this feature is always enabled since it's
|
|
||||||
implemented by the guest firmware, thus libvirt automatically
|
|
||||||
adds the <code>panic</code> element to the domain XML.
|
|
||||||
</p>
|
|
||||||
<p>
|
<p>
|
||||||
Example: usage of panic configuration
|
Example: usage of panic configuration
|
||||||
</p>
|
</p>
|
||||||
<pre>
|
<pre>
|
||||||
...
|
...
|
||||||
<devices>
|
<devices>
|
||||||
<panic model='hyperv'/>
|
<panic>
|
||||||
<panic model='isa'>
|
|
||||||
<address type='isa' iobase='0x505'/>
|
<address type='isa' iobase='0x505'/>
|
||||||
</panic>
|
</panic>
|
||||||
</devices>
|
</devices>
|
||||||
...
|
...
|
||||||
</pre>
|
</pre>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><code>model</code></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
The optional <code>model</code> attribute specifies what type
|
|
||||||
of panic device is provided. The panic model used when this attribute
|
|
||||||
is missing depends on the hypervisor and guest arch.
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>'isa' — for ISA pvpanic device</li>
|
|
||||||
<li>'pseries' — default and valid only for pSeries guests.</li>
|
|
||||||
<li>'hyperv' — for Hyper-V crash CPU feature.
|
|
||||||
<span class="since">Since 1.3.0, QEMU and KVM only</span></li>
|
|
||||||
</ul>
|
|
||||||
</dd>
|
|
||||||
<dt><code>address</code></dt>
|
<dt><code>address</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
address of panic. The default ioport is 0x505. Most users
|
address of panic. The default ioport is 0x505. Most users
|
||||||
don't need to specify an address, and doing so is forbidden
|
don't need to specify an address.
|
||||||
altogether for pseries and hyperv models.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
@@ -6412,9 +6076,8 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
added memory as a scaled integer.
|
added memory as a scaled integer.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The <code>node</code> subelement configures the guest NUMA node to
|
The mandatory <code>node</code> subelement configures the guest NUMA
|
||||||
attach the memory to. The element shall be used only if the guest has
|
node to attach the memory to.
|
||||||
NUMA nodes configured.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
@@ -6548,45 +6211,6 @@ qemu-kvm -net nic,model=? /dev/null
|
|||||||
being on a file system that lacks security labeling.
|
being on a file system that lacks security labeling.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3><a name="keywrap">Key Wrap</a></h3>
|
|
||||||
|
|
||||||
<p>The content of the optional <code>keywrap</code> element specifies
|
|
||||||
whether the guest will be allowed to perform the S390 cryptographic key
|
|
||||||
management operations. A clear key can be protected by encrypting it
|
|
||||||
under a unique wrapping key that is generated for each guest VM running
|
|
||||||
on the host. Two variations of wrapping keys are generated: one version
|
|
||||||
for encrypting protected keys using the DEA/TDEA algorithm, and another
|
|
||||||
version for keys encrypted using the AES algorithm. If a
|
|
||||||
<code>keywrap</code> element is not included, the guest will be granted
|
|
||||||
access to both AES and DEA/TDEA key wrapping by default.</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
<domain>
|
|
||||||
...
|
|
||||||
<keywrap>
|
|
||||||
<cipher name='aes' state='off'/>
|
|
||||||
</keywrap>
|
|
||||||
...
|
|
||||||
</domain>
|
|
||||||
</pre>
|
|
||||||
<p>
|
|
||||||
At least one <code>cipher</code> element must be nested within the
|
|
||||||
<code>keywrap</code> element.
|
|
||||||
</p>
|
|
||||||
<dl>
|
|
||||||
<dt><code>cipher</code></dt>
|
|
||||||
<dd>The <code>name</code> attribute identifies the algorithm
|
|
||||||
for encrypting a protected key. The values supported for this attribute
|
|
||||||
are <code>aes</code> for encryption under the AES wrapping key, or
|
|
||||||
<code>dea</code> for encryption under the DEA/TDEA wrapping key. The
|
|
||||||
<code>state</code> attribute indicates whether the cryptographic key
|
|
||||||
management operations should be turned on for the specified encryption
|
|
||||||
algorithm. The value can be set to <code>on</code> or <code>off</code>.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<p>Note: DEA/TDEA is synonymous with DES/TDES.</p>
|
|
||||||
|
|
||||||
<h2><a name="examples">Example configs</a></h2>
|
<h2><a name="examples">Example configs</a></h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@@ -97,38 +97,18 @@
|
|||||||
<dd>
|
<dd>
|
||||||
This optional element can occur multiple times. If it
|
This optional element can occur multiple times. If it
|
||||||
exists, it has a mandatory <code>type</code> attribute
|
exists, it has a mandatory <code>type</code> attribute
|
||||||
which will be set to:
|
which will be set to
|
||||||
<dl>
|
either <code>physical_function</code>
|
||||||
<dt><code>physical_function</code></dt>
|
or <code>virtual_functions</code>. If the type
|
||||||
<dd>
|
is <code>physical_function</code>, there will be a
|
||||||
That means there will be a single <code>address</code>
|
single <code>address</code> subelement which contains
|
||||||
subelement which contains the PCI address of the SRIOV
|
the PCI address of the SRIOV Physical Function (PF)
|
||||||
Physical Function (PF) that is the parent of this device
|
that is the parent of this device (and this device is,
|
||||||
(and this device is, by implication, an SRIOV Virtual
|
by implication, an SRIOV Virtual Function (VF)). If
|
||||||
Function (VF)).
|
the type is <code>virtual_functions</code>, then this
|
||||||
</dd>
|
device is an SRIOV PF, and the capability element will
|
||||||
<dt><code>virtual_function</code></dt>
|
have a list of <code>address</code> subelements, one
|
||||||
<dd>
|
for each VF on this PF.
|
||||||
In this case this device is an SRIOV PF, and the capability
|
|
||||||
element will have a list of <code>address</code>
|
|
||||||
subelements, one for each VF on this PF. If the host system
|
|
||||||
supports reporting it (via the "sriov_maxvfs" file in the
|
|
||||||
device's sysfs directory) the capability element will also
|
|
||||||
have an attribute named <code>maxCount</code> which is the
|
|
||||||
maximum number of SRIOV VFs supported by this device, which
|
|
||||||
could be higher than the number of VFs that are curently
|
|
||||||
active <span class="since">since 1.3.0</span>; in this case,
|
|
||||||
even if there are currently no active VFs the
|
|
||||||
virtual_functions capabililty will still be shown.
|
|
||||||
</dd>
|
|
||||||
<dt><code>pci-bridge</code> or <code>cardbus-bridge</code></dt>
|
|
||||||
<dd>
|
|
||||||
This shows merely that the lower 7 bits of PCI header type
|
|
||||||
have either value of 1 or 2 respectively. Usually this
|
|
||||||
means such device cannot be used for PCI passthrough.
|
|
||||||
<span class="since">Since 1.3.3</span>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>numa</code></dt>
|
<dt><code>numa</code></dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -142,7 +122,7 @@
|
|||||||
This optional element contains information on PCI Express part of
|
This optional element contains information on PCI Express part of
|
||||||
the device. For example, it can contain a child element
|
the device. For example, it can contain a child element
|
||||||
<code>link</code> which addresses the PCI Express device's link.
|
<code>link</code> which addresses the PCI Express device's link.
|
||||||
While a device has its own capabilities
|
While a device has it's own capabilities
|
||||||
(<code>validity='cap'</code>), the actual run time capabilities
|
(<code>validity='cap'</code>), the actual run time capabilities
|
||||||
are negotiated on the device initialization
|
are negotiated on the device initialization
|
||||||
(<code>validity='sta'</code>). The <code>link</code> element then
|
(<code>validity='sta'</code>). The <code>link</code> element then
|
||||||
@@ -219,8 +199,6 @@
|
|||||||
<dt><code>txvlan</code></dt><dd>tx-vlan-offload</dd>
|
<dt><code>txvlan</code></dt><dd>tx-vlan-offload</dd>
|
||||||
<dt><code>ntuple</code></dt><dd>ntuple-filters</dd>
|
<dt><code>ntuple</code></dt><dd>ntuple-filters</dd>
|
||||||
<dt><code>rxhash</code></dt><dd>receive-hashing</dd>
|
<dt><code>rxhash</code></dt><dd>receive-hashing</dd>
|
||||||
<dt><code>rdma</code></dt><dd>remote-direct-memory-access</dd>
|
|
||||||
<dt><code>txudptnl</code></dt><dd>tx-udp-tunnel-segmentation</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>capability</code></dt>
|
<dt><code>capability</code></dt>
|
||||||
|
@@ -78,7 +78,7 @@
|
|||||||
...
|
...
|
||||||
<source>
|
<source>
|
||||||
<host name="iscsi.example.com"/>
|
<host name="iscsi.example.com"/>
|
||||||
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
<device path="demo-target"/>
|
||||||
<auth type='chap' username='myname'>
|
<auth type='chap' username='myname'>
|
||||||
<secret usage='mycluster_myname'/>
|
<secret usage='mycluster_myname'/>
|
||||||
</auth>
|
</auth>
|
||||||
@@ -87,14 +87,6 @@
|
|||||||
</source>
|
</source>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<pre>
|
|
||||||
...
|
|
||||||
<source>
|
|
||||||
<device path='/dev/mapper/mpatha' part_separator='no'/>
|
|
||||||
<format type='gpt'/>
|
|
||||||
</source>
|
|
||||||
...</pre>
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
...
|
...
|
||||||
<source>
|
<source>
|
||||||
@@ -126,38 +118,15 @@
|
|||||||
(pool types <code>fs</code>, <code>logical</code>, <code>disk</code>,
|
(pool types <code>fs</code>, <code>logical</code>, <code>disk</code>,
|
||||||
<code>iscsi</code>, <code>zfs</code>).
|
<code>iscsi</code>, <code>zfs</code>).
|
||||||
May be repeated multiple times depending on backend driver. Contains
|
May be repeated multiple times depending on backend driver. Contains
|
||||||
a required attribute <code>path</code> which is either the fully
|
a single attribute <code>path</code> which is the fully qualified
|
||||||
qualified path to the block device node or for <code>iscsi</code>
|
path to the block device node. <span class="since">Since 0.4.1</span></dd>
|
||||||
the iSCSI Qualified Name (IQN).
|
|
||||||
<span class="since">Since 0.4.1</span>
|
|
||||||
<p>An optional attribute <code>part_separator</code> for each
|
|
||||||
<code>path</code> may be supplied. Valid values for the attribute
|
|
||||||
may be either "yes" or "no". This attribute is to be used for a
|
|
||||||
<code>disk</code> pool type using a <code>path</code> to a
|
|
||||||
device mapper multipath device configured to utilize either
|
|
||||||
'user_friendly_names' or a custom 'alias' name in the
|
|
||||||
/etc/multipath.conf. The attribute directs libvirt to not
|
|
||||||
generate device volume names with the partition character "p".
|
|
||||||
By default, when libvirt generates the partition names for
|
|
||||||
device mapper multipath devices it will add a "p" path separator
|
|
||||||
to the device name before adding the partition number. For example,
|
|
||||||
a <code>device path</code> of '/dev/mapper/mpatha' libvirt would
|
|
||||||
generate partition names of '/dev/mapper/mpathap1',
|
|
||||||
'/dev/mapper/mpathap2', etc. for each partition found. With
|
|
||||||
this attribute set to "no", libvirt will not append the "p" to
|
|
||||||
the name unless it ends with a number thus generating names
|
|
||||||
of '/dev/mapper/mpatha1', '/dev/mapper/mpatha2', etc.
|
|
||||||
<span class="since">Since 1.3.1</span></p></dd>
|
|
||||||
<dt><code>dir</code></dt>
|
<dt><code>dir</code></dt>
|
||||||
<dd>Provides the source for pools backed by directories (pool
|
<dd>Provides the source for pools backed by directories (pool
|
||||||
types <code>dir</code>, <code>netfs</code>, <code>gluster</code>),
|
type <code>dir</code>), or optionally to select a subdirectory
|
||||||
or optionally to select a subdirectory
|
|
||||||
within a pool that resembles a filesystem (pool
|
within a pool that resembles a filesystem (pool
|
||||||
type <code>gluster</code>). May
|
type <code>gluster</code>). May
|
||||||
only occur once. Contains a single attribute <code>path</code>
|
only occur once. Contains a single attribute <code>path</code>
|
||||||
which is the fully qualified path to the backing directory or
|
which is the fully qualified path to the backing directory.
|
||||||
for a <code>netfs</code> pool type using <code>format</code>
|
|
||||||
type "cifs", the path to the Samba share without the leading slash.
|
|
||||||
<span class="since">Since 0.4.1</span></dd>
|
<span class="since">Since 0.4.1</span></dd>
|
||||||
<dt><code>adapter</code></dt>
|
<dt><code>adapter</code></dt>
|
||||||
<dd>Provides the source for pools backed by SCSI adapters (pool
|
<dd>Provides the source for pools backed by SCSI adapters (pool
|
||||||
@@ -323,15 +292,7 @@
|
|||||||
or <code>device</code> element. Contains an attribute <code>name</code>
|
or <code>device</code> element. Contains an attribute <code>name</code>
|
||||||
which is the hostname or IP address of the server. May optionally
|
which is the hostname or IP address of the server. May optionally
|
||||||
contain a <code>port</code> attribute for the protocol specific
|
contain a <code>port</code> attribute for the protocol specific
|
||||||
port number. Duplicate storage pool definition checks may perform
|
port number. <span class="since">Since 0.4.1</span></dd>
|
||||||
a cursory check that the same host name by string comparison in the
|
|
||||||
new pool does not match an existing pool's source host name when
|
|
||||||
combined with the <code>directory</code> or <code>device</code>
|
|
||||||
element. Name resolution of the provided hostname or IP address
|
|
||||||
is left to the storage driver backend interactions with the remote
|
|
||||||
server. See the <a href="storage.html">storage driver page</a> for
|
|
||||||
any restrictions for specific storage backends.
|
|
||||||
<span class="since">Since 0.4.1</span></dd>
|
|
||||||
<dt><code>auth</code></dt>
|
<dt><code>auth</code></dt>
|
||||||
<dd>If present, the <code>auth</code> element provides the
|
<dd>If present, the <code>auth</code> element provides the
|
||||||
authentication credentials needed to access the source by the
|
authentication credentials needed to access the source by the
|
||||||
@@ -427,27 +388,18 @@
|
|||||||
guaranteed stable across reboots, since they are allocated on
|
guaranteed stable across reboots, since they are allocated on
|
||||||
demand. It is preferable to use a stable location such as one
|
demand. It is preferable to use a stable location such as one
|
||||||
of the <code>/dev/disk/by-{path|id|uuid|label}</code> locations.
|
of the <code>/dev/disk/by-{path|id|uuid|label}</code> locations.
|
||||||
For a Multipath pool (type <code>mpath</code>), the provided
|
|
||||||
value is ignored and the default value of "/dev/mapper" is used.
|
|
||||||
<span class="since">Since 0.4.1</span>
|
<span class="since">Since 0.4.1</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>permissions</code></dt>
|
<dt><code>permissions</code></dt>
|
||||||
<dd>This is currently only useful for directory or filesystem based
|
<dd>This is currently only useful for directory or filesystem based
|
||||||
pools, which are mapped as a directory into the local filesystem
|
pools, which are mapped as a directory into the local filesystem
|
||||||
namespace. It provides information about the permissions to use for the
|
namespace. It provides information about the permissions to use for the
|
||||||
final directory when the pool is built. There are 4 child elements.
|
final directory when the pool is built. The
|
||||||
The <code>mode</code> element contains the octal permission set.
|
<code>mode</code> element contains the octal permission set. The
|
||||||
The <code>mode</code> defaults to 0755 when not provided.
|
<code>owner</code> element contains the numeric user ID. The <code>group</code>
|
||||||
The <code>owner</code> element contains the numeric user ID.
|
element contains the numeric group ID. The <code>label</code> element
|
||||||
The <code>group</code> element contains the numeric group ID.
|
contains the MAC (eg SELinux) label string.
|
||||||
If <code>owner</code> or <code>group</code> aren't specified when
|
|
||||||
creating a directory, the values are inherited from the parent
|
|
||||||
directory. The <code>label</code> element contains the MAC (eg SELinux)
|
|
||||||
label string.
|
|
||||||
<span class="since">Since 0.4.1</span>
|
<span class="since">Since 0.4.1</span>
|
||||||
For running directory or filesystem based pools, these fields
|
|
||||||
will be filled with the values used by the existing directory.
|
|
||||||
<span class="since">Since 1.2.16</span>
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>timestamps</code></dt>
|
<dt><code>timestamps</code></dt>
|
||||||
<dd>Provides timing information about the volume. Up to four
|
<dd>Provides timing information about the volume. Up to four
|
||||||
@@ -621,21 +573,15 @@
|
|||||||
volume format type value and the default pool format will be used.
|
volume format type value and the default pool format will be used.
|
||||||
<span class="since">Since 0.4.1</span></dd>
|
<span class="since">Since 0.4.1</span></dd>
|
||||||
<dt><code>permissions</code></dt>
|
<dt><code>permissions</code></dt>
|
||||||
<dd>Provides information about the permissions to use
|
<dd>Provides information about the default permissions to use
|
||||||
when creating volumes. This is currently only useful for directory
|
when creating volumes. This is currently only useful for directory
|
||||||
or filesystem based pools, where the volumes allocated are simple
|
or filesystem based pools, where the volumes allocated are simple
|
||||||
files. For pools where the volumes are device nodes, the hotplug
|
files. For pools where the volumes are device nodes, the hotplug
|
||||||
scripts determine permissions. There are 4 child elements.
|
scripts determine permissions. It contains 4 child elements. The
|
||||||
The <code>mode</code> element contains the octal permission set.
|
<code>mode</code> element contains the octal permission set. The
|
||||||
The <code>mode</code> defaults to 0600 when not provided.
|
<code>owner</code> element contains the numeric user ID. The <code>group</code>
|
||||||
The <code>owner</code> element contains the numeric user ID.
|
element contains the numeric group ID. The <code>label</code> element
|
||||||
The <code>group</code> element contains the numeric group ID.
|
contains the MAC (eg SELinux) label string.
|
||||||
If <code>owner</code> or <code>group</code> aren't specified when
|
|
||||||
creating a supported volume, the values are inherited from the parent
|
|
||||||
directory. The <code>label</code> element contains the MAC (eg SELinux)
|
|
||||||
label string.
|
|
||||||
For existing directory or filesystem based volumes, these fields
|
|
||||||
will be filled with the values used by the existing file.
|
|
||||||
<span class="since">Since 0.4.1</span>
|
<span class="since">Since 0.4.1</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>compat</code></dt>
|
<dt><code>compat</code></dt>
|
||||||
@@ -703,8 +649,11 @@
|
|||||||
<span class="since">Since 0.6.0</span></dd>
|
<span class="since">Since 0.6.0</span></dd>
|
||||||
<dt><code>permissions</code></dt>
|
<dt><code>permissions</code></dt>
|
||||||
<dd>Provides information about the permissions of the backing file.
|
<dd>Provides information about the permissions of the backing file.
|
||||||
See volume <code>permissions</code> documentation for explanation
|
It contains 4 child elements. The
|
||||||
of individual fields.
|
<code>mode</code> element contains the octal permission set. The
|
||||||
|
<code>owner</code> element contains the numeric user ID. The <code>group</code>
|
||||||
|
element contains the numeric group ID. The <code>label</code> element
|
||||||
|
contains the MAC (eg SELinux) label string.
|
||||||
<span class="since">Since 0.6.0</span>
|
<span class="since">Since 0.6.0</span>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
@@ -2,32 +2,65 @@ body {
|
|||||||
margin: 0em;
|
margin: 0em;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
color: rgb(0,0,0);
|
color: rgb(0,0,0);
|
||||||
font-family: sans-serif;
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
font-size: 90%;
|
font-size: smaller;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p, ul, ol, dl {
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol,ul {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol,ul,dl,p {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:first-line {
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
div.body p:first-letter {
|
div.body p:first-letter {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
p, ul, ol, dl {
|
h1,h2,h3,h4,h5,h6 {
|
||||||
padding: 0px;
|
font-weight: bold;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
line-height: 150%;
|
padding: 0px;
|
||||||
|
margin-top: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
div.footer {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ul, ol {
|
h1 {
|
||||||
margin-left: 2em;
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.6em;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
dt {
|
dl dt {
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
margin-right: 2em;
|
margin-right: 2em;
|
||||||
}
|
}
|
||||||
@@ -37,41 +70,3 @@ dl dd {
|
|||||||
margin-right: 2em;
|
margin-right: 2em;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
margin-bottom: 0.25em;
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 0em;
|
|
||||||
font-size: 1.6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
margin-top: 1.0em;
|
|
||||||
font-size: 1.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin-top: 1.0em;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
margin-top: 1.0em;
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h5 {
|
|
||||||
margin-top: 0.75em;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6 {
|
|
||||||
margin-top: 0.75em;
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
|
@@ -16,13 +16,6 @@
|
|||||||
along with other libvirt-related repositories
|
along with other libvirt-related repositories
|
||||||
(e.g. libvirt-python) <a href="http://libvirt.org/git/">online</a>.</li>
|
(e.g. libvirt-python) <a href="http://libvirt.org/git/">online</a>.</li>
|
||||||
|
|
||||||
<li>Patches to translations are maintained via
|
|
||||||
the <a href="https://fedora.zanata.org/">zanata project</a>.
|
|
||||||
If you want to fix a translation in a .po file, join the
|
|
||||||
appropriate language team. The libvirt release process
|
|
||||||
automatically pulls the latest version of each translation
|
|
||||||
file from zanata.</li>
|
|
||||||
|
|
||||||
<li><p>Post patches in unified diff format, with git rename
|
<li><p>Post patches in unified diff format, with git rename
|
||||||
detection enabled. You need a one-time setup of:</p>
|
detection enabled. You need a one-time setup of:</p>
|
||||||
<pre>
|
<pre>
|
||||||
|
@@ -72,7 +72,7 @@
|
|||||||
The <a href="http://libvirt.org/drvphyp.html">IBM PowerVM</a> hypervisor
|
The <a href="http://libvirt.org/drvphyp.html">IBM PowerVM</a> hypervisor
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
The <a href="http://libvirt.org/drvvirtuozzo.html">Virtuozzo</a> hypervisor
|
The <a href="http://libvirt.org/drvparallels.html">Parallels</a> hypervisor
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
The <a href="http://libvirt.org/drvbhyve.html">Bhyve</a> hypervisor
|
The <a href="http://libvirt.org/drvbhyve.html">Bhyve</a> hypervisor
|
||||||
|
@@ -82,9 +82,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Daemon Startup
|
<li>Daemon Startup
|
||||||
<p>The daemon initialization processing will declare itself
|
<p>The daemon initialization processing will declare itself
|
||||||
as a daemon via a virNetDaemonNew() call, then creates new server
|
as a server via a virNetServerNew() call, then use
|
||||||
using virNetServerNew() and adds that server to the main daemon
|
|
||||||
struct with virNetDaemonAddServer() call. It will then use
|
|
||||||
virDriverLoadModule() to find/load all known drivers,
|
virDriverLoadModule() to find/load all known drivers,
|
||||||
set up an RPC server program using the <code>remoteProcs[]</code>
|
set up an RPC server program using the <code>remoteProcs[]</code>
|
||||||
table via a virNetServerProgramNew() call. The table is the
|
table via a virNetServerProgramNew() call. The table is the
|
||||||
|
@@ -68,8 +68,8 @@
|
|||||||
There is now a high level API that provides a safe and
|
There is now a high level API that provides a safe and
|
||||||
flexible way to spawn commands, which prevents the most
|
flexible way to spawn commands, which prevents the most
|
||||||
common errors & is easy to code against. This
|
common errors & is easy to code against. This
|
||||||
code is provided in the <code>src/util/vircommand.h</code>
|
code is provided in the <code>src/util/command.h</code>
|
||||||
header which can be imported using <code>#include "vircommand.h"</code>
|
header which can be imported using <code>#include "command.h"</code>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3><a name="initial">Defining commands in libvirt</a></h3>
|
<h3><a name="initial">Defining commands in libvirt</a></h3>
|
||||||
|
@@ -532,13 +532,6 @@
|
|||||||
calls in parallel, with dispatch across multiple worker threads.
|
calls in parallel, with dispatch across multiple worker threads.
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt><code>virNetDaemonPtr</code> (virnetdaemon.h)</dt>
|
|
||||||
<dd>The virNetDaemon APIs are used to manage a daemon process. A
|
|
||||||
deamon is a process that might expose one or more servers. It
|
|
||||||
handles most process-related details, network-related should
|
|
||||||
be part of the underlying server.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt><code>virNetServerMDNSPtr</code> (virnetservermdns.h)</dt>
|
<dt><code>virNetServerMDNSPtr</code> (virnetservermdns.h)</dt>
|
||||||
<dd>The virNetServerMDNS APIs are used to advertise a server
|
<dd>The virNetServerMDNS APIs are used to advertise a server
|
||||||
across the local network, enabling clients to automatically
|
across the local network, enabling clients to automatically
|
||||||
|
@@ -1,4 +1,12 @@
|
|||||||
h1, h2, h3, h4, h5, h6 {
|
h1 {
|
||||||
|
font-weight: normal;
|
||||||
|
color: #3c857c;
|
||||||
|
}
|
||||||
|
h1 strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2, h3, h4, h5, h6 {
|
||||||
color: #3c857c;
|
color: #3c857c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +55,12 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu li ul li {
|
||||||
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu ul li a, #menu ul li span {
|
#menu ul li a, #menu ul li span {
|
||||||
@@ -80,7 +94,6 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
#menu ul.l1 li .inactive {
|
#menu ul.l1 li .inactive {
|
||||||
border-left: 6px solid #dfebea;
|
border-left: 6px solid #dfebea;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu ul.l1 li .active {
|
#menu ul.l1 li .active {
|
||||||
border-left: 6px solid #a5c6c2;
|
border-left: 6px solid #a5c6c2;
|
||||||
}
|
}
|
||||||
@@ -96,6 +109,7 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
padding-left: 3em;
|
padding-left: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#headerLogo {
|
#headerLogo {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
@@ -104,7 +118,6 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
width: 400px;
|
width: 400px;
|
||||||
background: url(libvirt-header-logo.png);
|
background: url(libvirt-header-logo.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
#headerSearch {
|
#headerSearch {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
@@ -129,6 +142,7 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#sitemap ul li {
|
#sitemap ul li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
@@ -163,6 +177,7 @@ a {
|
|||||||
color: #566866;
|
color: #566866;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
div.api {
|
div.api {
|
||||||
border: 1px solid #999999;
|
border: 1px solid #999999;
|
||||||
background: #eeeeee;
|
background: #eeeeee;
|
||||||
@@ -188,6 +203,7 @@ div.api table td, div.variablelist table td {
|
|||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
h1 a, h2 a, h3 a, h4 a, h5 a {
|
h1 a, h2 a, h3 a, h4 a, h5 a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
@@ -227,6 +243,36 @@ p.image {
|
|||||||
background: #c5dbd8;
|
background: #c5dbd8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
clear: both;
|
||||||
|
position: relative;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 180px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
/* background: #757575; */
|
||||||
|
}
|
||||||
|
/* This is hidden from IE <= 6 because it can't do transparency */
|
||||||
|
/* body > #footer {
|
||||||
|
background: #757575 url(footer_pattern.png) repeat-x;
|
||||||
|
} */
|
||||||
|
|
||||||
|
#footer p {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
border: 0px solid red;
|
||||||
|
width: 220px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer p a img {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
#projects {
|
#projects {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
@@ -236,6 +282,7 @@ p.image {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#projects dl {
|
#projects dl {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
border: 0px solid white;
|
border: 0px solid white;
|
||||||
@@ -244,6 +291,10 @@ p.image {
|
|||||||
top: 0px;
|
top: 0px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
}
|
}
|
||||||
|
/* This is hidden from IE <= 6 because it can't do transparency */
|
||||||
|
head:first-child+body #projects dl {
|
||||||
|
background: url(footer_corner.png) no-repeat ! important;
|
||||||
|
}
|
||||||
|
|
||||||
#projects #p1 {
|
#projects #p1 {
|
||||||
margin-left: 25%;
|
margin-left: 25%;
|
||||||
@@ -268,15 +319,16 @@ p.image {
|
|||||||
#projects #p1 dt, #projects #p1 dd {
|
#projects #p1 dt, #projects #p1 dd {
|
||||||
width: 33%;
|
width: 33%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#projects #p2 dt, #projects #p2 dd {
|
#projects #p2 dt, #projects #p2 dd {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#projects #p3 dt, #projects #p3 dd {
|
#projects #p3 dt, #projects #p3 dd {
|
||||||
width: 99%;
|
width: 99%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#projects {
|
||||||
|
}
|
||||||
|
|
||||||
#projects span {
|
#projects span {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
display: block;
|
display: block;
|
||||||
@@ -300,6 +352,13 @@ p.image {
|
|||||||
color: #ccc;
|
color: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#sponsor {
|
||||||
|
color: #757575;
|
||||||
|
text-decoration: inherit;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
span.since {
|
span.since {
|
||||||
color: #3c857c;
|
color: #3c857c;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
@@ -345,7 +404,6 @@ table.data tr.head th {
|
|||||||
table.data tbody td {
|
table.data tbody td {
|
||||||
background: rgb(240,240,240);
|
background: rgb(240,240,240);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.data tbody td.y {
|
table.data tbody td.y {
|
||||||
background: rgb(220,255,220);
|
background: rgb(220,255,220);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@@ -104,15 +104,12 @@
|
|||||||
<pre>
|
<pre>
|
||||||
x:name (log message only)
|
x:name (log message only)
|
||||||
x:+name (log message + stack trace)</pre>
|
x:+name (log message + stack trace)</pre>
|
||||||
<p>where <code>name</code> is a string which is matched against
|
<p>where <code>name</code> is a string which is matched against source
|
||||||
the category given in the VIR_LOG_INIT() at the top of each
|
file name, e.g., <code>remote</code>, <code>qemu</code>, or
|
||||||
libvirt source file, e.g., <code>remote</code>, <code>qemu</code>,
|
<code>util/json</code>, the optional <code>+</code> prefix tells libvirt
|
||||||
or <code>util.json</code> (the name in the filter can be a
|
to log stack trace for each message matching <code>name</code>, and
|
||||||
substring of the full category name, in order to match multiple
|
<code>x</code> is the minimal level where matching messages should
|
||||||
similar categories), the optional <code>+</code> prefix tells
|
be logged:</p>
|
||||||
libvirt to log stack trace for each message
|
|
||||||
matching <code>name</code>, and <code>x</code> is the minimal
|
|
||||||
level where matching messages should be logged:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>1: DEBUG</li>
|
<li>1: DEBUG</li>
|
||||||
<li>2: INFO</li>
|
<li>2: INFO</li>
|
||||||
|
@@ -475,7 +475,7 @@
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Supported by Xen, QEMU, VMware and VirtualBox drivers
|
Supported by Xen, QEMU, VMWare and VirtualBox drivers
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3><a name="scenarionativepeer2peer">Native migration, client to and peer2peer between, two libvirtd servers</a></h3>
|
<h3><a name="scenarionativepeer2peer">Native migration, client to and peer2peer between, two libvirtd servers</a></h3>
|
||||||
|
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Releases (2005)</h1>
|
|
||||||
<p>Here is the list of official releases made during the year 2005.
|
|
||||||
</p>
|
|
||||||
<p>It is also possible to just use
|
|
||||||
the <a href="downloads.html" shape="rect">GIT version or snapshot</a>,
|
|
||||||
contact the mailing list and check
|
|
||||||
the <a href="http://libvirt.org/git/?p=libvirt.git;a=log" shape="rect">GIT log</a>
|
|
||||||
to gauge progress.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>0.0.1: Dec 19 2005</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
First release,<br/>
|
|
||||||
Basic management of existing Xen domains,<br/>
|
|
||||||
Minimal autogenerated Python bindings<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -1,354 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Releases (2006)</h1>
|
|
||||||
<p>Here is the list of official releases made during the year 2006.
|
|
||||||
A similar list for <a href="news-2005.html">2005</a> is also available.
|
|
||||||
</p>
|
|
||||||
<p>It is also possible to just use
|
|
||||||
the <a href="downloads.html" shape="rect">GIT version or snapshot</a>,
|
|
||||||
contact the mailing list and check
|
|
||||||
the <a href="http://libvirt.org/git/?p=libvirt.git;a=log" shape="rect">GIT log</a>
|
|
||||||
to gauge progress.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>0.1.10: Dec 20 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
VCPU info breakages on xen 3.0.3,<br/>
|
|
||||||
xenDaemonListDomains buffer overflow (Daniel Berrange),<br/>
|
|
||||||
reference count bug when creating Xen domains (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
more localizations,<br/>
|
|
||||||
support graphic framebuffer for Xen paravirt (Daniel Berrange),<br/>
|
|
||||||
VNC listen IP range support (Daniel Berrange),<br/>
|
|
||||||
support for default Xen config files and inactive domains of 3.0.4 (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.9: Nov 29 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
separate the notion of maximum memory and current use at the XML level,<br/>
|
|
||||||
add support for shareable drives,<br/>
|
|
||||||
add support for non-bridge style networking configs for guests (Daniel Berrange),<br/>
|
|
||||||
new config APIs virConfNew() and virConfSetValue() to build configs from scratch,<br/>
|
|
||||||
hot plug device support based on Michel Ponceau patch,<br/>
|
|
||||||
added support for inactive domains, new APIs, various associated cleanup (Daniel Berrange),<br/>
|
|
||||||
special device model for HVM guests (Daniel Berrange),<br/>
|
|
||||||
add API to dump core of domains (but requires a patched xend),<br/>
|
|
||||||
pygrub bootloader information take over <os> information<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
fix OS reporting when running as non-root,<br/>
|
|
||||||
fix the reconnect regression test,<br/>
|
|
||||||
Fix a memory leak (Daniel Berrange),<br/>
|
|
||||||
python bindings: fix unsigned long marshalling (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
python bindings: release interpeter lock when calling C (Daniel Berrange),<br/>
|
|
||||||
don't raise HTTP error when looking information for a domain,<br/>
|
|
||||||
better error reporting (Daniel Berrange),<br/>
|
|
||||||
provide XML parsing errors,<br/>
|
|
||||||
extension of the test framework (Daniel Berrange),<br/>
|
|
||||||
python bindings: Domain instances now link to the Connect to avoid garbage collection and disconnect,<br/>
|
|
||||||
updated the localization strings<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
some refactoring to use the driver for all entry points<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.8: Oct 16 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
fix virsh man page (Noriko Mizumoto)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
Bug for system with page size != 4k,<br/>
|
|
||||||
memory leak fixes (xend interface and XML parsing) (Daniel Berrange),<br/>
|
|
||||||
compile fix,<br/>
|
|
||||||
mlock/munlock size fixes (Daniel Berrange),<br/>
|
|
||||||
don't label crashed domains as shut off (Peter Vetere)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
vcpu number initialization (Philippe Berthault),<br/>
|
|
||||||
blktapdd support for alternate drivers like blktap (Daniel Berrange),<br/>
|
|
||||||
improve error reporting<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.7: Sep 29 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
fix a memory bug on getting vcpu information from xend (Daniel Berrange),<br/>
|
|
||||||
fix another problem in the hypercalls change in Xen changeset 86d26e6ec89b when getting domain information (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.6: Sep 22 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Support for localization of strings using gettext (Daniel Berrange),<br/>
|
|
||||||
Support for new Xen-3.0.3 cdrom and disk configuration (Daniel Berrange),<br/>
|
|
||||||
Support for setting VNC port when creating domains with new xend config files (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
Fix bug when running against xen-3.0.2 hypercalls (Jim Fehlig),<br/>
|
|
||||||
Fix reconnection problem when talking directly to http xend<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.5: Sep 05 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Support for new hypercalls change in Xen changeset 86d26e6ec89b<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
virParseUUID() was wrong,<br/>
|
|
||||||
networking for paravirt guests (Daniel Berrange),<br/>
|
|
||||||
virsh on non-existent domains (Daniel Berrange),<br/>
|
|
||||||
string cast bug when handling error in python (Pete Vetere),<br/>
|
|
||||||
HTTP 500 xend error code handling (Pete Vetere and Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
test suite for SEXPR <-> XML format conversions (Daniel Berrange),<br/>
|
|
||||||
virsh output regression suite (Daniel Berrange),<br/>
|
|
||||||
new environ variable VIRSH_DEFAULT_CONNECT_URI for the default URI when connecting (Daniel Berrange),<br/>
|
|
||||||
graphical console support for paravirt guests (Jeremy Katz),<br/>
|
|
||||||
parsing of simple Xen config files (with Daniel Berrange),<br/>
|
|
||||||
early work on defined (not running) domains (Daniel Berrange),<br/>
|
|
||||||
virsh output improvement (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.4: Aug 16 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
spelling (Daniel Berrange),<br/>
|
|
||||||
test driver examples<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
spec file fix (Mark McLoughlin),<br/>
|
|
||||||
error report problem (with Hugh Brock),<br/>
|
|
||||||
long integer in Python bindings (with Daniel Berrange),<br/>
|
|
||||||
XML generation bug for CDRom (Daniel Berrange),<br/>
|
|
||||||
bug whem using number() XPath function (Mark McLoughlin),<br/>
|
|
||||||
fix python detection code,<br/>
|
|
||||||
remove duplicate initialization errors (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
UUID in XML description (Peter Vetere),<br/>
|
|
||||||
proxy code cleanup,<br/>
|
|
||||||
virtual CPU and affinity support + virsh support (Michel Ponceau, Philippe Berthault, Daniel Berrange),<br/>
|
|
||||||
port and tty information for console in XML (Daniel Berrange),<br/>
|
|
||||||
added XML dump to driver and proxy support (Daniel Berrange),<br/>
|
|
||||||
extension of boot options with support for floppy and cdrom (Daniel Berrange),<br/>
|
|
||||||
features block in XML to report/ask PAE, ACPI, APIC for HVM domains (Daniel Berrange),<br/>
|
|
||||||
fail saide-effect operations when using read-only connection,<br/>
|
|
||||||
large improvements to test driver (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.3: Jul 11 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
augmented to cover hvm domains<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
build as non-root,<br/>
|
|
||||||
fix xend access when root,<br/>
|
|
||||||
handling of empty XML elements (Mark McLoughlin),<br/>
|
|
||||||
XML serialization and parsing fixes (Mark McLoughlin),<br/>
|
|
||||||
allow to create domains without disk (Mark McLoughlin)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
xenDaemonLookupByID from O(n^2) to O(n) (Daniel Berrange),<br/>
|
|
||||||
support for fully virtualized guest (Jim Fehlig, DV, Mark McLoughlin)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.2: Jul 03 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
proxy mechanism for unprivileged read-only access by http<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
headers include paths fixup<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.1: Jun 21 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Cope with API change introduced in Xen changeset 10277,<br/>
|
|
||||||
new test driver for regression checks (Daniel P. Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
Python examples (David Lutterkort),<br/>
|
|
||||||
new Perl binding URL,<br/>
|
|
||||||
man page update (Karel Zak)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
ncurses fallback (Jim Fehlig),<br/>
|
|
||||||
VPATH builds (Daniel P. Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
uninitialized memory access in error reporting,<br/>
|
|
||||||
S-Expr parsing (Jim Fehlig, Jeremy Katz),<br/>
|
|
||||||
virConnectOpen bug,<br/>
|
|
||||||
remove a TODO in xs_internal.c<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
added UUID to XML serialization,<br/>
|
|
||||||
buffer usage (Karel Zak),<br/>
|
|
||||||
--connect argument to virsh (Daniel P. Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
new entry points,<br/>
|
|
||||||
cleanup of libvirt.c (with Daniel P. Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.0: Apr 10 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
new APIs for Node information and Reboot<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
updates on architecture and format,<br/>
|
|
||||||
typo fix (Jim Meyering),<br/>
|
|
||||||
virsh: man page (Andrew Puch)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
--with-xen-distdir option (Ronald Aigner),<br/>
|
|
||||||
out of tree build and pkginfo cflag fix (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
error message (Jim Meyering),<br/>
|
|
||||||
error allocation in virsh (Jim Meyering),<br/>
|
|
||||||
virDomainLookupByID (Jim Fehlig)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
enhancement and fixes of the XML description format (David Lutterkort and Jim Fehlig),<br/>
|
|
||||||
virsh: more options, create, nodeinfo (Karel Zak),<br/>
|
|
||||||
virsh: renaming of some options (Karel Zak),<br/>
|
|
||||||
virsh: use stderr only for errors (Karel Zak),<br/>
|
|
||||||
bindings: exception handling in examples (Jim Meyering),<br/>
|
|
||||||
bindings: perl ones out of tree (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
refactoring internals into a driver model,<br/>
|
|
||||||
more error handling,<br/>
|
|
||||||
structure sharing,<br/>
|
|
||||||
thread safety and ref counting<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.0.6: Feb 28 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
add UUID lookup and extract API,<br/>
|
|
||||||
add error handling APIs both synchronous and asynchronous,<br/>
|
|
||||||
added minimal hook for error handling at the python level<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
augment the documentation and tests to cover error handling<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
improved the python bindings<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.0.5: Feb 23 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Added XML description parsing, dependance to libxml2, implemented the creation API virDomainCreateLinux(),<br/>
|
|
||||||
new APIs to lookup and name domain by UUID,<br/>
|
|
||||||
Adding regression tests in python and examples in C,<br/>
|
|
||||||
Added devhelp help for Gnome/Gtk programmers,<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
web site improvement, extended the documentation to cover the XML format and Python API<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
fixed the XML dump when using the Xend access,<br/>
|
|
||||||
Fixed a few more problem related to the name change<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.0.4: Feb 10 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
Fix various bugs introduced in the name change<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.0.3: Feb 09 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Switch name from 'libvir' to libvirt,<br/>
|
|
||||||
Starting infrastructure to add code examples<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
Update of python bindings for completeness<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.0.2: Jan 29 2006</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
integration of HTTP xend RPC based on libxend by Anthony Liquori for most operations,<br/>
|
|
||||||
Adding Save and Restore APIs<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
Update of the documentation, web site redesign (Diana Fong)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
fix the Python bindings bug when domain and connections where freed<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
extended the virsh command line tool (Karel Zak),<br/>
|
|
||||||
remove xenstore transactions (Anthony Liguori)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -1,534 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Releases (2007)</h1>
|
|
||||||
<p>Here is the list of official releases made during the year 2007.
|
|
||||||
A similar list for <a href="news-2006.html">2006</a> is also available.
|
|
||||||
</p>
|
|
||||||
<p>It is also possible to just use
|
|
||||||
the <a href="downloads.html" shape="rect">GIT version or snapshot</a>,
|
|
||||||
contact the mailing list and check
|
|
||||||
the <a href="http://libvirt.org/git/?p=libvirt.git;a=log" shape="rect">GIT log</a>
|
|
||||||
to gauge progress.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>0.4.0: Dec 18 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Compilation on Windows cygwin/mingw (Richard Jones),<br/>
|
|
||||||
Ruby bindings (David Lutterkort),<br/>
|
|
||||||
SASL based authentication for libvirt remote support (Daniel Berrange),<br/>
|
|
||||||
PolicyKit authentication (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
example files for QEMU and libvirtd configuations (Daniel Berrange),<br/>
|
|
||||||
english cleanups (Jim Paris),<br/>
|
|
||||||
CIM and OpenVZ references,<br/>
|
|
||||||
document <shareable/>,<br/>
|
|
||||||
daemon startup when using QEMU/KVM,<br/>
|
|
||||||
document HV support for new NUMA calls (Richard Jones),<br/>
|
|
||||||
various english fixes (Bruce Montague),<br/>
|
|
||||||
OCaml docs links (Richard Jones),<br/>
|
|
||||||
describe the various bindings add Ruby link,<br/>
|
|
||||||
Windows support page (Richard Jones),<br/>
|
|
||||||
authentication documentation updates (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
NUMA topology error handling (Beth Kon),<br/>
|
|
||||||
NUMA topology cells without CPU (Beth Kon),<br/>
|
|
||||||
XML to/from XM bridge config (Daniel Berrange),<br/>
|
|
||||||
XM processing of vnc parameters (Daniel Berrange),<br/>
|
|
||||||
Reset migration source after failure (Jim Paris),<br/>
|
|
||||||
negative integer in config (Tatsuro Enokura),<br/>
|
|
||||||
zero terminating string buffer,<br/>
|
|
||||||
detect integer overflow (Jim Meyering),<br/>
|
|
||||||
QEmu command line ending fixes (Daniel Berrange),<br/>
|
|
||||||
recursion problem in the daemon (Daniel Berrange),<br/>
|
|
||||||
HVM domain with CDRom (Masayuki Sunou),<br/>
|
|
||||||
off by one error in NUMA cpu count (Beth Kon),<br/>
|
|
||||||
avoid xend errors when adding disks (Masayuki Sunou),<br/>
|
|
||||||
compile error (Chris Lalancette),<br/>
|
|
||||||
transposed fwrite args (Jim Meyering),<br/>
|
|
||||||
compile without xen and on solaris (Jim Paris),<br/>
|
|
||||||
parsing of interface names (Richard Jones),<br/>
|
|
||||||
overflow for starts on 32bits (Daniel Berrange),<br/>
|
|
||||||
fix problems in error reporting (Saori Fukuta),<br/>
|
|
||||||
wrong call to brSetForwardDelay changed to brSetEnableSTP (Richard Jones),<br/>
|
|
||||||
allow shareable disk in old Xen,<br/>
|
|
||||||
fix wrong certificate file (Jim Meyering),<br/>
|
|
||||||
avoid some startup error when non-root,<br/>
|
|
||||||
off-by-1 buffer NULL termination (Daniel Berrange),<br/>
|
|
||||||
various string allocation fixes (Daniel Berrange),<br/>
|
|
||||||
avoid problems with vnetXXX interfaces in domain dumps (Daniel Berrange),<br/>
|
|
||||||
build fixes for RHEL (Daniel Berrange),<br/>
|
|
||||||
virsh prompt should not depend on uid (Richard Jones),<br/>
|
|
||||||
fix scaping of '<' (Richard Jones),<br/>
|
|
||||||
fix detach-disk on Xen tap devices (Saori Fukuta),<br/>
|
|
||||||
CPU parameter setting in XM config (Saori Fukuta),<br/>
|
|
||||||
credential handling fixes (Daniel Berrange),<br/>
|
|
||||||
fix compatibility with Xen 3.2.0 (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
/etc/libvirt/qemu.conf configuration for QEMU driver (Daniel Berrange),<br/>
|
|
||||||
NUMA cpu pinning in config files (DV and Saori Fukuta),<br/>
|
|
||||||
CDRom media change in KVM/QEMU (Daniel Berrange),<br/>
|
|
||||||
tests for <shareable/> in configs,<br/>
|
|
||||||
pinning inactive domains for Xen 3.0.3 (Saori Fukuta),<br/>
|
|
||||||
use gnulib for portability enhancement (Jim Meyering),<br/>
|
|
||||||
--without-libvirtd config option (Richard Jones),<br/>
|
|
||||||
Python bindings for NUMA,<br/>
|
|
||||||
add extra utility functions to buffer (Richard Jones),<br/>
|
|
||||||
separate qparams module for handling query parameters (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
remove virDomainRestart from API as it was never used (Richard Jones),<br/>
|
|
||||||
constify params for attach/detach APIs (Daniel Berrange),<br/>
|
|
||||||
gcc printf attribute checkings (Jim Meyering),<br/>
|
|
||||||
refactoring of device parsing code and shell escaping (Daniel Berrange),<br/>
|
|
||||||
virsh schedinfo parameters validation (Masayuki Sunou),<br/>
|
|
||||||
Avoid risk of format string abuse (Jim Meyering),<br/>
|
|
||||||
integer parsing cleanups (Jim Meyering),<br/>
|
|
||||||
build out of the source tree (Jim Meyering),<br/>
|
|
||||||
URI parsing refactoring (Richard Jones),<br/>
|
|
||||||
failed strdup/malloc handling (Jim Meyering),<br/>
|
|
||||||
Make "make distcheck" work (Jim Meyering),<br/>
|
|
||||||
improve xen internall error reports (Richard Jones),<br/>
|
|
||||||
cleanup of the daemon remote code (Daniel Berrange),<br/>
|
|
||||||
rename error VIR_FROM_LINUX to VIR_FROM_STATS_LINUX (Richard Jones),<br/>
|
|
||||||
don't compile the proxy if without Xen (Richard Jones),<br/>
|
|
||||||
fix paths when configuring for /usr prefix,<br/>
|
|
||||||
improve error reporting code (Jim Meyering),<br/>
|
|
||||||
detect heap allocation failure (Jim Meyering),<br/>
|
|
||||||
disable xen sexpr parsing code if Xen is disabled (Daniel Berrange),<br/>
|
|
||||||
cleanup of the GetType entry point for Xen drivers,<br/>
|
|
||||||
move some QEmu path handling to generic module (Daniel Berrange),<br/>
|
|
||||||
many code cleanups related to the Windows port (Richard Jones),<br/>
|
|
||||||
disable the proxy if using PolicyKit,<br/>
|
|
||||||
readline availability detection,<br/>
|
|
||||||
test libvirtd's config-processing code (Jim Meyering),<br/>
|
|
||||||
use a variable name as sizeof argument (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.3.3: Sep 30 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Avahi mDNS daemon export (Daniel Berrange),<br/>
|
|
||||||
NUMA support (Beth Kan)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
cleanups (Toth Istvan),<br/>
|
|
||||||
typos (Eduardo Pereira)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
memory corruption on large dumps (Masayuki Sunou),<br/>
|
|
||||||
fix virsh vncdisplay command exit (Masayuki Sunou),<br/>
|
|
||||||
Fix network stats TX/RX result (Richard Jones),<br/>
|
|
||||||
warning on Xen 3.0.3 (Richard Jones),<br/>
|
|
||||||
missing buffer check in virDomainXMLDevID (Hugh Brock),<br/>
|
|
||||||
avoid zombies when using remote (Daniel Berrange),<br/>
|
|
||||||
xend connection error message (Richard Jones),<br/>
|
|
||||||
avoid ssh tty prompt (Daniel Berrange),<br/>
|
|
||||||
username handling for remote URIs (Fabian Deutsch),<br/>
|
|
||||||
fix potential crash on multiple input XML tags (Daniel Berrange),<br/>
|
|
||||||
Solaris Xen hypercalls fixup (Mark Johnson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
OpenVZ support (Shuveb Hussain and Anoop Cyriac),<br/>
|
|
||||||
CD-Rom reload on XEn (Hugh Brock),<br/>
|
|
||||||
PXE boot got QEmu/KVM (Daniel Berrange),<br/>
|
|
||||||
QEmu socket permissions customization (Daniel Berrange),<br/>
|
|
||||||
more QEmu support (Richard Jones),<br/>
|
|
||||||
better path detection for qemu and dnsmasq (Richard Jones),<br/>
|
|
||||||
QEmu flags are per-Domain (Daniel Berrange),<br/>
|
|
||||||
virsh freecell command,<br/>
|
|
||||||
Solaris portability fixes (Mark Johnson),<br/>
|
|
||||||
default bootloader support (Daniel Berrange),<br/>
|
|
||||||
new virNodeGetFreeMemory API,<br/>
|
|
||||||
vncpasswd extraction in configuration files if secure (Mark Johnson and Daniel Berrange),<br/>
|
|
||||||
Python bindings for block and interface statistics<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
virDrvOpenRemoteFlags definition (Richard Jones),<br/>
|
|
||||||
configure tests and output (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.3.2: Aug 21 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
KVM migration and save/restore (Jim Paris),<br/>
|
|
||||||
added API for migration (Richard Jones),<br/>
|
|
||||||
added APIs for block device and interface statistic (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
examples for XML network APIs,<br/>
|
|
||||||
fix typo and schedinfo synopsis in man page (Atsushi SAKAI),<br/>
|
|
||||||
hypervisor support page update (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
remove a couple of leaks in QEmu/KVM backend (Daniel berrange),<br/>
|
|
||||||
fix GnuTLS 1.0 compatibility (Richard Jones),<br/>
|
|
||||||
--config/-f option mistake for libvirtd (Richard Jones),<br/>
|
|
||||||
remove leak in QEmu backend (Jim Paris),<br/>
|
|
||||||
fix some QEmu communication bugs (Jim Paris),<br/>
|
|
||||||
UUID lookup though proxy fix,<br/>
|
|
||||||
setvcpus checking bugs (with Atsushi SAKAI),<br/>
|
|
||||||
int checking in virsh parameters (with Masayuki Sunou),<br/>
|
|
||||||
deny devices attach/detach for < Xen 3.0.4 (Masayuki Sunou),<br/>
|
|
||||||
XenStore query memory leak (Masayuki Sunou),<br/>
|
|
||||||
virsh schedinfo cleanup (Saori Fukuta)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
virsh new ttyconsole command,<br/>
|
|
||||||
networking API implementation for test driver (Daniel berrange),<br/>
|
|
||||||
qemu/kvm feature reporting of ACPI/APIC (David Lutterkort),<br/>
|
|
||||||
checking of QEmu architectures (Daniel berrange),<br/>
|
|
||||||
improve devices XML errors reporting (Masayuki Sunou),<br/>
|
|
||||||
speedup of domain queries on Xen (Daniel berrange),<br/>
|
|
||||||
augment XML dumps with interface devices names (Richard Jones),<br/>
|
|
||||||
internal API to query drivers for features (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
Improve virNodeGetInfo implentation (Daniel berrange),<br/>
|
|
||||||
general UUID code cleanup (Daniel berrange),<br/>
|
|
||||||
fix API generator file selection<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.3.1: Jul 24 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
index to remote page,<br/>
|
|
||||||
script to test certificates,<br/>
|
|
||||||
IPv6 remote support docs (Daniel Berrange),<br/>
|
|
||||||
document VIRSH_DEFAULT_CONNECT_URI in virsh man page (David Lutterkort),<br/>
|
|
||||||
Relax-NG early grammar for the network XML (David Lutterkort)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
leaks in disk XML parsing (Masayuki Sunou),<br/>
|
|
||||||
hypervisor alignment call problems on PPC64 (Christian Ehrhardt),<br/>
|
|
||||||
dead client registration in daemon event loop (Daniel Berrange),<br/>
|
|
||||||
double free in error handling (Daniel Berrange),<br/>
|
|
||||||
close on exec for log file descriptors in the daemon (Daniel Berrange),<br/>
|
|
||||||
avoid caching problem in remote daemon (Daniel Berrange),<br/>
|
|
||||||
avoid crash after QEmu domain failure (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
checks of x509 certificates and keys (Daniel Berrange),<br/>
|
|
||||||
error reports in the daemon (Daniel Berrange),<br/>
|
|
||||||
checking of Ethernet MAC addresses in XML configs (Masayuki Sunou),<br/>
|
|
||||||
support for a new clock switch between UTC and localtime (Daniel Berrange),<br/>
|
|
||||||
early version of OpenVZ support (Shuveb Hussain),<br/>
|
|
||||||
support for input devices on PS/2 and USB buses (Daniel Berrange),<br/>
|
|
||||||
more tests especially the QEmu support (Daniel Berrange),<br/>
|
|
||||||
range check in credit scheduler (with Saori Fukuta and Atsushi Sakai),<br/>
|
|
||||||
add support for listen VNC parameter un QEmu and fix command line arg (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
debug tracing (Richard Jones),<br/>
|
|
||||||
removal of --with-qemud-pid-file (Richard Jones),<br/>
|
|
||||||
remove unused virDeviceMode,<br/>
|
|
||||||
new util module for code shared between drivers (Shuveb Hussain),<br/>
|
|
||||||
xen header location detection (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.3.0: Jul 09 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Secure Remote support (Richard Jones).
|
|
||||||
See <a href="http://libvirt.org/remote.html">the remote page</a> of the documentation<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
remote support (Richard Jones),<br/>
|
|
||||||
description of the URI connection strings (Richard Jones),<br/>
|
|
||||||
update of virsh man page,<br/>
|
|
||||||
matrix of libvirt API/hypervisor support with version information (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
examples Makefile.am generation (Richard Jones),<br/>
|
|
||||||
SetMem fix (Mark Johnson),<br/>
|
|
||||||
URI handling and ordering of drivers (Daniel Berrange),<br/>
|
|
||||||
fix virsh help without hypervisor (Richard Jones),<br/>
|
|
||||||
id marshalling fix (Daniel Berrange),<br/>
|
|
||||||
fix virConnectGetMaxVcpus on remote (Richard Jones),<br/>
|
|
||||||
avoid a realloc leak (Jim Meyering),<br/>
|
|
||||||
scheduler parameters handling for Xen (Richard Jones),<br/>
|
|
||||||
various early remote bug fixes (Richard Jones),<br/>
|
|
||||||
remove virsh leaks of domains references (Masayuki Sunou),<br/>
|
|
||||||
configCache refill bug (Richard Jones),<br/>
|
|
||||||
fix XML serialization bugs<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
QEmu switch to XDR-based protocol (Dan Berrange),<br/>
|
|
||||||
device attach/detach commands (Masayuki Sunou),<br/>
|
|
||||||
OCaml bindings (Richard Jones),<br/>
|
|
||||||
new entry points virDomainGetConnect and virNetworkGetConnect useful for bindings (Richard Jones),<br/>
|
|
||||||
reunitifaction of remote and qemu daemon under a single libvirtd with a config file (Daniel Berrange),<br/>
|
|
||||||
Localization updates<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
parsing of connection URIs (Richard Jones),<br/>
|
|
||||||
messages from virsh (Saori Fukuta),<br/>
|
|
||||||
Coverage files (Daniel Berrange),<br/>
|
|
||||||
Solaris fixes (Mark Johnson),<br/>
|
|
||||||
avoid [r]index calls (Richard Jones),<br/>
|
|
||||||
release information in Xen backend,<br/>
|
|
||||||
virsh cpupin command cleanups (Masayuki Sunou),<br/>
|
|
||||||
xen:/// support as standard Xen URI (Richard Jones and Daniel Berrange),<br/>
|
|
||||||
improve driver selection/decline mechanism (Richard Jones),<br/>
|
|
||||||
error reporting on XML dump (Richard Jones),<br/>
|
|
||||||
Remove unused virDomainKernel structure (Richard Jones),<br/>
|
|
||||||
daemon event loop event handling (Daniel Berrange),<br/>
|
|
||||||
various unifications cleanup in the daemon merging (Daniel Berrange),<br/>
|
|
||||||
internal file and timer monitoring API (Daniel Berrange),<br/>
|
|
||||||
remove libsysfs dependancy,<br/>
|
|
||||||
call brctl program directly (Daniel Berrange),<br/>
|
|
||||||
virBuffer functions cleanups (Richard Jones),<br/>
|
|
||||||
make init script LSB compliant,<br/>
|
|
||||||
error handling on lookup functions (Richard Jones),<br/>
|
|
||||||
remove internal virGetDomainByID (Richard Jones),<br/>
|
|
||||||
revamp of xen subdrivers interfaces (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.2.3: Jun 08 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
documentation for upcoming remote access (Richard Jones),<br/>
|
|
||||||
virConnectNumOfDefinedDomains doc (Jan Michael),<br/>
|
|
||||||
virsh help messages for dumpxml and net-dumpxml (Chris Wright)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
RelaxNG schemas regexp fix (Robin Green),<br/>
|
|
||||||
RelaxNG arch bug (Mark McLoughlin),<br/>
|
|
||||||
large buffers bug fixes (Shigeki Sakamoto),<br/>
|
|
||||||
error on out of memory condition (Shigeki Sakamoto),<br/>
|
|
||||||
virshStrdup fix,<br/>
|
|
||||||
non-root driver when using Xen bug (Richard Jones),<br/>
|
|
||||||
use --strict-order when running dnsmasq (Daniel Berrange),<br/>
|
|
||||||
virbr0 weirdness on restart (Mark McLoughlin),<br/>
|
|
||||||
keep connection error messages (Richard Jones),<br/>
|
|
||||||
increase QEmu read buffer on help (Daniel Berrange),<br/>
|
|
||||||
rpm dependance on dnsmasq (Daniel Berrange),<br/>
|
|
||||||
fix XML boot device syntax (Daniel Berrange),<br/>
|
|
||||||
QEmu memory bug (Daniel Berrange),<br/>
|
|
||||||
memory leak fix (Masayuki Sunou),<br/>
|
|
||||||
fix compiler flags (Richard Jones),<br/>
|
|
||||||
remove type ioemu on recent Xen HVM for paravirt drivers (Saori Fukuta),<br/>
|
|
||||||
uninitialized string bug (Masayuki Sunou),<br/>
|
|
||||||
allow init even if the daemon is not running,<br/>
|
|
||||||
XML to config fix (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
add a special error class for the test module (Richard Jones),<br/>
|
|
||||||
virConnectGetCapabilities on proxy (Richard Jones),<br/>
|
|
||||||
allow network driver to decline usage (Richard Jones),<br/>
|
|
||||||
extend error messages for upcoming remote access (Richard Jones),<br/>
|
|
||||||
on_reboot support for QEmu (Daniel Berrange),<br/>
|
|
||||||
save daemon output in a log file (Daniel Berrange),<br/>
|
|
||||||
xenXMDomainDefineXML can override guest config (Hugh Brock),<br/>
|
|
||||||
add attach-device and detach-device commands to virsh (Masayuki Sunou and Mark McLoughlin and Richard Jones),<br/>
|
|
||||||
make virGetVersion case insensitive and Python bindings (Richard Jones),<br/>
|
|
||||||
new scheduler API (Atsushi SAKAI),<br/>
|
|
||||||
localizations updates,<br/>
|
|
||||||
add logging option for virsh (Nobuhiro Itou),<br/>
|
|
||||||
allow arguments to be passed to bootloader (Hugh Brock),<br/>
|
|
||||||
increase the test suite (Daniel Berrange and Hugh Brock)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
Remove VIR_DRV_OPEN_QUIET (Richard Jones),<br/>
|
|
||||||
disable xm_internal.c for Xen > 3.0.3 (Daniel Berrange),<br/>
|
|
||||||
unused fields in _virDomain (Richard Jones),<br/>
|
|
||||||
export __virGetDomain and __virGetNetwork for libvirtd only (Richard Jones),<br/>
|
|
||||||
ignore old VNC config for HVM on recent Xen (Daniel Berrange),<br/>
|
|
||||||
various code cleanups,<br/>
|
|
||||||
-Werror cleanup (Hugh Brock)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.2.2: Apr 17 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
fix errors due to Amaya (with Simon Hernandez),<br/>
|
|
||||||
virsh uses kB not bytes (Atsushi SAKAI),<br/>
|
|
||||||
add command line help to qemud (Richard Jones),<br/>
|
|
||||||
xenUnifiedRegister docs (Atsushi SAKAI),<br/>
|
|
||||||
strings typos (Nikolay Sivov),<br/>
|
|
||||||
ilocalization problem raised by Thomas Canniot<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
virsh memory values test (Masayuki Sunou),<br/>
|
|
||||||
operations without libvirt_qemud (Atsushi SAKAI),<br/>
|
|
||||||
fix spec file (Florian La Roche, Jeremy Katz, Michael Schwendt),<br/>
|
|
||||||
direct hypervisor call (Atsushi SAKAI),<br/>
|
|
||||||
buffer overflow on qemu networking command (Daniel Berrange),<br/>
|
|
||||||
buffer overflow in quemud (Daniel Berrange),<br/>
|
|
||||||
virsh vcpupin bug (Masayuki Sunou),<br/>
|
|
||||||
host PAE detections and strcuctures size (Richard Jones),<br/>
|
|
||||||
Xen PAE flag handling (Daniel Berrange),<br/>
|
|
||||||
bridged config configuration (Daniel Berrange),<br/>
|
|
||||||
erroneous XEN_V2_OP_SETMAXMEM value (Masayuki Sunou),<br/>
|
|
||||||
memory free error (Mark McLoughlin),<br/>
|
|
||||||
set VIR_CONNECT_RO on read-only connections (S.Sakamoto),<br/>
|
|
||||||
avoid memory explosion bug (Daniel Berrange),<br/>
|
|
||||||
integer overflow for qemu CPU time (Daniel Berrange),<br/>
|
|
||||||
QEMU binary path check (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
remove some global variables (Jim Meyering),<br/>
|
|
||||||
printf-style functions checks (Jim Meyering),<br/>
|
|
||||||
better virsh error messages,<br/>
|
|
||||||
increase compiler checkings and security (Daniel Berrange),<br/>
|
|
||||||
virBufferGrow usage and docs,<br/>
|
|
||||||
use calloc instead of malloc/memset,<br/>
|
|
||||||
replace all sprintf by snprintf,<br/>
|
|
||||||
avoid configure clobbering user's CTAGS (Jim Meyering),<br/>
|
|
||||||
signal handler error cleanup (Richard Jones),<br/>
|
|
||||||
iptables internal code claenup (Mark McLoughlin),<br/>
|
|
||||||
unified Xen driver (Richard Jones),<br/>
|
|
||||||
cleanup XPath libxml2 calls,<br/>
|
|
||||||
IPTables rules tightening (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
more regression tests on XML (Daniel Berrange),<br/>
|
|
||||||
Python bindings now generate exception in error cases (Richard Jones),<br/>
|
|
||||||
Python bindings for vir*GetAutoStart (Daniel Berrange),<br/>
|
|
||||||
handling of CD-Rom device without device name (Nobuhiro Itou),<br/>
|
|
||||||
fix hypervisor call to work with Xen 3.0.5 (Daniel Berrange),<br/>
|
|
||||||
DomainGetOSType for inactive domains (Daniel Berrange),<br/>
|
|
||||||
multiple boot devices for HVM (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.2.1: Mar 16 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Add support for network autostart and init scripts (Mark McLoughlin),<br/>
|
|
||||||
New API virConnectGetCapabilities() to detect the virtualization capabilities of a host (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
Documentation updates especially on the XML formats<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
IA64 fixes (Atsushi SAKAI),<br/>
|
|
||||||
dependancies and build (Daniel Berrange),<br/>
|
|
||||||
fix xend port detection (Daniel Berrange),<br/>
|
|
||||||
icompile time warnings (Mark),<br/>
|
|
||||||
avoid const related compiler warnings (Daniel Berrange),<br/>
|
|
||||||
automated builds (Daniel Berrange),<br/>
|
|
||||||
pointer/int mismatch (Richard Jones),<br/>
|
|
||||||
configure time selection of drivers,<br/>
|
|
||||||
libvirt spec hacking (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
libvirt_qemud daemon path (Daniel Berrange),<br/>
|
|
||||||
libvirt config directory (Daniel Berrange and Mark McLoughlin),<br/>
|
|
||||||
memory leak in qemud (Mark),<br/>
|
|
||||||
various fixes on network support (Mark),<br/>
|
|
||||||
avoid Xen domain zombies on device hotplug errors (Daniel Berrange),<br/>
|
|
||||||
various fixes on qemud (Mark),<br/>
|
|
||||||
args parsing (Richard Jones),<br/>
|
|
||||||
virsh -t argument (Saori Fukuta),<br/>
|
|
||||||
avoid virsh crash on TAB key (Daniel Berrange),<br/>
|
|
||||||
detect xend operation failures (Kazuki Mizushima),<br/>
|
|
||||||
don't listen on null socket (Rich Jones),<br/>
|
|
||||||
read-only socket cleanup (Rich Jones),<br/>
|
|
||||||
use of vnc port 5900 (Nobuhiro Itou),<br/>
|
|
||||||
assorted networking fixes (Daniel Berrange),<br/>
|
|
||||||
shutoff and shutdown mismatches (Kazuki Mizushima),<br/>
|
|
||||||
unlimited memory handling (Atsushi SAKAI),<br/>
|
|
||||||
python binding fixes (Tatsuro Enokura)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
qemud signal handling (Mark),<br/>
|
|
||||||
don't shutdown or reboot domain0 (Kazuki Mizushima),<br/>
|
|
||||||
QEmu version autodetection (Daniel Berrange),<br/>
|
|
||||||
network UUIDs (Mark),<br/>
|
|
||||||
speed up UUID domain lookups (Tatsuro Enokura and Daniel Berrange),<br/>
|
|
||||||
support for paused QEmu CPU (Daniel Berrange),<br/>
|
|
||||||
keymap VNC attribute support (Takahashi Tomohiro and Daniel Berrange),<br/>
|
|
||||||
maximum number of virtual CPU (Masayuki Sunou),<br/>
|
|
||||||
virtsh --readonly option (Rich Jones),<br/>
|
|
||||||
python bindings for new functions (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
Various internal cleanups (Richard Jones, Daniel Berrange, Mark McLoughlin)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.2.0: Feb 14 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Add support for QEmu and KVM virtualization (Daniel Berrange),<br/>
|
|
||||||
Add support for network configuration (Mark McLoughlin)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
avoid a crash in connect (Daniel Berrange),<br/>
|
|
||||||
virsh args parsing (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
regression testing (Daniel Berrange),<br/>
|
|
||||||
localization string updates<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
Various internal cleanups (Mark McLoughlin, Richard Jones, Daniel Berrange, Karel Zak)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.1.11: Jan 22 2007</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Added a Relax-NG schemas to check XML instances<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
Remove memory leak when freeing virConf objects<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
Finish XML <-> XM config files support,<br/>
|
|
||||||
Finishing inactive domain support (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -1,580 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Releases (2008)</h1>
|
|
||||||
<p>Here is the list of official releases made during the year 2008.
|
|
||||||
A similar list for <a href="news-2007.html">2007</a> is also available.
|
|
||||||
</p>
|
|
||||||
<p>It is also possible to just use
|
|
||||||
the <a href="downloads.html" shape="rect">GIT version or snapshot</a>,
|
|
||||||
contact the mailing list and check
|
|
||||||
the <a href="http://libvirt.org/git/?p=libvirt.git;a=log" shape="rect">GIT log</a>
|
|
||||||
to gauge progress.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>0.5.1: Dec 04 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Portability:<br/>
|
|
||||||
fix missing dep in spec file,<br/>
|
|
||||||
fix compilation with new NUMA libraries (Daniel Berrange),<br/>
|
|
||||||
udev compatibility for RHEL (Chris Lalancette)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
documentation copy and paste errors and typo (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
add a delay in storage backend for disks to show up (Chris Lalancette),<br/>
|
|
||||||
fix parsing for CDRom device with no source (Daniel Berrange),<br/>
|
|
||||||
use xenstore to list domains to avoid some bugs (Guido Günther),<br/>
|
|
||||||
remove a leak in xen inotify code (Daniel Berrange),<br/>
|
|
||||||
UML driver freeing of uninitialialized variable (Ron Yorston),<br/>
|
|
||||||
fix UML inotify code (Daniel Berrange),<br/>
|
|
||||||
crash when adding storage without a format (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
use xend preferably to hypervisor call to set Xen max memory (Jim Fehlig),<br/>
|
|
||||||
allow remote://hostname/ URI for automatic probe of hypervisors (Daniel Berrange),<br/>
|
|
||||||
fix daemon configuration regression testing (Jim Meyering),<br/>
|
|
||||||
check /usr/bin/kvm for QEmu driver init (Guido Günther),<br/>
|
|
||||||
proper active vs. inactive differentiation (Guido Günther),<br/>
|
|
||||||
improve MTU setting on tap interfaces (Eduardo Habkost),<br/>
|
|
||||||
increase timeout for initial QEmu monitor poll (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
fix improper initialisations (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.5.0: Nov 25 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
CPU and scheduler support for LXC (Dan Smith),<br/>
|
|
||||||
SDL display configuration (Daniel Berrange),<br/>
|
|
||||||
domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange),<br/>
|
|
||||||
KVM/QEmu migration support (Rich Jones and Chris Lalancette),<br/>
|
|
||||||
User Mode Linux driver (Daniel Berrange),<br/>
|
|
||||||
API for node device enumeration using HAL and DeviceKit with python bindings (David Lively)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
RHEL build fixes,<br/>
|
|
||||||
VPATH build (Guido Gunther),<br/>
|
|
||||||
many MinGW related cleanups and fixes (Richard Jones),<br/>
|
|
||||||
compilation without libvirtd (Richard Jones),<br/>
|
|
||||||
Add a Windows icon (Richard Jones),<br/>
|
|
||||||
sys/poll.h portability fixes (Daniel Berrange),<br/>
|
|
||||||
gnulib and mingw cleanups (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
virsh man page cleanups (Mark McLoughlin),<br/>
|
|
||||||
doc for NIC model selection (Richard Jones),<br/>
|
|
||||||
monitoring section,<br/>
|
|
||||||
link to AMQP bindings,<br/>
|
|
||||||
inew APIs,<br/>
|
|
||||||
UML driver docs (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
Xen interfaces ordering (Jim Fehlig),<br/>
|
|
||||||
startup timeout with multiple pty (Cole Robinson),<br/>
|
|
||||||
segfault if QEmu without active virtual network (Cole Robinson),<br/>
|
|
||||||
qemu small leak (Eduardo Habkost),<br/>
|
|
||||||
index creation for more than 26 disks (Sanjay Rao and Chris Wright),<br/>
|
|
||||||
virRealloc handling of 0 (Daniel Berrange),<br/>
|
|
||||||
missing pointer initialization (Chris Lalancette),<br/>
|
|
||||||
bus device index bug (Guido Günther),<br/>
|
|
||||||
avoid crash in some error patch (Chris Lalancette),<br/>
|
|
||||||
fix a problem in storage back-end (Chris Lalancette),<br/>
|
|
||||||
minimum domain memory size check for Xen (Shigeki Sakamoto),<br/>
|
|
||||||
switch off QEmu cache if device is shared (Charles Duffy),<br/>
|
|
||||||
logical volume definition before scan bug (Chris Lalancette),<br/>
|
|
||||||
a couple of memory leaks on QEmu vnc (Jim Meyering),<br/>
|
|
||||||
lvs parsing fixes (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
LXC resources control and internal cgroup API (Dan Smith),<br/>
|
|
||||||
virDomainCreateLinux renamed virDomainDefineXML,<br/>
|
|
||||||
network driver modularization (Daniel Berrange),<br/>
|
|
||||||
change the way domain and net are reported in errors (Jim Meyering),<br/>
|
|
||||||
partition table scan on iSCSI (Chris Lalancette),<br/>
|
|
||||||
qemudDiskDeviceName to handle normal disks (Guido Günther),<br/>
|
|
||||||
qemudDomainBlockStats improvement (Guido Günther),<br/>
|
|
||||||
scsi/virtio hotplug support for KVM (Guido Günther),<br/>
|
|
||||||
USB hot addition in QEmu (Guido Günther),<br/>
|
|
||||||
logical pool and storage backend XML dump improvement (Chris Lalancette),<br/>
|
|
||||||
MAC addresses prefix per driver (Daniel Berrange),<br/>
|
|
||||||
OpenVZ getVersion support (Daniel Berrange),<br/>
|
|
||||||
hot removal of scsi/virtio disks for KVM (Guido Günther),<br/>
|
|
||||||
test storage driver (Cole Robinson),<br/>
|
|
||||||
iSCSI and disk storage driver improvement on path handling (Chris Lalancette),<br/>
|
|
||||||
UUID and ID support for Xenner (Daniel Berrange),<br/>
|
|
||||||
better logging when when executing commands (Cole Robinson),<br/>
|
|
||||||
bridged network for OpenVZ (Daniel Berrange),<br/>
|
|
||||||
OpenVZ config file params (Evgeniy Sokolov),<br/>
|
|
||||||
allow to build drivers as libtool convenience libs (Daniel Berrange),<br/>
|
|
||||||
fully versioned linker script for exported ABI (Daniel Berrange),<br/>
|
|
||||||
Push URI probing down into drivers open (Daniel Berrange),<br/>
|
|
||||||
move all stateful drivers into the daemon binary (Daniel Berrange),<br/>
|
|
||||||
improve domain event with a detail field (Daniel Berrange),<br/>
|
|
||||||
domain events for QEMU driver (Daniel Berrange),<br/>
|
|
||||||
event unregister callback crash (David Lively),<br/>
|
|
||||||
plug a few leaks (Daniel Berrange),<br/>
|
|
||||||
internal APIs for handling node device XML config (David Lively),<br/>
|
|
||||||
tweaks to node device implementation (Daniel Berrange),<br/>
|
|
||||||
OpenVZ vCPUs values init (Evgeniy Sokolov)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
C99 initializers (Guido Gunther),<br/>
|
|
||||||
test output (Cole Robinson),<br/>
|
|
||||||
debug macro centralization (Cole Robinson),<br/>
|
|
||||||
various error handling (Guido Günther),<br/>
|
|
||||||
safewrite use cleanup (Jim Meyering),<br/>
|
|
||||||
centralize error reporting logic (Cole Robinson),<br/>
|
|
||||||
avoid printf warnings (Daniel Berrange),<br/>
|
|
||||||
use arrays instead of list for internal APIs (Daniel Berrange),<br/>
|
|
||||||
remove many format string warnings Jim Meyering),<br/>
|
|
||||||
avoid syntax check warnings (Chris Lalancette),<br/>
|
|
||||||
improve po-check and list generation (Jim Meyering),<br/>
|
|
||||||
.gitignore generation and handling (Jim Meyering),<br/>
|
|
||||||
use ARRAY_CARDINALITY (Jim Meyering),<br/>
|
|
||||||
gnulib updates and switch to use netdb.h (Jim Meyering),<br/>
|
|
||||||
drop usage of socket_errno (Jim Meyering),<br/>
|
|
||||||
remove socketcompat.h (Jim Meyering),<br/>
|
|
||||||
more tests (Jim Meyering),<br/>
|
|
||||||
drop virStringList (Daniel Berrange),<br/>
|
|
||||||
reformatting and isolation of the error APIs (Daniel Berrange),<br/>
|
|
||||||
cleanup internal.h and move internal APIs in specific headers (Daniel Berrange),<br/>
|
|
||||||
move domain events helpers into domain_events.c (Daniel Berrange),<br/>
|
|
||||||
cleanup the way optional modules are compiled (Daniel Berrange),<br/>
|
|
||||||
add new logging module,<br/>
|
|
||||||
optional dlopen of drivers (Daniel Berrange),<br/>
|
|
||||||
various new tests (Jim Meyering),<br/>
|
|
||||||
cleanups when Xen is not configured in (Daniel Berrange),<br/>
|
|
||||||
add some missing functions comments (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.6: Sep 23 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
fix some comments in API (Anton Protopopov),<br/>
|
|
||||||
cleanup and extension of bindings and windows pages (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
missing include file (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
avoid a segfault if missing qemu emulator (Cole Robinson),<br/>
|
|
||||||
reading vncdisplay from xend domain (Cole Robinson),<br/>
|
|
||||||
segfault in OpenVZ (Evgeniy Sokolov),<br/>
|
|
||||||
fix parsing of pool without a source (Chris Lalancette and Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
add storage disk volume delete (Cole Robinson),<br/>
|
|
||||||
KVM dynamic max CPU detection (Guido Günther),<br/>
|
|
||||||
spec file improvement for minimal builds (Ben Guthro),<br/>
|
|
||||||
improved error message in XM configuration module (Richard Jones),<br/>
|
|
||||||
network config in OpenVZ support (Evgeniy Sokolov),<br/>
|
|
||||||
enable stopping a pool in logical storage backend and cleanup deletion of pool (Chris Lalancette)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
deadcode removal (Nguyen Anh Quynh),<br/>
|
|
||||||
fix one test case (Daniel Berrange),<br/>
|
|
||||||
various strings and space cleanups (Daniel Berrange),<br/>
|
|
||||||
structure initialization cleanup (Chris Lalancette)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.5: Sep 08 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
NETNS support for Linux containers (Dan Smith),<br/>
|
|
||||||
unified XML domain and network parsing for all drivers (Daniel Berrange),<br/>
|
|
||||||
OpenVZ features improvements (Evgeniy Sokolov),<br/>
|
|
||||||
OpenVZ and Linux containers support now default,<br/>
|
|
||||||
USB device passthrough for QEmu/KVM (Guido Günther),<br/>
|
|
||||||
storage pool source discovery (David Lively)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Portability:<br/>
|
|
||||||
fixes for MinGW (Atsushi SAKAI and Daniel Berrange),<br/>
|
|
||||||
detection of xen lib improvement (David Lively),<br/>
|
|
||||||
storage backend portability for SLES (David Lively),<br/>
|
|
||||||
fix make distclean and distcheck (Jim Meyering),<br/>
|
|
||||||
fix build failures on RHEL4,<br/>
|
|
||||||
lot of MinGW portability fixes (Atsushi SAKAI and Daniel Berrange),<br/>
|
|
||||||
HTML generation fix,<br/>
|
|
||||||
-lpthread explicit linking when needed (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
various typo fixes (Anton Protopopov, Toth István, Atsushi SAKAI, Nguyen Anh Quynh),<br/>
|
|
||||||
Java bindings docs,<br/>
|
|
||||||
remove Xen centric comments (Guido Günther),<br/>
|
|
||||||
various typo in comments (Chris Lalancette),<br/>
|
|
||||||
docs and API comments fixes (Charles Duffy),<br/>
|
|
||||||
how to contribute to open source link (Richard Jones),<br/>
|
|
||||||
memory unit fixups (matthew chan)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
memory leaks and testing for OOM (Daniel Berrange),<br/>
|
|
||||||
do_open driver bug (Evgeniy Sokolov),<br/>
|
|
||||||
don't use polkit auth when running as non-root (Daniel Berrange),<br/>
|
|
||||||
boot of CDRom devices in QEmu/KVM (Daniel Berrange),<br/>
|
|
||||||
fix OpenVZ probe function (Evgeniy Sokolov),<br/>
|
|
||||||
ID related lookup fixes in OpenVZ (Evgeniy Sokolov),<br/>
|
|
||||||
pool cration for netfs (Cole Robinson),<br/>
|
|
||||||
check for migrate support with QEmu (Guido Günther),<br/>
|
|
||||||
check against double create with QEmu (Guido Günther),<br/>
|
|
||||||
broken open failure detection in QEmu (Guido Günther),<br/>
|
|
||||||
UUID string conversions in QEmu (Guido Günther),<br/>
|
|
||||||
various small cleanup and bug fixes (Daniel Berrange),<br/>
|
|
||||||
ID related fixes in the test driver (Daniel Berrange),<br/>
|
|
||||||
better error reporting on XML parsing (Daniel Berrange),<br/>
|
|
||||||
empty CD-ROM source device section (Chris Lalancette),<br/>
|
|
||||||
avoid crashes for interface without a name in QEmu (Guido Günther),<br/>
|
|
||||||
provide the real vncport (Charles Duffy),<br/>
|
|
||||||
fix forward delay (Daniel Berrange),<br/>
|
|
||||||
new VM state is initialized to be SHUTOFF (Daniel Berrange),<br/>
|
|
||||||
virsh attach-disk bug fixes (Chris Lalancette),<br/>
|
|
||||||
veth clash of device names (Dan Smith),<br/>
|
|
||||||
connection lookup fixes on storage creation (Cole Robinson),<br/>
|
|
||||||
parted call fix (Cole Robinson),<br/>
|
|
||||||
use "server" option when using serial/telnet with QEmu (Mark McLoughlin),<br/>
|
|
||||||
duplicate virInitialize calls (Nguyen Anh Quynh),<br/>
|
|
||||||
many fixes to virExec and related functions (Daniel Berrange),<br/>
|
|
||||||
size of disk without partitions (Cole Robinson),<br/>
|
|
||||||
creating and cleaning up logical volumes with target path (Cole Robinson),<br/>
|
|
||||||
fix reporting of virConnectOpen problems (Daniel Berrange),<br/>
|
|
||||||
veth cleanup at shutdown (Dan Smith),<br/>
|
|
||||||
lookup of Xen VMs after define (Cole Robinson),<br/>
|
|
||||||
fix emulator reported capabilities (Cole Robinson),<br/>
|
|
||||||
avoid segfault on KVM CD eject (Cole Robinson),<br/>
|
|
||||||
fix disk ordering and avoid duplicate in QEmu XML parsing (Cole Robinson),<br/>
|
|
||||||
update domain XML after device hotplug (Cole Robinson),<br/>
|
|
||||||
use poweroff instead of halt when shutting down a Xen domain (John Levon),<br/>
|
|
||||||
don't dump core of Xen domain live by default (John Levon),<br/>
|
|
||||||
vgcreate command line size bug (Jim Fehlig),<br/>
|
|
||||||
signed/unsigned issue in probing file (Cole Robinson),<br/>
|
|
||||||
Fix Xen domains without PVFB console (Daniel Berrange),<br/>
|
|
||||||
OpenVZ config read bug fix (Evgeniy Sokolov)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
improved failure diagnostic for TAP (Jim Meyering),<br/>
|
|
||||||
better exec and error diagnostic for OpenVZ commands (Evgeniy Sokolov),<br/>
|
|
||||||
OpenVZ auto start and stop of domains (Evgeniy Sokolov),<br/>
|
|
||||||
OpenVZ domain cpu time consumption (Evgeniy Sokolov),<br/>
|
|
||||||
virsh shutdown improvements and test (Jim Meyering),<br/>
|
|
||||||
better report of XML well formedness errors (Richard Jones),<br/>
|
|
||||||
new XML elements (Daniel Berrange),<br/>
|
|
||||||
virsh "edit" command (Richard Jones),<br/>
|
|
||||||
save UUID of OpenVZ domains (Evgeniy Sokolov),<br/>
|
|
||||||
improve xen blocks statistics (Chris Lalancette),<br/>
|
|
||||||
gnulib updates (Jim Meyering),<br/>
|
|
||||||
allow to add disk as USB devices (Guido Günther),<br/>
|
|
||||||
LXC container process should survive libvirtd restarts (Daniel Berrange),<br/>
|
|
||||||
allow to define static host domain configs,<br/>
|
|
||||||
number of CPU used by OpenVZ domains (Evgeniy Sokolov),<br/>
|
|
||||||
private root fs for LXC (Daniel Berrange),<br/>
|
|
||||||
storage source information in storage pools (David Lively),<br/>
|
|
||||||
virsh reports attach and detach success (Cole Robinson),<br/>
|
|
||||||
detect failure in QEmu eject command (Cole Robinson),<br/>
|
|
||||||
add support for eect on floppy and SCSI cdroms for QEmu (Cole Robinson),<br/>
|
|
||||||
LXC hypervisor version extraction (Dan Smith),<br/>
|
|
||||||
Augeas config file support (Daniel Berrange),<br/>
|
|
||||||
support for a domain name in network config (JJ Reynolds)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
Python verbosity cleanup (Ryan Scott),<br/>
|
|
||||||
space and tabs cleanups (Atsushi SAKAI),<br/>
|
|
||||||
OpenVZ and LXC drivers cleanup and unification of XML handling (Daniel Berrange),<br/>
|
|
||||||
updates to Relax-NG XML schemas (John Levon and Daniel Berrange),<br/>
|
|
||||||
more printf format checkings (Jim Meyering),<br/>
|
|
||||||
VIR_FREE related cleanups (Jim Meyering),<br/>
|
|
||||||
integer string parsing cleanup (Evgeniy Sokolov),<br/>
|
|
||||||
initial OpenVZ xml refactoring (Evgeniy Sokolov),<br/>
|
|
||||||
better error message on domain redefine (Charles Duffy),<br/>
|
|
||||||
check XML files against the RNG Schemas (Daniel Berrange),<br/>
|
|
||||||
const-correctness in virsh (Richard Jones and Jim Meyering),<br/>
|
|
||||||
const-correctness and cleanups in LXC and OpenVZ drivers (Daniel Berrange),<br/>
|
|
||||||
virFileLinkPointsTo rewrite (Jim Meyering),<br/>
|
|
||||||
cleanup of the conditional compilation of C files (Daniel Berrange),<br/>
|
|
||||||
shell quoting fixes (Jim Meyering),<br/>
|
|
||||||
parallel build support (James Morris and Jim Meyering),<br/>
|
|
||||||
new convenience virFileReadLimFD function (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.4: Jun 25 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
QEmu network serialization (Kaitlin Rupert),<br/>
|
|
||||||
internal memory allocation fixes (Chris Lalancette Jim Meyering),<br/>
|
|
||||||
virsh large file config problem (Jim Meyering),<br/>
|
|
||||||
xen list APIs when max is zero,<br/>
|
|
||||||
string escape problems in the xm driver<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
add autogen to tarballs,<br/>
|
|
||||||
improve iSCSI support (Chris Lalancette),<br/>
|
|
||||||
localization updates<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
const-ness fixed (Daniel P. Berrange),<br/>
|
|
||||||
string helpers for enumerations (Daniel P. Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.3: Jun 12 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
Linux Container start and stop (Dave Leskovec),<br/>
|
|
||||||
Network interface model settings (Daniel Berrange),<br/>
|
|
||||||
serial and parallel device support for QEmu and Xen (Daniel Berrange),<br/>
|
|
||||||
Sound support for QEmu and Xen (Cole Robinson),<br/>
|
|
||||||
vCPU settings for QEmu (Cole Robinson),<br/>
|
|
||||||
support for NUMA and vCPU pinning in QEmu (Daniel Berrange),<br/>
|
|
||||||
new virDomainBlockPeek API (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
coding guidelines (Jim Meyering and Richard Jones),<br/>
|
|
||||||
small man page missing entries and cleanup,<br/>
|
|
||||||
Web site revamp (Daniel Berrange),<br/>
|
|
||||||
typo fixes (Atsushi SAKAI),<br/>
|
|
||||||
more docs on network XML format (Daniel Berrange),<br/>
|
|
||||||
libvirt Wiki (Daniel Berrange),<br/>
|
|
||||||
policykit config docs (Cole Robinson),<br/>
|
|
||||||
XML domain docs revamp (Daniel Berrange),<br/>
|
|
||||||
docs for remote listen-tls/tcp fixes (Kenneth Nagin)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
save change to config file for Xen (Ryan Scott),<br/>
|
|
||||||
fix /var/run/libvirt/ group ownership (Anton Protopopov),<br/>
|
|
||||||
ancient libparted workaround (Soren Hansen),<br/>
|
|
||||||
out of bount array access (Daniel Berrange),<br/>
|
|
||||||
remote check bug (Dave Leskovec),<br/>
|
|
||||||
LXC signal and daemon restart problems (Dave Leskovec),<br/>
|
|
||||||
bus selection logic fix in the daemon config (Daniel Berrange),<br/>
|
|
||||||
2 memory leaks in the daemon (Jim Meyering),<br/>
|
|
||||||
daemon pid file logic bug fix (Daniel Berrange),<br/>
|
|
||||||
python generator fixes (Daniel Berrange),<br/>
|
|
||||||
ivarious leaks and memory problem pointed by valgrind (Daniel Berrange),<br/>
|
|
||||||
iptables forwarding cleanup (Daniel Berrange),<br/>
|
|
||||||
Xen cpuset value checking (Hiroyuki Kaguchi),<br/>
|
|
||||||
container process checks for LXC (Dave Leskovec),<br/>
|
|
||||||
let xend check block device syntax (Hiroyuki Kaguchi),<br/>
|
|
||||||
UUIDString for python fixes (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
fixes for MinGW compilation (Richard Jones),<br/>
|
|
||||||
autostart for running Xen domains (Cole Robinson),<br/>
|
|
||||||
control of listening IP for daemon (Stefan de Konink),<br/>
|
|
||||||
various Xenner related fixes and improvements (Daniel Berrange)<br/>
|
|
||||||
autostart status printed in virsh domainfo (Shigeki Sakamoto),<br/>
|
|
||||||
better error messages for xend driver (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
OpenVZ compilation (Richard Jones),<br/>
|
|
||||||
conn dom and net fields deprecation in error structures (Richard Jones),<br/>
|
|
||||||
Xen-ism on UUID (Richard Jones),<br/>
|
|
||||||
add missing .pod to dist (Richard Jones),<br/>
|
|
||||||
tab cleanup from sources (Jim Meyering),<br/>
|
|
||||||
remove unused field in virsh control structure (Richard Jones),<br/>
|
|
||||||
compilation without pthread.h (Jim Meyering),<br/>
|
|
||||||
cleanup of tests (Daniel Berrange),<br/>
|
|
||||||
syntax-check improvements (Jim Meyering),<br/>
|
|
||||||
python cleanup,<br/>
|
|
||||||
remove dependancy on libc is_* character tests (Jim Meyering),<br/>
|
|
||||||
format related cleanups (Jim Meyering),<br/>
|
|
||||||
cleanup of the buffer internal APIs (Daniel Berrange),<br/>
|
|
||||||
conversion to the new memory allocation API (Daniel Berrange),<br/>
|
|
||||||
lcov coverage testing (Daniel Berrange),<br/>
|
|
||||||
gnulib updates (Jim Meyering),<br/>
|
|
||||||
compatibility fix with RHEL 5 (Daniel Berrange),<br/>
|
|
||||||
SuSE compatibility fix (Jim Fehlig),<br/>
|
|
||||||
const'ification of a number of structures (Jim Meyering),<br/>
|
|
||||||
string comparison macro cleanups (Daniel Berrange),<br/>
|
|
||||||
character range testing cleanups and assorted bug fixes (Jim Meyering),<br/>
|
|
||||||
QEmu test fixes (Daniel Berrange),<br/>
|
|
||||||
configure macro cleanup (Daniel Berrange),<br/>
|
|
||||||
refactor QEmu command line building code (Daniel Berrange),<br/>
|
|
||||||
type punning warning in remote code (Richard Jones),<br/>
|
|
||||||
refactoring of internal headers (Richard Jones),<br/>
|
|
||||||
generic out of memory testing and associated bug fixes (Daniel Berrange),<br/>
|
|
||||||
don't raise internal error for unsupported features (Kaitlin Rupert),<br/>
|
|
||||||
missing driver entry points (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.2: Apr 08 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
memory operation for QEmu/KVM driver (Cole Robinson),<br/>
|
|
||||||
new routed networking schemas (Mads Olesen)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
storage documentation fixes (Atsushi Sakai),<br/>
|
|
||||||
many typo cleanups (Atsushi Sakai),<br/>
|
|
||||||
string fixes (Francesco Tombolini)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
pointer errors in qemu (Jim Meyering),<br/>
|
|
||||||
iSCSI login fix (Chris Lalancette),<br/>
|
|
||||||
well formedness error in test driver capabilities (Cole Robinson),<br/>
|
|
||||||
fixes cleanup code when daemon exits (Daniel Berrange),<br/>
|
|
||||||
CD Rom change on live QEmu/KVM domains (Cole Robinson),<br/>
|
|
||||||
setting scheduler parameter is forbidden for read-only (Saori Fukuta)i,<br/>
|
|
||||||
fixes for TAP devices (Daniel Berrange),<br/>
|
|
||||||
assorted storage driver fixes (Daniel Berrange),<br/>
|
|
||||||
Makefile fixes (Jim Meyering),<br/>
|
|
||||||
Xen-3.2 hypercall fix,<br/>
|
|
||||||
fix iptables rules to avoid blocking traffic within virtual network (Daniel Berrange),<br/>
|
|
||||||
XML output fix for directory pools (Daniel Berrange),<br/>
|
|
||||||
remove dandling domain/net/conn pointers from error data,<br/>
|
|
||||||
do not ask polkit auth when root (Daniel Berrange),<br/>
|
|
||||||
handling of fork and pipe errors when starting the daemon (Richard Jones)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
better validation of MAC addresses (Jim Meyering and Hiroyuki Kaguchi),<br/>
|
|
||||||
virsh vcpupin error report (Shigeki Sakamoto),<br/>
|
|
||||||
keep boot tag on HVM domains (Cole Robinson),<br/>
|
|
||||||
virsh non-root should not be limited to read only anymore (Daniel Berrange),<br/>
|
|
||||||
switch to polkit-auth from polkit-grant (Daniel Berrange),<br/>
|
|
||||||
better handling of missing SElinux data (Daniel Berrange and Jim Meyering),<br/>
|
|
||||||
cleanup of the connection opening logic (Daniel Berrange),<br/>
|
|
||||||
first bits of Linux Containers support (Dave Leskovec),<br/>
|
|
||||||
scheduler API support via xend (Saori Fukuta),<br/>
|
|
||||||
improvement of the testing framework and first tests (Jim Meyering),<br/>
|
|
||||||
missing error messages from virsh parameters validation (Shigeki Sakamoto),<br/>
|
|
||||||
improve support of older iscsiadm command (Chris Lalancette),<br/>
|
|
||||||
move linux container support in the daemon (Dan Berrange),<br/>
|
|
||||||
older awk implementation support (Mike Gerdts),<br/>
|
|
||||||
NUMA support in test driver (Cole Robinson),<br/>
|
|
||||||
xen and hvm added to test driver capabilities (Cole Robinson)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
remove unused getopt header (Jim Meyering),<br/>
|
|
||||||
mark more strings as translatable (Guido Günther and Jim Meyering),<br/>
|
|
||||||
convert error strings to something meaningful and translatable (Jim Meyering),<br/>
|
|
||||||
Linux Containers code cleanup,<br/>
|
|
||||||
last error initializer (Guido Günther)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>0.4.1: Mar 03 2008</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Features:<br/>
|
|
||||||
build on MacOSX (Richard Jones),<br/>
|
|
||||||
storage management (Daniel Berrange),<br/>
|
|
||||||
Xenner - Xen on KVM - support (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Documentation:<br/>
|
|
||||||
Fix of various typos (Atsushi SAKAI),<br/>
|
|
||||||
memory and vcpu settings details (Richard Jones),<br/>
|
|
||||||
ethernet bridging typo (Maxwell Bottiger),<br/>
|
|
||||||
add storage APIs documentation (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Bug Fixes:<br/>
|
|
||||||
OpenVZ code compilation (Mikhail Pokidko),<br/>
|
|
||||||
crash in policykit auth handling (Daniel Berrange),<br/>
|
|
||||||
large config files (Daniel Berrange),<br/>
|
|
||||||
cpumap hypercall size (Saori Fukuta),<br/>
|
|
||||||
crash in remote auth (Daniel Berrange),<br/>
|
|
||||||
ssh args error (Daniel Berrange),<br/>
|
|
||||||
preserve vif order from config files (Hiroyuki Kaguchi),<br/>
|
|
||||||
invalid pointer access (Jim Meyering),<br/>
|
|
||||||
virDomainGetXMLDesc flag handling,<br/>
|
|
||||||
device name conversion on stats (Daniel Berrange),<br/>
|
|
||||||
double mutex lock (Daniel Berrange),<br/>
|
|
||||||
config file reading crashes (Guido Guenther),<br/>
|
|
||||||
xenUnifiedDomainSuspend bug (Marcus Meissner),<br/>
|
|
||||||
do not crash if /sys/hypervisor/capabilities is missing (Mark McLoughlin),<br/>
|
|
||||||
virHashRemoveSet bug (Hiroyuki Kaguchi),<br/>
|
|
||||||
close-on-exec flag for qemud signal pipe (Daniel Berrange),<br/>
|
|
||||||
double free in OpenVZ (Anton Protopopov),<br/>
|
|
||||||
handle mac without addresses (Shigeki Sakamoto),<br/>
|
|
||||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones),<br/>
|
|
||||||
allow to read non-seekable files (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Improvements:<br/>
|
|
||||||
Windows build (Richard Jones),<br/>
|
|
||||||
KVM/QEmu shutdown (Guido Guenther),<br/>
|
|
||||||
catch virExec output on debug (Mark McLoughlin),<br/>
|
|
||||||
integration of iptables and lokkit (Mark McLoughlin),<br/>
|
|
||||||
keymap parameter for VNC servers (Daniel Hokka Zakrisson),<br/>
|
|
||||||
enable debug by default using VIR_DEBUG (Daniel Berrange),<br/>
|
|
||||||
xen 3.2 fixes (Daniel Berrange),<br/>
|
|
||||||
Python bindings for VCPU and scheduling (Daniel Berrange),<br/>
|
|
||||||
framework for automatic code syntax checks (Jim Meyering),<br/>
|
|
||||||
allow kernel+initrd setup in Xen PV (Daniel Berrange),<br/>
|
|
||||||
allow change of Disk/NIC of an inactive domains (Shigeki Sakamoto),<br/>
|
|
||||||
virsh commands to manipulate and create storage (Daniel Berrange),<br/>
|
|
||||||
update use of PolicyKit APIs,<br/>
|
|
||||||
better detection of fedault hypervisor,<br/>
|
|
||||||
block device statistics for QEmu/KVM (Richard Jones),<br/>
|
|
||||||
various improvements for Xenner (Daniel Berrange)<br/>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Cleanups:<br/>
|
|
||||||
avoid warnings (Daniel Berrange),<br/>
|
|
||||||
virRun helper function (Dan Berrange),<br/>
|
|
||||||
iptable code fixes (Mark McLoughlin),<br/>
|
|
||||||
static and const cleanups (Jim Meyering),<br/>
|
|
||||||
malloc and python cleanups (Jim Meyering),<br/>
|
|
||||||
xstrtol_ull and xstrtol_ll functions (Daniel Berrange),<br/>
|
|
||||||
remove no-op networking from OpenVZ (Daniel Berrange),<br/>
|
|
||||||
python generator cleanups (Daniel Berrange),<br/>
|
|
||||||
cleanup ref counting (Daniel Berrange),<br/>
|
|
||||||
remove uninitialized warnings (Jim Meyering),<br/>
|
|
||||||
cleanup configure for RHEL4 (Daniel Berrange),<br/>
|
|
||||||
CR/LF cleanups (Richard Jones),<br/>
|
|
||||||
various automatic code check and associated cleanups (Jim Meyering),<br/>
|
|
||||||
various memory leaks (Jim Meyering),<br/>
|
|
||||||
fix compilation when building without Xen (Guido Guenther),<br/>
|
|
||||||
mark translatables strings (Jim Meyering),<br/>
|
|
||||||
use virBufferAddLit for constant strings (Jim Meyering),<br/>
|
|
||||||
fix make distcheck (Jim Meyering),<br/>
|
|
||||||
return values for python bindings (Cole Robinson),<br/>
|
|
||||||
trailing blanks fixes (Jim Meyering),<br/>
|
|
||||||
gcc-4.3.0 fixes (Mark McLoughlin),<br/>
|
|
||||||
use safe read and write routines (Jim Meyering),<br/>
|
|
||||||
refactoring of code dealing with hypervisor capabilities (Daniel Berrange),<br/>
|
|
||||||
qemudReportError to use virErrorMsg (Cole Robinson),<br/>
|
|
||||||
intemediate library and Makefiles for compiling static and coverage rule support (Jim Meyering),<br/>
|
|
||||||
cleanup of various leaks (Jim Meyering)<br/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
19943
docs/news.html.in
19943
docs/news.html.in
File diff suppressed because it is too large
Load Diff
@@ -1,46 +1,39 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<xsl:stylesheet version="1.0"
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
version="1.0">
|
||||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
||||||
<xsl:output method="text" encoding="UTF-8"/>
|
<xsl:output method="text" encoding="UTF-8"/>
|
||||||
|
|
||||||
<xsl:template match="/">
|
<xsl:template match="/">
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
NEWS file for libvirt
|
NEWS file for libvirt
|
||||||
|
|
||||||
Note that this file contains only the most recent releases; for the full
|
Note that this is automatically generated from the news webpage at:
|
||||||
list, please visit:
|
|
||||||
http://libvirt.org/news.html
|
http://libvirt.org/news.html
|
||||||
|
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
<xsl:apply-templates select="html:html/html:body/*"/>
|
<xsl:apply-templates select="html/body/*"/>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="h1"/>
|
||||||
|
|
||||||
<xsl:template match="html:h1"/>
|
<xsl:template match="h3">
|
||||||
<xsl:template match="html:p"/>
|
|
||||||
|
|
||||||
<xsl:template match="html:h3">
|
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
<xsl:text>:
|
<xsl:text>:
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="ul">
|
||||||
<xsl:template match="html:ul">
|
<xsl:apply-templates select=".//li"/>
|
||||||
<xsl:apply-templates select="html:li"/>
|
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="li">
|
||||||
<xsl:template match="html:li">
|
|
||||||
<xsl:text> - </xsl:text>
|
<xsl:text> - </xsl:text>
|
||||||
<xsl:value-of select="."/>
|
<xsl:value-of select="."/>
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="a">
|
||||||
<xsl:template match="html:a">
|
|
||||||
<xsl:value-of select="."/>
|
<xsl:value-of select="."/>
|
||||||
<xsl:text> at
|
<xsl:text> at
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
@@ -48,5 +41,6 @@
|
|||||||
<xsl:text>
|
<xsl:text>
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="p">
|
||||||
|
</xsl:template>
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
141
docs/nss.html.in
141
docs/nss.html.in
@@ -1,141 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<body>
|
|
||||||
<h1>Libvirt NSS module</h1>
|
|
||||||
|
|
||||||
<ul id="toc"></ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
When it comes to managing guests and executing commands inside them, logging
|
|
||||||
into guest operating system and doing the job is convenient. Users are used
|
|
||||||
to ssh in this case. Ideally:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<code>ssh user@virtualMachine</code>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
would be nice. But depending on virtual network configuration it might not
|
|
||||||
be always possible. For instance, when using libvirt NATed network it's
|
|
||||||
dnsmasq (spawned by libvirt) who assigns IP addresses to domains. But by
|
|
||||||
default, the dnsmasq process is then not consulted when it comes to host
|
|
||||||
name translation. Users work around this problem by configuring their
|
|
||||||
libvirt network to assign static IP addresses and maintaining
|
|
||||||
<code>/etc/hosts</code> file in sync. But this puts needless burden onto
|
|
||||||
users. This is where NSS module comes handy.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><a name="Installation">Installation</a></h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Installing the module is really easy:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
# yum install libvirt-nss
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<h2><a name="Configuration">Configuration</a></h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Enabling the module is really easy. Just add <b>libvirt</b> into
|
|
||||||
<code>/etc/nsswitch.conf</code> file. For instance:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
$ cat /etc/nsswitch.conf
|
|
||||||
# /etc/nsswitch.conf:
|
|
||||||
passwd: compat
|
|
||||||
shadow: compat
|
|
||||||
group: compat
|
|
||||||
hosts: files libvirt dns
|
|
||||||
# ...
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
So, in this specific case, whenever ssh program is looking up the host user
|
|
||||||
is trying to connect to, <b>files</b> module is consulted first (which
|
|
||||||
boils down to looking up the host name in <code>/etc/hosts</code> file), if
|
|
||||||
not found <b>libvirt</b> module is consulted then. The DNS is the last
|
|
||||||
effort then, if none of the previous modules matched the host in question.
|
|
||||||
Therefore users should consider the order in which they want the modules to
|
|
||||||
lookup given host name.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><a name="Internals">How does it work?</a></h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Whenever an Unix process wants to do a host name translation
|
|
||||||
<a href="http://linux.die.net/man/3/gethostbyname"><code>gethostbyname()</code></a>
|
|
||||||
or some variant of it is called. This is a glibc function that takes a
|
|
||||||
string containing the host name, crunch it and produces a list of IP
|
|
||||||
addresses assigned to that host. Now, glibc developers made a really good
|
|
||||||
decision when implementing the internals of the function when they decided
|
|
||||||
to make the function pluggable. Since there can be several sources for the
|
|
||||||
records (e.g. <code>/etc/hosts</code> file, DNS, LDAP, etc.) it would not
|
|
||||||
make much sense to create one big implementation containing all possible
|
|
||||||
cases. What they have done instead is this pluggable mechanism. Small
|
|
||||||
plugins implementing nothing but specific technology for lookup process are
|
|
||||||
provided and the function then calls those plugins. There is just one
|
|
||||||
configuration file that instructs the lookup function in which order should
|
|
||||||
the plugins be called and which plugins should be loaded. For more info
|
|
||||||
reading <a href="https://en.wikipedia.org/wiki/Name_Service_Switch">wiki
|
|
||||||
page</a> is recommended.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
And this is point where libvirt comes in. Libvirt provides plugin for the
|
|
||||||
NSS ecosystem. For some time now libvirt keeps a list of assigned IP
|
|
||||||
addresses for libvirt networks. The NSS plugin does no more than search the
|
|
||||||
list trying to find matching record for given host name. When found,
|
|
||||||
matching IP address is returned to the caller. If not found, translation
|
|
||||||
process continues with the next plugin configured. At this point it is
|
|
||||||
important to stress the order in which plugins are called. Users should be
|
|
||||||
aware that a hostname might match in multiple plugins and right after first
|
|
||||||
match, translation process is terminated and no other plugin is consulted.
|
|
||||||
Therefore, if there are two different records for the same host name users
|
|
||||||
should carefully chose the lookup order.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><a name="Limitations">Limitations</a></h2>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>The libvirt NSS module matches only hostnames provided by guest. If
|
|
||||||
the libvirt name and one advertised by guest differs, the latter is
|
|
||||||
matched.</li>
|
|
||||||
<li>The module works only in that cases where IP addresses are assigned by
|
|
||||||
dnsmasq spawned by libvirt. Libvirt NATed networks are typical
|
|
||||||
example.</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
These limitation are result of libvirt's internal implementation. While
|
|
||||||
libvirt can report IP addresses regardless of their origin, a public API
|
|
||||||
must be used to obtain those. However, for the API a connection object is
|
|
||||||
required. Doing that for every name translation request would be too
|
|
||||||
costly. Fortunately, libvirt spawns dnsmasq for NATed networks. Not only
|
|
||||||
that, it provides small executable that on each IP address space change
|
|
||||||
updates an internal list of addresses thus keeping it in sync. The NSS
|
|
||||||
module then merely consults the list trying to find the match. Users can
|
|
||||||
view the list themselves:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
virsh net-dhcp-leases $network
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
where <code>$network</code> iterates through all running networks. So the module
|
|
||||||
does merely the same as
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
virsh domifaddr --source lease $domain
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
If there's no record for either of the aforementioned commands, it's very
|
|
||||||
likely that NSS module won't find anything and vice versa.
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -163,6 +163,12 @@
|
|||||||
<xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
|
<xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<p id="sponsor">
|
||||||
|
Sponsored by:<br/>
|
||||||
|
<a href="http://et.redhat.com/"><img src="{$href_base}et.png" alt="Project sponsored by Red Hat Emerging Technology"/></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
@@ -6,7 +6,8 @@
|
|||||||
|
|
||||||
<h2>Presentation</h2>
|
<h2>Presentation</h2>
|
||||||
<p>The libvirt-php, originally called php-libvirt, is the PHP API bindings for
|
<p>The libvirt-php, originally called php-libvirt, is the PHP API bindings for
|
||||||
the libvirt virtualization toolkit originally developed by Radek Hladik.</p>
|
the libvirt virtualization toolkit originally developed by Radek Hladik but
|
||||||
|
currently maintained by Red Hat.</p>
|
||||||
|
|
||||||
<h2>Getting the source</h2>
|
<h2>Getting the source</h2>
|
||||||
<p> The PHP bindings code source is now maintained in a <a
|
<p> The PHP bindings code source is now maintained in a <a
|
||||||
@@ -25,7 +26,7 @@ It can also be browsed at
|
|||||||
|
|
||||||
<p></p>
|
<p></p>
|
||||||
<h2>Project pages</h2>
|
<h2>Project pages</h2>
|
||||||
<p>Since February 2011 the project has its own pages hosted at libvirt.org. For more information on the project
|
<p>Since February 2011 the project have it's own pages hosted at libvirt.org. For more information on the project
|
||||||
please refer to <a href="http://libvirt.org/php">http://libvirt.org/php</a>.
|
please refer to <a href="http://libvirt.org/php">http://libvirt.org/php</a>.
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
35
docs/schemas/Makefile.am
Normal file
35
docs/schemas/Makefile.am
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
## Copyright (C) 2005-2011, 2013-2014 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
schemadir = $(pkgdatadir)/schemas
|
||||||
|
schema_DATA = \
|
||||||
|
basictypes.rng \
|
||||||
|
capability.rng \
|
||||||
|
domain.rng \
|
||||||
|
domaincaps.rng \
|
||||||
|
domaincommon.rng \
|
||||||
|
domainsnapshot.rng \
|
||||||
|
interface.rng \
|
||||||
|
network.rng \
|
||||||
|
networkcommon.rng \
|
||||||
|
nodedev.rng \
|
||||||
|
nwfilter.rng \
|
||||||
|
secret.rng \
|
||||||
|
storagecommon.rng \
|
||||||
|
storagepool.rng \
|
||||||
|
storagevol.rng
|
||||||
|
|
||||||
|
EXTRA_DIST = $(schema_DATA)
|
@@ -30,8 +30,8 @@
|
|||||||
<define name="domain">
|
<define name="domain">
|
||||||
<element name="domain">
|
<element name="domain">
|
||||||
<ref name="hvs"/>
|
<ref name="hvs"/>
|
||||||
|
<ref name="ids"/>
|
||||||
<interleave>
|
<interleave>
|
||||||
<ref name="ids"/>
|
|
||||||
<optional>
|
<optional>
|
||||||
<ref name="title"/>
|
<ref name="title"/>
|
||||||
</optional>
|
</optional>
|
||||||
@@ -55,9 +55,6 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<ref name="pm"/>
|
<ref name="pm"/>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<ref name="perf"/>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
<optional>
|
||||||
<ref name="idmap"/>
|
<ref name="idmap"/>
|
||||||
</optional>
|
</optional>
|
||||||
@@ -70,12 +67,6 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<ref name='qemucmdline'/>
|
<ref name='qemucmdline'/>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<ref name='lxcsharens'/>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<ref name='keywrap'/>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
@@ -206,7 +197,7 @@
|
|||||||
<value>hyperv</value>
|
<value>hyperv</value>
|
||||||
<value>vbox</value>
|
<value>vbox</value>
|
||||||
<value>phyp</value>
|
<value>phyp</value>
|
||||||
<value>vz</value>
|
<value>parallels</value>
|
||||||
<value>bhyve</value>
|
<value>bhyve</value>
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
@@ -337,9 +328,7 @@
|
|||||||
<define name="ostypehvm">
|
<define name="ostypehvm">
|
||||||
<element name="type">
|
<element name="type">
|
||||||
<optional>
|
<optional>
|
||||||
<attribute name="arch">
|
<ref name="archList"/>
|
||||||
<ref name="archnames"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
<optional>
|
||||||
<attribute name="machine">
|
<attribute name="machine">
|
||||||
@@ -352,13 +341,29 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
|
<define name="archList">
|
||||||
|
<attribute name="arch">
|
||||||
|
<choice>
|
||||||
|
<value>armv7l</value>
|
||||||
|
<value>aarch64</value>
|
||||||
|
<value>i686</value>
|
||||||
|
<value>x86_64</value>
|
||||||
|
<value>mips</value>
|
||||||
|
<value>ppc</value>
|
||||||
|
<value>ppc64</value>
|
||||||
|
<value>ppc64le</value>
|
||||||
|
<value>s390</value>
|
||||||
|
<value>s390x</value>
|
||||||
|
<value>sparc</value>
|
||||||
|
</choice>
|
||||||
|
</attribute>
|
||||||
|
</define>
|
||||||
|
|
||||||
<define name="osexe">
|
<define name="osexe">
|
||||||
<element name="os">
|
<element name="os">
|
||||||
<element name="type">
|
<element name="type">
|
||||||
<optional>
|
<optional>
|
||||||
<attribute name="arch">
|
<ref name="archList"/>
|
||||||
<ref name="archnames"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
</optional>
|
||||||
<value>exe</value>
|
<value>exe</value>
|
||||||
</element>
|
</element>
|
||||||
@@ -377,48 +382,6 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<define name="keywrap">
|
|
||||||
<element name="keywrap">
|
|
||||||
<oneOrMore>
|
|
||||||
<element name="cipher">
|
|
||||||
<attribute name="name">
|
|
||||||
<choice>
|
|
||||||
<value>aes</value>
|
|
||||||
<value>dea</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="state">
|
|
||||||
<ref name='virOnOff'/>
|
|
||||||
</attribute>
|
|
||||||
</element>
|
|
||||||
</oneOrMore>
|
|
||||||
</element>
|
|
||||||
</define>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Enable or disable perf events for the domain. For each
|
|
||||||
of the events the following rules apply:
|
|
||||||
on: the event will be forcefully enabled
|
|
||||||
off: the event will be forcefully disabled
|
|
||||||
not specified: the event will be disabled by default
|
|
||||||
-->
|
|
||||||
<define name="perf">
|
|
||||||
<element name="perf">
|
|
||||||
<oneOrMore>
|
|
||||||
<element name="event">
|
|
||||||
<attribute name="name">
|
|
||||||
<choice>
|
|
||||||
<value>cmt</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="enabled">
|
|
||||||
<ref name="virYesNo"/>
|
|
||||||
</attribute>
|
|
||||||
</element>
|
|
||||||
</oneOrMore>
|
|
||||||
</element>
|
|
||||||
</define>
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
The Identifiers can be:
|
The Identifiers can be:
|
||||||
- an optional id attribute with a number on the domain element
|
- an optional id attribute with a number on the domain element
|
||||||
@@ -696,16 +659,6 @@
|
|||||||
<ref name="cpushares"/>
|
<ref name="cpushares"/>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<element name="global_period">
|
|
||||||
<ref name="cpuperiod"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="global_quota">
|
|
||||||
<ref name="cpuquota"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
<optional>
|
||||||
<element name="period">
|
<element name="period">
|
||||||
<ref name="cpuperiod"/>
|
<ref name="cpuperiod"/>
|
||||||
@@ -1258,7 +1211,6 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<ref name="diskSourceNetwork"/>
|
<ref name="diskSourceNetwork"/>
|
||||||
<ref name="diskSourceBlock"/>
|
<ref name="diskSourceBlock"/>
|
||||||
<ref name="diskSourceVolume"/>
|
|
||||||
</choice>
|
</choice>
|
||||||
<ref name="diskSpecsExtra"/>
|
<ref name="diskSpecsExtra"/>
|
||||||
</interleave>
|
</interleave>
|
||||||
@@ -1633,7 +1585,6 @@
|
|||||||
<define name="driverCache">
|
<define name="driverCache">
|
||||||
<attribute name="cache">
|
<attribute name="cache">
|
||||||
<choice>
|
<choice>
|
||||||
<value>default</value>
|
|
||||||
<value>none</value>
|
<value>none</value>
|
||||||
<value>writeback</value>
|
<value>writeback</value>
|
||||||
<value>writethrough</value>
|
<value>writethrough</value>
|
||||||
@@ -1772,45 +1723,6 @@
|
|||||||
<attribute name="type">
|
<attribute name="type">
|
||||||
<value>pci</value>
|
<value>pci</value>
|
||||||
</attribute>
|
</attribute>
|
||||||
<optional>
|
|
||||||
<element name="model">
|
|
||||||
<attribute name="name">
|
|
||||||
<choice>
|
|
||||||
<!-- implementations of 'pci-bridge' -->
|
|
||||||
<value>pci-bridge</value>
|
|
||||||
<!-- implementations of 'dmi-to-pci-bridge' -->
|
|
||||||
<value>i82801b11-bridge</value>
|
|
||||||
<!-- implementations of 'pcie-root-port' -->
|
|
||||||
<value>ioh3420</value>
|
|
||||||
<!-- implementations of 'pcie-switch-upstream-port' -->
|
|
||||||
<value>x3130-upstream</value>
|
|
||||||
<!-- implementations of 'pcie-switch-downstream-port' -->
|
|
||||||
<value>xio3130-downstream</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<empty/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="target">
|
|
||||||
<optional>
|
|
||||||
<attribute name='chassisNr'>
|
|
||||||
<ref name='uint8range'/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<attribute name="chassis">
|
|
||||||
<ref name='uint8range'/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<attribute name="port">
|
|
||||||
<ref name='uint8range'/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<empty/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<!-- *-root controllers have an optional element "pcihole64"-->
|
<!-- *-root controllers have an optional element "pcihole64"-->
|
||||||
<choice>
|
<choice>
|
||||||
<group>
|
<group>
|
||||||
@@ -1831,9 +1743,6 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<value>pci-bridge</value>
|
<value>pci-bridge</value>
|
||||||
<value>dmi-to-pci-bridge</value>
|
<value>dmi-to-pci-bridge</value>
|
||||||
<value>pcie-root-port</value>
|
|
||||||
<value>pcie-switch-upstream-port</value>
|
|
||||||
<value>pcie-switch-downstream-port</value>
|
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
</group>
|
</group>
|
||||||
@@ -1873,9 +1782,6 @@
|
|||||||
<ref name="unsignedInt"/>
|
<ref name="unsignedInt"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<ref name="ioeventfd"/>
|
|
||||||
</optional>
|
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
</interleave>
|
</interleave>
|
||||||
@@ -2138,7 +2044,7 @@
|
|||||||
<interleave>
|
<interleave>
|
||||||
<element name="source">
|
<element name="source">
|
||||||
<attribute name="network">
|
<attribute name="network">
|
||||||
<text/>
|
<ref name="deviceName"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
<optional>
|
<optional>
|
||||||
<attribute name="portgroup">
|
<attribute name="portgroup">
|
||||||
@@ -2217,33 +2123,6 @@
|
|||||||
<ref name="interface-options"/>
|
<ref name="interface-options"/>
|
||||||
</interleave>
|
</interleave>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
|
||||||
<attribute name="type">
|
|
||||||
<choice>
|
|
||||||
<value>udp</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<interleave>
|
|
||||||
<element name="source">
|
|
||||||
<attribute name="address">
|
|
||||||
<ref name="ipv4Addr"/>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="port">
|
|
||||||
<ref name="PortNumber"/>
|
|
||||||
</attribute>
|
|
||||||
<element name="local">
|
|
||||||
<attribute name="address">
|
|
||||||
<ref name="ipv4Addr"/>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="port">
|
|
||||||
<ref name="PortNumber"/>
|
|
||||||
</attribute>
|
|
||||||
<empty/>
|
|
||||||
</element>
|
|
||||||
</element>
|
|
||||||
<ref name="interface-options"/>
|
|
||||||
</interleave>
|
|
||||||
</group>
|
|
||||||
<group>
|
<group>
|
||||||
<attribute name="type">
|
<attribute name="type">
|
||||||
<value>server</value>
|
<value>server</value>
|
||||||
@@ -2861,14 +2740,6 @@
|
|||||||
<empty/>
|
<empty/>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<element name="gl">
|
|
||||||
<attribute name="enable">
|
|
||||||
<ref name="virYesNo"/>
|
|
||||||
</attribute>
|
|
||||||
<empty/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
@@ -2967,7 +2838,6 @@
|
|||||||
<value>vmvga</value>
|
<value>vmvga</value>
|
||||||
<value>xen</value>
|
<value>xen</value>
|
||||||
<value>vbox</value>
|
<value>vbox</value>
|
||||||
<value>virtio</value>
|
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
<group>
|
<group>
|
||||||
@@ -2984,11 +2854,6 @@
|
|||||||
<ref name="unsignedInt"/>
|
<ref name="unsignedInt"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<attribute name="vram64">
|
|
||||||
<ref name="unsignedInt"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</group>
|
</group>
|
||||||
</choice>
|
</choice>
|
||||||
<optional>
|
<optional>
|
||||||
@@ -3190,7 +3055,6 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<value>isa-serial</value>
|
<value>isa-serial</value>
|
||||||
<value>usb-serial</value>
|
<value>usb-serial</value>
|
||||||
<value>pci-serial</value>
|
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
</define>
|
</define>
|
||||||
@@ -3303,11 +3167,6 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<attribute name="slave"/>
|
<attribute name="slave"/>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<attribute name="append">
|
|
||||||
<ref name="virOnOff"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
<ref name='devSeclabel'/>
|
<ref name='devSeclabel'/>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
@@ -3327,18 +3186,6 @@
|
|||||||
</optional>
|
</optional>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<element name="log">
|
|
||||||
<attribute name="file">
|
|
||||||
<ref name="absFilePath"/>
|
|
||||||
</attribute>
|
|
||||||
<optional>
|
|
||||||
<attribute name="append">
|
|
||||||
<ref name="virOnOff"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</define>
|
</define>
|
||||||
<!--
|
<!--
|
||||||
The description for a console
|
The description for a console
|
||||||
@@ -3405,7 +3252,6 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<value>i6300esb</value>
|
<value>i6300esb</value>
|
||||||
<value>ib700</value>
|
<value>ib700</value>
|
||||||
<value>diag288</value>
|
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
<optional>
|
<optional>
|
||||||
@@ -3417,7 +3263,6 @@
|
|||||||
<value>pause</value>
|
<value>pause</value>
|
||||||
<value>none</value>
|
<value>none</value>
|
||||||
<value>dump</value>
|
<value>dump</value>
|
||||||
<value>inject-nmi</value>
|
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
</optional>
|
</optional>
|
||||||
@@ -3483,11 +3328,6 @@
|
|||||||
<value>none</value>
|
<value>none</value>
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
<optional>
|
|
||||||
<attribute name="autodeflate">
|
|
||||||
<ref name="virOnOff"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<interleave>
|
<interleave>
|
||||||
<optional>
|
<optional>
|
||||||
<ref name="alias"/>
|
<ref name="alias"/>
|
||||||
@@ -3652,40 +3492,22 @@
|
|||||||
|
|
||||||
<define name="input">
|
<define name="input">
|
||||||
<element name="input">
|
<element name="input">
|
||||||
<choice>
|
<attribute name="type">
|
||||||
<group>
|
<choice>
|
||||||
<attribute name="type">
|
<value>tablet</value>
|
||||||
<choice>
|
<value>mouse</value>
|
||||||
<value>tablet</value>
|
<value>keyboard</value>
|
||||||
<value>mouse</value>
|
</choice>
|
||||||
<value>keyboard</value>
|
</attribute>
|
||||||
</choice>
|
<optional>
|
||||||
</attribute>
|
<attribute name="bus">
|
||||||
<optional>
|
<choice>
|
||||||
<attribute name="bus">
|
<value>ps2</value>
|
||||||
<choice>
|
<value>usb</value>
|
||||||
<value>ps2</value>
|
<value>xen</value>
|
||||||
<value>usb</value>
|
</choice>
|
||||||
<value>xen</value>
|
</attribute>
|
||||||
<value>virtio</value>
|
</optional>
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<attribute name="type">
|
|
||||||
<value>passthrough</value>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="bus">
|
|
||||||
<value>virtio</value>
|
|
||||||
</attribute>
|
|
||||||
<element name="source">
|
|
||||||
<attribute name="evdev">
|
|
||||||
<ref name="absFilePath"/>
|
|
||||||
</attribute>
|
|
||||||
</element>
|
|
||||||
</group>
|
|
||||||
</choice>
|
|
||||||
<optional>
|
<optional>
|
||||||
<ref name="alias"/>
|
<ref name="alias"/>
|
||||||
</optional>
|
</optional>
|
||||||
@@ -4002,10 +3824,10 @@
|
|||||||
<ref name="driveBus"/>
|
<ref name="driveBus"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
<attribute name="target">
|
<attribute name="target">
|
||||||
<ref name="driveSCSITarget"/>
|
<ref name="driveTarget"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
<attribute name="unit">
|
<attribute name="unit">
|
||||||
<ref name="driveSCSIUnit"/>
|
<ref name="driveUnit"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
</define>
|
</define>
|
||||||
<define name="usbportaddress">
|
<define name="usbportaddress">
|
||||||
@@ -4136,14 +3958,14 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<ref name="nvram"/>
|
<ref name="nvram"/>
|
||||||
</optional>
|
</optional>
|
||||||
<zeroOrMore>
|
<optional>
|
||||||
<ref name="panic"/>
|
<ref name="panic"/>
|
||||||
</zeroOrMore>
|
</optional>
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
<!--
|
<!--
|
||||||
A set of optional features: PAE, APIC, ACPI, GIC,
|
A set of optional features: PAE, APIC, ACPI,
|
||||||
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support
|
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support
|
||||||
-->
|
-->
|
||||||
<define name="features">
|
<define name="features">
|
||||||
@@ -4171,11 +3993,7 @@
|
|||||||
</optional>
|
</optional>
|
||||||
<optional>
|
<optional>
|
||||||
<element name="hap">
|
<element name="hap">
|
||||||
<optional>
|
<empty/>
|
||||||
<attribute name="state">
|
|
||||||
<ref name="virOnOff"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
<optional>
|
||||||
@@ -4208,28 +4026,6 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<ref name="pmu"/>
|
<ref name="pmu"/>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<element name="vmport">
|
|
||||||
<optional>
|
|
||||||
<attribute name="state">
|
|
||||||
<ref name="virOnOff"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="gic">
|
|
||||||
<optional>
|
|
||||||
<attribute name="version">
|
|
||||||
<choice>
|
|
||||||
<value>host</value>
|
|
||||||
<value>2</value>
|
|
||||||
<value>3</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
@@ -4426,18 +4222,6 @@
|
|||||||
</oneOrMore>
|
</oneOrMore>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<zeroOrMore>
|
|
||||||
<element name="baseBoard">
|
|
||||||
<oneOrMore>
|
|
||||||
<element name="entry">
|
|
||||||
<attribute name="name">
|
|
||||||
<ref name="sysinfo-baseBoard-name"/>
|
|
||||||
</attribute>
|
|
||||||
<ref name="sysinfo-value"/>
|
|
||||||
</element>
|
|
||||||
</oneOrMore>
|
|
||||||
</element>
|
|
||||||
</zeroOrMore>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
@@ -4463,17 +4247,6 @@
|
|||||||
</choice>
|
</choice>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<define name="sysinfo-baseBoard-name">
|
|
||||||
<choice>
|
|
||||||
<value>manufacturer</value>
|
|
||||||
<value>product</value>
|
|
||||||
<value>version</value>
|
|
||||||
<value>serial</value>
|
|
||||||
<value>asset</value>
|
|
||||||
<value>location</value>
|
|
||||||
</choice>
|
|
||||||
</define>
|
|
||||||
|
|
||||||
<define name="sysinfo-value">
|
<define name="sysinfo-value">
|
||||||
<data type="string">
|
<data type="string">
|
||||||
<param name='pattern'>[a-zA-Z0-9/\-_\. \(\)]+</param>
|
<param name='pattern'>[a-zA-Z0-9/\-_\. \(\)]+</param>
|
||||||
@@ -4632,11 +4405,9 @@
|
|||||||
<element name="size">
|
<element name="size">
|
||||||
<ref name="scaledInteger"/>
|
<ref name="scaledInteger"/>
|
||||||
</element>
|
</element>
|
||||||
<optional>
|
<element name="node">
|
||||||
<element name="node">
|
<ref name="unsignedInt"/>
|
||||||
<ref name="unsignedInt"/>
|
</element>
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
@@ -4671,7 +4442,8 @@
|
|||||||
<value>random</value>
|
<value>random</value>
|
||||||
</attribute>
|
</attribute>
|
||||||
<choice>
|
<choice>
|
||||||
<ref name='absFilePath'/>
|
<value>/dev/random</value>
|
||||||
|
<value>/dev/hwrng</value>
|
||||||
<empty/>
|
<empty/>
|
||||||
</choice>
|
</choice>
|
||||||
</group>
|
</group>
|
||||||
@@ -4928,43 +4700,6 @@
|
|||||||
</optional>
|
</optional>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
<optional>
|
|
||||||
<element name="vpindex">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="runtime">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="synic">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="stimer">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="reset">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
|
||||||
<element name="vendor_id">
|
|
||||||
<ref name="featurestate"/>
|
|
||||||
<optional>
|
|
||||||
<attribute name="value">
|
|
||||||
<data type="string">
|
|
||||||
<param name='pattern'>[^,]{0,12}</param>
|
|
||||||
</data>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
@@ -5225,45 +4960,6 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<!--
|
|
||||||
Optional hypervisor extensions in their own namespace:
|
|
||||||
LXC
|
|
||||||
-->
|
|
||||||
<define name="lxcsharens">
|
|
||||||
<element name="namespace" ns="http://libvirt.org/schemas/domain/lxc/1.0">
|
|
||||||
<zeroOrMore>
|
|
||||||
<element name="sharenet">
|
|
||||||
<attribute name="type">
|
|
||||||
<choice>
|
|
||||||
<value>netns</value>
|
|
||||||
<value>name</value>
|
|
||||||
<value>pid</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<attribute name='value'/>
|
|
||||||
</element>
|
|
||||||
<element name="shareipc">
|
|
||||||
<attribute name="type">
|
|
||||||
<choice>
|
|
||||||
<value>name</value>
|
|
||||||
<value>pid</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<attribute name='value'/>
|
|
||||||
</element>
|
|
||||||
<element name="shareuts">
|
|
||||||
<attribute name="type">
|
|
||||||
<choice>
|
|
||||||
<value>name</value>
|
|
||||||
<value>pid</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
<attribute name='value'/>
|
|
||||||
</element>
|
|
||||||
</zeroOrMore>
|
|
||||||
</element>
|
|
||||||
</define>
|
|
||||||
|
|
||||||
<define name="metadata">
|
<define name="metadata">
|
||||||
<element name="metadata">
|
<element name="metadata">
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
@@ -5335,7 +5031,9 @@
|
|||||||
</define>
|
</define>
|
||||||
<!-- Memory as an attribute is in KiB, no way to express a unit -->
|
<!-- Memory as an attribute is in KiB, no way to express a unit -->
|
||||||
<define name="memoryKB">
|
<define name="memoryKB">
|
||||||
<data type="unsignedLong"/>
|
<data type="unsignedInt">
|
||||||
|
<param name="pattern">[0-9]+</param>
|
||||||
|
</data>
|
||||||
</define>
|
</define>
|
||||||
<define name="domainName">
|
<define name="domainName">
|
||||||
<data type="string">
|
<data type="string">
|
||||||
@@ -5355,10 +5053,9 @@
|
|||||||
</data>
|
</data>
|
||||||
</define>
|
</define>
|
||||||
<define name="addrIPorName">
|
<define name="addrIPorName">
|
||||||
<choice>
|
<data type="string">
|
||||||
<ref name="ipAddr"/>
|
<param name="pattern">(([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9])|(([0-9a-fA-F]+|:)+[0-9a-fA-F]+)|([a-zA-Z0-9_\.\+\-]*)</param>
|
||||||
<ref name="dnsName"/>
|
</data>
|
||||||
</choice>
|
|
||||||
</define>
|
</define>
|
||||||
<define name="usbIdDefault">
|
<define name="usbIdDefault">
|
||||||
<data type="string">
|
<data type="string">
|
||||||
@@ -5405,21 +5102,11 @@
|
|||||||
<param name="pattern">[0-9]{1,2}</param>
|
<param name="pattern">[0-9]{1,2}</param>
|
||||||
</data>
|
</data>
|
||||||
</define>
|
</define>
|
||||||
<define name="driveSCSITarget">
|
|
||||||
<data type="string">
|
|
||||||
<param name="pattern">[0-9]{1,10}</param>
|
|
||||||
</data>
|
|
||||||
</define>
|
|
||||||
<define name="driveUnit">
|
<define name="driveUnit">
|
||||||
<data type="string">
|
<data type="string">
|
||||||
<param name="pattern">[0-9]{1,2}</param>
|
<param name="pattern">[0-9]{1,2}</param>
|
||||||
</data>
|
</data>
|
||||||
</define>
|
</define>
|
||||||
<define name="driveSCSIUnit">
|
|
||||||
<data type="string">
|
|
||||||
<param name="pattern">[0-9]{1,20}</param>
|
|
||||||
</data>
|
|
||||||
</define>
|
|
||||||
<define name="featureName">
|
<define name="featureName">
|
||||||
<data type="string">
|
<data type="string">
|
||||||
<param name='pattern'>[a-zA-Z0-9\-_\.]+</param>
|
<param name='pattern'>[a-zA-Z0-9\-_\.]+</param>
|
||||||
@@ -5495,15 +5182,6 @@
|
|||||||
</define>
|
</define>
|
||||||
<define name="panic">
|
<define name="panic">
|
||||||
<element name="panic">
|
<element name="panic">
|
||||||
<optional>
|
|
||||||
<attribute name="model">
|
|
||||||
<choice>
|
|
||||||
<value>isa</value>
|
|
||||||
<value>pseries</value>
|
|
||||||
<value>hyperv</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
<optional>
|
||||||
<ref name="address"/>
|
<ref name="address"/>
|
||||||
</optional>
|
</optional>
|
||||||
|
@@ -323,22 +323,24 @@
|
|||||||
<value>ipv4</value>
|
<value>ipv4</value>
|
||||||
</attribute>
|
</attribute>
|
||||||
<interleave>
|
<interleave>
|
||||||
<optional>
|
<choice>
|
||||||
<ref name="dhcp-element"/>
|
<ref name="dhcp-element"/>
|
||||||
</optional>
|
<group>
|
||||||
<zeroOrMore>
|
<oneOrMore>
|
||||||
<element name="ip">
|
<element name="ip">
|
||||||
<attribute name="address"><ref name="ipv4Addr"/></attribute>
|
<attribute name="address"><ref name="ipv4Addr"/></attribute>
|
||||||
|
<optional>
|
||||||
|
<attribute name="prefix"><ref name="ipv4Prefix"/></attribute>
|
||||||
|
</optional>
|
||||||
|
</element>
|
||||||
|
</oneOrMore>
|
||||||
<optional>
|
<optional>
|
||||||
<attribute name="prefix"><ref name="ipv4Prefix"/></attribute>
|
<element name="route">
|
||||||
|
<attribute name="gateway"><ref name="ipv4Addr"/></attribute>
|
||||||
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
</element>
|
</group>
|
||||||
</zeroOrMore>
|
</choice>
|
||||||
<optional>
|
|
||||||
<element name="route">
|
|
||||||
<attribute name="gateway"><ref name="ipv4Addr"/></attribute>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
@@ -40,7 +40,6 @@
|
|||||||
<ref name="capusbinterface"/>
|
<ref name="capusbinterface"/>
|
||||||
<ref name="capnet"/>
|
<ref name="capnet"/>
|
||||||
<ref name="capscsihost"/>
|
<ref name="capscsihost"/>
|
||||||
<ref name="capscsitarget"/>
|
|
||||||
<ref name="capscsi"/>
|
<ref name="capscsi"/>
|
||||||
<ref name="capstorage"/>
|
<ref name="capstorage"/>
|
||||||
</choice>
|
</choice>
|
||||||
@@ -169,17 +168,6 @@
|
|||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
|
|
||||||
<optional>
|
|
||||||
<element name='capability'>
|
|
||||||
<attribute name='type'>
|
|
||||||
<choice>
|
|
||||||
<value>pci-bridge</value>
|
|
||||||
<value>cardbus-bridge</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
|
|
||||||
<optional>
|
<optional>
|
||||||
<element name='pci-express'>
|
<element name='pci-express'>
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
@@ -383,16 +371,6 @@
|
|||||||
</optional>
|
</optional>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<define name='capscsitarget'>
|
|
||||||
<attribute name='type'>
|
|
||||||
<value>scsi_target</value>
|
|
||||||
</attribute>
|
|
||||||
|
|
||||||
<element name='target'>
|
|
||||||
<text/>
|
|
||||||
</element>
|
|
||||||
</define>
|
|
||||||
|
|
||||||
<define name='capscsi'>
|
<define name='capscsi'>
|
||||||
<attribute name='type'>
|
<attribute name='type'>
|
||||||
<value>scsi</value>
|
<value>scsi</value>
|
||||||
|
@@ -98,27 +98,21 @@
|
|||||||
<optional>
|
<optional>
|
||||||
<element name='permissions'>
|
<element name='permissions'>
|
||||||
<interleave>
|
<interleave>
|
||||||
<optional>
|
<element name='mode'>
|
||||||
<element name='mode'>
|
<ref name='octalMode'/>
|
||||||
<ref name='octalMode'/>
|
</element>
|
||||||
</element>
|
<element name='owner'>
|
||||||
</optional>
|
<choice>
|
||||||
<optional>
|
<ref name='unsignedInt'/>
|
||||||
<element name='owner'>
|
<value>-1</value>
|
||||||
<choice>
|
</choice>
|
||||||
<ref name='unsignedInt'/>
|
</element>
|
||||||
<value>-1</value>
|
<element name='group'>
|
||||||
</choice>
|
<choice>
|
||||||
</element>
|
<ref name='unsignedInt'/>
|
||||||
</optional>
|
<value>-1</value>
|
||||||
<optional>
|
</choice>
|
||||||
<element name='group'>
|
</element>
|
||||||
<choice>
|
|
||||||
<ref name='unsignedInt'/>
|
|
||||||
<value>-1</value>
|
|
||||||
</choice>
|
|
||||||
</element>
|
|
||||||
</optional>
|
|
||||||
<optional>
|
<optional>
|
||||||
<element name='label'>
|
<element name='label'>
|
||||||
<text/>
|
<text/>
|
||||||
|
@@ -278,11 +278,6 @@
|
|||||||
<empty/>
|
<empty/>
|
||||||
<ref name='devextents'/>
|
<ref name='devextents'/>
|
||||||
</choice>
|
</choice>
|
||||||
<optional>
|
|
||||||
<attribute name="part_separator">
|
|
||||||
<ref name="virYesNo"/>
|
|
||||||
</attribute>
|
|
||||||
</optional>
|
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
@@ -319,7 +314,7 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<define name='sourceinfonetrelativepath'>
|
<define name='sourceinfonetfsgluster'>
|
||||||
<element name='dir'>
|
<element name='dir'>
|
||||||
<attribute name='path'>
|
<attribute name='path'>
|
||||||
<ref name='dirPath'/>
|
<ref name='dirPath'/>
|
||||||
@@ -405,6 +400,7 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<value>auto</value>
|
<value>auto</value>
|
||||||
<value>nfs</value>
|
<value>nfs</value>
|
||||||
|
<value>cifs</value>
|
||||||
</choice>
|
</choice>
|
||||||
</attribute>
|
</attribute>
|
||||||
</element>
|
</element>
|
||||||
@@ -417,7 +413,7 @@
|
|||||||
<element name='format'>
|
<element name='format'>
|
||||||
<attribute name='type'>
|
<attribute name='type'>
|
||||||
<choice>
|
<choice>
|
||||||
<value>unknown</value>
|
<value>none</value>
|
||||||
<value>dos</value>
|
<value>dos</value>
|
||||||
<value>dvh</value>
|
<value>dvh</value>
|
||||||
<value>gpt</value>
|
<value>gpt</value>
|
||||||
@@ -492,13 +488,10 @@
|
|||||||
<group>
|
<group>
|
||||||
<interleave>
|
<interleave>
|
||||||
<ref name='sourceinfohost'/>
|
<ref name='sourceinfohost'/>
|
||||||
<ref name='sourceinfonetrelativepath'/>
|
<ref name='sourceinfonetfsgluster'/>
|
||||||
<element name='format'>
|
<element name='format'>
|
||||||
<attribute name='type'>
|
<attribute name='type'>
|
||||||
<choice>
|
<value>glusterfs</value>
|
||||||
<value>cifs</value>
|
|
||||||
<value>glusterfs</value>
|
|
||||||
</choice>
|
|
||||||
</attribute>
|
</attribute>
|
||||||
</element>
|
</element>
|
||||||
<optional>
|
<optional>
|
||||||
|
@@ -9,12 +9,11 @@
|
|||||||
$scope = ltrim ($scope);
|
$scope = ltrim ($scope);
|
||||||
if ($scope == "")
|
if ($scope == "")
|
||||||
$scope = "any";
|
$scope = "any";
|
||||||
$querystr = htmlspecialchars($query, ENT_QUOTES, 'UTF-8');
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="<?php echo $_SERVER['PHP_SELF'], "?query=", rawurlencode($query) ?>"
|
<form action="<?php echo $_SERVER['PHP_SELF'], "?query=", rawurlencode($query) ?>"
|
||||||
enctype="application/x-www-form-urlencoded" method="get">
|
enctype="application/x-www-form-urlencoded" method="get">
|
||||||
<input name="query" type="text" size="50" value="<?php echo $querystr ?>"/>
|
<input name="query" type="text" size="50" value="<?php echo $query?>"/>
|
||||||
<select name="scope">
|
<select name="scope">
|
||||||
<option value="any">Search All</option>
|
<option value="any">Search All</option>
|
||||||
<option value="API" <?php if ($scope == 'API') print "selected='selected'"?>>Only the APIs</option>
|
<option value="API" <?php if ($scope == 'API') print "selected='selected'"?>>Only the APIs</option>
|
||||||
@@ -201,7 +200,7 @@
|
|||||||
}
|
}
|
||||||
mysql_close($link);
|
mysql_close($link);
|
||||||
$nb = count($results);
|
$nb = count($results);
|
||||||
echo "<h3 align='center'>Found $nb results for query $querystr</h3>\n";
|
echo "<h3 align='center'>Found $nb results for query $query</h3>\n";
|
||||||
usort($results, "resSort");
|
usort($results, "resSort");
|
||||||
|
|
||||||
if ($nb > 0) {
|
if ($nb > 0) {
|
||||||
|
@@ -120,10 +120,6 @@
|
|||||||
<a href="hooks.html">Hooks</a>
|
<a href="hooks.html">Hooks</a>
|
||||||
<span>Hooks for system specific management</span>
|
<span>Hooks for system specific management</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a href="nss.html">NSS module</a>
|
|
||||||
<span>Enable domain host name translation to IP addresses</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -263,8 +259,8 @@
|
|||||||
<span>Driver for IBM PowerVM</span>
|
<span>Driver for IBM PowerVM</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="drvvirtuozzo.html">Virtuozzo</a>
|
<a href="drvparallels.html">Parallels</a>
|
||||||
<span>Driver for Virtuozzo</span>
|
<span>Driver for Parallels Cloud Server</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="drvbhyve.html">Bhyve</a>
|
<a href="drvbhyve.html">Bhyve</a>
|
||||||
|
@@ -161,7 +161,7 @@
|
|||||||
<li><code>qcow</code>: QEMU v1 disk image format</li>
|
<li><code>qcow</code>: QEMU v1 disk image format</li>
|
||||||
<li><code>qcow2</code>: QEMU v2 disk image format</li>
|
<li><code>qcow2</code>: QEMU v2 disk image format</li>
|
||||||
<li><code>qed</code>: QEMU Enhanced Disk image format</li>
|
<li><code>qed</code>: QEMU Enhanced Disk image format</li>
|
||||||
<li><code>vmdk</code>: VMware disk image format</li>
|
<li><code>vmdk</code>: VMWare disk image format</li>
|
||||||
<li><code>vpc</code>: VirtualPC disk image format</li>
|
<li><code>vpc</code>: VirtualPC disk image format</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
@@ -291,8 +291,7 @@
|
|||||||
the <a href="#StorageBackendGluster">gluster</a> pool.)
|
the <a href="#StorageBackendGluster">gluster</a> pool.)
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<code>cifs</code> - use the SMB (samba) or CIFS file system.
|
<code>cifs</code> - use the SMB (samba) or CIFS file system
|
||||||
The mount will use "-o guest" to mount the directory anonymously.
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -440,12 +439,6 @@
|
|||||||
to use <code>/dev/disk/by-path</code> or <code>/dev/disk/by-id</code>
|
to use <code>/dev/disk/by-path</code> or <code>/dev/disk/by-id</code>
|
||||||
for the target path. These provide persistent stable naming for LUNs
|
for the target path. These provide persistent stable naming for LUNs
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
The libvirt iSCSI storage backend does not resolve the provided
|
|
||||||
host name or IP address when finding the available target IQN's
|
|
||||||
on the host; therefore, defining two pools to use the same IQN
|
|
||||||
on the same host will fail the duplicate source pool checks.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>Example pool input</h3>
|
<h3>Example pool input</h3>
|
||||||
<pre>
|
<pre>
|
||||||
@@ -453,7 +446,7 @@
|
|||||||
<name>virtimages</name>
|
<name>virtimages</name>
|
||||||
<source>
|
<source>
|
||||||
<host name="iscsi.example.com"/>
|
<host name="iscsi.example.com"/>
|
||||||
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
<device path="demo-target"/>
|
||||||
</source>
|
</source>
|
||||||
<target>
|
<target>
|
||||||
<path>/dev/disk/by-path</path>
|
<path>/dev/disk/by-path</path>
|
||||||
@@ -505,8 +498,7 @@
|
|||||||
<h2><a name="StorageBackendMultipath">Multipath pools</a></h2>
|
<h2><a name="StorageBackendMultipath">Multipath pools</a></h2>
|
||||||
<p>
|
<p>
|
||||||
This provides a pool that contains all the multipath devices on the
|
This provides a pool that contains all the multipath devices on the
|
||||||
host. Therefore, only one Multipath pool may be configured per host.
|
host. Volume creating is not supported via the libvirt APIs.
|
||||||
Volume creating is not supported via the libvirt APIs.
|
|
||||||
The target element is actually ignored, but one is required to appease
|
The target element is actually ignored, but one is required to appease
|
||||||
the libvirt XML parser.<br/>
|
the libvirt XML parser.<br/>
|
||||||
<br/>
|
<br/>
|
||||||
@@ -550,9 +542,7 @@
|
|||||||
backend supports cephx authentication for communication with the
|
backend supports cephx authentication for communication with the
|
||||||
Ceph cluster. Storing the cephx authentication key is done with
|
Ceph cluster. Storing the cephx authentication key is done with
|
||||||
the libvirt secret mechanism. The UUID in the example pool input
|
the libvirt secret mechanism. The UUID in the example pool input
|
||||||
refers to the UUID of the stored secret.<br />
|
refers to the UUID of the stored secret.
|
||||||
The port attribute for a Ceph monitor does not have to be provided.
|
|
||||||
If not provided librados will use the default Ceph monitor port.
|
|
||||||
<span class="since">Since 0.9.13</span>
|
<span class="since">Since 0.9.13</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -562,8 +552,8 @@
|
|||||||
<name>myrbdpool</name>
|
<name>myrbdpool</name>
|
||||||
<source>
|
<source>
|
||||||
<name>rbdpool</name>
|
<name>rbdpool</name>
|
||||||
<host name='1.2.3.4'/>
|
<host name='1.2.3.4' port='6789'/>
|
||||||
<host name='my.ceph.monitor'/>
|
<host name='my.ceph.monitor' port='6789'/>
|
||||||
<host name='third.ceph.monitor' port='6789'/>
|
<host name='third.ceph.monitor' port='6789'/>
|
||||||
<auth username='admin' type='ceph'>
|
<auth username='admin' type='ceph'>
|
||||||
<secret uuid='2ec115d7-3a88-3ceb-bc12-0ac909a6fd87'/>
|
<secret uuid='2ec115d7-3a88-3ceb-bc12-0ac909a6fd87'/>
|
||||||
@@ -755,10 +745,8 @@
|
|||||||
|
|
||||||
<h2><a name="StorageBackendZFS">ZFS pools</a></h2>
|
<h2><a name="StorageBackendZFS">ZFS pools</a></h2>
|
||||||
<p>
|
<p>
|
||||||
This provides a pool based on the ZFS filesystem. Initially it was developed
|
This provides a pool based on the ZFS filesystem. It is currently
|
||||||
for FreeBSD, and <span class="since">since 1.3.2</span> experimental support
|
supported on FreeBSD only.
|
||||||
for <a href="http://zfsonlinux.org/">ZFS on Linux</a> version 0.6.4 or newer
|
|
||||||
is available.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>A pool could either be created manually using the <code>zpool create</code>
|
<p>A pool could either be created manually using the <code>zpool create</code>
|
||||||
|
@@ -1,89 +0,0 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
## Copyright (C) 2005-2016 Red Hat, Inc.
|
|
||||||
##
|
|
||||||
## This library is free software; you can redistribute it and/or
|
|
||||||
## modify it under the terms of the GNU Lesser General Public
|
|
||||||
## License as published by the Free Software Foundation; either
|
|
||||||
## version 2.1 of the License, or (at your option) any later version.
|
|
||||||
##
|
|
||||||
## This library is distributed in the hope that it will be useful,
|
|
||||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
## Lesser General Public License for more details.
|
|
||||||
##
|
|
||||||
## You should have received a copy of the GNU Lesser General Public
|
|
||||||
## License along with this library. If not, see
|
|
||||||
## <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
FILTERS = $(wildcard $(srcdir)/xml/nwfilter/*.xml)
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
apparmor/TEMPLATE.qemu \
|
|
||||||
apparmor/TEMPLATE.lxc \
|
|
||||||
apparmor/libvirt-qemu \
|
|
||||||
apparmor/libvirt-lxc \
|
|
||||||
apparmor/usr.lib.libvirt.virt-aa-helper \
|
|
||||||
apparmor/usr.sbin.libvirtd \
|
|
||||||
lxcconvert/virt-lxc-convert \
|
|
||||||
polkit/libvirt-acl.rules \
|
|
||||||
systemtap/events.stp \
|
|
||||||
systemtap/rpc-monitor.stp \
|
|
||||||
$(FILTERS) \
|
|
||||||
$(wildcard $(srcdir)/xml/storage/*.xml) \
|
|
||||||
$(wildcard $(srcdir)/xml/test/*.xml)
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir) \
|
|
||||||
-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib
|
|
||||||
LDADD = $(STATIC_BINARIES) $(WARN_CFLAGS) $(COVERAGE_LDFLAGS) \
|
|
||||||
$(top_builddir)/src/libvirt.la $(top_builddir)/gnulib/lib/libgnu.la
|
|
||||||
|
|
||||||
noinst_PROGRAMS=dominfo/info1 dommigrate/dommigrate domsuspend/suspend \
|
|
||||||
domtop/domtop hellolibvirt/hellolibvirt object-events/event-test \
|
|
||||||
openauth/openauth rename/rename
|
|
||||||
|
|
||||||
dominfo_info1_SOURCES = dominfo/info1.c
|
|
||||||
dommigrate_dommigrate_SOURCES = dommigrate/dommigrate.c
|
|
||||||
domsuspend_suspend_SOURCES = domsuspend/suspend.c
|
|
||||||
domtop_domtop_SOURCES = domtop/domtop.c
|
|
||||||
hellolibvirt_hellolibvirt_SOURCES = hellolibvirt/hellolibvirt.c
|
|
||||||
object_events_event_test_SOURCES = object-events/event-test.c
|
|
||||||
openauth_openauth_SOURCES = openauth/openauth.c
|
|
||||||
rename_rename_SOURCES = rename/rename.c
|
|
||||||
|
|
||||||
if WITH_APPARMOR_PROFILES
|
|
||||||
apparmordir = $(sysconfdir)/apparmor.d/
|
|
||||||
apparmor_DATA = \
|
|
||||||
apparmor/usr.lib.libvirt.virt-aa-helper \
|
|
||||||
apparmor/usr.sbin.libvirtd \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
abstractionsdir = $(apparmordir)/abstractions
|
|
||||||
abstractions_DATA = \
|
|
||||||
apparmor/libvirt-qemu \
|
|
||||||
apparmor/libvirt-lxc \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
templatesdir = $(apparmordir)/libvirt
|
|
||||||
templates_DATA = \
|
|
||||||
apparmor/TEMPLATE.qemu \
|
|
||||||
apparmor/TEMPLATE.lxc \
|
|
||||||
$(NULL)
|
|
||||||
endif WITH_APPARMOR_PROFILES
|
|
||||||
|
|
||||||
if WITH_NWFILTER
|
|
||||||
NWFILTER_DIR = "$(DESTDIR)$(sysconfdir)/libvirt/nwfilter"
|
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
$(MKDIR_P) "$(NWFILTER_DIR)"
|
|
||||||
for f in $(FILTERS); do \
|
|
||||||
$(INSTALL_DATA) $$f "$(NWFILTER_DIR)"; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-local::
|
|
||||||
for f in $(FILTERS); do \
|
|
||||||
rm -f "$(NWFILTER_DIR)/`basename $$f`"; \
|
|
||||||
done
|
|
||||||
-test -z $(shell ls $(NWFILTER_DIR)) || rmdir $(NWFILTER_DIR)
|
|
||||||
endif WITH_NWFILTER
|
|
43
examples/apparmor/Makefile.am
Normal file
43
examples/apparmor/Makefile.am
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
## Copyright (C) 2005-2011, 2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
EXTRA_DIST= \
|
||||||
|
TEMPLATE.qemu \
|
||||||
|
TEMPLATE.lxc \
|
||||||
|
libvirt-qemu \
|
||||||
|
libvirt-lxc \
|
||||||
|
usr.lib.libvirt.virt-aa-helper \
|
||||||
|
usr.sbin.libvirtd
|
||||||
|
|
||||||
|
if WITH_APPARMOR_PROFILES
|
||||||
|
apparmordir = $(sysconfdir)/apparmor.d/
|
||||||
|
apparmor_DATA = \
|
||||||
|
usr.lib.libvirt.virt-aa-helper \
|
||||||
|
usr.sbin.libvirtd \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
abstractionsdir = $(apparmordir)/abstractions
|
||||||
|
abstractions_DATA = \
|
||||||
|
libvirt-qemu \
|
||||||
|
libvirt-lxc \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
templatesdir = $(apparmordir)/libvirt
|
||||||
|
templates_DATA = \
|
||||||
|
TEMPLATE.qemu \
|
||||||
|
TEMPLATE.lxc \
|
||||||
|
$(NULL)
|
||||||
|
endif WITH_APPARMOR_PROFILES
|
@@ -75,12 +75,9 @@
|
|||||||
/usr/bin/kvm rmix,
|
/usr/bin/kvm rmix,
|
||||||
/usr/bin/qemu rmix,
|
/usr/bin/qemu rmix,
|
||||||
/usr/bin/qemu-kvm rmix,
|
/usr/bin/qemu-kvm rmix,
|
||||||
/usr/bin/qemu-system-aarch64 rmix,
|
|
||||||
/usr/bin/qemu-system-alpha rmix,
|
|
||||||
/usr/bin/qemu-system-arm rmix,
|
/usr/bin/qemu-system-arm rmix,
|
||||||
/usr/bin/qemu-system-cris rmix,
|
/usr/bin/qemu-system-cris rmix,
|
||||||
/usr/bin/qemu-system-i386 rmix,
|
/usr/bin/qemu-system-i386 rmix,
|
||||||
/usr/bin/qemu-system-lm32 rmix,
|
|
||||||
/usr/bin/qemu-system-m68k rmix,
|
/usr/bin/qemu-system-m68k rmix,
|
||||||
/usr/bin/qemu-system-microblaze rmix,
|
/usr/bin/qemu-system-microblaze rmix,
|
||||||
/usr/bin/qemu-system-microblazeel rmix,
|
/usr/bin/qemu-system-microblazeel rmix,
|
||||||
@@ -88,22 +85,14 @@
|
|||||||
/usr/bin/qemu-system-mips64 rmix,
|
/usr/bin/qemu-system-mips64 rmix,
|
||||||
/usr/bin/qemu-system-mips64el rmix,
|
/usr/bin/qemu-system-mips64el rmix,
|
||||||
/usr/bin/qemu-system-mipsel rmix,
|
/usr/bin/qemu-system-mipsel rmix,
|
||||||
/usr/bin/qemu-system-moxie rmix,
|
|
||||||
/usr/bin/qemu-system-or32 rmix,
|
|
||||||
/usr/bin/qemu-system-ppc rmix,
|
/usr/bin/qemu-system-ppc rmix,
|
||||||
/usr/bin/qemu-system-ppc64 rmix,
|
/usr/bin/qemu-system-ppc64 rmix,
|
||||||
/usr/bin/qemu-system-ppcemb rmix,
|
/usr/bin/qemu-system-ppcemb rmix,
|
||||||
/usr/bin/qemu-system-s390x rmix,
|
|
||||||
/usr/bin/qemu-system-sh4 rmix,
|
/usr/bin/qemu-system-sh4 rmix,
|
||||||
/usr/bin/qemu-system-sh4eb rmix,
|
/usr/bin/qemu-system-sh4eb rmix,
|
||||||
/usr/bin/qemu-system-sparc rmix,
|
/usr/bin/qemu-system-sparc rmix,
|
||||||
/usr/bin/qemu-system-sparc64 rmix,
|
/usr/bin/qemu-system-sparc64 rmix,
|
||||||
/usr/bin/qemu-system-tricore rmix,
|
|
||||||
/usr/bin/qemu-system-unicore32 rmix,
|
|
||||||
/usr/bin/qemu-system-x86_64 rmix,
|
/usr/bin/qemu-system-x86_64 rmix,
|
||||||
/usr/bin/qemu-system-xtensa rmix,
|
|
||||||
/usr/bin/qemu-system-xtensaeb rmix,
|
|
||||||
/usr/bin/qemu-aarch64 rmix,
|
|
||||||
/usr/bin/qemu-alpha rmix,
|
/usr/bin/qemu-alpha rmix,
|
||||||
/usr/bin/qemu-arm rmix,
|
/usr/bin/qemu-arm rmix,
|
||||||
/usr/bin/qemu-armeb rmix,
|
/usr/bin/qemu-armeb rmix,
|
||||||
@@ -113,24 +102,16 @@
|
|||||||
/usr/bin/qemu-microblaze rmix,
|
/usr/bin/qemu-microblaze rmix,
|
||||||
/usr/bin/qemu-microblazeel rmix,
|
/usr/bin/qemu-microblazeel rmix,
|
||||||
/usr/bin/qemu-mips rmix,
|
/usr/bin/qemu-mips rmix,
|
||||||
/usr/bin/qemu-mips64 rmix,
|
|
||||||
/usr/bin/qemu-mips64el rmix,
|
|
||||||
/usr/bin/qemu-mipsel rmix,
|
/usr/bin/qemu-mipsel rmix,
|
||||||
/usr/bin/qemu-mipsn32 rmix,
|
|
||||||
/usr/bin/qemu-mipsn32el rmix,
|
|
||||||
/usr/bin/qemu-nbd rmix,
|
|
||||||
/usr/bin/qemu-or32 rmix,
|
|
||||||
/usr/bin/qemu-ppc rmix,
|
/usr/bin/qemu-ppc rmix,
|
||||||
/usr/bin/qemu-ppc64 rmix,
|
/usr/bin/qemu-ppc64 rmix,
|
||||||
/usr/bin/qemu-ppc64abi32 rmix,
|
/usr/bin/qemu-ppc64abi32 rmix,
|
||||||
/usr/bin/qemu-ppc64le rmix,
|
|
||||||
/usr/bin/qemu-s390x rmix,
|
|
||||||
/usr/bin/qemu-sh4 rmix,
|
/usr/bin/qemu-sh4 rmix,
|
||||||
/usr/bin/qemu-sh4eb rmix,
|
/usr/bin/qemu-sh4eb rmix,
|
||||||
/usr/bin/qemu-sparc rmix,
|
/usr/bin/qemu-sparc rmix,
|
||||||
|
/usr/bin/qemu-sparc64 rmix,
|
||||||
/usr/bin/qemu-sparc32plus rmix,
|
/usr/bin/qemu-sparc32plus rmix,
|
||||||
/usr/bin/qemu-sparc64 rmix,
|
/usr/bin/qemu-sparc64 rmix,
|
||||||
/usr/bin/qemu-unicore32 rmix,
|
|
||||||
/usr/bin/qemu-x86_64 rmix,
|
/usr/bin/qemu-x86_64 rmix,
|
||||||
/usr/{lib,lib64}/qemu/block-curl.so mr,
|
/usr/{lib,lib64}/qemu/block-curl.so mr,
|
||||||
/usr/{lib,lib64}/qemu/block-rbd.so mr,
|
/usr/{lib,lib64}/qemu/block-rbd.so mr,
|
||||||
|
25
examples/dominfo/Makefile.am
Normal file
25
examples/dominfo/Makefile.am
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
## Copyright (C) 2005-2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
|
||||||
|
LDADDS = $(STATIC_BINARIES) $(WARN_CFLAGS) $(top_builddir)/src/libvirt.la \
|
||||||
|
$(COVERAGE_LDFLAGS)
|
||||||
|
|
||||||
|
noinst_PROGRAMS=info1
|
||||||
|
|
||||||
|
info1_SOURCES=info1.c
|
||||||
|
info1_LDFLAGS=
|
||||||
|
info1_LDADD= $(LDADDS)
|
5
examples/dommigrate/Makefile.am
Normal file
5
examples/dommigrate/Makefile.am
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)
|
||||||
|
noinst_PROGRAMS = dommigrate
|
||||||
|
dommigrate_CFLAGS = $(WARN_CFLAGS)
|
||||||
|
dommigrate_SOURCES = dommigrate.c
|
||||||
|
dommigrate_LDADD = $(top_builddir)/src/libvirt.la
|
27
examples/domsuspend/Makefile.am
Normal file
27
examples/domsuspend/Makefile.am
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
## Copyright (C) 2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
|
||||||
|
LDADDS = $(STATIC_BINARIES) $(WARN_CFLAGS) $(top_builddir)/src/libvirt.la \
|
||||||
|
$(COVERAGE_LDFLAGS)
|
||||||
|
|
||||||
|
noinst_PROGRAMS=suspend
|
||||||
|
|
||||||
|
suspend_SOURCES=suspend.c
|
||||||
|
suspend_LDFLAGS=
|
||||||
|
suspend_LDADD= $(LDADDS)
|
@@ -21,8 +21,6 @@
|
|||||||
* Author: Michal Privoznik <mprivozn@redhat.com>
|
* Author: Michal Privoznik <mprivozn@redhat.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <libvirt/libvirt.h>
|
#include <libvirt/libvirt.h>
|
||||||
@@ -34,21 +32,6 @@
|
|||||||
|
|
||||||
static int debug;
|
static int debug;
|
||||||
|
|
||||||
/* On mingw, there's a header file that poisons the well:
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* CC domtop.o
|
|
||||||
*domtop.c:40:0: warning: "ERROR" redefined [enabled by default]
|
|
||||||
* #define ERROR(...) \
|
|
||||||
* ^
|
|
||||||
*In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:71:0,
|
|
||||||
* from /usr/i686-w64-mingw32/sys-root/mingw/include/winsock2.h:23,
|
|
||||||
* from ../../gnulib/lib/unistd.h:48,
|
|
||||||
* from domtop.c:35:
|
|
||||||
* /usr/i686-w64-mingw32/sys-root/mingw/include/wingdi.h:75:0: note: this is the location of the previous definition
|
|
||||||
* #define ERROR 0
|
|
||||||
*/
|
|
||||||
#undef ERROR
|
|
||||||
#define ERROR(...) \
|
#define ERROR(...) \
|
||||||
do { \
|
do { \
|
||||||
fprintf(stderr, "ERROR %s:%d : ", __FUNCTION__, __LINE__); \
|
fprintf(stderr, "ERROR %s:%d : ", __FUNCTION__, __LINE__); \
|
||||||
|
29
examples/domtop/Makefile.am
Normal file
29
examples/domtop/Makefile.am
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
## Copyright (C) 2014 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||||
|
-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib \
|
||||||
|
-I$(top_srcdir)
|
||||||
|
LDADDS = $(STATIC_BINARIES) $(WARN_CFLAGS) $(top_builddir)/src/libvirt.la \
|
||||||
|
$(top_builddir)/gnulib/lib/libgnu.la $(COVERAGE_LDFLAGS)
|
||||||
|
|
||||||
|
noinst_PROGRAMS=domtop
|
||||||
|
|
||||||
|
domtop_SOURCES=domtop.c
|
||||||
|
domtop_LDFLAGS=
|
||||||
|
domtop_LDADD= $(LDADDS)
|
21
examples/hellolibvirt/Makefile.am
Normal file
21
examples/hellolibvirt/Makefile.am
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
## Copyright (C) 2005-2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)
|
||||||
|
noinst_PROGRAMS = hellolibvirt
|
||||||
|
hellolibvirt_CFLAGS = $(WARN_CFLAGS)
|
||||||
|
hellolibvirt_SOURCES = hellolibvirt.c
|
||||||
|
hellolibvirt_LDADD = $(top_builddir)/src/libvirt.la
|
18
examples/lxcconvert/Makefile.am
Normal file
18
examples/lxcconvert/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
## Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
EXTRA_DIST= \
|
||||||
|
virt-lxc-convert
|
24
examples/object-events/Makefile.am
Normal file
24
examples/object-events/Makefile.am
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
## Copyright (C) 2005-2011, 2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||||
|
-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib \
|
||||||
|
-I$(top_srcdir)
|
||||||
|
noinst_PROGRAMS = event-test
|
||||||
|
event_test_CFLAGS = $(WARN_CFLAGS)
|
||||||
|
event_test_SOURCES = event-test.c
|
||||||
|
event_test_LDADD = $(top_builddir)/src/libvirt.la \
|
||||||
|
$(top_builddir)/gnulib/lib/libgnu.la
|
@@ -108,16 +108,10 @@ static const char *eventDetailToString(int event, int detail) {
|
|||||||
ret = "Added";
|
ret = "Added";
|
||||||
else if (detail == VIR_DOMAIN_EVENT_DEFINED_UPDATED)
|
else if (detail == VIR_DOMAIN_EVENT_DEFINED_UPDATED)
|
||||||
ret = "Updated";
|
ret = "Updated";
|
||||||
else if (detail == VIR_DOMAIN_EVENT_DEFINED_RENAMED)
|
|
||||||
ret = "Renamed";
|
|
||||||
else if (detail == VIR_DOMAIN_EVENT_DEFINED_FROM_SNAPSHOT)
|
|
||||||
ret = "Snapshot";
|
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_UNDEFINED:
|
case VIR_DOMAIN_EVENT_UNDEFINED:
|
||||||
if (detail == VIR_DOMAIN_EVENT_UNDEFINED_REMOVED)
|
if (detail == VIR_DOMAIN_EVENT_UNDEFINED_REMOVED)
|
||||||
ret = "Removed";
|
ret = "Removed";
|
||||||
else if (detail == VIR_DOMAIN_EVENT_UNDEFINED_RENAMED)
|
|
||||||
ret = "Renamed";
|
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_STARTED:
|
case VIR_DOMAIN_EVENT_STARTED:
|
||||||
switch ((virDomainEventStartedDetailType) detail) {
|
switch ((virDomainEventStartedDetailType) detail) {
|
||||||
@@ -161,12 +155,6 @@ static const char *eventDetailToString(int event, int detail) {
|
|||||||
case VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR:
|
case VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR:
|
||||||
ret = "API error";
|
ret = "API error";
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY:
|
|
||||||
ret = "Post-copy";
|
|
||||||
break;
|
|
||||||
case VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY_FAILED:
|
|
||||||
ret = "Post-copy Error";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_RESUMED:
|
case VIR_DOMAIN_EVENT_RESUMED:
|
||||||
@@ -180,9 +168,6 @@ static const char *eventDetailToString(int event, int detail) {
|
|||||||
case VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT:
|
case VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT:
|
||||||
ret = "Snapshot";
|
ret = "Snapshot";
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_RESUMED_POSTCOPY:
|
|
||||||
ret = "Post-copy";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_EVENT_STOPPED:
|
case VIR_DOMAIN_EVENT_STOPPED:
|
||||||
@@ -616,8 +601,6 @@ static void stop(int sig)
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ret = EXIT_FAILURE;
|
|
||||||
virConnectPtr dconn = NULL;
|
|
||||||
int callback1ret = -1;
|
int callback1ret = -1;
|
||||||
int callback2ret = -1;
|
int callback2ret = -1;
|
||||||
int callback3ret = -1;
|
int callback3ret = -1;
|
||||||
@@ -645,34 +628,32 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
if (argc > 1 && STREQ(argv[1], "--help")) {
|
if (argc > 1 && STREQ(argv[1], "--help")) {
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virInitialize() < 0) {
|
if (virInitialize() < 0) {
|
||||||
fprintf(stderr, "Failed to initialize libvirt");
|
fprintf(stderr, "Failed to initialize libvirt");
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virEventRegisterDefaultImpl() < 0) {
|
if (virEventRegisterDefaultImpl() < 0) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
fprintf(stderr, "Failed to register event implementation: %s\n",
|
fprintf(stderr, "Failed to register event implementation: %s\n",
|
||||||
err && err->message ? err->message: "Unknown error");
|
err && err->message ? err->message: "Unknown error");
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virConnectPtr dconn = NULL;
|
||||||
dconn = virConnectOpenAuth(argc > 1 ? argv[1] : NULL,
|
dconn = virConnectOpenAuth(argc > 1 ? argv[1] : NULL,
|
||||||
virConnectAuthPtrDefault,
|
virConnectAuthPtrDefault,
|
||||||
VIR_CONNECT_RO);
|
VIR_CONNECT_RO);
|
||||||
if (!dconn) {
|
if (!dconn) {
|
||||||
printf("error opening\n");
|
printf("error opening\n");
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virConnectRegisterCloseCallback(dconn,
|
virConnectRegisterCloseCallback(dconn,
|
||||||
connectClose, NULL, NULL) < 0) {
|
connectClose, NULL, NULL);
|
||||||
fprintf(stderr, "Unable to register close callback\n");
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
sigaction(SIGTERM, &action_stop, NULL);
|
sigaction(SIGTERM, &action_stop, NULL);
|
||||||
sigaction(SIGINT, &action_stop, NULL);
|
sigaction(SIGINT, &action_stop, NULL);
|
||||||
@@ -773,75 +754,69 @@ int main(int argc, char **argv)
|
|||||||
VIR_DOMAIN_EVENT_CALLBACK(myDomainEventDeviceAddedCallback),
|
VIR_DOMAIN_EVENT_CALLBACK(myDomainEventDeviceAddedCallback),
|
||||||
strdup("device added"), myFreeFunc);
|
strdup("device added"), myFreeFunc);
|
||||||
|
|
||||||
if ((callback1ret == -1) ||
|
if ((callback1ret != -1) &&
|
||||||
(callback2ret == -1) ||
|
(callback2ret != -1) &&
|
||||||
(callback3ret == -1) ||
|
(callback3ret != -1) &&
|
||||||
(callback4ret == -1) ||
|
(callback4ret != -1) &&
|
||||||
(callback5ret == -1) ||
|
(callback5ret != -1) &&
|
||||||
(callback6ret == -1) ||
|
(callback6ret != -1) &&
|
||||||
(callback7ret == -1) ||
|
(callback7ret != -1) &&
|
||||||
(callback9ret == -1) ||
|
(callback9ret != -1) &&
|
||||||
(callback10ret == -1) ||
|
(callback10ret != -1) &&
|
||||||
(callback11ret == -1) ||
|
(callback11ret != -1) &&
|
||||||
(callback12ret == -1) ||
|
(callback12ret != -1) &&
|
||||||
(callback13ret == -1) ||
|
(callback13ret != -1) &&
|
||||||
(callback14ret == -1) ||
|
(callback14ret != -1) &&
|
||||||
(callback15ret == -1) ||
|
(callback15ret != -1) &&
|
||||||
(callback16ret == -1) ||
|
(callback16ret != -1) &&
|
||||||
(callback17ret == -1) ||
|
(callback17ret != -1) &&
|
||||||
(callback18ret == -1) ||
|
(callback18ret != -1) &&
|
||||||
(callback19ret == -1))
|
(callback19ret != -1)) {
|
||||||
goto cleanup;
|
if (virConnectSetKeepAlive(dconn, 5, 3) < 0) {
|
||||||
|
|
||||||
if (virConnectSetKeepAlive(dconn, 5, 3) < 0) {
|
|
||||||
virErrorPtr err = virGetLastError();
|
|
||||||
fprintf(stderr, "Failed to start keepalive protocol: %s\n",
|
|
||||||
err && err->message ? err->message : "Unknown error");
|
|
||||||
run = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (run) {
|
|
||||||
if (virEventRunDefaultImpl() < 0) {
|
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
fprintf(stderr, "Failed to run event loop: %s\n",
|
fprintf(stderr, "Failed to start keepalive protocol: %s\n",
|
||||||
err && err->message ? err->message : "Unknown error");
|
err && err->message ? err->message : "Unknown error");
|
||||||
|
run = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (run) {
|
||||||
|
if (virEventRunDefaultImpl() < 0) {
|
||||||
|
virErrorPtr err = virGetLastError();
|
||||||
|
fprintf(stderr, "Failed to run event loop: %s\n",
|
||||||
|
err && err->message ? err->message : "Unknown error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VIR_DEBUG("Deregistering event handlers");
|
||||||
|
virConnectDomainEventDeregister(dconn, myDomainEventCallback1);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback2ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback3ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback4ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback5ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback6ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback7ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback9ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback10ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback11ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback12ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback13ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback14ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback15ret);
|
||||||
|
virConnectNetworkEventDeregisterAny(dconn, callback16ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback17ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback18ret);
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback19ret);
|
||||||
|
|
||||||
|
if (callback8ret != -1)
|
||||||
|
virConnectDomainEventDeregisterAny(dconn, callback8ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
VIR_DEBUG("Deregistering event handlers");
|
|
||||||
virConnectDomainEventDeregister(dconn, myDomainEventCallback1);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback2ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback3ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback4ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback5ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback6ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback7ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback9ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback10ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback11ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback12ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback13ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback14ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback15ret);
|
|
||||||
virConnectNetworkEventDeregisterAny(dconn, callback16ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback17ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback18ret);
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback19ret);
|
|
||||||
|
|
||||||
if (callback8ret != -1)
|
|
||||||
virConnectDomainEventDeregisterAny(dconn, callback8ret);
|
|
||||||
|
|
||||||
virConnectUnregisterCloseCallback(dconn, connectClose);
|
virConnectUnregisterCloseCallback(dconn, connectClose);
|
||||||
ret = EXIT_SUCCESS;
|
|
||||||
|
|
||||||
|
VIR_DEBUG("Closing connection");
|
||||||
|
if (dconn && virConnectClose(dconn) < 0)
|
||||||
|
printf("error closing\n");
|
||||||
|
|
||||||
cleanup:
|
printf("done\n");
|
||||||
if (dconn) {
|
return 0;
|
||||||
VIR_DEBUG("Closing connection");
|
|
||||||
if (virConnectClose(dconn) < 0)
|
|
||||||
printf("error closing\n");
|
|
||||||
printf("done\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
21
examples/openauth/Makefile.am
Normal file
21
examples/openauth/Makefile.am
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
## Copyright (C) 2005-2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)
|
||||||
|
noinst_PROGRAMS = openauth
|
||||||
|
openauth_CFLAGS = $(WARN_CFLAGS)
|
||||||
|
openauth_SOURCES = openauth.c
|
||||||
|
openauth_LDADD = $(top_builddir)/src/libvirt.la
|
@@ -1,130 +0,0 @@
|
|||||||
/*
|
|
||||||
* This example defines two groups of roles any user/group can be assigned to.
|
|
||||||
* An "admin" role which grants full access to all APIs on all objects to its
|
|
||||||
* members, and other roles which allows their members to all APIs defined in
|
|
||||||
* restrictedActions on domains matching a regular expressions assigned to
|
|
||||||
* each role. (Jump below the Role class definition to see them.) Users who
|
|
||||||
* belong to an "operator" role can act on any domain (matching ".*" RE),
|
|
||||||
* while members of "userA", "userB", and "userC" roles are limited by more
|
|
||||||
* specific REs.
|
|
||||||
*
|
|
||||||
* A virtualization host admin would define domains with names prefixed by
|
|
||||||
* customer names and create a separate role for each customer restricting
|
|
||||||
* its members to manage only domains with the corresponding prefix.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function Role(name) {
|
|
||||||
this.name = name;
|
|
||||||
|
|
||||||
this.users = [];
|
|
||||||
this.groups = [];
|
|
||||||
|
|
||||||
this.check = function(subject, api, domain) {
|
|
||||||
var validUser = false
|
|
||||||
|
|
||||||
if (this.users.indexOf(subject.user) >= 0) {
|
|
||||||
validUser = true;
|
|
||||||
} else {
|
|
||||||
for (var i = 0; i < subject.groups.length; i++) {
|
|
||||||
if (this.groups.indexOf(subject.groups[i]) >= 0) {
|
|
||||||
validUser = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (validUser &&
|
|
||||||
(this.name == "admin" ||
|
|
||||||
!domain ||
|
|
||||||
(this.domains && domain.match(this.domains)))) {
|
|
||||||
var msg = "Access granted: " +
|
|
||||||
"user = " + subject.user +
|
|
||||||
", groups = [" + subject.groups + "]" +
|
|
||||||
", role = " + this.name +
|
|
||||||
", api = " + api;
|
|
||||||
if (domain)
|
|
||||||
msg += ", domain = " + domain;
|
|
||||||
polkit.log(msg);
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Basic operations and monitoring on a limited set of domains. */
|
|
||||||
var userA = new Role("userA");
|
|
||||||
userA.domains = /^a/;
|
|
||||||
userA.users = ["userA1", "userA2", "userA3", "multiUser"];
|
|
||||||
userA.groups = ["groupA1", "groupA2"];
|
|
||||||
|
|
||||||
var userB = new Role("userB");
|
|
||||||
userB.domains = /^b/;
|
|
||||||
userB.users = ["userB1", "userB2", "userB3", "multiUser"];
|
|
||||||
userB.groups = ["groupB1", "groupB2", "multiGroup"];
|
|
||||||
|
|
||||||
var userC = new Role("userC");
|
|
||||||
userC.domains = /^c/;
|
|
||||||
userC.users = ["userC1", "userC2", "userC3"];
|
|
||||||
userC.groups = ["groupC1", "groupC2", "multiGroup"];
|
|
||||||
|
|
||||||
/* Same as users but on any domain. */
|
|
||||||
var operator = new Role("operator");
|
|
||||||
operator.domains = /.*/;
|
|
||||||
operator.users = ["powerUser1", "powerUser2"];
|
|
||||||
operator.groups = ["powerGroup1", "powerGroup2", "powerGroup3"];
|
|
||||||
|
|
||||||
var users = [operator, userA, userB, userC];
|
|
||||||
|
|
||||||
/* Full access. */
|
|
||||||
var admin = new Role("admin");
|
|
||||||
admin.users = ["adminUser1"];
|
|
||||||
admin.groups = ["adminGroup1"];
|
|
||||||
|
|
||||||
|
|
||||||
restrictedActions = [
|
|
||||||
"domain.core-dump",
|
|
||||||
"domain.fs-freeze",
|
|
||||||
"domain.fs-trim",
|
|
||||||
"domain.getattr",
|
|
||||||
"domain.hibernate",
|
|
||||||
"domain.init-control",
|
|
||||||
"domain.inject-nmi",
|
|
||||||
"domain.open-device",
|
|
||||||
"domain.open-graphics",
|
|
||||||
"domain.pm-control",
|
|
||||||
"domain.read",
|
|
||||||
"domain.reset",
|
|
||||||
"domain.save",
|
|
||||||
"domain.screenshot",
|
|
||||||
"domain.send-input",
|
|
||||||
"domain.send-signal",
|
|
||||||
"domain.set-password",
|
|
||||||
"domain.set-time",
|
|
||||||
"domain.snapshot",
|
|
||||||
"domain.start",
|
|
||||||
"domain.stop",
|
|
||||||
"domain.suspend"
|
|
||||||
];
|
|
||||||
|
|
||||||
polkit.addRule(function(action, subject) {
|
|
||||||
if (action.id.indexOf("org.libvirt.api.") != 0)
|
|
||||||
return polkit.Result.NOT_HANDLED;
|
|
||||||
|
|
||||||
var api = action.id.replace("org.libvirt.api.", "");
|
|
||||||
var domain = action.lookup("domain_name");
|
|
||||||
|
|
||||||
if (admin.check(subject, api, domain))
|
|
||||||
return polkit.Result.YES;
|
|
||||||
|
|
||||||
if (restrictedActions.indexOf(api) < 0)
|
|
||||||
return polkit.Result.NOT_HANDLED;
|
|
||||||
|
|
||||||
for (var i = 0; i < users.length; i++) {
|
|
||||||
if (users[i].check(subject, api, domain))
|
|
||||||
return polkit.Result.YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
return polkit.Result.NO;
|
|
||||||
});
|
|
@@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* rename.c
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <libvirt/libvirt.h>
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
virConnectPtr conn = NULL; /* the hypervisor connection */
|
|
||||||
virDomainPtr dom = NULL; /* the domain being checked */
|
|
||||||
int ret = EXIT_FAILURE;
|
|
||||||
|
|
||||||
if (argc != 3) {
|
|
||||||
fprintf(stderr, "Usage: %s <current_domname> <temporary_domname>\n",
|
|
||||||
argv[0]);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
conn = virConnectOpen(NULL);
|
|
||||||
if (conn == NULL) {
|
|
||||||
fprintf(stderr, "Failed to connect to hypervisor\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
dom = virDomainLookupByName(conn, argv[1]);
|
|
||||||
if (dom == NULL) {
|
|
||||||
fprintf(stderr, "Failed to find domain\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Before first rename: %s\n", virDomainGetName(dom));
|
|
||||||
|
|
||||||
/* Get the information */
|
|
||||||
ret = virDomainRename(dom, argv[2], 0);
|
|
||||||
if (ret < 0) {
|
|
||||||
fprintf(stderr, "Failed to rename domain\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("After first rename: %s\n", virDomainGetName(dom));
|
|
||||||
|
|
||||||
/* Get the information */
|
|
||||||
ret = virDomainRename(dom, argv[1], 0);
|
|
||||||
if (ret < 0) {
|
|
||||||
fprintf(stderr, "Failed to rename domain\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("After second rename: %s\n", virDomainGetName(dom));
|
|
||||||
|
|
||||||
error:
|
|
||||||
if (dom != NULL)
|
|
||||||
virDomainFree(dom);
|
|
||||||
if (conn != NULL)
|
|
||||||
virConnectClose(conn);
|
|
||||||
return ret;
|
|
||||||
}
|
|
19
examples/systemtap/Makefile.am
Normal file
19
examples/systemtap/Makefile.am
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
## Copyright (C) 2005-2011, 2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
events.stp \
|
||||||
|
rpc-monitor.stp
|
54
examples/xml/nwfilter/Makefile.am
Normal file
54
examples/xml/nwfilter/Makefile.am
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
## Copyright (C) 2005-2011, 2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
FILTERS = \
|
||||||
|
allow-arp.xml \
|
||||||
|
allow-dhcp-server.xml \
|
||||||
|
allow-dhcp.xml \
|
||||||
|
allow-incoming-ipv4.xml \
|
||||||
|
allow-ipv4.xml \
|
||||||
|
clean-traffic.xml \
|
||||||
|
no-arp-spoofing.xml \
|
||||||
|
no-arp-ip-spoofing.xml \
|
||||||
|
no-arp-mac-spoofing.xml \
|
||||||
|
no-ip-multicast.xml \
|
||||||
|
no-ip-spoofing.xml \
|
||||||
|
no-mac-broadcast.xml \
|
||||||
|
no-mac-spoofing.xml \
|
||||||
|
no-other-l2-traffic.xml \
|
||||||
|
no-other-rarp-traffic.xml \
|
||||||
|
qemu-announce-self.xml \
|
||||||
|
qemu-announce-self-rarp.xml
|
||||||
|
|
||||||
|
EXTRA_DIST=$(FILTERS)
|
||||||
|
|
||||||
|
confdir = $(sysconfdir)/libvirt
|
||||||
|
|
||||||
|
NWFILTER_DIR = "$(DESTDIR)$(sysconfdir)/libvirt/nwfilter"
|
||||||
|
|
||||||
|
if WITH_NWFILTER
|
||||||
|
install-data-local:
|
||||||
|
$(MKDIR_P) "$(NWFILTER_DIR)"
|
||||||
|
for f in $(FILTERS); do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$f "$(NWFILTER_DIR)"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-local::
|
||||||
|
for f in $(FILTERS); do \
|
||||||
|
rm -f "$(NWFILTER_DIR)/$$f"; \
|
||||||
|
done
|
||||||
|
-test -z $(shell ls $(NWFILTER_DIR)) || rmdir $(NWFILTER_DIR)
|
||||||
|
endif WITH_NWFILTER
|
@@ -5,7 +5,7 @@ index 209d64c..5ea72a1 100644
|
|||||||
@@ -1,4 +1,4 @@
|
@@ -1,4 +1,4 @@
|
||||||
-# ssize_t.m4 serial 5 (gettext-0.18.2)
|
-# ssize_t.m4 serial 5 (gettext-0.18.2)
|
||||||
+# ssize_t.m4 serial 6 (gettext-0.18.2)
|
+# ssize_t.m4 serial 6 (gettext-0.18.2)
|
||||||
dnl Copyright (C) 2001-2003, 2006, 2010-2016 Free Software Foundation, Inc.
|
dnl Copyright (C) 2001-2003, 2006, 2010-2015 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
|
@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user