mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-09-20 05:44:53 +03:00
Compare commits
9 Commits
v1.3.1
...
v1.2.14-ma
Author | SHA1 | Date | |
---|---|---|---|
|
ea59deeeea | ||
|
6410a22743 | ||
|
e7ebcd5c57 | ||
|
605b120683 | ||
|
454cb7c40d | ||
|
c814a546f2 | ||
|
ba2b5b7dbf | ||
|
75c77804b8 | ||
|
0f709dd420 |
18
.gitignore
vendored
18
.gitignore
vendored
@@ -18,7 +18,6 @@
|
||||
*.pyc
|
||||
*.rej
|
||||
*.s
|
||||
*.swp
|
||||
*~
|
||||
.#*
|
||||
.deps
|
||||
@@ -69,7 +68,6 @@
|
||||
/docs/apibuild.py.stamp
|
||||
/docs/devhelp/libvirt.devhelp
|
||||
/docs/hvsupport.html.in
|
||||
/docs/libvirt-admin-*.xml
|
||||
/docs/libvirt-api.xml
|
||||
/docs/libvirt-lxc-*.xml
|
||||
/docs/libvirt-qemu-*.xml
|
||||
@@ -83,11 +81,10 @@
|
||||
/examples/domtop/domtop
|
||||
/examples/hellolibvirt/hellolibvirt
|
||||
/examples/openauth/openauth
|
||||
/examples/rename/rename
|
||||
/gnulib/lib/*
|
||||
/gnulib/m4/*
|
||||
/gnulib/tests/*
|
||||
/include/libvirt/libvirt-common.h
|
||||
/include/libvirt/libvirt.h
|
||||
/libtool
|
||||
/libvirt-*.tar.gz
|
||||
/libvirt-[0-9]*
|
||||
@@ -113,8 +110,6 @@
|
||||
/src/access/viraccessapichecklxc.h
|
||||
/src/access/viraccessapicheckqemu.c
|
||||
/src/access/viraccessapicheckqemu.h
|
||||
/src/admin/admin_client.h
|
||||
/src/admin/admin_protocol.[ch]
|
||||
/src/esx/*.generated.*
|
||||
/src/hyperv/*.generated.*
|
||||
/src/libvirt*.def
|
||||
@@ -125,20 +120,15 @@
|
||||
/src/libvirt_access_lxc.xml
|
||||
/src/libvirt_access_qemu.syms
|
||||
/src/libvirt_access_qemu.xml
|
||||
/src/libvirt_admin.syms
|
||||
/src/libvirt_*.stp
|
||||
/src/libvirt_*helper
|
||||
/src/libvirt_*probes.h
|
||||
/src/libvirt_lxc
|
||||
/src/locking/libxl-lockd.conf
|
||||
/src/locking/libxl-sanlock.conf
|
||||
/src/locking/lock_daemon_dispatch_stubs.h
|
||||
/src/locking/lock_protocol.[ch]
|
||||
/src/locking/qemu-lockd.conf
|
||||
/src/locking/qemu-sanlock.conf
|
||||
/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_monitor_dispatch.h
|
||||
/src/lxc/lxc_monitor_protocol.c
|
||||
@@ -152,17 +142,12 @@
|
||||
/src/rpc/virnetprotocol.[ch]
|
||||
/src/test_libvirt*.aug
|
||||
/src/test_virtlockd.aug
|
||||
/src/test_virtlogd.aug
|
||||
/src/util/virkeymaps.h
|
||||
/src/virt-aa-helper
|
||||
/src/virtlockd
|
||||
/src/virtlockd.8
|
||||
/src/virtlockd.8.in
|
||||
/src/virtlockd.init
|
||||
/src/virtlogd
|
||||
/src/virtlogd.8
|
||||
/src/virtlogd.8.in
|
||||
/src/virtlogd.init
|
||||
/tests/*.log
|
||||
/tests/*.pid
|
||||
/tests/*.trs
|
||||
@@ -183,7 +168,6 @@
|
||||
/tools/virt-login-shell
|
||||
/tools/virsh
|
||||
/tools/virsh-*-edit.c
|
||||
/tools/virt-admin
|
||||
/tools/virt-*-validate
|
||||
/tools/virt-sanlock-cleanup
|
||||
/tools/wireshark/src/plugin.c
|
||||
|
2
.gnulib
2
.gnulib
Submodule .gnulib updated: 6cc32c63e8...106a3866d0
@@ -8,14 +8,12 @@ Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
|
||||
The primary maintainers and people with commit access rights:
|
||||
|
||||
Alex Jia <ajia@redhat.com>
|
||||
Andrea Bolognani <abologna@redhat.com>
|
||||
Cédric Bosdonnat <cbosdonnat@suse.com>
|
||||
Christophe Fergeau <cfergeau@redhat.com>
|
||||
Claudio Bley <claudio.bley@gmail.com>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
Daniel Berrange <berrange@redhat.com>
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
Dmitry Guryanov <dguryanov@parallels.com>
|
||||
Doug Goldstein <cardoe@gentoo.org>
|
||||
Eric Blake <eblake@redhat.com>
|
||||
Erik Skultety <eskultet@redhat.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
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
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
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
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,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
|
||||
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
|
||||
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.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
|
||||
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
|
||||
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.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
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
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
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.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
|
26
HACKING
26
HACKING
@@ -18,12 +18,7 @@ listen to feedback.
|
||||
and is browsable along with other libvirt-related repositories (e.g.
|
||||
libvirt-python) online <http://libvirt.org/git/>.
|
||||
|
||||
(3) Patches to translations are maintained via the zanata project
|
||||
<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
|
||||
(3) Post patches in unified diff format, with git rename detection enabled. You
|
||||
need a one-time setup of:
|
||||
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
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
|
||||
@@ -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.
|
||||
|
||||
(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
|
||||
automatically for a git checkout; from a tarball, use:
|
||||
|
||||
@@ -141,20 +136,13 @@ Also, individual tests can be run from inside the "tests/" directory, like:
|
||||
|
||||
./qemuxml2xmltest
|
||||
|
||||
If you are adding new test cases, or making changes that alter existing test
|
||||
output, you can use the environment variable VIR_TEST_REGENERATE_OUTPUT to
|
||||
quickly update the saved test data. Of course you still need to review the
|
||||
changes VERY CAREFULLY to ensure they are correct.
|
||||
|
||||
VIR_TEST_REGENERATE_OUTPUT=1 ./qemuxml2argvtest
|
||||
|
||||
There is also a "./run" script at the top level, to make it easier to run
|
||||
programs that have not yet been installed, as well as to wrap invocations of
|
||||
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
|
||||
determine the cause of the issue. Output such as the following indicates some
|
||||
sort of leak:
|
||||
@@ -230,7 +218,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.
|
||||
|
||||
|
||||
|
14
Makefile.am
14
Makefile.am
@@ -20,10 +20,18 @@ LCOV = lcov
|
||||
GENHTML = genhtml
|
||||
|
||||
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
|
||||
|
||||
XML_EXAMPLES = \
|
||||
$(patsubst $(srcdir)/%,%,$(wildcard $(addprefix $(srcdir)/examples/xml/, \
|
||||
test/*.xml storage/*.xml)))
|
||||
|
||||
EXTRA_DIST = \
|
||||
config-post.h \
|
||||
ChangeLog-old \
|
||||
@@ -32,13 +40,13 @@ EXTRA_DIST = \
|
||||
libvirt.pc.in \
|
||||
libvirt-qemu.pc.in \
|
||||
libvirt-lxc.pc.in \
|
||||
libvirt-admin.pc.in \
|
||||
autobuild.sh \
|
||||
Makefile.nonreentrant \
|
||||
autogen.sh \
|
||||
cfg.mk \
|
||||
run.in \
|
||||
AUTHORS.in
|
||||
AUTHORS.in \
|
||||
$(XML_EXAMPLES)
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
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.
|
||||
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@@ -196,7 +196,10 @@ local_gl_dir=gnulib/local
|
||||
# Build prerequisites
|
||||
# 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
|
||||
# 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="\
|
||||
autoconf 2.59
|
||||
automake 1.9.6
|
||||
@@ -209,11 +212,19 @@ patch -
|
||||
perl 5.5
|
||||
perl::XML::XPath -
|
||||
pkg-config -
|
||||
python-config -
|
||||
rpcgen -
|
||||
tar -
|
||||
xmllint -
|
||||
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.
|
||||
touch AUTHORS ChangeLog || exit 1
|
||||
|
71
cfg.mk
71
cfg.mk
@@ -1,5 +1,5 @@
|
||||
# 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.
|
||||
|
||||
# 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.
|
||||
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.
|
||||
useless_free_options = \
|
||||
@@ -304,7 +304,6 @@ sc_flags_usage:
|
||||
$(srcdir)/include/libvirt/virterror.h \
|
||||
$(srcdir)/include/libvirt/libvirt-qemu.h \
|
||||
$(srcdir)/include/libvirt/libvirt-lxc.h \
|
||||
$(srcdir)/include/libvirt/libvirt-admin.h \
|
||||
| grep -c '\(long\|unsigned\) flags')" != 4 && \
|
||||
{ echo '$(ME): new API should use "unsigned int flags"' 1>&2; \
|
||||
exit 1; } || :
|
||||
@@ -565,11 +564,6 @@ sc_avoid_attribute_unused_in_header:
|
||||
halt='use ATTRIBUTE_UNUSED in .c rather than .h files' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_int_index:
|
||||
@prohibit='\<(int|unsigned)\s*\*?index\>(\s|,|;)' \
|
||||
halt='use different name than 'index' for declaration' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_int_ijk:
|
||||
@prohibit='\<(int|unsigned) ([^(=]* )*(i|j|k)\>(\s|,|;)' \
|
||||
halt='use size_t, not int/unsigned int for loop vars i, j, k' \
|
||||
@@ -775,7 +769,7 @@ sc_prohibit_gettext_markup:
|
||||
# lower-level code must not include higher-level headers.
|
||||
cross_dirs=$(patsubst $(srcdir)/src/%.,%,$(wildcard $(srcdir)/src/*/.))
|
||||
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:
|
||||
@for dir in $(cross_dirs); do \
|
||||
case $$dir in \
|
||||
@@ -919,15 +913,6 @@ sc_require_space_before_label:
|
||||
halt="Top-level labels should be indented by one space" \
|
||||
$(_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
|
||||
sc_require_if_else_matching_braces:
|
||||
@prohibit='( else( if .*\))? {|} else( if .*\))?$$)' \
|
||||
@@ -1020,16 +1005,6 @@ sc_prohibit_pthread_create:
|
||||
halt="avoid using 'pthread_create', use 'virThreadCreate' instead" \
|
||||
$(_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)
|
||||
|
||||
# We don't use this feature of maint.mk.
|
||||
prev_version_file = /dev/null
|
||||
|
||||
@@ -1077,7 +1052,7 @@ _autogen:
|
||||
|
||||
# regenerate HACKING as part of the syntax-check
|
||||
ifneq ($(_gl-Makefile),)
|
||||
syntax-check: $(top_srcdir)/HACKING bracket-spacing-check test-wrap-argv
|
||||
syntax-check: $(top_srcdir)/HACKING bracket-spacing-check
|
||||
endif
|
||||
|
||||
bracket-spacing-check:
|
||||
@@ -1086,42 +1061,22 @@ bracket-spacing-check:
|
||||
{ echo '$(ME): incorrect formatting, see HACKING for rules' 1>&2; \
|
||||
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: \
|
||||
$(srcdir)/daemon/remote_dispatch.h \
|
||||
$(srcdir)/daemon/qemu_dispatch.h \
|
||||
$(srcdir)/src/remote/remote_client_bodies.h \
|
||||
$(srcdir)/daemon/admin_dispatch.h \
|
||||
$(srcdir)/src/admin/admin_client.h
|
||||
$(srcdir)/src/remote/remote_client_bodies.h
|
||||
$(srcdir)/daemon/remote_dispatch.h: $(srcdir)/src/remote/remote_protocol.x
|
||||
$(MAKE) -C daemon remote_dispatch.h
|
||||
$(srcdir)/daemon/qemu_dispatch.h: $(srcdir)/src/remote/qemu_protocol.x
|
||||
$(MAKE) -C daemon qemu_dispatch.h
|
||||
$(srcdir)/src/remote/remote_client_bodies.h: $(srcdir)/src/remote/remote_protocol.x
|
||||
$(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:
|
||||
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
|
||||
exclude_file_name_regexp--sc_avoid_write = \
|
||||
^(src/($(_src1))|daemon/libvirtd|tools/virsh-console|tests/($(_test1)))\.c$$
|
||||
@@ -1156,7 +1111,7 @@ exclude_file_name_regexp--sc_prohibit_close = \
|
||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||
(^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 = \
|
||||
(^($(_src2)|tests/testutils|daemon/libvirtd)\.c$$)
|
||||
|
||||
@@ -1215,7 +1170,7 @@ exclude_file_name_regexp--sc_prohibit_include_public_headers_quote = \
|
||||
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.h$$)
|
||||
|
||||
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 = \
|
||||
^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/)$
|
||||
@@ -1224,7 +1179,7 @@ exclude_file_name_regexp--sc_prohibit_getenv = \
|
||||
^tests/.*\.[ch]$$
|
||||
|
||||
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 = \
|
||||
^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
|
||||
@@ -1246,9 +1201,3 @@ exclude_file_name_regexp--sc_prohibit_sysconf_pagesize = \
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_pthread_create = \
|
||||
^(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]$$
|
||||
|
153
configure.ac
153
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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
AC_INIT([libvirt], [1.3.1], [libvir-list@redhat.com], [], [http://libvirt.org])
|
||||
AC_INIT([libvirt], [1.2.14], [libvir-list@redhat.com], [], [http://libvirt.org])
|
||||
AC_CONFIG_SRCDIR([src/libvirt.c])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
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 quiet about the fact that we intentionally cater to automake 1.9
|
||||
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
|
||||
# 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
|
||||
LIBPCAP_REQUIRED="1.0.0"
|
||||
LIBNL_REQUIRED="1.1"
|
||||
PARALLELS_SDK_REQUIRED="7.0.22"
|
||||
|
||||
dnl Checks for C compiler.
|
||||
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 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
|
||||
*-*-linux*) with_linux=yes ;;
|
||||
*-*-darwin*) with_osx=yes ;;
|
||||
*-*-freebsd*) with_freebsd=yes ;;
|
||||
*-*-mingw* | *-*-msvc* ) with_win=yes ;;
|
||||
*-*-cygwin*) with_cygwin=yes ;;
|
||||
esac
|
||||
|
||||
if test $with_linux = no; then
|
||||
@@ -193,12 +187,9 @@ if test $with_linux = no; then
|
||||
fi
|
||||
|
||||
if test $with_freebsd = yes; then
|
||||
want_ifconfig=yes
|
||||
with_firewalld=no
|
||||
fi
|
||||
want_ifconfig=yes
|
||||
|
||||
if test $with_cygwin = yes; then
|
||||
with_vbox=no
|
||||
with_firewalld=no
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([WITH_LINUX], [test "$with_linux" = "yes"])
|
||||
@@ -283,7 +274,7 @@ AC_CHECK_SIZEOF([long])
|
||||
dnl Availability of various common functions (non-fatal if missing),
|
||||
dnl and various less common threadsafe functions
|
||||
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 \
|
||||
setrlimit symlink sysctlbyname getifaddrs sched_setscheduler])
|
||||
|
||||
@@ -393,14 +384,8 @@ AC_CHECK_TYPE([struct ifreq],
|
||||
#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,
|
||||
ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS, ETHTOOL_GFEATURES],
|
||||
ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS],
|
||||
[], [], [[#include <linux/ethtool.h>
|
||||
]])
|
||||
|
||||
@@ -412,7 +397,7 @@ AM_CONDITIONAL([HAVE_LIBTASN1], [test "x$ac_cv_header_libtasn1_h" = "xyes"])
|
||||
AC_CHECK_LIB([intl],[gettext],[])
|
||||
|
||||
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"])
|
||||
dnl Is this GLIBC's buggy rpcgen?
|
||||
AM_CONDITIONAL([HAVE_GLIBC_RPCGEN],
|
||||
@@ -573,6 +558,10 @@ AC_ARG_WITH([hyperv],
|
||||
[AS_HELP_STRING([--with-hyperv],
|
||||
[add Hyper-V support @<:@default=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],
|
||||
[AS_HELP_STRING([--with-test],
|
||||
[add test driver support @<:@default=yes@:>@])])
|
||||
@@ -832,6 +821,7 @@ if test "$with_libvirtd" = "yes" ; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
|
||||
|
||||
|
||||
old_LIBS="$LIBS"
|
||||
old_CFLAGS="$CFLAGS"
|
||||
LIBXENSERVER_LIBS=""
|
||||
@@ -893,6 +883,7 @@ if test "$with_libxl" != "no" ; then
|
||||
PKG_CHECK_MODULES([LIBXL], [xenlight], [
|
||||
LIBXL_FIRMWARE_DIR=`$PKG_CONFIG --variable xenfirmwaredir xenlight`
|
||||
LIBXL_EXECBIN_DIR=`$PKG_CONFIG --variable libexec_bin xenlight`
|
||||
LIBXL_LIBS="$LIBXL_LIBS -lxenctrl"
|
||||
with_libxl=yes
|
||||
], [LIBXL_FOUND=no])
|
||||
if test "$LIBXL_FOUND" = "no"; then
|
||||
@@ -905,7 +896,7 @@ if test "$with_libxl" != "no" ; then
|
||||
LIBS="$LIBS $LIBXL_LIBS"
|
||||
AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [
|
||||
with_libxl=yes
|
||||
LIBXL_LIBS="$LIBXL_LIBS -lxenlight"
|
||||
LIBXL_LIBS="$LIBXL_LIBS -lxenlight -lxenctrl"
|
||||
],[
|
||||
if test "$with_libxl" = "yes"; then
|
||||
fail=1
|
||||
@@ -933,14 +924,6 @@ if test "$with_libxl" = "yes"; then
|
||||
if test "x$LIBXL_EXECBIN_DIR" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([LIBXL_EXECBIN_DIR], ["$LIBXL_EXECBIN_DIR"], [directory containing Xen libexec binaries])
|
||||
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
|
||||
AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"])
|
||||
|
||||
@@ -1091,19 +1074,27 @@ if test "$with_lxc" = "yes" ; then
|
||||
fi
|
||||
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 Checks for the Parallels driver
|
||||
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 Checks for bhyve driver
|
||||
@@ -1364,28 +1355,24 @@ AC_ARG_WITH([polkit],
|
||||
with_polkit0=no
|
||||
with_polkit1=no
|
||||
if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then
|
||||
dnl Check for new polkit first. We directly talk over DBus
|
||||
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
|
||||
dnl Check for new polkit first - just a binary
|
||||
AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
|
||||
if test "x$PKCHECK_PATH" != "x" ; then
|
||||
dnl Found pkcheck, so ensure dbus-devel is present
|
||||
if test "x$with_dbus" = "xyes" ; then
|
||||
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"
|
||||
AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program])
|
||||
AC_MSG_CHECKING([whether pkcheck supports uid value])
|
||||
pkcheck_supports_uid=`$PKG_CONFIG --variable pkcheck_supports_uid polkit-gobject-1`
|
||||
if test "x$pkcheck_supports_uid" = "xtrue"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE_UNQUOTED([PKCHECK_SUPPORTS_UID], 1, [Pass uid to pkcheck])
|
||||
else
|
||||
if test "x$with_polkit" = "xcheck" ; then
|
||||
with_polkit=no
|
||||
else
|
||||
AC_MSG_ERROR(
|
||||
[You must install dbus to compile libvirt with polkit-1])
|
||||
fi
|
||||
AC_MSG_RESULT([no])
|
||||
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
|
||||
dnl Check for old polkit second - library + binary
|
||||
PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||
@@ -1695,6 +1682,10 @@ if test "$with_pm_utils" = "yes"; then
|
||||
fi
|
||||
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
|
||||
|
||||
AC_ARG_WITH([network],
|
||||
@@ -1974,14 +1965,14 @@ AC_SUBST([LIBRBD_LIBS])
|
||||
|
||||
if test "$with_storage_sheepdog" = "yes" ||
|
||||
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 -z "$SHEEPDOGCLI"; then
|
||||
AC_MSG_ERROR([We need sheepdog client for Sheepdog storage driver])
|
||||
if test -z "$COLLIE"; then
|
||||
AC_MSG_ERROR([We need collie for Sheepdog storage driver])
|
||||
fi
|
||||
else
|
||||
if test -z "$SHEEPDOGCLI"; then
|
||||
if test -z "$COLLIE"; then
|
||||
with_storage_sheepdog=no
|
||||
fi
|
||||
|
||||
@@ -1993,7 +1984,7 @@ if test "$with_storage_sheepdog" = "yes" ||
|
||||
if test "$with_storage_sheepdog" = "yes"; then
|
||||
AC_DEFINE_UNQUOTED([WITH_STORAGE_SHEEPDOG], 1,
|
||||
[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
|
||||
AM_CONDITIONAL([WITH_STORAGE_SHEEPDOG],
|
||||
@@ -2367,7 +2358,6 @@ WIN32_EXTRA_CFLAGS=
|
||||
dnl libvirt.syms is generated in builddir, but libvirt_qemu.syms is in git;
|
||||
dnl hence the asymmetric naming of these two symbol files.
|
||||
LIBVIRT_SYMBOL_FILE=libvirt.syms
|
||||
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.syms
|
||||
LIBVIRT_LXC_SYMBOL_FILE='$(srcdir)/libvirt_lxc.syms'
|
||||
LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.syms'
|
||||
MSCOM_LIBS=
|
||||
@@ -2398,7 +2388,6 @@ case "$host" in
|
||||
# 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
|
||||
LIBVIRT_SYMBOL_FILE=libvirt.def
|
||||
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.def
|
||||
LIBVIRT_LXC_SYMBOL_FILE=libvirt_lxc.def
|
||||
LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def
|
||||
# mingw's ld has the --version-script parameter, but it requires a .def file
|
||||
@@ -2414,7 +2403,6 @@ AC_SUBST([CYGWIN_EXTRA_LIBADD])
|
||||
AC_SUBST([MINGW_EXTRA_LDFLAGS])
|
||||
AC_SUBST([WIN32_EXTRA_CFLAGS])
|
||||
AC_SUBST([LIBVIRT_SYMBOL_FILE])
|
||||
AC_SUBST([LIBVIRT_ADMIN_SYMBOL_FILE])
|
||||
AC_SUBST([LIBVIRT_LXC_SYMBOL_FILE])
|
||||
AC_SUBST([LIBVIRT_QEMU_SYMBOL_FILE])
|
||||
AC_SUBST([VERSION_SCRIPT_FLAGS])
|
||||
@@ -2544,9 +2532,6 @@ AC_ARG_WITH([qemu-group],
|
||||
AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user 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],
|
||||
[AS_HELP_STRING([--with-macvtap],
|
||||
@@ -2791,7 +2776,7 @@ AC_ARG_WITH([loader-nvram],
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([DEFAULT_LOADER_NVRAM],
|
||||
["$withval"],
|
||||
[List of loader:nvram pairs])])
|
||||
[List of laoder:nvram pairs])])
|
||||
|
||||
# Some GNULIB base64 symbols clash with a kerberos library
|
||||
AC_DEFINE_UNQUOTED([isbase64],[libvirt_gl_isbase64],[Hack to avoid symbol clash])
|
||||
@@ -2802,22 +2787,34 @@ AC_CONFIG_FILES([run],
|
||||
[chmod +x,-w run])
|
||||
AC_CONFIG_FILES([\
|
||||
Makefile src/Makefile include/Makefile docs/Makefile \
|
||||
docs/schemas/Makefile \
|
||||
gnulib/lib/Makefile \
|
||||
gnulib/tests/Makefile \
|
||||
libvirt.pc \
|
||||
libvirt-qemu.pc \
|
||||
libvirt-lxc.pc \
|
||||
libvirt-admin.pc \
|
||||
src/libvirt.pc \
|
||||
src/libvirt-qemu.pc \
|
||||
src/libvirt-lxc.pc \
|
||||
libvirt.spec mingw-libvirt.spec \
|
||||
po/Makefile.in \
|
||||
include/libvirt/libvirt-common.h \
|
||||
include/libvirt/Makefile include/libvirt/libvirt.h \
|
||||
daemon/Makefile \
|
||||
examples/Makefile \
|
||||
tools/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_MSG_NOTICE([])
|
||||
@@ -2838,7 +2835,7 @@ AC_MSG_NOTICE([ LXC: $with_lxc])
|
||||
AC_MSG_NOTICE([ PHYP: $with_phyp])
|
||||
AC_MSG_NOTICE([ ESX: $with_esx])
|
||||
AC_MSG_NOTICE([ Hyper-V: $with_hyperv])
|
||||
LIBVIRT_DRIVER_RESULT_VZ
|
||||
AC_MSG_NOTICE([Parallels: $with_parallels])
|
||||
LIBVIRT_DRIVER_RESULT_BHYVE
|
||||
AC_MSG_NOTICE([ Test: $with_test])
|
||||
AC_MSG_NOTICE([ Remote: $with_remote])
|
||||
@@ -2969,8 +2966,8 @@ AC_MSG_NOTICE([pm-utils: $with_pm_utils])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Test suite])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ Coverage: $enable_coverage])
|
||||
AC_MSG_NOTICE([ Alloc OOM: $enable_oom])
|
||||
AC_MSG_NOTICE([ Coverage: $enable_coverage])
|
||||
AC_MSG_NOTICE([ Alloc OOM: $enable_oom])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Miscellaneous])
|
||||
AC_MSG_NOTICE([])
|
||||
@@ -2983,8 +2980,6 @@ AC_MSG_NOTICE([ XML Catalog: $XML_CATALOG_FILE])
|
||||
AC_MSG_NOTICE([ Init script: $with_init_script])
|
||||
AC_MSG_NOTICE([Char device locks: $with_chrdev_lock_files])
|
||||
AC_MSG_NOTICE([ Default Editor: $DEFAULT_EDITOR])
|
||||
AC_MSG_NOTICE([ Loader/NVRAM: $with_loader_nvram])
|
||||
AC_MSG_NOTICE([ virt-login-shell: $with_login_shell])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Developer Tools])
|
||||
AC_MSG_NOTICE([])
|
||||
|
@@ -1,6 +1,6 @@
|
||||
## 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
|
||||
## 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/rpc \
|
||||
-I$(top_srcdir)/src/remote \
|
||||
-I$(top_srcdir)/src/admin \
|
||||
-I$(top_srcdir)/src/access \
|
||||
$(GETTEXT_CPPFLAGS)
|
||||
|
||||
@@ -35,7 +34,6 @@ DAEMON_GENERATED = \
|
||||
remote_dispatch.h \
|
||||
lxc_dispatch.h \
|
||||
qemu_dispatch.h \
|
||||
admin_dispatch.h \
|
||||
$(NULL)
|
||||
|
||||
DAEMON_SOURCES = \
|
||||
@@ -51,12 +49,10 @@ EXTRA_DIST = \
|
||||
remote_dispatch.h \
|
||||
lxc_dispatch.h \
|
||||
qemu_dispatch.h \
|
||||
admin_dispatch.h \
|
||||
libvirtd.conf \
|
||||
libvirtd.init.in \
|
||||
libvirtd.upstart \
|
||||
libvirtd.policy.in \
|
||||
libvirt.rules \
|
||||
libvirtd.sasl \
|
||||
libvirtd.service.in \
|
||||
libvirtd.socket.in \
|
||||
@@ -66,7 +62,6 @@ EXTRA_DIST = \
|
||||
libvirtd.logrotate.in \
|
||||
libvirtd.qemu.logrotate.in \
|
||||
libvirtd.lxc.logrotate.in \
|
||||
libvirtd.libxl.logrotate.in \
|
||||
libvirtd.uml.logrotate.in \
|
||||
test_libvirtd.aug.in \
|
||||
THREADS.txt \
|
||||
@@ -81,32 +76,25 @@ BUILT_SOURCES =
|
||||
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
||||
LXC_PROTOCOL = $(top_srcdir)/src/remote/lxc_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: $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
$(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||
$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
--mode=server remote REMOTE $(REMOTE_PROTOCOL) \
|
||||
> $(srcdir)/remote_dispatch.h
|
||||
|
||||
lxc_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||
lxc_dispatch.h: $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
$(LXC_PROTOCOL)
|
||||
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||
$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
--mode=server lxc LXC $(LXC_PROTOCOL) \
|
||||
> $(srcdir)/lxc_dispatch.h
|
||||
|
||||
qemu_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||
qemu_dispatch.h: $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
$(QEMU_PROTOCOL)
|
||||
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||
$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl \
|
||||
--mode=server qemu QEMU $(QEMU_PROTOCOL) \
|
||||
> $(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
|
||||
|
||||
# Build a convenience library, for reuse in tests/libvirtdconftest
|
||||
@@ -126,27 +114,6 @@ libvirtd_conf_la_LDFLAGS = \
|
||||
$(NULL)
|
||||
libvirtd_conf_la_LIBADD = $(LIBXML_LIBS)
|
||||
|
||||
noinst_LTLIBRARIES += libvirtd_admin.la
|
||||
libvirtd_admin_la_SOURCES = \
|
||||
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
|
||||
|
||||
sbin_PROGRAMS = libvirtd
|
||||
@@ -199,7 +166,6 @@ endif WITH_DTRACE_PROBES
|
||||
|
||||
libvirtd_LDADD += \
|
||||
libvirtd_conf.la \
|
||||
libvirtd_admin.la \
|
||||
../src/libvirt-lxc.la \
|
||||
../src/libvirt-qemu.la \
|
||||
../src/libvirt_driver_remote.la \
|
||||
@@ -267,8 +233,6 @@ policyauth = auth_admin_keep_session
|
||||
else ! WITH_POLKIT0
|
||||
policydir = $(datadir)/polkit-1/actions
|
||||
policyauth = auth_admin_keep
|
||||
rulesdir = $(datadir)/polkit-1/rules.d
|
||||
rulesfile = libvirt.rules
|
||||
endif ! WITH_POLKIT0
|
||||
endif WITH_POLKIT
|
||||
|
||||
@@ -299,19 +263,9 @@ if WITH_POLKIT
|
||||
install-data-polkit::
|
||||
$(MKDIR_P) $(DESTDIR)$(policydir)
|
||||
$(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::
|
||||
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||
rmdir $(DESTDIR)$(policydir) || :
|
||||
if ! WITH_POLKIT0
|
||||
rm -f $(DESTDIR)$(rulesdir)/50-libvirt.rules
|
||||
rmdir $(DESTDIR)$(rulesdir) || :
|
||||
endif ! WITH_POLKIT0
|
||||
|
||||
else ! WITH_POLKIT
|
||||
install-data-polkit::
|
||||
uninstall-data-polkit::
|
||||
@@ -319,11 +273,9 @@ endif ! WITH_POLKIT
|
||||
|
||||
remote.c: $(DAEMON_GENERATED)
|
||||
remote.h: $(DAEMON_GENERATED)
|
||||
admin_server.c: $(DAEMON_GENERATED)
|
||||
|
||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||
libvirtd.libxl.logrotate libvirtd.uml.logrotate \
|
||||
libvirtd.logrotate
|
||||
libvirtd.uml.logrotate libvirtd.logrotate
|
||||
|
||||
BUILT_SOURCES += $(LOGROTATE_CONFS)
|
||||
|
||||
@@ -345,12 +297,6 @@ libvirtd.lxc.logrotate: libvirtd.lxc.logrotate.in
|
||||
< $< > $@-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
|
||||
$(AM_V_GEN)sed \
|
||||
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||
@@ -368,8 +314,6 @@ install-logrotate: $(LOGROTATE_CONFS)
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu
|
||||
$(INSTALL_DATA) libvirtd.lxc.logrotate \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
|
||||
$(INSTALL_DATA) libvirtd.libxl.logrotate \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl
|
||||
$(INSTALL_DATA) libvirtd.uml.logrotate \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||
|
||||
@@ -377,7 +321,6 @@ uninstall-logrotate:
|
||||
rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl \
|
||||
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/qemu || :
|
||||
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/lxc || :
|
||||
@@ -398,10 +341,10 @@ if WITH_SYSCTL
|
||||
install-sysctl:
|
||||
$(MKDIR_P) $(DESTDIR)$(prefix)/lib/sysctl.d
|
||||
$(INSTALL_DATA) $(srcdir)/libvirtd.sysctl \
|
||||
$(DESTDIR)$(prefix)/lib/sysctl.d/60-libvirtd.conf
|
||||
$(DESTDIR)$(prefix)/lib/sysctl.d/libvirtd.conf
|
||||
|
||||
uninstall-sysctl:
|
||||
rm -f $(DESTDIR)$(prefix)/lib/sysctl.d/60-libvirtd.conf
|
||||
rm -f $(DESTDIR)$(prefix)/lib/sysctl.d/libvirtd.conf
|
||||
rmdir $(DESTDIR)$(prefix)/lib/sysctl.d || :
|
||||
else ! WITH_SYSCTL
|
||||
install-sysctl:
|
||||
|
@@ -1,126 +0,0 @@
|
||||
/*
|
||||
* admin_server.c:
|
||||
*
|
||||
* Copyright (C) 2014-2015 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_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;
|
||||
}
|
||||
|
||||
/* 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_server.h
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* 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,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
|
||||
*
|
||||
* Copyright (C) 2006-2012, 2014, 2015 Red Hat, Inc.
|
||||
* Copyright (C) 2006-2012, 2014 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* 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,
|
||||
data->auth_unix_rw == REMOTE_AUTH_POLKIT ? "0777" : "0700") < 0 ||
|
||||
VIR_STRDUP(data->unix_sock_ro_perms, "0777") < 0 ||
|
||||
VIR_STRDUP(data->unix_sock_admin_perms, "0700") < 0)
|
||||
VIR_STRDUP(data->unix_sock_ro_perms, "0777") < 0)
|
||||
goto error;
|
||||
|
||||
#if WITH_SASL
|
||||
@@ -292,15 +291,7 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
|
||||
|
||||
data->keepalive_interval = 5;
|
||||
data->keepalive_count = 5;
|
||||
|
||||
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;
|
||||
data->keepalive_required = 0;
|
||||
|
||||
localhost = virGetHostname();
|
||||
if (localhost == NULL) {
|
||||
@@ -346,7 +337,6 @@ daemonConfigFree(struct daemonConfig *data)
|
||||
}
|
||||
VIR_FREE(data->access_drivers);
|
||||
|
||||
VIR_FREE(data->unix_sock_admin_perms);
|
||||
VIR_FREE(data->unix_sock_ro_perms);
|
||||
VIR_FREE(data->unix_sock_rw_perms);
|
||||
VIR_FREE(data->unix_sock_group);
|
||||
@@ -414,7 +404,6 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
||||
goto error;
|
||||
|
||||
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_rw_perms);
|
||||
|
||||
@@ -452,12 +441,6 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
||||
GET_CONF_INT(conf, filename, max_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_logging);
|
||||
|
||||
@@ -469,9 +452,7 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
||||
|
||||
GET_CONF_INT(conf, filename, keepalive_interval);
|
||||
GET_CONF_UINT(conf, filename, keepalive_count);
|
||||
|
||||
GET_CONF_INT(conf, filename, admin_keepalive_interval);
|
||||
GET_CONF_UINT(conf, filename, admin_keepalive_count);
|
||||
GET_CONF_UINT(conf, filename, keepalive_required);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@@ -35,7 +35,6 @@ struct daemonConfig {
|
||||
char *tls_port;
|
||||
char *tcp_port;
|
||||
|
||||
char *unix_sock_admin_perms;
|
||||
char *unix_sock_ro_perms;
|
||||
char *unix_sock_rw_perms;
|
||||
char *unix_sock_group;
|
||||
@@ -81,15 +80,7 @@ struct daemonConfig {
|
||||
|
||||
int keepalive_interval;
|
||||
unsigned int keepalive_count;
|
||||
|
||||
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;
|
||||
int keepalive_required;
|
||||
};
|
||||
|
||||
|
||||
|
@@ -35,7 +35,6 @@ module Libvirtd =
|
||||
let sock_acl_entry = str_entry "unix_sock_group"
|
||||
| str_entry "unix_sock_ro_perms"
|
||||
| str_entry "unix_sock_rw_perms"
|
||||
| str_entry "unix_sock_admin_perms"
|
||||
| str_entry "unix_sock_dir"
|
||||
|
||||
let authentication_entry = str_entry "auth_unix_ro"
|
||||
@@ -63,12 +62,6 @@ module Libvirtd =
|
||||
| int_entry "max_client_requests"
|
||||
| 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"
|
||||
| str_entry "log_filters"
|
||||
| str_entry "log_outputs"
|
||||
@@ -81,10 +74,6 @@ module Libvirtd =
|
||||
| int_entry "keepalive_count"
|
||||
| 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"
|
||||
|
||||
(* Each enty in the config is one of the following three ... *)
|
||||
@@ -94,11 +83,9 @@ module Libvirtd =
|
||||
| certificate_entry
|
||||
| authorization_entry
|
||||
| processing_entry
|
||||
| admin_processing_entry
|
||||
| logging_entry
|
||||
| auditing_entry
|
||||
| keepalive_entry
|
||||
| admin_keepalive_entry
|
||||
| misc_entry
|
||||
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||
let empty = [ label "#empty" . eol ]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@@ -44,13 +44,12 @@
|
||||
#include "libvirtd.h"
|
||||
#include "libvirtd-config.h"
|
||||
|
||||
#include "admin_server.h"
|
||||
#include "viruuid.h"
|
||||
#include "remote_driver.h"
|
||||
#include "viralloc.h"
|
||||
#include "virconf.h"
|
||||
#include "virnetlink.h"
|
||||
#include "virnetdaemon.h"
|
||||
#include "virnetserver.h"
|
||||
#include "remote.h"
|
||||
#include "virhook.h"
|
||||
#include "viraudit.h"
|
||||
@@ -106,6 +105,7 @@
|
||||
#include "configmake.h"
|
||||
|
||||
#include "virdbus.h"
|
||||
#include "cpu/cpu_map.h"
|
||||
|
||||
VIR_LOG_INIT("daemon.libvirtd");
|
||||
|
||||
@@ -113,7 +113,6 @@ VIR_LOG_INIT("daemon.libvirtd");
|
||||
virNetSASLContextPtr saslCtxt = NULL;
|
||||
#endif
|
||||
virNetServerProgramPtr remoteProgram = NULL;
|
||||
virNetServerProgramPtr adminProgram = NULL;
|
||||
virNetServerProgramPtr qemuProgram = NULL;
|
||||
virNetServerProgramPtr lxcProgram = NULL;
|
||||
|
||||
@@ -255,24 +254,18 @@ static int
|
||||
daemonUnixSocketPaths(struct daemonConfig *config,
|
||||
bool privileged,
|
||||
char **sockfile,
|
||||
char **rosockfile,
|
||||
char **admsockfile)
|
||||
char **rosockfile)
|
||||
{
|
||||
if (config->unix_sock_dir) {
|
||||
if (virAsprintf(sockfile, "%s/libvirt-sock", config->unix_sock_dir) < 0)
|
||||
goto error;
|
||||
|
||||
if (privileged) {
|
||||
if (virAsprintf(rosockfile, "%s/libvirt-sock-ro", config->unix_sock_dir) < 0)
|
||||
goto error;
|
||||
if (virAsprintf(admsockfile, "%s/libvirt-admin-sock", config->unix_sock_dir) < 0)
|
||||
goto error;
|
||||
}
|
||||
if (privileged &&
|
||||
virAsprintf(rosockfile, "%s/libvirt-sock-ro", config->unix_sock_dir) < 0)
|
||||
goto error;
|
||||
} else {
|
||||
if (privileged) {
|
||||
if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock") < 0 ||
|
||||
VIR_STRDUP(*rosockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro") < 0 ||
|
||||
VIR_STRDUP(*admsockfile, LOCALSTATEDIR "/run/libvirt/libvirt-admin-sock") < 0)
|
||||
VIR_STRDUP(*rosockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro") < 0)
|
||||
goto error;
|
||||
} else {
|
||||
char *rundir = NULL;
|
||||
@@ -288,8 +281,7 @@ daemonUnixSocketPaths(struct daemonConfig *config,
|
||||
}
|
||||
umask(old_umask);
|
||||
|
||||
if (virAsprintf(sockfile, "%s/libvirt-sock", rundir) < 0 ||
|
||||
virAsprintf(admsockfile, "%s/libvirt-admin-sock", rundir) < 0) {
|
||||
if (virAsprintf(sockfile, "%s/libvirt-sock", rundir) < 0) {
|
||||
VIR_FREE(rundir);
|
||||
goto error;
|
||||
}
|
||||
@@ -329,7 +321,6 @@ static int daemonErrorLogFilter(virErrorPtr err, int priority)
|
||||
case VIR_ERR_NO_SECRET:
|
||||
case VIR_ERR_NO_DOMAIN_SNAPSHOT:
|
||||
case VIR_ERR_OPERATION_INVALID:
|
||||
case VIR_ERR_NO_DOMAIN_METADATA:
|
||||
return VIR_LOG_DEBUG;
|
||||
}
|
||||
|
||||
@@ -436,16 +427,13 @@ static void daemonInitialize(void)
|
||||
|
||||
static int ATTRIBUTE_NONNULL(3)
|
||||
daemonSetupNetworking(virNetServerPtr srv,
|
||||
virNetServerPtr srvAdm,
|
||||
struct daemonConfig *config,
|
||||
const char *sock_path,
|
||||
const char *sock_path_ro,
|
||||
const char *sock_path_adm,
|
||||
bool ipsock,
|
||||
bool privileged)
|
||||
{
|
||||
virNetServerServicePtr svc = NULL;
|
||||
virNetServerServicePtr svcAdm = NULL;
|
||||
virNetServerServicePtr svcRO = NULL;
|
||||
virNetServerServicePtr svcTCP = NULL;
|
||||
#if WITH_GNUTLS
|
||||
@@ -454,35 +442,28 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
gid_t unix_sock_gid = 0;
|
||||
int unix_sock_ro_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 nfds = virGetListenFDs();
|
||||
|
||||
if (config->unix_sock_group) {
|
||||
if (virGetGroupID(config->unix_sock_group, &unix_sock_gid) < 0)
|
||||
return ret;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (nfds > (sock_path_ro ? 2 : 1)) {
|
||||
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) {
|
||||
VIR_ERROR(_("Failed to parse mode '%s'"), config->unix_sock_ro_perms);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
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;
|
||||
goto error;
|
||||
}
|
||||
|
||||
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);
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!(svc = virNetServerServiceNewFDOrUNIX(sock_path,
|
||||
@@ -496,7 +477,7 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
config->max_queued_clients,
|
||||
config->max_client_requests,
|
||||
nfds, &cur_fd)))
|
||||
goto cleanup;
|
||||
goto error;
|
||||
if (sock_path_ro) {
|
||||
if (!(svcRO = virNetServerServiceNewFDOrUNIX(sock_path_ro,
|
||||
unix_sock_ro_mask,
|
||||
@@ -509,37 +490,18 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
config->max_queued_clients,
|
||||
config->max_client_requests,
|
||||
nfds, &cur_fd)))
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (virNetServerAddService(srv, svc,
|
||||
config->mdns_adv && !ipsock ?
|
||||
"_libvirt._tcp" :
|
||||
NULL) < 0)
|
||||
goto cleanup;
|
||||
goto error;
|
||||
|
||||
if (svcRO &&
|
||||
virNetServerAddService(srv, svcRO, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
goto error;
|
||||
|
||||
if (ipsock) {
|
||||
if (config->listen_tcp) {
|
||||
@@ -547,7 +509,6 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
config->listen_addr, config->tcp_port);
|
||||
if (!(svcTCP = virNetServerServiceNewTCP(config->listen_addr,
|
||||
config->tcp_port,
|
||||
AF_UNSPEC,
|
||||
config->auth_tcp,
|
||||
#if WITH_GNUTLS
|
||||
NULL,
|
||||
@@ -555,11 +516,11 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
false,
|
||||
config->max_queued_clients,
|
||||
config->max_client_requests)))
|
||||
goto cleanup;
|
||||
goto error;
|
||||
|
||||
if (virNetServerAddService(srv, svcTCP,
|
||||
config->mdns_adv ? "_libvirt._tcp" : NULL) < 0)
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
|
||||
#if WITH_GNUTLS
|
||||
@@ -576,14 +537,14 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
(const char *const*)config->tls_allowed_dn_list,
|
||||
config->tls_no_sanity_certificate ? false : true,
|
||||
config->tls_no_verify_certificate ? false : true)))
|
||||
goto cleanup;
|
||||
goto error;
|
||||
} else {
|
||||
if (!(ctxt = virNetTLSContextNewServerPath(NULL,
|
||||
!privileged,
|
||||
(const char *const*)config->tls_allowed_dn_list,
|
||||
config->tls_no_sanity_certificate ? false : true,
|
||||
config->tls_no_verify_certificate ? false : true)))
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
|
||||
VIR_DEBUG("Registering TLS socket %s:%s",
|
||||
@@ -591,19 +552,18 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
if (!(svcTLS =
|
||||
virNetServerServiceNewTCP(config->listen_addr,
|
||||
config->tls_port,
|
||||
AF_UNSPEC,
|
||||
config->auth_tls,
|
||||
ctxt,
|
||||
false,
|
||||
config->max_queued_clients,
|
||||
config->max_client_requests))) {
|
||||
virObjectUnref(ctxt);
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
if (virNetServerAddService(srv, svcTLS,
|
||||
config->mdns_adv &&
|
||||
!config->listen_tcp ? "_libvirt._tcp" : NULL) < 0)
|
||||
goto cleanup;
|
||||
goto error;
|
||||
|
||||
virObjectUnref(ctxt);
|
||||
}
|
||||
@@ -612,7 +572,7 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
if (config->listen_tls) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("This libvirtd build does not support TLS"));
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -627,21 +587,20 @@ daemonSetupNetworking(virNetServerPtr srv,
|
||||
saslCtxt = virNetSASLContextNewServer(
|
||||
(const char *const*)config->sasl_allowed_username_list);
|
||||
if (!saslCtxt)
|
||||
goto cleanup;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = 0;
|
||||
return 0;
|
||||
|
||||
cleanup:
|
||||
error:
|
||||
#if WITH_GNUTLS
|
||||
virObjectUnref(svcTLS);
|
||||
#endif
|
||||
virObjectUnref(svcTCP);
|
||||
virObjectUnref(svcRO);
|
||||
virObjectUnref(svcAdm);
|
||||
virObjectUnref(svc);
|
||||
return ret;
|
||||
virObjectUnref(svcRO);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -815,14 +774,14 @@ daemonSetupPrivs(void)
|
||||
#endif
|
||||
|
||||
|
||||
static void daemonShutdownHandler(virNetDaemonPtr dmn,
|
||||
static void daemonShutdownHandler(virNetServerPtr srv,
|
||||
siginfo_t *sig 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,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
@@ -838,15 +797,15 @@ static void daemonReloadHandler(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
|
||||
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;
|
||||
if (virNetDaemonAddSignalHandler(dmn, SIGQUIT, daemonShutdownHandler, NULL) < 0)
|
||||
if (virNetServerAddSignalHandler(srv, SIGQUIT, daemonShutdownHandler, NULL) < 0)
|
||||
return -1;
|
||||
if (virNetDaemonAddSignalHandler(dmn, SIGTERM, daemonShutdownHandler, NULL) < 0)
|
||||
if (virNetServerAddSignalHandler(srv, SIGTERM, daemonShutdownHandler, NULL) < 0)
|
||||
return -1;
|
||||
if (virNetDaemonAddSignalHandler(dmn, SIGHUP, daemonReloadHandler, NULL) < 0)
|
||||
if (virNetServerAddSignalHandler(srv, SIGHUP, daemonReloadHandler, NULL) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -854,12 +813,12 @@ static int daemonSetupSignals(virNetDaemonPtr dmn)
|
||||
|
||||
static void daemonInhibitCallback(bool inhibit, void *opaque)
|
||||
{
|
||||
virNetDaemonPtr dmn = opaque;
|
||||
virNetServerPtr srv = opaque;
|
||||
|
||||
if (inhibit)
|
||||
virNetDaemonAddShutdownInhibition(dmn);
|
||||
virNetServerAddShutdownInhibition(srv);
|
||||
else
|
||||
virNetDaemonRemoveShutdownInhibition(dmn);
|
||||
virNetServerRemoveShutdownInhibition(srv);
|
||||
}
|
||||
|
||||
|
||||
@@ -869,26 +828,26 @@ static DBusConnection *systemBus;
|
||||
|
||||
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());
|
||||
|
||||
VIR_DEBUG("Completed stop dmn=%p", dmn);
|
||||
VIR_DEBUG("Completed stop srv=%p", srv);
|
||||
|
||||
/* Exit libvirtd cleanly */
|
||||
virNetDaemonQuit(dmn);
|
||||
virNetServerQuit(srv);
|
||||
}
|
||||
|
||||
|
||||
/* We do this in a thread to not block the main loop */
|
||||
static void daemonStop(virNetDaemonPtr dmn)
|
||||
static void daemonStop(virNetServerPtr srv)
|
||||
{
|
||||
virThread thr;
|
||||
virObjectRef(dmn);
|
||||
if (virThreadCreate(&thr, false, daemonStopWorker, dmn) < 0)
|
||||
virObjectUnref(dmn);
|
||||
virObjectRef(srv);
|
||||
if (virThreadCreate(&thr, false, daemonStopWorker, srv) < 0)
|
||||
virObjectUnref(srv);
|
||||
}
|
||||
|
||||
|
||||
@@ -897,14 +856,14 @@ handleSessionMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
||||
DBusMessage *message,
|
||||
void *opaque)
|
||||
{
|
||||
virNetDaemonPtr dmn = opaque;
|
||||
virNetServerPtr srv = opaque;
|
||||
|
||||
VIR_DEBUG("dmn=%p", dmn);
|
||||
VIR_DEBUG("srv=%p", srv);
|
||||
|
||||
if (dbus_message_is_signal(message,
|
||||
DBUS_INTERFACE_LOCAL,
|
||||
"Disconnected"))
|
||||
daemonStop(dmn);
|
||||
daemonStop(srv);
|
||||
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
}
|
||||
@@ -915,14 +874,14 @@ handleSystemMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
||||
DBusMessage *message,
|
||||
void *opaque)
|
||||
{
|
||||
virNetDaemonPtr dmn = opaque;
|
||||
virNetServerPtr srv = opaque;
|
||||
|
||||
VIR_DEBUG("dmn=%p", dmn);
|
||||
VIR_DEBUG("srv=%p", srv);
|
||||
|
||||
if (dbus_message_is_signal(message,
|
||||
"org.freedesktop.login1.Manager",
|
||||
"PrepareForShutdown"))
|
||||
daemonStop(dmn);
|
||||
daemonStop(srv);
|
||||
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
}
|
||||
@@ -931,22 +890,22 @@ handleSystemMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
|
||||
|
||||
static void daemonRunStateInit(void *opaque)
|
||||
{
|
||||
virNetDaemonPtr dmn = opaque;
|
||||
virNetServerPtr srv = opaque;
|
||||
virIdentityPtr sysident = virIdentityGetSystem();
|
||||
|
||||
virIdentitySetCurrent(sysident);
|
||||
|
||||
/* Since driver initialization can take time inhibit daemon shutdown until
|
||||
we're done so clients get a chance to connect */
|
||||
daemonInhibitCallback(true, dmn);
|
||||
daemonInhibitCallback(true, srv);
|
||||
|
||||
/* Start the stateful HV drivers
|
||||
* This is deliberately done after telling the parent process
|
||||
* we're ready, since it can take a long time and this will
|
||||
* seriously delay OS bootup process */
|
||||
if (virStateInitialize(virNetDaemonIsPrivileged(dmn),
|
||||
if (virStateInitialize(virNetServerIsPrivileged(srv),
|
||||
daemonInhibitCallback,
|
||||
dmn) < 0) {
|
||||
srv) < 0) {
|
||||
VIR_ERROR(_("Driver state initialization failed"));
|
||||
/* Ensure the main event loop quits */
|
||||
kill(getpid(), SIGTERM);
|
||||
@@ -956,18 +915,18 @@ static void daemonRunStateInit(void *opaque)
|
||||
driversInitialized = true;
|
||||
|
||||
#ifdef HAVE_DBUS
|
||||
/* Tie the non-privileged libvirtd to the session/shutdown lifecycle */
|
||||
if (!virNetDaemonIsPrivileged(dmn)) {
|
||||
/* Tie the non-priviledged libvirtd to the session/shutdown lifecycle */
|
||||
if (!virNetServerIsPrivileged(srv)) {
|
||||
|
||||
sessionBus = virDBusGetSessionBus();
|
||||
if (sessionBus != NULL)
|
||||
dbus_connection_add_filter(sessionBus,
|
||||
handleSessionMessageFunc, dmn, NULL);
|
||||
handleSessionMessageFunc, srv, NULL);
|
||||
|
||||
systemBus = virDBusGetSystemBus();
|
||||
if (systemBus != NULL) {
|
||||
dbus_connection_add_filter(systemBus,
|
||||
handleSystemMessageFunc, dmn, NULL);
|
||||
handleSystemMessageFunc, srv, NULL);
|
||||
dbus_bus_add_match(systemBus,
|
||||
"type='signal',sender='org.freedesktop.login1', interface='org.freedesktop.login1.Manager'",
|
||||
NULL);
|
||||
@@ -975,20 +934,20 @@ static void daemonRunStateInit(void *opaque)
|
||||
}
|
||||
#endif
|
||||
/* Only now accept clients from network */
|
||||
virNetDaemonUpdateServices(dmn, true);
|
||||
virNetServerUpdateServices(srv, true);
|
||||
cleanup:
|
||||
daemonInhibitCallback(false, dmn);
|
||||
virObjectUnref(dmn);
|
||||
daemonInhibitCallback(false, srv);
|
||||
virObjectUnref(srv);
|
||||
virObjectUnref(sysident);
|
||||
virIdentitySetCurrent(NULL);
|
||||
}
|
||||
|
||||
static int daemonStateInit(virNetDaemonPtr dmn)
|
||||
static int daemonStateInit(virNetServerPtr srv)
|
||||
{
|
||||
virThread thr;
|
||||
virObjectRef(dmn);
|
||||
if (virThreadCreate(&thr, false, daemonRunStateInit, dmn) < 0) {
|
||||
virObjectUnref(dmn);
|
||||
virObjectRef(srv);
|
||||
if (virThreadCreate(&thr, false, daemonRunStateInit, srv) < 0) {
|
||||
virObjectUnref(srv);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
@@ -1138,10 +1097,9 @@ daemonUsage(const char *argv0, bool privileged)
|
||||
}
|
||||
}
|
||||
|
||||
#define MAX_LISTEN 5
|
||||
int main(int argc, char **argv) {
|
||||
virNetDaemonPtr dmn = NULL;
|
||||
virNetServerPtr srv = NULL;
|
||||
virNetServerPtr srvAdm = NULL;
|
||||
char *remote_config_file = NULL;
|
||||
int statuswrite = -1;
|
||||
int ret = 1;
|
||||
@@ -1149,7 +1107,6 @@ int main(int argc, char **argv) {
|
||||
char *pid_file = NULL;
|
||||
char *sock_file = NULL;
|
||||
char *sock_file_ro = NULL;
|
||||
char *sock_file_adm = NULL;
|
||||
int timeout = -1; /* -t: Shutdown timeout */
|
||||
int verbose = 0;
|
||||
int godaemon = 0;
|
||||
@@ -1317,15 +1274,12 @@ int main(int argc, char **argv) {
|
||||
if (daemonUnixSocketPaths(config,
|
||||
privileged,
|
||||
&sock_file,
|
||||
&sock_file_ro,
|
||||
&sock_file_adm) < 0) {
|
||||
&sock_file_ro) < 0) {
|
||||
VIR_ERROR(_("Can't determine socket paths"));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
VIR_DEBUG("Decided on socket paths '%s', '%s' and '%s'",
|
||||
sock_file,
|
||||
NULLSTR(sock_file_ro),
|
||||
NULLSTR(sock_file_adm));
|
||||
VIR_DEBUG("Decided on socket paths '%s' and '%s'",
|
||||
sock_file, NULLSTR(sock_file_ro));
|
||||
|
||||
if (godaemon) {
|
||||
char ebuf[1024];
|
||||
@@ -1389,6 +1343,7 @@ int main(int argc, char **argv) {
|
||||
config->max_anonymous_clients,
|
||||
config->keepalive_interval,
|
||||
config->keepalive_count,
|
||||
!!config->keepalive_required,
|
||||
config->mdns_adv ? config->mdns_name : NULL,
|
||||
remoteClientInitHook,
|
||||
NULL,
|
||||
@@ -1398,12 +1353,6 @@ int main(int argc, char **argv) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(dmn = virNetDaemonNew()) ||
|
||||
virNetDaemonAddServer(dmn, srv) < 0) {
|
||||
ret = VIR_DAEMON_ERR_INIT;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Beyond this point, nothing should rely on using
|
||||
* getuid/geteuid() == 0, for privilege level checks.
|
||||
*/
|
||||
@@ -1456,45 +1405,13 @@ int main(int argc, char **argv) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(srvAdm = virNetServerNew(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) {
|
||||
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;
|
||||
goto cleanup;
|
||||
}
|
||||
@@ -1529,11 +1446,8 @@ int main(int argc, char **argv) {
|
||||
virHookCall(VIR_HOOK_DRIVER_DAEMON, "-", VIR_HOOK_DAEMON_OP_START,
|
||||
0, "start", NULL, NULL);
|
||||
|
||||
if (daemonSetupNetworking(srv, srvAdm,
|
||||
config,
|
||||
sock_file,
|
||||
sock_file_ro,
|
||||
sock_file_adm,
|
||||
if (daemonSetupNetworking(srv, config,
|
||||
sock_file, sock_file_ro,
|
||||
ipsock, privileged) < 0) {
|
||||
ret = VIR_DAEMON_ERR_NETWORK;
|
||||
goto cleanup;
|
||||
@@ -1552,7 +1466,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
/* Initialize drivers & then start accepting new clients from network */
|
||||
if (daemonStateInit(dmn) < 0) {
|
||||
if (daemonStateInit(srv) < 0) {
|
||||
ret = VIR_DAEMON_ERR_INIT;
|
||||
goto cleanup;
|
||||
}
|
||||
@@ -1574,7 +1488,7 @@ int main(int argc, char **argv) {
|
||||
#endif
|
||||
|
||||
/* Run event loop. */
|
||||
virNetDaemonRun(dmn);
|
||||
virNetServerRun(srv);
|
||||
|
||||
ret = 0;
|
||||
|
||||
@@ -1586,11 +1500,8 @@ int main(int argc, char **argv) {
|
||||
virObjectUnref(remoteProgram);
|
||||
virObjectUnref(lxcProgram);
|
||||
virObjectUnref(qemuProgram);
|
||||
virObjectUnref(adminProgram);
|
||||
virNetDaemonClose(dmn);
|
||||
virObjectUnref(dmn);
|
||||
virNetServerClose(srv);
|
||||
virObjectUnref(srv);
|
||||
virObjectUnref(srvAdm);
|
||||
virNetlinkShutdown();
|
||||
if (statuswrite != -1) {
|
||||
if (ret != 0) {
|
||||
@@ -1607,7 +1518,6 @@ int main(int argc, char **argv) {
|
||||
|
||||
VIR_FREE(sock_file);
|
||||
VIR_FREE(sock_file_ro);
|
||||
VIR_FREE(sock_file_adm);
|
||||
VIR_FREE(pid_file);
|
||||
VIR_FREE(remote_config_file);
|
||||
VIR_FREE(run_dir);
|
||||
|
@@ -106,17 +106,9 @@
|
||||
# control, then you may want to relax this too.
|
||||
#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.
|
||||
#unix_sock_dir = "/var/run/libvirt"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authentication.
|
||||
@@ -315,16 +307,6 @@
|
||||
# and max_workers parameter
|
||||
#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
|
||||
@@ -344,16 +326,10 @@
|
||||
# The format for a filter is one of:
|
||||
# x:name
|
||||
# x:+name
|
||||
|
||||
# where name is a string which is matched against the category
|
||||
# given in the VIR_LOG_INIT() at the top of each libvirt source
|
||||
# file, e.g., "remote", "qemu", or "util.json" (the name in the
|
||||
# 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:
|
||||
|
||||
# where name is a string which is matched against source file name,
|
||||
# e.g., "remote", "qemu", or "util/json", 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
|
||||
# 2: INFO
|
||||
# 3: WARNING
|
||||
@@ -446,15 +422,8 @@
|
||||
#
|
||||
#keepalive_interval = 5
|
||||
#keepalive_count = 5
|
||||
|
||||
#
|
||||
# These configuration options are no longer used. There is no way to
|
||||
# restrict such clients from connecting since they first need to
|
||||
# connect in order to ask for keepalive.
|
||||
# If set to 1, libvirtd will refuse to talk to clients that do not
|
||||
# support keepalive protocol. Defaults to 0.
|
||||
#
|
||||
#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
|
||||
*
|
||||
* Copyright (C) 2006-2015 Red Hat, Inc.
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@@ -30,11 +30,9 @@
|
||||
# include <rpc/types.h>
|
||||
# include <rpc/xdr.h>
|
||||
# include "remote_protocol.h"
|
||||
# include "admin_protocol.h"
|
||||
# include "lxc_protocol.h"
|
||||
# include "qemu_protocol.h"
|
||||
# include "virthread.h"
|
||||
|
||||
# if WITH_SASL
|
||||
# include "virnetsaslcontext.h"
|
||||
# endif
|
||||
@@ -44,8 +42,6 @@ typedef struct daemonClientStream daemonClientStream;
|
||||
typedef daemonClientStream *daemonClientStreamPtr;
|
||||
typedef struct daemonClientPrivate daemonClientPrivate;
|
||||
typedef daemonClientPrivate *daemonClientPrivatePtr;
|
||||
typedef struct daemonAdmClientPrivate daemonAdmClientPrivate;
|
||||
typedef daemonAdmClientPrivate *daemonAdmClientPrivatePtr;
|
||||
typedef struct daemonClientEventCallback daemonClientEventCallback;
|
||||
typedef daemonClientEventCallback *daemonClientEventCallbackPtr;
|
||||
|
||||
@@ -72,14 +68,7 @@ struct daemonClientPrivate {
|
||||
virConnectPtr conn;
|
||||
|
||||
daemonClientStreamPtr streams;
|
||||
};
|
||||
|
||||
/* Separate private data for admin connection */
|
||||
struct daemonAdmClientPrivate {
|
||||
/* Just a placeholder, not that there is anything to be locked */
|
||||
virMutex lock;
|
||||
|
||||
virNetDaemonPtr dmn;
|
||||
bool keepalive_supported;
|
||||
};
|
||||
|
||||
# if WITH_SASL
|
||||
|
@@ -1,16 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
# 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
|
||||
# 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-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
|
||||
# Description: This is a daemon for managing guest instances
|
||||
# and libvirt virtual networks
|
||||
|
@@ -1,9 +0,0 @@
|
||||
@localstatedir@/log/libvirt/libxl/*.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
@@ -5,8 +5,6 @@ After=network.target
|
||||
After=dbus.service
|
||||
After=iscsid.service
|
||||
After=apparmor.service
|
||||
After=local-fs.target
|
||||
After=remote-fs.target
|
||||
Documentation=man:libvirtd(8)
|
||||
Documentation=http://libvirt.org
|
||||
|
||||
@@ -22,5 +20,3 @@ Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Also=virtlockd.socket
|
||||
Also=virtlogd.socket
|
||||
|
@@ -1045,42 +1045,6 @@ remoteRelayDomainEventAgentLifecycle(virConnectPtr conn,
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
remoteRelayDomainEventDeviceAdded(virConnectPtr conn,
|
||||
virDomainPtr dom,
|
||||
const char *devAlias,
|
||||
void *opaque)
|
||||
{
|
||||
daemonClientEventCallbackPtr callback = opaque;
|
||||
remote_domain_event_callback_device_added_msg data;
|
||||
|
||||
if (callback->callbackID < 0 ||
|
||||
!remoteRelayDomainEventCheckACL(callback->client, conn, dom))
|
||||
return -1;
|
||||
|
||||
VIR_DEBUG("Relaying domain device added event %s %d %s, callback %d",
|
||||
dom->name, dom->id, devAlias, callback->callbackID);
|
||||
|
||||
/* build return data */
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
if (VIR_STRDUP(data.devAlias, devAlias) < 0)
|
||||
return -1;
|
||||
|
||||
make_nonnull_domain(&data.dom, dom);
|
||||
data.callbackID = callback->callbackID;
|
||||
|
||||
remoteDispatchObjectEventSend(callback->client, remoteProgram,
|
||||
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_DEVICE_ADDED,
|
||||
(xdrproc_t)xdr_remote_domain_event_callback_device_added_msg,
|
||||
&data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static virConnectDomainEventGenericCallback domainEventCallbacks[] = {
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventLifecycle),
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventReboot),
|
||||
@@ -1101,7 +1065,6 @@ static virConnectDomainEventGenericCallback domainEventCallbacks[] = {
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventBlockJob2),
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventTunable),
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventAgentLifecycle),
|
||||
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventDeviceAdded),
|
||||
};
|
||||
|
||||
verify(ARRAY_CARDINALITY(domainEventCallbacks) == VIR_DOMAIN_EVENT_ID_LAST);
|
||||
@@ -1290,7 +1253,7 @@ void *remoteClientInitHook(virNetServerClientPtr client,
|
||||
/*----- Functions. -----*/
|
||||
|
||||
static int
|
||||
remoteDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
remoteDispatchConnectOpen(virNetServerPtr server,
|
||||
virNetServerClientPtr client,
|
||||
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||
virNetMessageErrorPtr rerr,
|
||||
@@ -1309,6 +1272,12 @@ remoteDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virNetServerKeepAliveRequired(server) && !priv->keepalive_supported) {
|
||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
||||
_("keepalive support is required to connect"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
name = args->name ? *args->name : NULL;
|
||||
|
||||
/* If this connection arrived on a readonly socket, force
|
||||
@@ -6376,7 +6345,7 @@ remoteDispatchConnectGetAllDomainStats(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
virNetMessageSaveError(rerr);
|
||||
|
||||
virDomainStatsRecordListFree(retStats);
|
||||
virObjectListFree(doms);
|
||||
virDomainListFree(doms);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
@@ -12,7 +12,6 @@ module Test_libvirtd =
|
||||
{ "unix_sock_group" = "libvirt" }
|
||||
{ "unix_sock_ro_perms" = "0777" }
|
||||
{ "unix_sock_rw_perms" = "0770" }
|
||||
{ "unix_sock_admin_perms" = "0700" }
|
||||
{ "unix_sock_dir" = "/var/run/libvirt" }
|
||||
{ "auth_unix_ro" = "none" }
|
||||
{ "auth_unix_rw" = "none" }
|
||||
@@ -43,11 +42,6 @@ module Test_libvirtd =
|
||||
{ "prio_workers" = "5" }
|
||||
{ "max_requests" = "20" }
|
||||
{ "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_filters" = "3:remote 4:event" }
|
||||
{ "log_outputs" = "3:syslog:libvirtd" }
|
||||
@@ -58,6 +52,3 @@ module Test_libvirtd =
|
||||
{ "keepalive_interval" = "5" }
|
||||
{ "keepalive_count" = "5" }
|
||||
{ "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
|
||||
|
||||
## 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
|
||||
## modify it under the terms of the GNU Lesser General Public
|
||||
@@ -16,6 +16,8 @@
|
||||
## License along with this library. If not, see
|
||||
## <http://www.gnu.org/licenses/>.
|
||||
|
||||
SUBDIRS= schemas
|
||||
|
||||
PERL = perl
|
||||
|
||||
# The directory containing the source code (if it contains documentation).
|
||||
@@ -126,15 +128,8 @@ lxc_xml = \
|
||||
libvirt-lxc-api.xml \
|
||||
libvirt-lxc-refs.xml
|
||||
|
||||
admin_xml = \
|
||||
libvirt-admin-api.xml \
|
||||
libvirt-admin-refs.xml
|
||||
|
||||
apidir = $(pkgdatadir)/api
|
||||
api_DATA = \
|
||||
libvirt-api.xml \
|
||||
libvirt-qemu-api.xml \
|
||||
libvirt-lxc-api.xml
|
||||
api_DATA = libvirt-api.xml libvirt-qemu-api.xml libvirt-lxc-api.xml
|
||||
|
||||
fig = \
|
||||
libvirt-net-logical.fig \
|
||||
@@ -148,9 +143,6 @@ fig = \
|
||||
migration-tunnel.fig \
|
||||
migration-unmanaged-direct.fig
|
||||
|
||||
schemadir = $(pkgdatadir)/schemas
|
||||
schema_DATA = $(wildcard $(srcdir)/schemas/*.rng)
|
||||
|
||||
EXTRA_DIST= \
|
||||
apibuild.py genaclperms.pl \
|
||||
site.xsl newapi.xsl news.xsl page.xsl \
|
||||
@@ -161,10 +153,9 @@ EXTRA_DIST= \
|
||||
$(patches) $(dot_php_in) $(dot_php_code_in) $(dot_php)\
|
||||
$(internals_html_in) $(internals_html) \
|
||||
sitemap.html.in aclperms.htmlinc \
|
||||
todo.pl hvsupport.pl todo.cfg-example \
|
||||
$(schema_DATA)
|
||||
todo.pl hvsupport.pl todo.cfg-example
|
||||
|
||||
acl_generated = aclperms.htmlinc
|
||||
acl.html:: $(srcdir)/aclperms.htmlinc
|
||||
|
||||
$(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
|
||||
$(srcdir)/genaclperms.pl Makefile.am
|
||||
@@ -183,7 +174,6 @@ all-am: web
|
||||
api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-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
|
||||
admin_api: $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
|
||||
|
||||
web: $(dot_html) $(internals_html) html/index.html devhelp/index.html \
|
||||
$(dot_php)
|
||||
@@ -206,13 +196,13 @@ todo:
|
||||
rm -f todo.html.in
|
||||
$(MAKE) todo.html
|
||||
|
||||
hvsupport.html: $(srcdir)/hvsupport.html.in
|
||||
hvsupport.html:: $(srcdir)/hvsupport.html.in
|
||||
|
||||
$(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
|
||||
$(top_srcdir)/src/libvirt_public.syms \
|
||||
$(top_srcdir)/src/libvirt_qemu.syms $(top_srcdir)/src/libvirt_lxc.syms \
|
||||
$(top_srcdir)/src/driver.h
|
||||
$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(top_srcdir)/src > $@ \
|
||||
$(srcdir)/../src/libvirt_public.syms \
|
||||
$(srcdir)/../src/libvirt_qemu.syms $(srcdir)/../src/libvirt_lxc.syms \
|
||||
$(srcdir)/../src/driver.h
|
||||
$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(srcdir)/../src > $@ \
|
||||
|| { rm $@ && exit 1; }
|
||||
|
||||
.PHONY: todo
|
||||
@@ -229,7 +219,7 @@ internals/%.html.tmp: internals/%.html.in subsite.xsl page.xsl sitemap.html.in
|
||||
$(top_srcdir)/docs/subsite.xsl $< > $@ \
|
||||
|| { rm $@ && exit 1; }; fi
|
||||
|
||||
%.html.tmp: %.html.in site.xsl page.xsl sitemap.html.in $(acl_generated)
|
||||
%.html.tmp: %.html.in site.xsl page.xsl sitemap.html.in
|
||||
@if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Generating $@"; \
|
||||
name=`echo $@ | sed -e 's/.tmp//'`; \
|
||||
@@ -284,7 +274,6 @@ $(addprefix $(srcdir)/,$(devhelphtml)): $(srcdir)/libvirt-api.xml $(devhelpxsl)
|
||||
python_generated_files = \
|
||||
$(srcdir)/html/libvirt-libvirt-lxc.html \
|
||||
$(srcdir)/html/libvirt-libvirt-qemu.html \
|
||||
$(srcdir)/html/libvirt-libvirt-admin.html \
|
||||
$(srcdir)/html/libvirt-virterror.html \
|
||||
$(srcdir)/libvirt-api.xml \
|
||||
$(srcdir)/libvirt-refs.xml \
|
||||
@@ -292,8 +281,6 @@ python_generated_files = \
|
||||
$(srcdir)/libvirt-lxc-refs.xml \
|
||||
$(srcdir)/libvirt-qemu-api.xml \
|
||||
$(srcdir)/libvirt-qemu-refs.xml \
|
||||
$(srcdir)/libvirt-admin-api.xml \
|
||||
$(srcdir)/libvirt-admin-refs.xml \
|
||||
$(NULL)
|
||||
|
||||
APIBUILD=$(srcdir)/apibuild.py
|
||||
@@ -303,30 +290,27 @@ EXTRA_DIST += $(APIBUILD_STAMP)
|
||||
$(python_generated_files): $(APIBUILD_STAMP)
|
||||
|
||||
$(APIBUILD_STAMP): $(srcdir)/apibuild.py \
|
||||
$(top_srcdir)/include/libvirt/libvirt.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-common.h.in \
|
||||
$(top_srcdir)/include/libvirt/libvirt-domain-snapshot.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-domain.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-event.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-host.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-interface.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-network.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-nodedev.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-nwfilter.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-secret.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-storage.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-stream.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-lxc.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-qemu.h \
|
||||
$(top_srcdir)/include/libvirt/libvirt-admin.h \
|
||||
$(top_srcdir)/include/libvirt/virterror.h \
|
||||
$(top_srcdir)/src/libvirt.c \
|
||||
$(top_srcdir)/src/libvirt-lxc.c \
|
||||
$(top_srcdir)/src/libvirt-qemu.c \
|
||||
$(top_srcdir)/src/libvirt-admin.c \
|
||||
$(top_srcdir)/src/util/virerror.c \
|
||||
$(top_srcdir)/src/util/virevent.c \
|
||||
$(top_srcdir)/src/util/virtypedparam.c
|
||||
$(srcdir)/../include/libvirt/libvirt.h.in \
|
||||
$(srcdir)/../include/libvirt/libvirt-domain-snapshot.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-domain.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-event.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-host.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-interface.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-network.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-nodedev.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-nwfilter.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-secret.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-storage.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-stream.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-lxc.h \
|
||||
$(srcdir)/../include/libvirt/libvirt-qemu.h \
|
||||
$(srcdir)/../include/libvirt/virterror.h \
|
||||
$(srcdir)/../src/libvirt.c \
|
||||
$(srcdir)/../src/libvirt-lxc.c \
|
||||
$(srcdir)/../src/libvirt-qemu.c \
|
||||
$(srcdir)/../src/util/virerror.c \
|
||||
$(srcdir)/../src/util/virevent.c \
|
||||
$(srcdir)/../src/util/virtypedparam.c
|
||||
$(AM_V_GEN)srcdir=$(srcdir) $(PYTHON) $(APIBUILD)
|
||||
touch $@
|
||||
|
||||
@@ -342,10 +326,9 @@ maintainer-clean-local: clean-local
|
||||
todo.html.in
|
||||
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-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
|
||||
rm -rf $(APIBUILD_STAMP)
|
||||
|
||||
rebuild: api qemu_api lxc_api admin_api all
|
||||
rebuild: api qemu_api lxc_api all
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||
|
@@ -348,12 +348,6 @@
|
||||
<code>lookup</code> method.
|
||||
</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>
|
||||
|
||||
<p>
|
||||
|
@@ -330,7 +330,7 @@
|
||||
daemon through the <a href="remote.html">remote</a> driver via an
|
||||
<a href="internals/rpc.html">RPC</a>. Some hypervisors do support
|
||||
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
|
||||
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
|
||||
|
106
docs/apibuild.py
106
docs/apibuild.py
@@ -59,11 +59,6 @@ lxc_included_files = {
|
||||
"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 = {
|
||||
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
|
||||
"ATTRIBUTE_SENTINEL": (0, "macro keyword"),
|
||||
@@ -102,7 +97,6 @@ ignored_functions = {
|
||||
"virDomainMigratePrepare3Params": "private function for migration",
|
||||
"virDomainMigrateConfirm3Params": "private function for migration",
|
||||
"virDomainMigratePrepareTunnel3Params": "private function for tunnelled migration",
|
||||
"virErrorCopyNew": "private",
|
||||
}
|
||||
|
||||
ignored_macros = {
|
||||
@@ -1034,12 +1028,9 @@ class CParser:
|
||||
name = string.split(name, '(') [0]
|
||||
except:
|
||||
pass
|
||||
strValue = None
|
||||
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)
|
||||
info = self.parseMacroComment(name, not self.is_header)
|
||||
self.index_add(name, self.filename, not self.is_header,
|
||||
"macro", (args, desc, strValue))
|
||||
"macro", info)
|
||||
return token
|
||||
|
||||
#
|
||||
@@ -1365,32 +1356,32 @@ class CParser:
|
||||
token = self.token()
|
||||
return token
|
||||
elif token[0] == "name":
|
||||
self.cleanupComment()
|
||||
if name is not None:
|
||||
if self.comment is not None:
|
||||
comment = string.strip(self.comment)
|
||||
self.comment = None
|
||||
self.enums.append((name, value, comment))
|
||||
name = token[1]
|
||||
comment = ""
|
||||
token = self.token()
|
||||
if token[0] == "op" and token[1][0] == "=":
|
||||
value = ""
|
||||
if len(token[1]) > 1:
|
||||
value = token[1][1:]
|
||||
self.cleanupComment()
|
||||
if name is not None:
|
||||
if self.comment is not None:
|
||||
comment = string.strip(self.comment)
|
||||
self.comment = None
|
||||
self.enums.append((name, value, comment))
|
||||
name = token[1]
|
||||
comment = ""
|
||||
token = self.token()
|
||||
while token[0] != "sep" or (token[1] != ',' and
|
||||
token[1] != '}'):
|
||||
value = value + token[1]
|
||||
if token[0] == "op" and token[1][0] == "=":
|
||||
value = ""
|
||||
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()
|
||||
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:
|
||||
token = self.token()
|
||||
return token
|
||||
@@ -2027,8 +2018,6 @@ class docBuilder:
|
||||
self.includes = includes + qemu_included_files.keys()
|
||||
elif name == "libvirt-lxc":
|
||||
self.includes = includes + lxc_included_files.keys()
|
||||
elif name == "libvirt-admin":
|
||||
self.includes = includes + admin_included_files.keys()
|
||||
self.modules = {}
|
||||
self.headers = {}
|
||||
self.idx = index()
|
||||
@@ -2155,30 +2144,24 @@ class docBuilder:
|
||||
|
||||
def serialize_macro(self, output, 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)))
|
||||
if id.info is None:
|
||||
args = []
|
||||
desc = None
|
||||
strValue = None
|
||||
else:
|
||||
(args, desc, strValue) = id.info
|
||||
|
||||
if strValue is not None:
|
||||
output.write(" string='%s'" % strValue)
|
||||
output.write(">\n")
|
||||
|
||||
if desc is not None and desc != "":
|
||||
output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
|
||||
self.indexString(name, desc)
|
||||
for arg in args:
|
||||
(name, desc) = arg
|
||||
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))
|
||||
if id.info is not None:
|
||||
try:
|
||||
(args, desc) = id.info
|
||||
if desc is not None and desc != "":
|
||||
output.write(" <info><![CDATA[%s]]></info>\n" % (desc))
|
||||
self.indexString(name, desc)
|
||||
for arg in args:
|
||||
(name, desc) = arg
|
||||
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))
|
||||
except:
|
||||
pass
|
||||
output.write(" </macro>\n")
|
||||
|
||||
def serialize_union(self, output, field, desc):
|
||||
@@ -2568,7 +2551,7 @@ class docBuilder:
|
||||
|
||||
|
||||
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
|
||||
return None
|
||||
builder = None
|
||||
@@ -2612,7 +2595,6 @@ if __name__ == "__main__":
|
||||
rebuild("libvirt")
|
||||
rebuild("libvirt-qemu")
|
||||
rebuild("libvirt-lxc")
|
||||
rebuild("libvirt-admin")
|
||||
if warnings > 0:
|
||||
sys.exit(2)
|
||||
else:
|
||||
|
@@ -262,16 +262,6 @@
|
||||
using a dashboard. Compute part uses libvirt to manage VM
|
||||
life-cycle, monitoring and so on.
|
||||
</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>
|
||||
|
||||
<h2><a name="libraries">Libraries</a></h2>
|
||||
@@ -331,12 +321,6 @@
|
||||
For a full description, please refer to the libvirt section in the
|
||||
collectd.conf(5) manual page.
|
||||
</dd>
|
||||
<dt><a href="http://host-sflow.sourceforge.net/">Host sFlow</a></dt>
|
||||
<dd>
|
||||
Host sFlow is a lightweight agent running on KVM hypervisors that
|
||||
links to libvirt library and exports standardized cpu, memory, network
|
||||
and disk metrics for all virtual machines.
|
||||
</dd>
|
||||
<dt><a href="http://honk.sigxcpu.org/projects/libvirt/#munin">Munin</a></dt>
|
||||
<dd>
|
||||
The plugins provided by Guido Günther allow to monitor various things
|
||||
@@ -441,19 +425,5 @@
|
||||
</dd>
|
||||
</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>
|
||||
</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">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<body>
|
||||
<h1>libvirt Application Development Guides</h1>
|
||||
<h1>libvirt Application Development Guide</h1>
|
||||
|
||||
<ul id="toc"></ul>
|
||||
|
||||
<p>
|
||||
The libvirt API is accessible from a number of programming languages.
|
||||
At this time, there are application development guides available
|
||||
which cover the C API and the Python API. Of the two, the Python guide
|
||||
is currently the more comprehensive document.
|
||||
The guide is both a learning tool for developing with libvirt and an
|
||||
API reference document. It is a work in progress, composed by a
|
||||
professional author from contributions written by members of the
|
||||
libvirt team.
|
||||
</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>
|
||||
<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/docs/libvirt-appdev-guide/en-US/pdf/">Application Development Guide (C language) PDF</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/docs/libvirt-appdev-guide-python/en-US/pdf/">Application Development Guide (Python language) PDF</a></li>
|
||||
<li><a href="http://libvirt.org/guide/html/">
|
||||
HTML format using multiple pages</a></li>
|
||||
<li><a href="http://libvirt.org/guide/html-single/">
|
||||
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>
|
||||
|
||||
<h2>Contributing content</h2>
|
||||
<h2><a name="git">GIT source repository</a></h2>
|
||||
|
||||
<p>
|
||||
These guides are written in DocBook and published with the
|
||||
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.
|
||||
The source is in a git repository:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
# C language
|
||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-appdev-guide.git">git://libvirt.org/libvirt-appdev-guide.git</a>
|
||||
git clone git://libvirt.org/libvirt-appdev-guide.git</pre>
|
||||
|
||||
# Python language
|
||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-appdev-guide-python.git">git://libvirt.org/libvirt-appdev-guide-python.git</a>
|
||||
<p>
|
||||
Browsable here:
|
||||
</p>
|
||||
|
||||
# Publican Style/Theme
|
||||
$ git clone <a href="http://libvirt.org/git/?p=libvirt-publican.git">git://libvirt.org/libvirt-publican.git</a>
|
||||
</pre>
|
||||
<pre>
|
||||
<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>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -71,20 +71,6 @@
|
||||
<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 />
|
||||
|
||||
<h1>libvirt Application Development Guide</h1>
|
||||
|
@@ -32,7 +32,7 @@
|
||||
<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="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>
|
||||
</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.
|
||||
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>
|
||||
</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.
|
||||
</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>
|
||||
|
||||
<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">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<body>
|
||||
<h1>Virtuozzo driver</h1>
|
||||
<h1>Parallels Cloud Server driver</h1>
|
||||
<ul id="toc"></ul>
|
||||
<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>
|
||||
|
||||
|
||||
<h2><a name="project">Project Links</a></h2>
|
||||
<ul>
|
||||
<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>
|
||||
</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>
|
||||
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>
|
||||
<pre>
|
||||
vz:///system (local access)
|
||||
vz+unix:///system (local access)
|
||||
vz://example.com/system (remote access, TLS/x509)
|
||||
vz+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
vz+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
parallels:///system (local access)
|
||||
parallels+unix:///system (local access)
|
||||
parallels://example.com/system (remote access, TLS/x509)
|
||||
parallels+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
parallels+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
<h2><a name="example">Example guest domain XML configuration</a></h2>
|
||||
|
||||
<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
|
||||
be created.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<domain type='vz'>
|
||||
<domain type='parallels'>
|
||||
<name>demo</name>
|
||||
<uuid>54cdecad-4492-4e31-a209-33cc21d64057</uuid>
|
||||
<description>some description</description>
|
@@ -8,7 +8,9 @@
|
||||
|
||||
<p>
|
||||
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>
|
||||
|
||||
<h2><a name="project">Project Links</a></h2>
|
||||
@@ -41,6 +43,12 @@
|
||||
node. If both are found, then KVM fullyvirtualized, hardware accelerated
|
||||
guests will be available.
|
||||
</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>
|
||||
|
||||
<h2><a name="uris">Connections to QEMU driver</a></h2>
|
||||
@@ -639,5 +647,9 @@ $ virsh domxml-to-native qemu-argv demo.xml
|
||||
</devices>
|
||||
</domain></pre>
|
||||
|
||||
<h3>Xen paravirtualized guests with hardware acceleration</h3>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -162,7 +162,7 @@
|
||||
<suspend_mem/>
|
||||
<suspend_disk/>
|
||||
<suspend_hybrid/>
|
||||
</power_management>
|
||||
<power_management/>
|
||||
</host></span>
|
||||
|
||||
<!-- xen-3.0-x86_64 -->
|
||||
|
@@ -126,8 +126,7 @@
|
||||
provides details on allowed values for
|
||||
these. <span class="since">Since 0.0.1</span></dd>
|
||||
<dt><code>loader</code></dt>
|
||||
<dd>The optional <code>loader</code> tag refers to a firmware blob,
|
||||
which is specified by absolute path,
|
||||
<dd>The optional <code>loader</code> tag refers to a firmware blob
|
||||
used to assist the domain creation process. It is used by Xen
|
||||
fully virtualized domains as well as setting the QEMU BIOS file
|
||||
path for QEMU/KVM domains. <span class="since">Xen since 0.1.0,
|
||||
@@ -143,10 +142,10 @@
|
||||
<code>pflash</code>.</dd>
|
||||
<dt><code>nvram</code></dt>
|
||||
<dd>Some UEFI firmwares may want to use a non-volatile memory to store
|
||||
some variables. In the host, this is represented as a file and the
|
||||
absolute path to the file is stored in this element. Moreover, when the
|
||||
domain is started up libvirt copies so called master NVRAM store file
|
||||
defined in <code>qemu.conf</code>. If needed, the <code>template</code>
|
||||
some variables. In the host, this is represented as a file and the path
|
||||
to the file is stored in this element. Moreover, when the domain is
|
||||
started up libvirt copies so called master NVRAM store file defined
|
||||
in <code>qemu.conf</code>. If needed, the <code>template</code>
|
||||
attribute can be used to per domain override map of master NVRAM stores
|
||||
from the config file. Note, that for transient domains if the NVRAM file
|
||||
has been created by libvirt it is left behind and it is management
|
||||
@@ -375,12 +374,6 @@
|
||||
<entry name='product'>Virt-Manager</entry>
|
||||
<entry name='version'>0.9.4</entry>
|
||||
</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>
|
||||
...</pre>
|
||||
|
||||
@@ -441,32 +434,11 @@
|
||||
<dt><code>family</code></dt>
|
||||
<dd>Identify the family a particular computer belongs to.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><code>baseBoard</code></dt>
|
||||
<dd>
|
||||
This is block 2 of SMBIOS. This element can be repeated multiple
|
||||
times to describe all the base boards; however, not all
|
||||
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.
|
||||
NB: Incorrectly supplied entries in either the <code>bios</code>
|
||||
or <code>system</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>
|
||||
</dl>
|
||||
</dd>
|
||||
@@ -547,18 +519,6 @@
|
||||
<iothreads>4</iothreads>
|
||||
...
|
||||
</domain>
|
||||
</pre>
|
||||
<pre>
|
||||
<domain>
|
||||
...
|
||||
<iothreadids>
|
||||
<iothread id="2"/>
|
||||
<iothread id="4"/>
|
||||
<iothread id="6"/>
|
||||
<iothread id="8"/>
|
||||
</iothreadids>
|
||||
...
|
||||
</domain>
|
||||
</pre>
|
||||
|
||||
<dl>
|
||||
@@ -569,25 +529,7 @@
|
||||
virtio-blk-pci and virtio-blk-ccw target storage devices. There
|
||||
should be only 1 or 2 IOThreads per host CPU. There may be more
|
||||
than one supported device assigned to each IOThread.
|
||||
<span class="since">Since 1.2.8</span>
|
||||
</dd>
|
||||
<dt><code>iothreadids</code></dt>
|
||||
<dd>
|
||||
The optional <code>iothreadids</code> element provides the capability
|
||||
to specifically define the IOThread ID's for the domain. By default,
|
||||
IOThread ID's are sequentially numbered starting from 1 through the
|
||||
number of <code>iothreads</code> defined for the domain. The
|
||||
<code>id</code> attribute is used to define the IOThread ID. The
|
||||
<code>id</code> attribute must be a positive integer greater than 0.
|
||||
If there are less <code>iothreadids</code> defined than
|
||||
<code>iothreads</code> defined for the domain, then libvirt will
|
||||
sequentially fill <code>iothreadids</code> starting at 1 avoiding
|
||||
any predefined <code>id</code>. If there are more
|
||||
<code>iothreadids</code> defined than <code>iothreads</code>
|
||||
defined for the domain, then the <code>iothreads</code> value
|
||||
will be adjusted accordingly.
|
||||
<span class="since">Since 1.2.15</span>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3><a name="elementsCPUTuning">CPU Tuning</a></h3>
|
||||
@@ -651,11 +593,11 @@
|
||||
and attribute <code>cpuset</code> of element <code>vcpu</code> is
|
||||
not specified, the IOThreads are pinned to all the physical CPUs
|
||||
by default. There are two required attributes, the attribute
|
||||
<code>iothread</code> specifies the IOThread ID and the attribute
|
||||
<code>cpuset</code> specifying which physical CPUs to pin to. See
|
||||
the <code>iothreadids</code>
|
||||
<a href="#elementsIOThreadsAllocation"><code>description</code></a>
|
||||
for valid <code>iothread</code> values.
|
||||
<code>iothread</code> specifies the IOThread id and the attribute
|
||||
<code>cpuset</code> specifying which physical CPUs to pin to. The
|
||||
<code>iothread</code> value begins at "1" through the number of
|
||||
<a href="#elementsIOThreadsAllocation"><code>iothreads</code></a>
|
||||
allocated to the domain. A value of "0" is not permitted.
|
||||
<span class="since">Since 1.2.9</span>
|
||||
</dd>
|
||||
<dt><code>shares</code></dt>
|
||||
@@ -718,17 +660,10 @@
|
||||
type (values <code>batch</code>, <code>idle</code>, <code>fifo</code>,
|
||||
<code>rr</code>) for particular vCPU/IOThread threads (based on
|
||||
<code>vcpus</code> and <code>iothreads</code>, leaving out
|
||||
<code>vcpus</code>/<code>iothreads</code> sets the default). Valid
|
||||
<code>vcpus</code> values start at 0 through one less than the
|
||||
number of vCPU's defined for the domain. Valid <code>iothreads</code>
|
||||
values are described in the <code>iothreadids</code>
|
||||
<a href="#elementsIOThreadsAllocation"><code>description</code></a>.
|
||||
If no <code>iothreadids</code> are defined, then libvirt numbers
|
||||
IOThreads from 1 to the number of <code>iothreads</code> available
|
||||
for the domain. For 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
|
||||
for the priority depends on the host kernel (usually 1-99).
|
||||
<code>vcpus</code>/<code>iothreads</code> sets the default). For
|
||||
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 for the priority depends on the host kernel (usually 1-99).
|
||||
<span class="since">Since 1.2.13</span>
|
||||
</dd>
|
||||
|
||||
@@ -1036,7 +971,7 @@
|
||||
resource partitions, potentially with nesting of said partitions.
|
||||
The <code>resource</code> element groups together configuration
|
||||
related to resource partitioning. It currently supports a child
|
||||
element <code>partition</code> whose content defines the absolute path
|
||||
element <code>partition</code> whose content defines the path
|
||||
of the resource partition in which to place the domain. If no
|
||||
partition is listed, then the domain will be placed in a default
|
||||
partition. It is the responsibility of the app/admin to ensure
|
||||
@@ -1084,7 +1019,7 @@
|
||||
...</pre>
|
||||
|
||||
<pre>
|
||||
<cpu mode='host-passthrough'>
|
||||
<cpu mode='host-passthrough'/>
|
||||
<feature policy='disable' name='lahf_lm'/>
|
||||
...</pre>
|
||||
|
||||
@@ -1464,8 +1399,7 @@
|
||||
<kvm>
|
||||
<hidden state='on'/>
|
||||
</kvm>
|
||||
<pvspinlock state='on'/>
|
||||
<gic version='2'/>
|
||||
<pvspinlock/>
|
||||
|
||||
</features>
|
||||
...</pre>
|
||||
@@ -1566,21 +1500,6 @@
|
||||
performance monitoring unit for the guest.
|
||||
<span class="since">Since 1.2.12</span>
|
||||
</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. <span
|
||||
class="since">Since 1.2.16</span>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3><a name="elementsTime">Time keeping</a></h3>
|
||||
@@ -1970,13 +1889,8 @@
|
||||
defaulting to "disk".
|
||||
<p>
|
||||
Using "lun" (<span class="since">since 0.9.10</span>) is only
|
||||
valid when the <code>type</code> is "block" or "network" for
|
||||
<code>protocol='iscsi'</code> or when the <code>type</code>
|
||||
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",
|
||||
valid when type is "block" or "network" using the iSCSI protocol,
|
||||
and behaves identically to "disk",
|
||||
except that generic SCSI commands from the guest are accepted
|
||||
and passed through to the physical device. Also note that
|
||||
device='lun' will only be recognized for actual raw devices,
|
||||
@@ -2004,10 +1918,10 @@
|
||||
<dt><code>sgio</code> attribute
|
||||
<span class="since">since 1.0.2</span></dt>
|
||||
<dd>
|
||||
If supported by the hypervisor and OS, indicates whether
|
||||
unprivileged SG_IO commands are filtered for the disk. Valid
|
||||
settings are "filtered" or "unfiltered" where the default is
|
||||
"filtered". Only available when the <code>device</code> is 'lun'.
|
||||
Indicates whether the kernel will filter unprivileged
|
||||
SG_IO commands for the disk, valid settings are "filtered" or
|
||||
"unfiltered". Defaults to "filtered". Similar to <code>rawio</code>,
|
||||
<code>sgio</code> is only valid for device 'lun'.
|
||||
</dd>
|
||||
<dt><code>snapshot</code> attribute
|
||||
<span class="since">since 0.9.5</span></dt>
|
||||
@@ -2040,8 +1954,8 @@
|
||||
<dt><code>type='block'</code>
|
||||
<span class="since">since 0.0.3</span></dt>
|
||||
<dd>
|
||||
The <code>dev</code> attribute specifies the fully-qualified path
|
||||
to the host device to serve as the disk.
|
||||
The <code>dev</code> attribute specifies the path to the
|
||||
host device to serve as the disk.
|
||||
</dd>
|
||||
<dt><code>type='dir'</code>
|
||||
<span class="since">since 0.7.5</span></dt>
|
||||
@@ -2093,13 +2007,6 @@
|
||||
Using "host" as the <code>mode</code> value indicates to use the
|
||||
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').
|
||||
|
||||
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>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -2151,7 +2058,7 @@
|
||||
<td> rbd </td>
|
||||
<td> monitor servers of RBD </td>
|
||||
<td> one or more </td>
|
||||
<td> librados default </td>
|
||||
<td> 6789 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> sheepdog </td>
|
||||
@@ -2540,16 +2447,12 @@
|
||||
<dd>If present, this specify serial number of virtual hard drive.
|
||||
For example, it may look
|
||||
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>
|
||||
</dd>
|
||||
<dt><code>wwn</code></dt>
|
||||
<dd>If present, this element specifies the WWN (World Wide Name)
|
||||
of a virtual hard disk or CD-ROM drive. It must be composed
|
||||
of 16 hexadecimal digits and must be unique (at least among
|
||||
disks of a single domain)
|
||||
of 16 hexadecimal digits.
|
||||
<span class='since'>Since 0.10.1</span>
|
||||
</dd>
|
||||
<dt><code>vendor</code></dt>
|
||||
@@ -2775,7 +2678,7 @@
|
||||
attribute provides the format type. For example, LXC
|
||||
supports a type of "loop", with a format of "raw" or
|
||||
"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".
|
||||
</li>
|
||||
</ul>
|
||||
@@ -2868,7 +2771,7 @@
|
||||
<dd>Drive addresses have the following additional
|
||||
attributes: <code>controller</code> (a 2-digit controller
|
||||
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).
|
||||
</dd>
|
||||
<dt><code>type='virtio-serial'</code></dt>
|
||||
@@ -3000,14 +2903,6 @@
|
||||
a sector is 512 bytes.
|
||||
<span class="since">Since 1.2.7 (QEMU and KVM only)</span>
|
||||
</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>
|
||||
<p>
|
||||
USB companion controllers have an optional
|
||||
@@ -3015,11 +2910,6 @@
|
||||
relationship of the companion to its master controller.
|
||||
A companion controller is on the same bus as its master, so
|
||||
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>
|
||||
|
||||
<pre>
|
||||
@@ -3039,13 +2929,7 @@
|
||||
<p>
|
||||
PCI controllers have an optional <code>model</code> attribute with
|
||||
possible values <code>pci-root</code>, <code>pcie-root</code>,
|
||||
<code>pcie-root-port</code>, <code>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>)
|
||||
<code>pci-bridge</code>, or <code>dmi-to-pci-bridge</code>.
|
||||
The root controllers (<code>pci-root</code> and <code>pcie-root</code>)
|
||||
have an optional <code>pcihole64</code> element specifying how big
|
||||
(in kilobytes, or in the unit specified by <code>pcihole64</code>'s
|
||||
@@ -3054,61 +2938,6 @@
|
||||
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>
|
||||
</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>
|
||||
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.
|
||||
@@ -3120,6 +2949,7 @@
|
||||
only refer to PCI buses provided by already specified PCI controllers.
|
||||
Leaving gaps in the PCI controller indexes might lead to an invalid
|
||||
configuration.
|
||||
(pci-root and pci-bridge <span class="since">since 1.0.5</span>)
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
@@ -3136,53 +2966,20 @@
|
||||
bus (for example, the machine types based on the Q35 chipset),
|
||||
the pcie-root controller with index=0 is auto-added to the
|
||||
domain's configuration. pcie-root has also no address, provides
|
||||
31 slots (numbered 1-31) that can be used to attach PCIe or PCI
|
||||
devices (although libvirt will never auto-assign a PCI device to
|
||||
a PCIe slot, it will allow manual specification of such an
|
||||
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
|
||||
31 slots (numbered 1-31) and can only be used to attach PCIe
|
||||
devices. In order to connect standard PCI devices on a system
|
||||
which has a pcie-root controller, a pci controller
|
||||
with <code>model='dmi-to-pci-bridge'</code> is automatically
|
||||
added, usually at the defacto standard location of slot=0x1e. A
|
||||
dmi-to-pci-bridge controller plugs into a PCIe slot (as provided
|
||||
by pcie-root), and itself provides 31 standard PCI slots (which
|
||||
also do not support device hotplug). In order to have
|
||||
added. A dmi-to-pci-bridge controller plugs into a PCIe slot (as
|
||||
provided by pcie-root), and itself provides 31 standard PCI
|
||||
slots (which are not hot-pluggable). In order to have
|
||||
hot-pluggable PCI slots in the guest system, a pci-bridge
|
||||
controller will also be automatically created and connected to
|
||||
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
|
||||
device. (<span class="since">since 1.1.2</span>).
|
||||
</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>
|
||||
...
|
||||
<devices>
|
||||
@@ -3283,7 +3080,7 @@
|
||||
<hostdev mode='subsystem' type='scsi' sgio='filtered' rawio='yes'>
|
||||
<source>
|
||||
<adapter name='scsi_host0'/>
|
||||
<address bus='0' target='0' unit='0'/>
|
||||
<address type='scsi' bus='0' target='0' unit='0'/>
|
||||
</source>
|
||||
<readonly/>
|
||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
@@ -3334,12 +3131,11 @@
|
||||
</dd>
|
||||
<dt>scsi</dt>
|
||||
<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
|
||||
optional <code>sgio</code> (<span class="since">since 1.0.6</span>)
|
||||
attribute indicates whether unprivileged SG_IO commands are
|
||||
filtered for the disk. Valid settings are "filtered" or
|
||||
"unfiltered", where the default is "filtered".
|
||||
The optional <code>rawio</code>
|
||||
is not used by host. The optional <code>sgio</code>
|
||||
(<span class="since">since 1.0.6</span>) attribute indicates
|
||||
whether the kernel will filter unprivileged SG_IO commands for
|
||||
the disk, valid settings are "filtered" or "unfiltered".
|
||||
The default is "filtered". The optional <code>rawio</code>
|
||||
(<span class="since">since 1.2.9</span>) attribute indicates
|
||||
whether the lun needs the rawio capability. Valid settings are
|
||||
"yes" or "no". See the rawio description within the
|
||||
@@ -3392,14 +3188,7 @@
|
||||
</dd>
|
||||
<dt>scsi</dt>
|
||||
<dd>SCSI devices are described by both the <code>adapter</code>
|
||||
and <code>address</code> elements. The <code>address</code>
|
||||
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.
|
||||
and <code>address</code> elements.
|
||||
<p>
|
||||
<span class="since">Since 1.2.8</span>, the <code>source</code>
|
||||
element of a SCSI device may contain the <code>protocol</code>
|
||||
@@ -3437,7 +3226,7 @@
|
||||
versions of qemu used a default of "off", while newer qemus
|
||||
have a default of "on"). <span class="since">Since
|
||||
0.9.7 (QEMU and KVM only)</span>. The optional
|
||||
<code>file</code> attribute contains an absolute path to a binary file
|
||||
<code>file</code> attribute is used to point to a binary file
|
||||
to be presented to the guest as the device's ROM BIOS. This
|
||||
can be useful, for example, to provide a PXE boot ROM for a
|
||||
virtual function of an sr-iov capable ethernet device (which
|
||||
@@ -3452,8 +3241,8 @@
|
||||
(starting with 0x) or octal (starting with 0) form.
|
||||
For PCI devices the element carries 4 attributes allowing to designate
|
||||
the device as can be found with the <code>lspci</code> or
|
||||
with <code>virsh nodedev-list</code>. For SCSI devices a 'drive'
|
||||
address type must be used. <a href="#elementsAddress">See above</a> for
|
||||
with <code>virsh
|
||||
nodedev-list</code>. <a href="#elementsAddress">See above</a> for
|
||||
more details on the address element.</dd>
|
||||
<dt><code>driver</code></dt>
|
||||
<dd>
|
||||
@@ -3496,8 +3285,7 @@
|
||||
<p>
|
||||
Block / character devices from the host can be passed through
|
||||
to the guest using the <code>hostdev</code> element. This is
|
||||
only possible with container based virtualization. Devices are specified
|
||||
by a fully qualified path.
|
||||
only possible with container based virtualization.
|
||||
<span class="since">since after 1.0.1 for LXC</span>:
|
||||
</p>
|
||||
|
||||
@@ -4258,30 +4046,6 @@
|
||||
<source address='192.168.0.1' port='5558'/>
|
||||
</interface>
|
||||
</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>
|
||||
|
||||
<h5><a name="elementsNICSModel">Setting the NIC model</a></h5>
|
||||
@@ -4369,11 +4133,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<span class="since">Since 1.0.5 (QEMU and KVM only, requires
|
||||
kernel 3.6 or newer)</span>
|
||||
</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>
|
||||
<dd>
|
||||
@@ -4433,16 +4192,13 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
</dd>
|
||||
<dt><code>queues</code></dt>
|
||||
<dd>
|
||||
The optional <code>queues</code> attribute controls the number
|
||||
of queues to be used for either
|
||||
<a href="http://www.linux-kvm.org/page/Multiqueue"> Multiqueue
|
||||
virtio-net</a> or <a href="#elementVhostuser">vhost-user</a> network
|
||||
interfaces. Use of multiple packet processing queues requires the
|
||||
interface having the <code><model type='virtio'/></code>
|
||||
element. Each queue will potentially be handled by a different
|
||||
The optional <code>queues</code> attribute controls the number of
|
||||
queues to be used for the<a href="http://www.linux-kvm.org/page/Multiqueue">
|
||||
Multiqueue virtio-net</a> feature. If the interface has <code><model
|
||||
type='virtio'/></code>, multiple packet processing queues can be
|
||||
created; each queue will potentially be handled by a different
|
||||
processor, resulting in much higher throughput.
|
||||
<span class="since">virtio-net since 1.0.6 (QEMU and KVM only)</span>
|
||||
<span class="since">vhost-user since 1.2.17 (QEMU and KVM only)</span>
|
||||
<span class="since">Since 1.0.6 (QEMU and KVM only)</span>
|
||||
</dd>
|
||||
<dt><code>host</code> offloading options</dt>
|
||||
<dd>
|
||||
@@ -4763,15 +4519,9 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<devices>
|
||||
<interface type='vhostuser'>
|
||||
<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'/>
|
||||
</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>
|
||||
...</pre>
|
||||
|
||||
@@ -4801,26 +4551,18 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<devices>
|
||||
<input type='mouse' 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>
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>input</code></dt>
|
||||
<dd>The <code>input</code> element has one mandatory attribute,
|
||||
the <code>type</code> whose value can be 'mouse', 'tablet',
|
||||
(<span class="since">since 1.2.2</span>) 'keyboard' or
|
||||
(<span class="since">since 1.3.0</span>) 'passthrough'.
|
||||
the <code>type</code> whose value can be 'mouse', 'tablet' or
|
||||
(<span class="since">since 1.2.2</span>) 'keyboard'.
|
||||
The tablet provides absolute cursor movement,
|
||||
while the mouse uses relative movement. The optional
|
||||
<code>bus</code> attribute can be used to refine the exact device type.
|
||||
It takes values "xen" (paravirtualized), "ps2" and "usb" or
|
||||
(<span class="since">since 1.3.0</span>) "virtio".</dd>
|
||||
It takes values "xen" (paravirtualized), "ps2" and "usb".</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
@@ -4828,10 +4570,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
sub-element <code><address></code> which can tie the
|
||||
device to a particular PCI
|
||||
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>
|
||||
|
||||
<h4><a name="elementsHub">Hub devices</a></h4>
|
||||
@@ -5165,20 +4903,19 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<p>
|
||||
The <code>model</code> element has a mandatory <code>type</code>
|
||||
attribute which takes the value "vga", "cirrus", "vmvga", "xen",
|
||||
"vbox", "qxl" (<span class="since">since 0.8.6</span>) or
|
||||
"virtio" (<span class="since">since 1.3.0</span>)
|
||||
depending on the hypervisor features available.
|
||||
"vbox", or "qxl" (<span class="since">since 0.8.6</span>) depending
|
||||
on the hypervisor features available.
|
||||
</p>
|
||||
<p>
|
||||
You can provide the amount of video memory in kibibytes (blocks of
|
||||
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
|
||||
two it will be rounded to closest one.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
For guest type of kvm the optional attribute <code>ram</code>
|
||||
@@ -5227,7 +4964,7 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<target port='0'/>
|
||||
</serial>
|
||||
<serial type='file'>
|
||||
<source path='/tmp/file' append='on'>
|
||||
<source path='/tmp/file'>
|
||||
<seclabel model='dac' relabel='no'/>
|
||||
</source>
|
||||
<target port='0'/>
|
||||
@@ -5263,14 +5000,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
the per-domain setting</a>.
|
||||
</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>
|
||||
Each character device element has an optional
|
||||
sub-element <code><address></code> which can tie the
|
||||
@@ -5321,16 +5050,12 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
specifies the port number. Ports are numbered starting from 0. There are
|
||||
usually 0, 1 or 2 serial ports. There is also an optional
|
||||
<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>,
|
||||
then <code>usb-serial</code> and last one is <code>pci-serial</code>.
|
||||
If <code>type</code> is missing, <code>isa-serial</code> will be used by
|
||||
default. For <code>usb-serial</code> an optional sub-element
|
||||
<code><address/></code> with <code>type='usb'</code> can tie the
|
||||
device to a particular controller, <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.
|
||||
which has two choices for its value, one is <code>isa-serial</code>,
|
||||
the other is <code>usb-serial</code>. If <code>type</code> is missing,
|
||||
<code>isa-serial</code> will be used by default. For <code>usb-serial</code>
|
||||
an optional sub-element <code><address></code> with
|
||||
<code>type='usb'</code> can tie the device to a particular controller,
|
||||
<a href="#elementsAddress">documented above</a>.
|
||||
</p>
|
||||
|
||||
<h6><a name="elementCharConsole">Console</a></h6>
|
||||
@@ -5761,12 +5486,11 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
|
||||
<dl>
|
||||
<dt><code>master</code></dt>
|
||||
<dd>Master device of the pair, that is passed to the hypervisor.
|
||||
Device is specified by a fully qualified path.</dd>
|
||||
<dd>Master device of the pair, that is passed to the hypervisor.</dd>
|
||||
|
||||
<dt><code>slave</code></dt>
|
||||
<dd>Slave device of the pair, that is passed to the clients for connection
|
||||
to the guest console. Device is specified by a fully qualified path.</dd>
|
||||
to the guest console.</dd>
|
||||
</dl>
|
||||
|
||||
<h4><a name="elementsSound">Sound devices</a></h4>
|
||||
@@ -5871,8 +5595,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<li> 'i6300esb' — the recommended device,
|
||||
emulating a PCI Intel 6300ESB </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>
|
||||
</dd>
|
||||
<dt><code>action</code></dt>
|
||||
@@ -5894,9 +5616,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<li>'none' — do nothing</li>
|
||||
<li>'dump' — automatically dump the guest
|
||||
<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>
|
||||
<p>
|
||||
Note 1: the 'shutdown' action requires that the guest
|
||||
@@ -5962,16 +5681,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<li>'xen' — default with Xen</li>
|
||||
</ul>
|
||||
</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>
|
||||
<dd>
|
||||
<p>
|
||||
@@ -6125,8 +5834,8 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<p>
|
||||
This backend type requires exclusive access to a TPM device on
|
||||
the host.
|
||||
An example for such a device is /dev/tpm0. The fully qualified file
|
||||
name is specified by path attribute of the <code>source</code> element.
|
||||
An example for such a device is /dev/tpm0. The filename is
|
||||
specified as path attribute of the <code>source</code> element.
|
||||
If no file name is specified then /dev/tpm0 is automatically used.
|
||||
</p>
|
||||
</dd>
|
||||
@@ -6172,45 +5881,24 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
guest.
|
||||
<span class="since">Since 1.2.1, QEMU and KVM only</span>
|
||||
</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>
|
||||
Example: usage of panic configuration
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<devices>
|
||||
<panic model='hyperv'/>
|
||||
<panic model='isa'>
|
||||
<panic>
|
||||
<address type='isa' iobase='0x505'/>
|
||||
</panic>
|
||||
</devices>
|
||||
...
|
||||
</pre>
|
||||
<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>
|
||||
<dd>
|
||||
<p>
|
||||
address of panic. The default ioport is 0x505. Most users
|
||||
don't need to specify an address, and doing so is forbidden
|
||||
altogether for pseries and hyperv models.
|
||||
don't need to specify an address.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -6253,8 +5941,8 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<dd>
|
||||
The optional <code>server</code> element can be used to configure a server
|
||||
socket the device is supposed to connect to. The optional
|
||||
<code>path</code> attribute specifies the absolute path to the unix socket
|
||||
and defaults to <code>/var/lib/libvirt/shmem/$shmem-$name-sock</code>.
|
||||
<code>path</code> attribute specifies the path to the unix socket and
|
||||
defaults to <code>/var/lib/libvirt/shmem/$shmem-$name-sock</code>.
|
||||
</dd>
|
||||
<dt><code>msi</code></dt>
|
||||
<dd>
|
||||
@@ -6346,9 +6034,8 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
added memory as a scaled integer.
|
||||
</p>
|
||||
<p>
|
||||
The <code>node</code> subelement configures the guest NUMA node to
|
||||
attach the memory to. The element shall be used only if the guest has
|
||||
NUMA nodes configured.
|
||||
The mandatory <code>node</code> subelement configures the guest NUMA
|
||||
node to attach the memory to.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -6482,45 +6169,6 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
being on a file system that lacks security labeling.
|
||||
</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>
|
||||
|
||||
<p>
|
||||
|
@@ -108,16 +108,7 @@
|
||||
the type is <code>virtual_functions</code>, then 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.
|
||||
for each VF on this PF.
|
||||
</dd>
|
||||
<dt><code>numa</code></dt>
|
||||
<dd>
|
||||
@@ -131,7 +122,7 @@
|
||||
This optional element contains information on PCI Express part of
|
||||
the device. For example, it can contain a child element
|
||||
<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
|
||||
are negotiated on the device initialization
|
||||
(<code>validity='sta'</code>). The <code>link</code> element then
|
||||
@@ -208,8 +199,6 @@
|
||||
<dt><code>txvlan</code></dt><dd>tx-vlan-offload</dd>
|
||||
<dt><code>ntuple</code></dt><dd>ntuple-filters</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>
|
||||
</dd>
|
||||
<dt><code>capability</code></dt>
|
||||
|
@@ -156,31 +156,22 @@
|
||||
require that if specified, the snapshot mode must not
|
||||
override any snapshot mode attached to the corresponding
|
||||
domain disk, while others like qemu allow this field to
|
||||
override the domain default.
|
||||
|
||||
<dl>
|
||||
<dt><code>source</code></dt>
|
||||
<dd>If the snapshot mode is external (whether specified
|
||||
or inherited), then there is an optional sub-element
|
||||
<code>source</code>, with an attribute <code>file</code>
|
||||
giving the name of the new file.
|
||||
If <code>source</code> is not
|
||||
given and the disk is backed by a local image file (not
|
||||
a block device or remote storage), a file name is
|
||||
generated that consists of the existing file name
|
||||
with anything after the trailing dot replaced by the
|
||||
snapshot name. Remember that with external
|
||||
snapshots, the original file name becomes the read-only
|
||||
snapshot, and the new file name contains the read-write
|
||||
delta of all disk changes since the snapshot.
|
||||
</dd>
|
||||
<dt><code>driver</code></dt>
|
||||
<dd>An optional sub-element <code>driver</code>,
|
||||
with an attribute <code>type</code> giving the driver type (such
|
||||
as qcow2), of the new file created by the external
|
||||
snapshot of the new file.
|
||||
</dd>
|
||||
</dl>
|
||||
override the domain default. If the snapshot mode is
|
||||
external (whether specified or inherited), then there is
|
||||
an optional sub-element <code>source</code>, with an
|
||||
attribute <code>file</code> giving the name, and an
|
||||
optional sub-element <code>driver</code>, with an
|
||||
attribute <code>type</code> giving the driver type (such
|
||||
as qcow2), of the new file created by the external
|
||||
snapshot of the new file. If <code>source</code> is not
|
||||
given and the disk is backed by a local image file (not
|
||||
a block device or remote storage), a file name is
|
||||
generated that consists of the existing file name
|
||||
with anything after the trailing dot replaced by the
|
||||
snapshot name. Remember that with external
|
||||
snapshots, the original file name becomes the read-only
|
||||
snapshot, and the new file name contains the read-write
|
||||
delta of all disk changes since the snapshot.
|
||||
|
||||
<span class="since">Since 1.2.2</span> the <code>disk</code> element
|
||||
supports an optional attribute <code>type</code> if the
|
||||
|
@@ -78,7 +78,7 @@
|
||||
...
|
||||
<source>
|
||||
<host name="iscsi.example.com"/>
|
||||
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
||||
<device path="demo-target"/>
|
||||
<auth type='chap' username='myname'>
|
||||
<secret usage='mycluster_myname'/>
|
||||
</auth>
|
||||
@@ -118,20 +118,15 @@
|
||||
(pool types <code>fs</code>, <code>logical</code>, <code>disk</code>,
|
||||
<code>iscsi</code>, <code>zfs</code>).
|
||||
May be repeated multiple times depending on backend driver. Contains
|
||||
a single attribute <code>path</code> which is either the fully
|
||||
qualified path to the block device node or for <code>iscsi</code>
|
||||
the iSCSI Qualified Name (IQN).
|
||||
<span class="since">Since 0.4.1</span></dd>
|
||||
a single attribute <code>path</code> which is the fully qualified
|
||||
path to the block device node. <span class="since">Since 0.4.1</span></dd>
|
||||
<dt><code>dir</code></dt>
|
||||
<dd>Provides the source for pools backed by directories (pool
|
||||
types <code>dir</code>, <code>netfs</code>, <code>gluster</code>),
|
||||
or optionally to select a subdirectory
|
||||
type <code>dir</code>), or optionally to select a subdirectory
|
||||
within a pool that resembles a filesystem (pool
|
||||
type <code>gluster</code>). May
|
||||
only occur once. Contains a single attribute <code>path</code>
|
||||
which is the fully qualified path to the backing directory or
|
||||
for a <code>netfs</code> pool type using <code>format</code>
|
||||
type "cifs", the path to the Samba share without the leading slash.
|
||||
which is the fully qualified path to the backing directory.
|
||||
<span class="since">Since 0.4.1</span></dd>
|
||||
<dt><code>adapter</code></dt>
|
||||
<dd>Provides the source for pools backed by SCSI adapters (pool
|
||||
@@ -297,15 +292,7 @@
|
||||
or <code>device</code> element. Contains an attribute <code>name</code>
|
||||
which is the hostname or IP address of the server. May optionally
|
||||
contain a <code>port</code> attribute for the protocol specific
|
||||
port number. Duplicate storage pool definition checks may perform
|
||||
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>
|
||||
port number. <span class="since">Since 0.4.1</span></dd>
|
||||
<dt><code>auth</code></dt>
|
||||
<dd>If present, the <code>auth</code> element provides the
|
||||
authentication credentials needed to access the source by the
|
||||
@@ -392,36 +379,26 @@
|
||||
<dl>
|
||||
<dt><code>path</code></dt>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace, as an absolute path. For a
|
||||
filesystem/directory based pool it will be a fully qualified name of
|
||||
the directory in which volumes will be created. For device based pools
|
||||
it will be a fully qualified name of the directory in which
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferable to use a stable location such as one
|
||||
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>
|
||||
</dd>
|
||||
<dt><code>permissions</code></dt>
|
||||
<dd>This is currently only useful for directory or filesystem based
|
||||
pools, which are mapped as a directory into the local filesystem
|
||||
namespace. It provides information about the permissions to use for the
|
||||
final directory when the pool is built. There are 4 child elements.
|
||||
The <code>mode</code> element contains the octal permission set.
|
||||
The <code>mode</code> defaults to 0755 when not provided.
|
||||
The <code>owner</code> element contains the numeric user ID.
|
||||
The <code>group</code> element contains the numeric group ID.
|
||||
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.
|
||||
final directory when the pool is built. The
|
||||
<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.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>
|
||||
<dt><code>timestamps</code></dt>
|
||||
<dd>Provides timing information about the volume. Up to four
|
||||
@@ -595,21 +572,15 @@
|
||||
volume format type value and the default pool format will be used.
|
||||
<span class="since">Since 0.4.1</span></dd>
|
||||
<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
|
||||
or filesystem based pools, where the volumes allocated are simple
|
||||
files. For pools where the volumes are device nodes, the hotplug
|
||||
scripts determine permissions. There are 4 child elements.
|
||||
The <code>mode</code> element contains the octal permission set.
|
||||
The <code>mode</code> defaults to 0600 when not provided.
|
||||
The <code>owner</code> element contains the numeric user ID.
|
||||
The <code>group</code> element contains the numeric group ID.
|
||||
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.
|
||||
scripts determine permissions. It contains 4 child elements. The
|
||||
<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.4.1</span>
|
||||
</dd>
|
||||
<dt><code>compat</code></dt>
|
||||
@@ -677,8 +648,11 @@
|
||||
<span class="since">Since 0.6.0</span></dd>
|
||||
<dt><code>permissions</code></dt>
|
||||
<dd>Provides information about the permissions of the backing file.
|
||||
See volume <code>permissions</code> documentation for explanation
|
||||
of individual fields.
|
||||
It contains 4 child elements. The
|
||||
<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>
|
||||
</dd>
|
||||
</dl>
|
||||
|
@@ -16,13 +16,6 @@
|
||||
along with other libvirt-related repositories
|
||||
(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
|
||||
detection enabled. You need a one-time setup of:</p>
|
||||
<pre>
|
||||
@@ -171,18 +164,6 @@
|
||||
<pre>
|
||||
./qemuxml2xmltest
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If you are adding new test cases, or making changes that alter
|
||||
existing test output, you can use the environment variable
|
||||
VIR_TEST_REGENERATE_OUTPUT to quickly update the saved test data.
|
||||
Of course you still need to review the changes VERY CAREFULLY to
|
||||
ensure they are correct.
|
||||
</p>
|
||||
<pre>
|
||||
VIR_TEST_REGENERATE_OUTPUT=1 ./qemuxml2argvtest
|
||||
</pre>
|
||||
|
||||
<p>There is also a <code>./run</code> script at the top level,
|
||||
to make it easier to run programs that have not yet been
|
||||
installed, as well as to wrap invocations of various tests
|
||||
|
@@ -72,7 +72,7 @@
|
||||
The <a href="http://libvirt.org/drvphyp.html">IBM PowerVM</a> hypervisor
|
||||
</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>
|
||||
The <a href="http://libvirt.org/drvbhyve.html">Bhyve</a> hypervisor
|
||||
|
@@ -82,9 +82,7 @@
|
||||
<ul>
|
||||
<li>Daemon Startup
|
||||
<p>The daemon initialization processing will declare itself
|
||||
as a daemon via a virNetDaemonNew() call, then creates new server
|
||||
using virNetServerNew() and adds that server to the main daemon
|
||||
struct with virNetDaemonAddServer() call. It will then use
|
||||
as a server via a virNetServerNew() call, then use
|
||||
virDriverLoadModule() to find/load all known drivers,
|
||||
set up an RPC server program using the <code>remoteProcs[]</code>
|
||||
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
|
||||
flexible way to spawn commands, which prevents the most
|
||||
common errors & is easy to code against. This
|
||||
code is provided in the <code>src/util/vircommand.h</code>
|
||||
header which can be imported using <code>#include "vircommand.h"</code>
|
||||
code is provided in the <code>src/util/command.h</code>
|
||||
header which can be imported using <code>#include "command.h"</code>
|
||||
</p>
|
||||
|
||||
<h3><a name="initial">Defining commands in libvirt</a></h3>
|
||||
|
@@ -532,13 +532,6 @@
|
||||
calls in parallel, with dispatch across multiple worker threads.
|
||||
</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>
|
||||
<dd>The virNetServerMDNS APIs are used to advertise a server
|
||||
across the local network, enabling clients to automatically
|
||||
|
@@ -104,15 +104,12 @@
|
||||
<pre>
|
||||
x:name (log message only)
|
||||
x:+name (log message + stack trace)</pre>
|
||||
<p>where <code>name</code> is a string which is matched against
|
||||
the category given in the VIR_LOG_INIT() at the top of each
|
||||
libvirt source file, e.g., <code>remote</code>, <code>qemu</code>,
|
||||
or <code>util.json</code> (the name in the filter can be a
|
||||
substring of the full category name, in order to match multiple
|
||||
similar categories), the optional <code>+</code> prefix tells
|
||||
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>
|
||||
<p>where <code>name</code> is a string which is matched against source
|
||||
file name, e.g., <code>remote</code>, <code>qemu</code>, or
|
||||
<code>util/json</code>, the optional <code>+</code> prefix tells 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>
|
||||
<li>1: DEBUG</li>
|
||||
<li>2: INFO</li>
|
||||
|
@@ -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
20022
docs/news.html.in
20022
docs/news.html.in
File diff suppressed because it is too large
Load Diff
@@ -1,46 +1,39 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
<xsl:output method="text" encoding="UTF-8"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:text>
|
||||
NEWS file for libvirt
|
||||
|
||||
Note that this file contains only the most recent releases; for the full
|
||||
list, please visit:
|
||||
Note that this is automatically generated from the news webpage at:
|
||||
http://libvirt.org/news.html
|
||||
|
||||
</xsl:text>
|
||||
<xsl:apply-templates select="html:html/html:body/*"/>
|
||||
<xsl:apply-templates select="html/body/*"/>
|
||||
</xsl:template>
|
||||
<xsl:template match="h1"/>
|
||||
|
||||
<xsl:template match="html:h1"/>
|
||||
<xsl:template match="html:p"/>
|
||||
|
||||
<xsl:template match="html:h3">
|
||||
<xsl:template match="h3">
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:apply-templates/>
|
||||
<xsl:text>:
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="html:ul">
|
||||
<xsl:apply-templates select="html:li"/>
|
||||
<xsl:template match="ul">
|
||||
<xsl:apply-templates select=".//li"/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="html:li">
|
||||
<xsl:template match="li">
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="html:a">
|
||||
<xsl:template match="a">
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text> at
|
||||
</xsl:text>
|
||||
@@ -48,5 +41,6 @@
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="p">
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@@ -6,7 +6,8 @@
|
||||
|
||||
<h2>Presentation</h2>
|
||||
<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>
|
||||
<p> The PHP bindings code source is now maintained in a <a
|
||||
@@ -25,7 +26,7 @@ It can also be browsed at
|
||||
|
||||
<p></p>
|
||||
<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>.
|
||||
|
||||
</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)
|
@@ -349,9 +349,8 @@
|
||||
</define>
|
||||
|
||||
<define name="PortNumber">
|
||||
<data type="int">
|
||||
<data type="short">
|
||||
<param name="minInclusive">-1</param>
|
||||
<param name="maxInclusive">65535</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
|
@@ -262,8 +262,7 @@
|
||||
<element name='os_type'>
|
||||
<choice>
|
||||
<value>xen</value> <!-- Xen 3.0 pv -->
|
||||
<value>linux</value> <!-- same as 'xen' - meant to be legacy,
|
||||
but is also used by phyp driver -->
|
||||
<value>linux</value> <!-- same as 'xen' - legacy -->
|
||||
<value>hvm</value> <!-- unmodified OS -->
|
||||
<value>exe</value> <!-- For container based virt -->
|
||||
<value>uml</value> <!-- user mode linux -->
|
||||
|
@@ -30,8 +30,8 @@
|
||||
<define name="domain">
|
||||
<element name="domain">
|
||||
<ref name="hvs"/>
|
||||
<ref name="ids"/>
|
||||
<interleave>
|
||||
<ref name="ids"/>
|
||||
<optional>
|
||||
<ref name="title"/>
|
||||
</optional>
|
||||
@@ -67,12 +67,6 @@
|
||||
<optional>
|
||||
<ref name='qemucmdline'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='lxcsharens'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='keywrap'/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -203,7 +197,7 @@
|
||||
<value>hyperv</value>
|
||||
<value>vbox</value>
|
||||
<value>phyp</value>
|
||||
<value>vz</value>
|
||||
<value>parallels</value>
|
||||
<value>bhyve</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
@@ -333,9 +327,29 @@
|
||||
</define>
|
||||
<define name="ostypehvm">
|
||||
<element name="type">
|
||||
<optional>
|
||||
<choice>
|
||||
<ref name="hvmx86"/>
|
||||
<ref name="hvmmips"/>
|
||||
<ref name="hvmsparc"/>
|
||||
<ref name="hvmppc"/>
|
||||
<ref name="hvmppc64"/>
|
||||
<ref name="hvms390"/>
|
||||
<ref name="hvmarm"/>
|
||||
<ref name="hvmaarch64"/>
|
||||
</choice>
|
||||
</optional>
|
||||
<value>hvm</value>
|
||||
</element>
|
||||
</define>
|
||||
<define name="hvmx86">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<ref name="archnames"/>
|
||||
<choice>
|
||||
<value>i686</value>
|
||||
<value>x86_64</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
@@ -345,16 +359,147 @@
|
||||
</data>
|
||||
</attribute>
|
||||
</optional>
|
||||
<value>hvm</value>
|
||||
</element>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmmips">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<value>mips</value>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<value>mips</value>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmsparc">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<value>sparc</value>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<value>sun4m</value>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmppc">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<value>ppc</value>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<choice>
|
||||
<value>g3beige</value>
|
||||
<value>mac99</value>
|
||||
<value>prep</value>
|
||||
<value>ppce500</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmppc64">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<choice>
|
||||
<value>ppc64</value>
|
||||
<value>ppc64le</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<choice>
|
||||
<value>pseries</value>
|
||||
<value>pseries-2.1</value>
|
||||
<value>pseries-2.2</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvms390">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<choice>
|
||||
<value>s390</value>
|
||||
<value>s390x</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<choice>
|
||||
<value>s390</value>
|
||||
<value>s390-virtio</value>
|
||||
<value>s390-ccw</value>
|
||||
<value>s390-ccw-virtio</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmarm">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<choice>
|
||||
<value>armv7l</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<data type="string">
|
||||
<param name="pattern">[a-zA-Z0-9_\.\-]+</param>
|
||||
</data>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
<define name="hvmaarch64">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<choice>
|
||||
<value>aarch64</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="machine">
|
||||
<data type="string">
|
||||
<param name="pattern">[a-zA-Z0-9_\.\-]+</param>
|
||||
</data>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
|
||||
<define name="osexe">
|
||||
<element name="os">
|
||||
<element name="type">
|
||||
<optional>
|
||||
<attribute name="arch">
|
||||
<ref name="archnames"/>
|
||||
<choice>
|
||||
<value>i686</value>
|
||||
<value>x86_64</value>
|
||||
<value>ppc</value>
|
||||
<value>ppc64</value>
|
||||
<value>mips</value>
|
||||
<value>sparc</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<value>exe</value>
|
||||
@@ -373,25 +518,6 @@
|
||||
</interleave>
|
||||
</element>
|
||||
</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>
|
||||
|
||||
<!--
|
||||
The Identifiers can be:
|
||||
- an optional id attribute with a number on the domain element
|
||||
@@ -548,18 +674,6 @@
|
||||
</element>
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<element name="iothreadids">
|
||||
<zeroOrMore>
|
||||
<element name="iothread">
|
||||
<attribute name="id">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="blkiotune"/>
|
||||
</optional>
|
||||
@@ -1202,44 +1316,37 @@
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
<ref name="diskSource"/>
|
||||
<ref name="diskSpecsExtra"/>
|
||||
</interleave>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="device">
|
||||
<value>lun</value>
|
||||
<choice>
|
||||
<value>lun</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<ref name="rawIO"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="sgIO"/>
|
||||
<attribute name="sgio">
|
||||
<choice>
|
||||
<value>filtered</value>
|
||||
<value>unfiltered</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
<choice>
|
||||
<ref name="diskSourceNetwork"/>
|
||||
<ref name="diskSourceBlock"/>
|
||||
<ref name="diskSourceVolume"/>
|
||||
</choice>
|
||||
<ref name="diskSpecsExtra"/>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<ref name="snapshot"/>
|
||||
</optional>
|
||||
<interleave>
|
||||
<ref name="diskSource"/>
|
||||
<ref name="storageSourceExtra"/>
|
||||
<ref name="diskBackingChain"/>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="diskSpecsExtra">
|
||||
<interleave>
|
||||
<ref name="storageSourceExtra"/>
|
||||
<ref name="diskBackingChain"/>
|
||||
</interleave>
|
||||
</define>
|
||||
|
||||
<define name="diskBackingChain">
|
||||
<choice>
|
||||
<ref name="diskBackingStore"/>
|
||||
@@ -1734,45 +1841,6 @@
|
||||
<attribute name="type">
|
||||
<value>pci</value>
|
||||
</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"-->
|
||||
<choice>
|
||||
<group>
|
||||
@@ -1793,9 +1861,6 @@
|
||||
<choice>
|
||||
<value>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>
|
||||
</attribute>
|
||||
</group>
|
||||
@@ -1835,9 +1900,6 @@
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ioeventfd"/>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
@@ -2100,7 +2162,7 @@
|
||||
<interleave>
|
||||
<element name="source">
|
||||
<attribute name="network">
|
||||
<text/>
|
||||
<ref name="deviceName"/>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="portgroup">
|
||||
@@ -2179,33 +2241,6 @@
|
||||
<ref name="interface-options"/>
|
||||
</interleave>
|
||||
</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>
|
||||
<attribute name="type">
|
||||
<value>server</value>
|
||||
@@ -2921,7 +2956,6 @@
|
||||
<value>vmvga</value>
|
||||
<value>xen</value>
|
||||
<value>vbox</value>
|
||||
<value>virtio</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<group>
|
||||
@@ -3139,7 +3173,6 @@
|
||||
<choice>
|
||||
<value>isa-serial</value>
|
||||
<value>usb-serial</value>
|
||||
<value>pci-serial</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</define>
|
||||
@@ -3252,11 +3285,6 @@
|
||||
<optional>
|
||||
<attribute name="slave"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="append">
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<ref name='devSeclabel'/>
|
||||
</zeroOrMore>
|
||||
@@ -3342,7 +3370,6 @@
|
||||
<choice>
|
||||
<value>i6300esb</value>
|
||||
<value>ib700</value>
|
||||
<value>diag288</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
@@ -3354,7 +3381,6 @@
|
||||
<value>pause</value>
|
||||
<value>none</value>
|
||||
<value>dump</value>
|
||||
<value>inject-nmi</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
@@ -3420,11 +3446,6 @@
|
||||
<value>none</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="autodeflate">
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
<optional>
|
||||
<ref name="alias"/>
|
||||
@@ -3589,40 +3610,22 @@
|
||||
|
||||
<define name="input">
|
||||
<element name="input">
|
||||
<choice>
|
||||
<group>
|
||||
<attribute name="type">
|
||||
<choice>
|
||||
<value>tablet</value>
|
||||
<value>mouse</value>
|
||||
<value>keyboard</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="bus">
|
||||
<choice>
|
||||
<value>ps2</value>
|
||||
<value>usb</value>
|
||||
<value>xen</value>
|
||||
<value>virtio</value>
|
||||
</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>
|
||||
<attribute name="type">
|
||||
<choice>
|
||||
<value>tablet</value>
|
||||
<value>mouse</value>
|
||||
<value>keyboard</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="bus">
|
||||
<choice>
|
||||
<value>ps2</value>
|
||||
<value>usb</value>
|
||||
<value>xen</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="alias"/>
|
||||
</optional>
|
||||
@@ -3802,7 +3805,12 @@
|
||||
<value>scsi</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<ref name="sgIO"/>
|
||||
<attribute name="sgio">
|
||||
<choice>
|
||||
<value>filtered</value>
|
||||
<value>unfiltered</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="rawIO"/>
|
||||
@@ -3939,10 +3947,10 @@
|
||||
<ref name="driveBus"/>
|
||||
</attribute>
|
||||
<attribute name="target">
|
||||
<ref name="driveSCSITarget"/>
|
||||
<ref name="driveTarget"/>
|
||||
</attribute>
|
||||
<attribute name="unit">
|
||||
<ref name="driveSCSIUnit"/>
|
||||
<ref name="driveUnit"/>
|
||||
</attribute>
|
||||
</define>
|
||||
<define name="usbportaddress">
|
||||
@@ -4073,14 +4081,14 @@
|
||||
<optional>
|
||||
<ref name="nvram"/>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<optional>
|
||||
<ref name="panic"/>
|
||||
</zeroOrMore>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</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
|
||||
-->
|
||||
<define name="features">
|
||||
@@ -4141,24 +4149,6 @@
|
||||
<optional>
|
||||
<ref name="pmu"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="vmport">
|
||||
<optional>
|
||||
<attribute name="state">
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="gic">
|
||||
<optional>
|
||||
<attribute name="version">
|
||||
<ref name="positiveInteger"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</optional>
|
||||
@@ -4355,18 +4345,6 @@
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</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>
|
||||
</element>
|
||||
</define>
|
||||
@@ -4392,17 +4370,6 @@
|
||||
</choice>
|
||||
</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">
|
||||
<data type="string">
|
||||
<param name='pattern'>[a-zA-Z0-9/\-_\. \(\)]+</param>
|
||||
@@ -4561,11 +4528,9 @@
|
||||
<element name="size">
|
||||
<ref name="scaledInteger"/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name="node">
|
||||
<ref name="unsignedInt"/>
|
||||
</element>
|
||||
</optional>
|
||||
<element name="node">
|
||||
<ref name="unsignedInt"/>
|
||||
</element>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -5118,45 +5083,6 @@
|
||||
</element>
|
||||
</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">
|
||||
<element name="metadata">
|
||||
<zeroOrMore>
|
||||
@@ -5228,7 +5154,9 @@
|
||||
</define>
|
||||
<!-- Memory as an attribute is in KiB, no way to express a unit -->
|
||||
<define name="memoryKB">
|
||||
<data type="unsignedLong"/>
|
||||
<data type="unsignedInt">
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="domainName">
|
||||
<data type="string">
|
||||
@@ -5248,10 +5176,9 @@
|
||||
</data>
|
||||
</define>
|
||||
<define name="addrIPorName">
|
||||
<choice>
|
||||
<ref name="ipAddr"/>
|
||||
<ref name="dnsName"/>
|
||||
</choice>
|
||||
<data type="string">
|
||||
<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>
|
||||
</data>
|
||||
</define>
|
||||
<define name="usbIdDefault">
|
||||
<data type="string">
|
||||
@@ -5298,21 +5225,11 @@
|
||||
<param name="pattern">[0-9]{1,2}</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="driveSCSITarget">
|
||||
<data type="string">
|
||||
<param name="pattern">[0-9]{1,10}</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="driveUnit">
|
||||
<data type="string">
|
||||
<param name="pattern">[0-9]{1,2}</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="driveSCSIUnit">
|
||||
<data type="string">
|
||||
<param name="pattern">[0-9]{1,20}</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="featureName">
|
||||
<data type="string">
|
||||
<param name='pattern'>[a-zA-Z0-9\-_\.]+</param>
|
||||
@@ -5388,15 +5305,6 @@
|
||||
</define>
|
||||
<define name="panic">
|
||||
<element name="panic">
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>isa</value>
|
||||
<value>pseries</value>
|
||||
<value>hyperv</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="address"/>
|
||||
</optional>
|
||||
@@ -5407,12 +5315,4 @@
|
||||
<ref name="virYesNo"/>
|
||||
</attribute>
|
||||
</define>
|
||||
<define name="sgIO">
|
||||
<attribute name="sgio">
|
||||
<choice>
|
||||
<value>filtered</value>
|
||||
<value>unfiltered</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</define>
|
||||
</grammar>
|
||||
|
@@ -323,22 +323,22 @@
|
||||
<value>ipv4</value>
|
||||
</attribute>
|
||||
<interleave>
|
||||
<optional>
|
||||
<choice>
|
||||
<ref name="dhcp-element"/>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<element name="ip">
|
||||
<attribute name="address"><ref name="ipv4Addr"/></attribute>
|
||||
<group>
|
||||
<element name="ip">
|
||||
<attribute name="address"><ref name="ipv4Addr"/></attribute>
|
||||
<optional>
|
||||
<attribute name="prefix"><ref name="ipv4Prefix"/></attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<optional>
|
||||
<attribute name="prefix"><ref name="ipv4Prefix"/></attribute>
|
||||
<element name="route">
|
||||
<attribute name="gateway"><ref name="ipv4Addr"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
<optional>
|
||||
<element name="route">
|
||||
<attribute name="gateway"><ref name="ipv4Addr"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
@@ -152,11 +152,9 @@
|
||||
</define>
|
||||
|
||||
<define name="bandwidth-attributes">
|
||||
<optional>
|
||||
<attribute name="average">
|
||||
<ref name="speed"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<attribute name="average">
|
||||
<ref name="speed"/>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="peak">
|
||||
<ref name="speed"/>
|
||||
|
@@ -98,27 +98,21 @@
|
||||
<optional>
|
||||
<element name='permissions'>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name='mode'>
|
||||
<ref name='octalMode'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='owner'>
|
||||
<choice>
|
||||
<ref name='unsignedInt'/>
|
||||
<value>-1</value>
|
||||
</choice>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='group'>
|
||||
<choice>
|
||||
<ref name='unsignedInt'/>
|
||||
<value>-1</value>
|
||||
</choice>
|
||||
</element>
|
||||
</optional>
|
||||
<element name='mode'>
|
||||
<ref name='octalMode'/>
|
||||
</element>
|
||||
<element name='owner'>
|
||||
<choice>
|
||||
<ref name='unsignedInt'/>
|
||||
<value>-1</value>
|
||||
</choice>
|
||||
</element>
|
||||
<element name='group'>
|
||||
<choice>
|
||||
<ref name='unsignedInt'/>
|
||||
<value>-1</value>
|
||||
</choice>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='label'>
|
||||
<text/>
|
||||
|
@@ -314,7 +314,7 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfonetrelativepath'>
|
||||
<define name='sourceinfonetfsgluster'>
|
||||
<element name='dir'>
|
||||
<attribute name='path'>
|
||||
<ref name='dirPath'/>
|
||||
@@ -400,6 +400,7 @@
|
||||
<choice>
|
||||
<value>auto</value>
|
||||
<value>nfs</value>
|
||||
<value>cifs</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
@@ -412,7 +413,7 @@
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>unknown</value>
|
||||
<value>none</value>
|
||||
<value>dos</value>
|
||||
<value>dvh</value>
|
||||
<value>gpt</value>
|
||||
@@ -487,13 +488,10 @@
|
||||
<group>
|
||||
<interleave>
|
||||
<ref name='sourceinfohost'/>
|
||||
<ref name='sourceinfonetrelativepath'/>
|
||||
<ref name='sourceinfonetfsgluster'/>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>cifs</value>
|
||||
<value>glusterfs</value>
|
||||
</choice>
|
||||
<value>glusterfs</value>
|
||||
</attribute>
|
||||
</element>
|
||||
<optional>
|
||||
|
@@ -9,12 +9,11 @@
|
||||
$scope = ltrim ($scope);
|
||||
if ($scope == "")
|
||||
$scope = "any";
|
||||
$querystr = htmlspecialchars($query, ENT_QUOTES, 'UTF-8');
|
||||
?>
|
||||
|
||||
<form action="<?php echo $_SERVER['PHP_SELF'], "?query=", rawurlencode($query) ?>"
|
||||
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">
|
||||
<option value="any">Search All</option>
|
||||
<option value="API" <?php if ($scope == 'API') print "selected='selected'"?>>Only the APIs</option>
|
||||
@@ -201,7 +200,7 @@
|
||||
}
|
||||
mysql_close($link);
|
||||
$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");
|
||||
|
||||
if ($nb > 0) {
|
||||
|
@@ -259,8 +259,8 @@
|
||||
<span>Driver for IBM PowerVM</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="drvvirtuozzo.html">Virtuozzo</a>
|
||||
<span>Driver for Virtuozzo</span>
|
||||
<a href="drvparallels.html">Parallels</a>
|
||||
<span>Driver for Parallels Cloud Server</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="drvbhyve.html">Bhyve</a>
|
||||
|
@@ -291,8 +291,7 @@
|
||||
the <a href="#StorageBackendGluster">gluster</a> pool.)
|
||||
</li>
|
||||
<li>
|
||||
<code>cifs</code> - use the SMB (samba) or CIFS file system.
|
||||
The mount will use "-o guest" to mount the directory anonymously.
|
||||
<code>cifs</code> - use the SMB (samba) or CIFS file system
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -440,12 +439,6 @@
|
||||
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
|
||||
</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>
|
||||
<pre>
|
||||
@@ -453,7 +446,7 @@
|
||||
<name>virtimages</name>
|
||||
<source>
|
||||
<host name="iscsi.example.com"/>
|
||||
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
||||
<device path="demo-target"/>
|
||||
</source>
|
||||
<target>
|
||||
<path>/dev/disk/by-path</path>
|
||||
@@ -505,8 +498,7 @@
|
||||
<h2><a name="StorageBackendMultipath">Multipath pools</a></h2>
|
||||
<p>
|
||||
This provides a pool that contains all the multipath devices on the
|
||||
host. Therefore, only one Multipath pool may be configured per host.
|
||||
Volume creating is not supported via the libvirt APIs.
|
||||
host. Volume creating is not supported via the libvirt APIs.
|
||||
The target element is actually ignored, but one is required to appease
|
||||
the libvirt XML parser.<br/>
|
||||
<br/>
|
||||
@@ -550,9 +542,7 @@
|
||||
backend supports cephx authentication for communication with the
|
||||
Ceph cluster. Storing the cephx authentication key is done with
|
||||
the libvirt secret mechanism. The UUID in the example pool input
|
||||
refers to the UUID of the stored secret.<br />
|
||||
The port attribute for a Ceph monitor does not have to be provided.
|
||||
If not provided librados will use the default Ceph monitor port.
|
||||
refers to the UUID of the stored secret.
|
||||
<span class="since">Since 0.9.13</span>
|
||||
</p>
|
||||
|
||||
@@ -562,8 +552,8 @@
|
||||
<name>myrbdpool</name>
|
||||
<source>
|
||||
<name>rbdpool</name>
|
||||
<host name='1.2.3.4'/>
|
||||
<host name='my.ceph.monitor'/>
|
||||
<host name='1.2.3.4' port='6789'/>
|
||||
<host name='my.ceph.monitor' port='6789'/>
|
||||
<host name='third.ceph.monitor' port='6789'/>
|
||||
<auth username='admin' type='ceph'>
|
||||
<secret uuid='2ec115d7-3a88-3ceb-bc12-0ac909a6fd87'/>
|
||||
|
@@ -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
|
@@ -59,7 +59,6 @@
|
||||
# access to firmware's etc
|
||||
/usr/share/kvm/** r,
|
||||
/usr/share/qemu/** r,
|
||||
/usr/share/qemu-kvm/** r,
|
||||
/usr/share/bochs/** r,
|
||||
/usr/share/openbios/** r,
|
||||
/usr/share/openhackware/** r,
|
||||
@@ -74,13 +73,9 @@
|
||||
# the various binaries
|
||||
/usr/bin/kvm rmix,
|
||||
/usr/bin/qemu 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-cris rmix,
|
||||
/usr/bin/qemu-system-i386 rmix,
|
||||
/usr/bin/qemu-system-lm32 rmix,
|
||||
/usr/bin/qemu-system-m68k rmix,
|
||||
/usr/bin/qemu-system-microblaze rmix,
|
||||
/usr/bin/qemu-system-microblazeel rmix,
|
||||
@@ -88,22 +83,14 @@
|
||||
/usr/bin/qemu-system-mips64 rmix,
|
||||
/usr/bin/qemu-system-mips64el 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-ppc64 rmix,
|
||||
/usr/bin/qemu-system-ppcemb rmix,
|
||||
/usr/bin/qemu-system-s390x rmix,
|
||||
/usr/bin/qemu-system-sh4 rmix,
|
||||
/usr/bin/qemu-system-sh4eb rmix,
|
||||
/usr/bin/qemu-system-sparc 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-xtensa rmix,
|
||||
/usr/bin/qemu-system-xtensaeb rmix,
|
||||
/usr/bin/qemu-aarch64 rmix,
|
||||
/usr/bin/qemu-alpha rmix,
|
||||
/usr/bin/qemu-arm rmix,
|
||||
/usr/bin/qemu-armeb rmix,
|
||||
@@ -113,36 +100,24 @@
|
||||
/usr/bin/qemu-microblaze rmix,
|
||||
/usr/bin/qemu-microblazeel rmix,
|
||||
/usr/bin/qemu-mips rmix,
|
||||
/usr/bin/qemu-mips64 rmix,
|
||||
/usr/bin/qemu-mips64el 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-ppc64 rmix,
|
||||
/usr/bin/qemu-ppc64abi32 rmix,
|
||||
/usr/bin/qemu-ppc64le rmix,
|
||||
/usr/bin/qemu-s390x rmix,
|
||||
/usr/bin/qemu-sh4 rmix,
|
||||
/usr/bin/qemu-sh4eb rmix,
|
||||
/usr/bin/qemu-sparc rmix,
|
||||
/usr/bin/qemu-sparc64 rmix,
|
||||
/usr/bin/qemu-sparc32plus rmix,
|
||||
/usr/bin/qemu-sparc64 rmix,
|
||||
/usr/bin/qemu-unicore32 rmix,
|
||||
/usr/bin/qemu-x86_64 rmix,
|
||||
/usr/{lib,lib64}/qemu/block-curl.so mr,
|
||||
/usr/{lib,lib64}/qemu/block-rbd.so mr,
|
||||
|
||||
# for save and resume
|
||||
/bin/dash rmix,
|
||||
/bin/dd rmix,
|
||||
/bin/cat rmix,
|
||||
|
||||
# for restore
|
||||
/bin/bash rmix,
|
||||
|
||||
# for usb access
|
||||
/dev/bus/usb/ r,
|
||||
/etc/udev/udev.conf r,
|
||||
|
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>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
#include <libvirt/libvirt.h>
|
||||
|
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)
|
@@ -346,8 +346,8 @@ do_top(virConnectPtr conn,
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
virTypedParamsFree(now_params, nparams * max_id);
|
||||
virTypedParamsFree(then_params, nparams * max_id);
|
||||
virTypedParamsFree(now_params, now_nparams * max_id);
|
||||
virTypedParamsFree(then_params, then_nparams * max_id);
|
||||
if (dom)
|
||||
virDomainFree(dom);
|
||||
return ret;
|
||||
|
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,14 +108,10 @@ static const char *eventDetailToString(int event, int detail) {
|
||||
ret = "Added";
|
||||
else if (detail == VIR_DOMAIN_EVENT_DEFINED_UPDATED)
|
||||
ret = "Updated";
|
||||
else if (detail == VIR_DOMAIN_EVENT_DEFINED_RENAMED)
|
||||
ret = "Renamed";
|
||||
break;
|
||||
case VIR_DOMAIN_EVENT_UNDEFINED:
|
||||
if (detail == VIR_DOMAIN_EVENT_UNDEFINED_REMOVED)
|
||||
ret = "Removed";
|
||||
else if (detail == VIR_DOMAIN_EVENT_UNDEFINED_RENAMED)
|
||||
ret = "Renamed";
|
||||
break;
|
||||
case VIR_DOMAIN_EVENT_STARTED:
|
||||
switch ((virDomainEventStartedDetailType) detail) {
|
||||
@@ -569,17 +565,6 @@ myDomainEventAgentLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
myDomainEventDeviceAddedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
virDomainPtr dom,
|
||||
const char *devAlias,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
printf("%s EVENT: Domain %s(%d) device added: %s\n",
|
||||
__func__, virDomainGetName(dom), virDomainGetID(dom), devAlias);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void myFreeFunc(void *opaque)
|
||||
{
|
||||
char *str = opaque;
|
||||
@@ -623,7 +608,6 @@ int main(int argc, char **argv)
|
||||
int callback16ret = -1;
|
||||
int callback17ret = -1;
|
||||
int callback18ret = -1;
|
||||
int callback19ret = -1;
|
||||
struct sigaction action_stop;
|
||||
|
||||
memset(&action_stop, 0, sizeof(action_stop));
|
||||
@@ -752,11 +736,6 @@ int main(int argc, char **argv)
|
||||
VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE,
|
||||
VIR_DOMAIN_EVENT_CALLBACK(myDomainEventAgentLifecycleCallback),
|
||||
strdup("guest agent lifecycle"), myFreeFunc);
|
||||
callback19ret = virConnectDomainEventRegisterAny(dconn,
|
||||
NULL,
|
||||
VIR_DOMAIN_EVENT_ID_DEVICE_ADDED,
|
||||
VIR_DOMAIN_EVENT_CALLBACK(myDomainEventDeviceAddedCallback),
|
||||
strdup("device added"), myFreeFunc);
|
||||
|
||||
if ((callback1ret != -1) &&
|
||||
(callback2ret != -1) &&
|
||||
@@ -774,8 +753,7 @@ int main(int argc, char **argv)
|
||||
(callback15ret != -1) &&
|
||||
(callback16ret != -1) &&
|
||||
(callback17ret != -1) &&
|
||||
(callback18ret != -1) &&
|
||||
(callback19ret != -1)) {
|
||||
(callback18ret != -1)) {
|
||||
if (virConnectSetKeepAlive(dconn, 5, 3) < 0) {
|
||||
virErrorPtr err = virGetLastError();
|
||||
fprintf(stderr, "Failed to start keepalive protocol: %s\n",
|
||||
@@ -809,7 +787,6 @@ int main(int argc, char **argv)
|
||||
virConnectNetworkEventDeregisterAny(dconn, callback16ret);
|
||||
virConnectDomainEventDeregisterAny(dconn, callback17ret);
|
||||
virConnectDomainEventDeregisterAny(dconn, callback18ret);
|
||||
virConnectDomainEventDeregisterAny(dconn, callback19ret);
|
||||
|
||||
if (callback8ret != -1)
|
||||
virConnectDomainEventDeregisterAny(dconn, callback8ret);
|
||||
|
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 @@
|
||||
-# ssize_t.m4 serial 5 (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 gives unlimited permission to copy and/or distribute it,
|
||||
@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
|
||||
|
@@ -1,6 +1,6 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
## Copyright (C) 2005-2011, 2013-2016 Red Hat, Inc.
|
||||
## 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
|
||||
@@ -16,15 +16,4 @@
|
||||
## License along with this library. If not, see
|
||||
## <http://www.gnu.org/licenses/>.
|
||||
|
||||
virincdir = $(includedir)/libvirt
|
||||
|
||||
allheaders = $(wildcard $(srcdir)/libvirt/*.h)
|
||||
virinc_HEADERS = $(filter-out $(srcdir)/libvirt/libvirt-admin.h, $(allheaders))
|
||||
|
||||
EXTRA_DIST = libvirt/libvirt-common.h.in
|
||||
|
||||
# Temporarily disabled, but we need it for building
|
||||
EXTRA_DIST += libvirt/libvirt-admin.h
|
||||
|
||||
install-exec-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(virincdir)
|
||||
SUBDIRS=libvirt
|
||||
|
40
include/libvirt/Makefile.am
Normal file
40
include/libvirt/Makefile.am
Normal file
@@ -0,0 +1,40 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
## 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/>.
|
||||
|
||||
virincdir = $(includedir)/libvirt
|
||||
|
||||
virinc_HEADERS = libvirt.h \
|
||||
libvirt-domain.h \
|
||||
libvirt-domain-snapshot.h \
|
||||
libvirt-event.h \
|
||||
libvirt-host.h \
|
||||
libvirt-interface.h \
|
||||
libvirt-network.h \
|
||||
libvirt-nodedev.h \
|
||||
libvirt-nwfilter.h \
|
||||
libvirt-secret.h \
|
||||
libvirt-storage.h \
|
||||
libvirt-stream.h \
|
||||
libvirt-lxc.h \
|
||||
libvirt-qemu.h \
|
||||
virterror.h
|
||||
|
||||
install-exec-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(virincdir)
|
||||
|
||||
EXTRA_DIST = libvirt.h.in
|
@@ -1,90 +0,0 @@
|
||||
/*
|
||||
* libvirt-admin.h: Admin interface for libvirt
|
||||
* Summary: Interfaces for handling server-related tasks
|
||||
* Description: Provides the interfaces of the libvirt library to operate
|
||||
* with the server itself, not any hypervisors.
|
||||
*
|
||||
* Copyright (C) 2014-2015 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 __VIR_ADMIN_H__
|
||||
# define __VIR_ADMIN_H__
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
# define __VIR_ADMIN_H_INCLUDES__
|
||||
# include <libvirt/libvirt-common.h>
|
||||
# undef __VIR_ADMIN_H_INCLUDES__
|
||||
|
||||
/**
|
||||
* virAdmConnect:
|
||||
*
|
||||
* a virAdmConnect is a private structure representing a connection to
|
||||
* libvirt daemon.
|
||||
*/
|
||||
typedef struct _virAdmConnect virAdmConnect;
|
||||
|
||||
/**
|
||||
* virAdmConnectPtr:
|
||||
*
|
||||
* a virAdmConnectPtr is pointer to a virAdmConnect private structure,
|
||||
* this is the type used to reference a connection to the daemon
|
||||
* in the API.
|
||||
*/
|
||||
typedef virAdmConnect *virAdmConnectPtr;
|
||||
|
||||
virAdmConnectPtr virAdmConnectOpen(const char *name, unsigned int flags);
|
||||
int virAdmConnectClose(virAdmConnectPtr conn);
|
||||
|
||||
int virAdmConnectRef(virAdmConnectPtr conn);
|
||||
int virAdmConnectIsAlive(virAdmConnectPtr conn);
|
||||
|
||||
int virAdmGetVersion(unsigned long long *libVer);
|
||||
|
||||
char *virAdmConnectGetURI(virAdmConnectPtr conn);
|
||||
|
||||
int virAdmConnectGetLibVersion(virAdmConnectPtr conn,
|
||||
unsigned long long *libVer);
|
||||
|
||||
/**
|
||||
* virAdmConnectCloseFunc:
|
||||
* @conn: virAdmConnect connection
|
||||
* @reason: reason why the connection was closed (see virConnectCloseReason)
|
||||
* @opaque: opaque client data
|
||||
*
|
||||
* A callback to be registered, in case a connection was closed.
|
||||
*/
|
||||
typedef void (*virAdmConnectCloseFunc)(virAdmConnectPtr conn,
|
||||
int reason,
|
||||
void *opaque);
|
||||
|
||||
int virAdmConnectRegisterCloseCallback(virAdmConnectPtr conn,
|
||||
virAdmConnectCloseFunc cb,
|
||||
void *opaque,
|
||||
virFreeCallback freecb);
|
||||
int virAdmConnectUnregisterCloseCallback(virAdmConnectPtr conn,
|
||||
virAdmConnectCloseFunc cb);
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_ADMIN_H__ */
|
@@ -748,15 +748,6 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_LISTEN_ADDRESS "listen_address"
|
||||
|
||||
/**
|
||||
* VIR_MIGRATE_PARAM_MIGRATE_DISKS:
|
||||
*
|
||||
* virDomainMigrate* params multiple field: The multiple values that list
|
||||
* the block devices to be migrated. At the moment this is only supported
|
||||
* by the QEMU driver but not for the tunnelled migration.
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_MIGRATE_DISKS "migrate_disks"
|
||||
|
||||
/* Domain migration. */
|
||||
virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
|
||||
unsigned long flags, const char *dname,
|
||||
@@ -1334,13 +1325,6 @@ int virDomainInterfaceStats (virDomainPtr dom,
|
||||
*/
|
||||
# define VIR_DOMAIN_BANDWIDTH_IN_BURST "inbound.burst"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_BANDWIDTH_IN_FLOOR:
|
||||
*
|
||||
* Macro represents the inbound floor of NIC bandwidth, as a uint.
|
||||
*/
|
||||
# define VIR_DOMAIN_BANDWIDTH_IN_FLOOR "inbound.floor"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE:
|
||||
*
|
||||
@@ -1631,12 +1615,6 @@ int virDomainPinIOThread(virDomainPtr domain,
|
||||
unsigned char *cpumap,
|
||||
int maplen,
|
||||
unsigned int flags);
|
||||
int virDomainAddIOThread(virDomainPtr domain,
|
||||
unsigned int iothread_id,
|
||||
unsigned int flags);
|
||||
int virDomainDelIOThread(virDomainPtr domain,
|
||||
unsigned int iothread_id,
|
||||
unsigned int flags);
|
||||
|
||||
/**
|
||||
* VIR_USE_CPU:
|
||||
@@ -2329,7 +2307,6 @@ typedef enum {
|
||||
typedef enum {
|
||||
VIR_DOMAIN_EVENT_DEFINED_ADDED = 0, /* Newly created config file */
|
||||
VIR_DOMAIN_EVENT_DEFINED_UPDATED = 1, /* Changed config file */
|
||||
VIR_DOMAIN_EVENT_DEFINED_RENAMED = 2, /* Domain was renamed */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_DOMAIN_EVENT_DEFINED_LAST
|
||||
@@ -2343,7 +2320,6 @@ typedef enum {
|
||||
*/
|
||||
typedef enum {
|
||||
VIR_DOMAIN_EVENT_UNDEFINED_REMOVED = 0, /* Deleted the config file */
|
||||
VIR_DOMAIN_EVENT_UNDEFINED_RENAMED = 1, /* Domain was renamed */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_DOMAIN_EVENT_UNDEFINED_LAST
|
||||
@@ -2571,16 +2547,6 @@ int virDomainAbortJob(virDomainPtr dom);
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_TIME_ELAPSED "time_elapsed"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_TIME_ELAPSED_NET:
|
||||
*
|
||||
* virDomainGetJobStats field: time (ms) since the beginning of the
|
||||
* migration job NOT including the time required to transfer control
|
||||
* flow from the source host to the destination host,
|
||||
* as VIR_TYPED_PARAM_ULLONG.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_TIME_ELAPSED_NET "time_elapsed_net"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_TIME_REMAINING:
|
||||
*
|
||||
@@ -2595,21 +2561,10 @@ int virDomainAbortJob(virDomainPtr dom);
|
||||
* VIR_DOMAIN_JOB_DOWNTIME:
|
||||
*
|
||||
* virDomainGetJobStats field: downtime (ms) that is expected to happen
|
||||
* during migration, as VIR_TYPED_PARAM_ULLONG. The real computed downtime
|
||||
* between the time guest CPUs were paused and the time they were resumed
|
||||
* is reported for completed migration.
|
||||
* during migration, as VIR_TYPED_PARAM_ULLONG.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_DOWNTIME "downtime"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_DOWNTIME_NET:
|
||||
*
|
||||
* virDomainGetJobStats field: real measured downtime (ms) NOT including
|
||||
* the time required to transfer control flow from the source host to the
|
||||
* destination host, as VIR_TYPED_PARAM_ULLONG.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_DOWNTIME_NET "downtime_net"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_SETUP_TIME:
|
||||
*
|
||||
@@ -2724,25 +2679,6 @@ int virDomainAbortJob(virDomainPtr dom);
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_BPS "memory_bps"
|
||||
|
||||
/** VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE:
|
||||
*
|
||||
* virDomainGetJobStats field: number of memory pages dirtied by the guest
|
||||
* per second, as VIR_TYPED_PARAM_ULLONG. This statistics makes sense only
|
||||
* when live migration is running.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE "memory_dirty_rate"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_MEMORY_ITERATION:
|
||||
*
|
||||
* virDomainGetJobStats field: current iteration over domain's memory
|
||||
* during live migration, as VIR_TYPED_PARAM_ULLONG. This is set to zero
|
||||
* when memory starts to be transferred and the value is increased by one
|
||||
* every time a new iteration is started to transfer memory pages dirtied
|
||||
* since the last iteration.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_ITERATION "memory_iteration"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_DISK_TOTAL:
|
||||
*
|
||||
@@ -2870,7 +2806,6 @@ typedef enum {
|
||||
VIR_DOMAIN_EVENT_WATCHDOG_POWEROFF, /* Guest is forcibly powered off */
|
||||
VIR_DOMAIN_EVENT_WATCHDOG_SHUTDOWN, /* Guest is requested to gracefully shutdown */
|
||||
VIR_DOMAIN_EVENT_WATCHDOG_DEBUG, /* No action, a debug message logged */
|
||||
VIR_DOMAIN_EVENT_WATCHDOG_INJECTNMI,/* Inject a non-maskable interrupt into guest */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_DOMAIN_EVENT_WATCHDOG_LAST
|
||||
@@ -3266,23 +3201,6 @@ typedef void (*virConnectDomainEventDeviceRemovedCallback)(virConnectPtr conn,
|
||||
const char *devAlias,
|
||||
void *opaque);
|
||||
|
||||
/**
|
||||
* virConnectDomainEventDeviceAddedCallback:
|
||||
* @conn: connection object
|
||||
* @dom: domain on which the event occurred
|
||||
* @devAlias: device alias
|
||||
* @opaque: application specified data
|
||||
*
|
||||
* This callback occurs when a device is added to the domain.
|
||||
*
|
||||
* The callback signature to use when registering for an event of type
|
||||
* VIR_DOMAIN_EVENT_ID_DEVICE_ADDED with virConnectDomainEventRegisterAny()
|
||||
*/
|
||||
typedef void (*virConnectDomainEventDeviceAddedCallback)(virConnectPtr conn,
|
||||
virDomainPtr dom,
|
||||
const char *devAlias,
|
||||
void *opaque);
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_TUNABLE_CPU_VCPUPIN:
|
||||
*
|
||||
@@ -3565,7 +3483,6 @@ typedef enum {
|
||||
VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 = 16, /* virConnectDomainEventBlockJobCallback */
|
||||
VIR_DOMAIN_EVENT_ID_TUNABLE = 17, /* virConnectDomainEventTunableCallback */
|
||||
VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE = 18,/* virConnectDomainEventAgentLifecycleCallback */
|
||||
VIR_DOMAIN_EVENT_ID_DEVICE_ADDED = 19, /* virConnectDomainEventDeviceAddedCallback */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_DOMAIN_EVENT_ID_LAST
|
||||
@@ -3856,17 +3773,4 @@ int virDomainInterfaceAddresses(virDomainPtr dom,
|
||||
|
||||
void virDomainInterfaceFree(virDomainInterfacePtr iface);
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_PASSWORD_ENCRYPTED = 1 << 0, /* the password is already encrypted */
|
||||
} virDomainSetUserPasswordFlags;
|
||||
|
||||
int virDomainSetUserPassword(virDomainPtr dom,
|
||||
const char *user,
|
||||
const char *password,
|
||||
unsigned int flags);
|
||||
|
||||
int virDomainRename(virDomainPtr dom,
|
||||
const char *new_name,
|
||||
unsigned int flags);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
|
||||
|
@@ -29,6 +29,24 @@
|
||||
# endif
|
||||
|
||||
|
||||
/*
|
||||
* virFreeCallback:
|
||||
* @opaque: opaque user data provided at registration
|
||||
*
|
||||
* Type for a callback cleanup function to be paired with a callback. This
|
||||
* function will be called as a final chance to clean up the @opaque
|
||||
* registered with the primary callback, at the time when the primary
|
||||
* callback is deregistered.
|
||||
*
|
||||
* It is forbidden to call any other libvirt APIs from an
|
||||
* implementation of this callback, since it can be invoked
|
||||
* from a context which is not re-entrant safe. Failure to
|
||||
* abide by this requirement may lead to application deadlocks
|
||||
* or crashes.
|
||||
*/
|
||||
typedef void (*virFreeCallback)(void *opaque);
|
||||
|
||||
|
||||
/**
|
||||
* virConnect:
|
||||
*
|
||||
@@ -308,12 +326,6 @@ virTypedParamsAddString (virTypedParameterPtr *params,
|
||||
const char *name,
|
||||
const char *value);
|
||||
int
|
||||
virTypedParamsAddStringList(virTypedParameterPtr *params,
|
||||
int *nparams,
|
||||
int *maxparams,
|
||||
const char *name,
|
||||
const char **values);
|
||||
int
|
||||
virTypedParamsAddFromString(virTypedParameterPtr *params,
|
||||
int *nparams,
|
||||
int *maxparams,
|
||||
@@ -342,8 +354,7 @@ struct _virNodeInfo {
|
||||
char model[32]; /* string indicating the CPU model */
|
||||
unsigned long memory; /* memory size in kilobytes */
|
||||
unsigned int cpus; /* the number of active CPUs */
|
||||
unsigned int mhz; /* expected CPU frequency, 0 if not known or
|
||||
on unusual architectures */
|
||||
unsigned int mhz; /* expected CPU frequency */
|
||||
unsigned int nodes; /* the number of NUMA cell, 1 for unusual NUMA
|
||||
topologies or uniform memory access; check
|
||||
capabilities XML for the actual NUMA topology */
|
||||
@@ -737,6 +748,18 @@ char * virConnectGetSysinfo (virConnectPtr conn,
|
||||
int virConnectSetKeepAlive(virConnectPtr conn,
|
||||
int interval,
|
||||
unsigned int count);
|
||||
|
||||
typedef enum {
|
||||
VIR_CONNECT_CLOSE_REASON_ERROR = 0, /* Misc I/O error */
|
||||
VIR_CONNECT_CLOSE_REASON_EOF = 1, /* End-of-file from server */
|
||||
VIR_CONNECT_CLOSE_REASON_KEEPALIVE = 2, /* Keepalive timer triggered */
|
||||
VIR_CONNECT_CLOSE_REASON_CLIENT = 3, /* Client requested it */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_CONNECT_CLOSE_REASON_LAST
|
||||
# endif
|
||||
} virConnectCloseReason;
|
||||
|
||||
/**
|
||||
* virConnectCloseFunc:
|
||||
* @conn: virConnect connection
|
||||
|
@@ -49,7 +49,6 @@ typedef enum {
|
||||
VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
|
||||
VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
|
||||
VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
|
||||
VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN = 60,
|
||||
} virDomainQemuAgentCommandTimeoutValues;
|
||||
|
||||
char *virDomainQemuAgentCommand(virDomainPtr domain, const char *cmd,
|
||||
|
@@ -57,6 +57,7 @@ typedef enum {
|
||||
# endif
|
||||
} virStoragePoolState;
|
||||
|
||||
|
||||
typedef enum {
|
||||
VIR_STORAGE_POOL_BUILD_NEW = 0, /* Regular build from scratch */
|
||||
VIR_STORAGE_POOL_BUILD_REPAIR = (1 << 0), /* Repair / reinitialize */
|
||||
@@ -70,23 +71,6 @@ typedef enum {
|
||||
VIR_STORAGE_POOL_DELETE_ZEROED = 1 << 0, /* Clear all data to zeros (slow) */
|
||||
} virStoragePoolDeleteFlags;
|
||||
|
||||
typedef enum {
|
||||
VIR_STORAGE_POOL_CREATE_NORMAL = 0,
|
||||
|
||||
/* Create the pool and perform pool build without any flags */
|
||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD = 1 << 0,
|
||||
|
||||
/* Create the pool and perform pool build using the
|
||||
* VIR_STORAGE_POOL_BUILD_OVERWRITE flag. This is mutually
|
||||
* exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE */
|
||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE = 1 << 1,
|
||||
|
||||
/* Create the pool and perform pool build using the
|
||||
* VIR_STORAGE_POOL_BUILD_NO_OVERWRITE flag. This is mutually
|
||||
* exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE */
|
||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE = 1 << 2,
|
||||
} virStoragePoolCreateFlags;
|
||||
|
||||
typedef struct _virStoragePoolInfo virStoragePoolInfo;
|
||||
|
||||
struct _virStoragePoolInfo {
|
||||
@@ -131,7 +115,6 @@ typedef enum {
|
||||
typedef enum {
|
||||
VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
|
||||
VIR_STORAGE_VOL_DELETE_ZEROED = 1 << 0, /* Clear all data to zeros (slow) */
|
||||
VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS = 1 << 1, /* Force removal of volume, even if in use */
|
||||
} virStorageVolDeleteFlags;
|
||||
|
||||
typedef enum {
|
||||
|
@@ -1,54 +0,0 @@
|
||||
/* -*- c -*-
|
||||
* libvirt.h: Core interfaces for the libvirt library
|
||||
* Summary: core interfaces for the libvirt library
|
||||
* Description: Provides the interfaces of the libvirt library to handle
|
||||
* virtualized domains
|
||||
*
|
||||
* Copyright (C) 2005-2006, 2010-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/>.
|
||||
*
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_VIRLIB_H__
|
||||
# define __VIR_VIRLIB_H__
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
# define __VIR_LIBVIRT_H_INCLUDES__
|
||||
# include <libvirt/libvirt-common.h>
|
||||
# include <libvirt/libvirt-host.h>
|
||||
# include <libvirt/libvirt-domain.h>
|
||||
# include <libvirt/libvirt-domain-snapshot.h>
|
||||
# include <libvirt/libvirt-event.h>
|
||||
# include <libvirt/libvirt-interface.h>
|
||||
# include <libvirt/libvirt-network.h>
|
||||
# include <libvirt/libvirt-nodedev.h>
|
||||
# include <libvirt/libvirt-nwfilter.h>
|
||||
# include <libvirt/libvirt-secret.h>
|
||||
# include <libvirt/libvirt-storage.h>
|
||||
# include <libvirt/libvirt-stream.h>
|
||||
# undef __VIR_LIBVIRT_H_INCLUDES__
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_VIRLIB_H__ */
|
@@ -1,10 +1,10 @@
|
||||
/* -*- c -*-
|
||||
* libvirt-common.h
|
||||
* Summary: common macros and enums for the libvirt and libvirt-admin library
|
||||
* Description: Provides common macros and enums needed by both libvirt and
|
||||
* libvirt-admin libraries
|
||||
* libvirt.h: Core interfaces for the libvirt library
|
||||
* Summary: core interfaces for the libvirt library
|
||||
* Description: Provides the interfaces of the libvirt library to handle
|
||||
* virtualized domains
|
||||
*
|
||||
* Copyright (C) 2015 Red Hat, Inc.
|
||||
* Copyright (C) 2005-2006, 2010-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
|
||||
@@ -20,15 +20,11 @@
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Erik Skultety <eskultet@redhat.com>
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*/
|
||||
|
||||
#if !defined __VIR_LIBVIRT_H_INCLUDES__ && !defined __VIR_ADMIN_H_INCLUDES__
|
||||
# error "Don't include this file directly"
|
||||
#endif
|
||||
|
||||
#ifndef __VIR_VIRCOMMON_H__
|
||||
# define __VIR_VIRCOMMON_H__
|
||||
#ifndef __VIR_VIRLIB_H__
|
||||
# define __VIR_VIRLIB_H__
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
@@ -92,36 +88,22 @@ extern "C" {
|
||||
# define LIBVIR_CHECK_VERSION(major, minor, micro) \
|
||||
((major) * 1000000 + (minor) * 1000 + (micro) <= LIBVIR_VERSION_NUMBER)
|
||||
|
||||
/*
|
||||
* virFreeCallback:
|
||||
* @opaque: opaque user data provided at registration
|
||||
*
|
||||
* Type for a callback cleanup function to be paired with a callback. This
|
||||
* function will be called as a final chance to clean up the @opaque
|
||||
* registered with the primary callback, at the time when the primary
|
||||
* callback is deregistered.
|
||||
*
|
||||
* It is forbidden to call any other libvirt APIs from an
|
||||
* implementation of this callback, since it can be invoked
|
||||
* from a context which is not re-entrant safe. Failure to
|
||||
* abide by this requirement may lead to application deadlocks
|
||||
* or crashes.
|
||||
*/
|
||||
typedef void (*virFreeCallback)(void *opaque);
|
||||
|
||||
typedef enum {
|
||||
VIR_CONNECT_CLOSE_REASON_ERROR = 0, /* Misc I/O error */
|
||||
VIR_CONNECT_CLOSE_REASON_EOF = 1, /* End-of-file from server */
|
||||
VIR_CONNECT_CLOSE_REASON_KEEPALIVE = 2, /* Keepalive timer triggered */
|
||||
VIR_CONNECT_CLOSE_REASON_CLIENT = 3, /* Client requested it */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_CONNECT_CLOSE_REASON_LAST
|
||||
# endif
|
||||
} virConnectCloseReason;
|
||||
# define __VIR_LIBVIRT_H_INCLUDES__
|
||||
# include <libvirt/libvirt-host.h>
|
||||
# include <libvirt/libvirt-domain.h>
|
||||
# include <libvirt/libvirt-domain-snapshot.h>
|
||||
# include <libvirt/libvirt-event.h>
|
||||
# include <libvirt/libvirt-interface.h>
|
||||
# include <libvirt/libvirt-network.h>
|
||||
# include <libvirt/libvirt-nodedev.h>
|
||||
# include <libvirt/libvirt-nwfilter.h>
|
||||
# include <libvirt/libvirt-secret.h>
|
||||
# include <libvirt/libvirt-storage.h>
|
||||
# include <libvirt/libvirt-stream.h>
|
||||
# undef __VIR_LIBVIRT_H_INCLUDES__
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_VIRCOMMON_H__ */
|
||||
#endif /* __VIR_VIRLIB_H__ */
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user